/* Generated by Cython 3.0.11 */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
#if defined(CYTHON_LIMITED_API) && 0
  #ifndef Py_LIMITED_API
    #if CYTHON_LIMITED_API+0 > 0x03030000
      #define Py_LIMITED_API CYTHON_LIMITED_API
    #else
      #define Py_LIMITED_API 0x03030000
    #endif
  #endif
#endif

#include "Python.h"

    #if PY_VERSION_HEX < 0x030B0000 && !defined(Py_GETENV)
    #  define Py_GETENV(s) (Py_IgnoreEnvironmentFlag ? NULL : getenv(s))
    #endif
    

    #if PY_VERSION_HEX < 0x30C00A7 && !defined(PyErr_DisplayException)
    #define PyErr_DisplayException PyErr_DisplayException_312
    static void PyErr_DisplayException(PyObject *exc)
    {
      PyObject *et = NULL;
      PyObject *tb = NULL;
      #if defined(PYPY_VERSION)
      et = PyObject_Type(exc);
      tb = PyException_GetTraceback(exc);
      #endif
      PyErr_Display(et, exc, tb);
      if (et) Py_DecRef(et);
      if (tb) Py_DecRef(tb);
    }
    #endif
    

    #define MPICH_SKIP_MPICXX 1
    #define OMPI_SKIP_MPICXX  1
    
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.7+ or Python 3.3+.
#else
#if defined(CYTHON_LIMITED_API) && CYTHON_LIMITED_API
#define __PYX_EXTRA_ABI_MODULE_NAME "limited"
#else
#define __PYX_EXTRA_ABI_MODULE_NAME ""
#endif
#define CYTHON_ABI "3_0_11" __PYX_EXTRA_ABI_MODULE_NAME
#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
#define CYTHON_HEX_VERSION 0x03000BF0
#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #define HAVE_LONG_LONG
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
#if defined(GRAALVM_PYTHON)
  /* For very preliminary testing purposes. Most variables are set the same as PyPy.
     The existence of this section does not imply that anything works or is even tested */
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 1
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #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
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(PYPY_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
  #endif
  #if PY_VERSION_HEX < 0x03090000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
  #undef CYTHON_USE_DICT_VERSIONS
  #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
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(CYTHON_LIMITED_API)
  #ifdef Py_LIMITED_API
    #undef __PYX_LIMITED_VERSION_HEX
    #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
  #endif
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 1
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_CLINE_IN_TRACEBACK
  #define CYTHON_CLINE_IN_TRACEBACK 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 1
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_ASYNC_SLOTS
  #define CYTHON_USE_ASYNC_SLOTS 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #endif
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 1
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #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
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #ifndef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #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
  #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_GIL
  #define CYTHON_FAST_GIL 0
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL 1
  #endif
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #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
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
  #endif
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS 0
  #endif
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #ifndef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #if PY_MAJOR_VERSION < 3
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #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)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #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
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #ifndef CYTHON_FAST_GIL
    #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
  #endif
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #if PY_VERSION_HEX < 0x030400a1
    #undef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #elif !defined(CYTHON_USE_TP_FINALIZE)
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #if PY_VERSION_HEX < 0x030600B1
    #undef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS 0
  #elif !defined(CYTHON_USE_DICT_VERSIONS)
    #define CYTHON_USE_DICT_VERSIONS  (PY_VERSION_HEX < 0x030C00A5)
  #endif
  #if PY_VERSION_HEX < 0x030700A3
    #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 1
  #endif
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
  #endif
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS 1
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if !defined(CYTHON_VECTORCALL)
#define CYTHON_VECTORCALL  (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
#endif
#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_MAJOR_VERSION < 3
    #include "longintrepr.h"
  #endif
  #undef SHIFT
  #undef BASE
  #undef MASK
  #ifdef SIZEOF_VOID_P
    enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
  #endif
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(maybe_unused)
        #define CYTHON_UNUSED [[maybe_unused]]
      #endif
    #endif
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
  #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_USE_CPP_STD_MOVE
  #if defined(__cplusplus) && (\
    __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
    #define CYTHON_USE_CPP_STD_MOVE 1
  #else
    #define CYTHON_USE_CPP_STD_MOVE 0
  #endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
            typedef unsigned char     uint8_t;
            typedef unsigned short    uint16_t;
            typedef unsigned int      uint32_t;
        #else
            typedef unsigned __int8   uint8_t;
            typedef unsigned __int16  uint16_t;
            typedef unsigned __int32  uint32_t;
        #endif
    #endif
    #if _MSC_VER < 1300
        #ifdef _WIN64
            typedef unsigned long long  __pyx_uintptr_t;
        #else
            typedef unsigned int        __pyx_uintptr_t;
        #endif
    #else
        #ifdef _WIN64
            typedef unsigned __int64    __pyx_uintptr_t;
        #else
            typedef unsigned __int32    __pyx_uintptr_t;
        #endif
    #endif
#else
    #include <stdint.h>
    typedef uintptr_t  __pyx_uintptr_t;
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(fallthrough)
        #define CYTHON_FALLTHROUGH [[fallthrough]]
      #endif
    #endif
    #ifndef CYTHON_FALLTHROUGH
      #if __has_cpp_attribute(clang::fallthrough)
        #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
      #elif __has_cpp_attribute(gnu::fallthrough)
        #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
      #endif
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif
#ifdef __cplusplus
  template <typename T>
  struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
  #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
#else
  #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
#endif
#if CYTHON_COMPILING_IN_PYPY == 1
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
#else
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
#endif
#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))

#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #elif defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_DefaultClassType PyClass_Type
  #define __Pyx_PyCode_New(a, p, 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)
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_DefaultClassType PyType_Type
#if CYTHON_COMPILING_IN_LIMITED_API
    static CYTHON_INLINE PyObject* __Pyx_PyCode_New(int a, int p, 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 *exception_table = NULL;
        PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
        #if __PYX_LIMITED_VERSION_HEX < 0x030B0000
        PyObject *version_info;
        PyObject *py_minor_version = NULL;
        #endif
        long minor_version = 0;
        PyObject *type, *value, *traceback;
        PyErr_Fetch(&type, &value, &traceback);
        #if __PYX_LIMITED_VERSION_HEX >= 0x030B0000
        minor_version = 11;
        #else
        if (!(version_info = PySys_GetObject("version_info"))) goto end;
        if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
        minor_version = PyLong_AsLong(py_minor_version);
        Py_DECREF(py_minor_version);
        if (minor_version == -1 && PyErr_Occurred()) goto end;
        #endif
        if (!(types_module = PyImport_ImportModule("types"))) goto end;
        if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
        if (minor_version <= 7) {
            (void)p;
            result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOO", a, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else if (minor_version <= 10) {
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else {
            if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
        }
    end:
        Py_XDECREF(code_type);
        Py_XDECREF(exception_table);
        Py_XDECREF(types_module);
        if (type) {
            PyErr_Restore(type, value, traceback);
        }
        return result;
    }
    #ifndef CO_OPTIMIZED
    #define CO_OPTIMIZED 0x0001
    #endif
    #ifndef CO_NEWLOCALS
    #define CO_NEWLOCALS 0x0002
    #endif
    #ifndef CO_VARARGS
    #define CO_VARARGS 0x0004
    #endif
    #ifndef CO_VARKEYWORDS
    #define CO_VARKEYWORDS 0x0008
    #endif
    #ifndef CO_ASYNC_GENERATOR
    #define CO_ASYNC_GENERATOR 0x0200
    #endif
    #ifndef CO_GENERATOR
    #define CO_GENERATOR 0x0020
    #endif
    #ifndef CO_COROUTINE
    #define CO_COROUTINE 0x0080
    #endif
#elif PY_VERSION_HEX >= 0x030B0000
  static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, 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) {
    PyCodeObject *result;
    PyObject *empty_bytes = PyBytes_FromStringAndSize("", 0);
    if (!empty_bytes) return NULL;
    result =
      #if PY_VERSION_HEX >= 0x030C0000
        PyUnstable_Code_NewWithPosOnlyArgs
      #else
        PyCode_NewWithPosOnlyArgs
      #endif
        (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, empty_bytes);
    Py_DECREF(empty_bytes);
    return result;
  }
#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx_PyCode_New(a, p, 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)
#endif
#endif
#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
  #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
#else
  #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
  #define __Pyx_Py_Is(x, y)  Py_Is(x, y)
#else
  #define __Pyx_Py_Is(x, y) ((x) == (y))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
  #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
#else
  #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
  #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
#else
  #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
  #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
#else
  #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
#endif
#define __Pyx_NoneAsNull(obj)  (__Pyx_Py_IsNone(obj) ? NULL : (obj))
#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
#else
  #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
#endif
#ifndef CO_COROUTINE
  #define CO_COROUTINE 0x80
#endif
#ifndef CO_ASYNC_GENERATOR
  #define CO_ASYNC_GENERATOR 0x200
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#ifndef Py_TPFLAGS_SEQUENCE
  #define Py_TPFLAGS_SEQUENCE 0
#endif
#ifndef Py_TPFLAGS_MAPPING
  #define Py_TPFLAGS_MAPPING 0
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #if PY_VERSION_HEX >= 0x030d00A4
  #  define __Pyx_PyCFunctionFast PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
  #else
  #  define __Pyx_PyCFunctionFast _PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
  #endif
#endif
#if CYTHON_METH_FASTCALL
  #define __Pyx_METH_FASTCALL METH_FASTCALL
  #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
  #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
#else
  #define __Pyx_METH_FASTCALL METH_VARARGS
  #define __Pyx_PyCFunction_FastCall PyCFunction
  #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
#endif
#if CYTHON_VECTORCALL
  #define __pyx_vectorcallfunc vectorcallfunc
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  PY_VECTORCALL_ARGUMENTS_OFFSET
  #define __Pyx_PyVectorcall_NARGS(n)  PyVectorcall_NARGS((size_t)(n))
#elif CYTHON_BACKPORT_VECTORCALL
  typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
                                            size_t nargsf, PyObject *kwnames);
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  ((size_t)1 << (8 * sizeof(size_t) - 1))
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
#else
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  0
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(n))
#endif
#if PY_MAJOR_VERSION >= 0x030900B1
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_CheckExact(func)
#else
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_Check(func)
#endif
#define __Pyx_CyOrPyCFunction_Check(func)  PyCFunction_Check(func)
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  (((PyCFunctionObject*)(func))->m_ml->ml_meth)
#elif !CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  PyCFunction_GET_FUNCTION(func)
#endif
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FLAGS(func)  (((PyCFunctionObject*)(func))->m_ml->ml_flags)
static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
    return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
}
#endif
static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void *cfunc) {
#if CYTHON_COMPILING_IN_LIMITED_API
    return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
#else
    return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
#endif
}
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCFunction(func, cfunc)
#if __PYX_LIMITED_VERSION_HEX < 0x030900B1
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  ((void)m, PyType_FromSpecWithBases(s, b))
  typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
#else
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  PyType_FromModuleAndSpec(m, s, b)
  #define __Pyx_PyCMethod  PyCMethod
#endif
#ifndef METH_METHOD
  #define METH_METHOD 0x200
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyThreadState_Current PyThreadState_Get()
#elif !CYTHON_FAST_THREAD_STATE
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x030d00A1
  #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
#elif PY_VERSION_HEX >= 0x03060000
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
{
    void *result;
    result = PyModule_GetState(op);
    if (!result)
        Py_FatalError("Couldn't find the module state");
    return result;
}
#endif
#define __Pyx_PyObject_GetSlot(obj, name, func_ctype)  __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((func_ctype) PyType_GetSlot((type), Py_##name))
#else
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((type)->name)
#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
typedef int Py_tss_t;
static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  *key = PyThread_create_key();
  return 0;
}
static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
  *key = Py_tss_NEEDS_INIT;
  return key;
}
static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  PyObject_Free(key);
}
static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  return *key != Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  PyThread_delete_key(*key);
  *key = Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  return PyThread_set_key_value(*key, value);
}
static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  return PyThread_get_key_value(*key);
}
#endif
#if PY_MAJOR_VERSION < 3
    #if CYTHON_COMPILING_IN_PYPY
        #if PYPY_VERSION_NUM < 0x07030600
            #if defined(__cplusplus) && __cplusplus >= 201402L
                [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
            #elif defined(__GNUC__) || defined(__clang__)
                __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
            #elif defined(_MSC_VER)
                __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
            #endif
            static CYTHON_INLINE int PyGILState_Check(void) {
                return 0;
            }
        #else  // PYPY_VERSION_NUM < 0x07030600
        #endif  // PYPY_VERSION_NUM < 0x07030600
    #else
        static CYTHON_INLINE int PyGILState_Check(void) {
            PyThreadState * tstate = _PyThreadState_Current;
            return tstate && (tstate == PyGILState_GetThisThreadState());
        }
    #endif
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000 || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && PY_VERSION_HEX < 0x030d0000 && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStrWithError(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
    PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
    if (res == NULL) PyErr_Clear();
    return res;
}
#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
#define __Pyx_PyDict_GetItemStrWithError  PyDict_GetItemWithError
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#else
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
#if CYTHON_COMPILING_IN_PYPY
    return PyDict_GetItem(dict, name);
#else
    PyDictEntry *ep;
    PyDictObject *mp = (PyDictObject*) dict;
    long hash = ((PyStringObject *) name)->ob_shash;
    assert(hash != -1);
    ep = (mp->ma_lookup)(mp, name, hash);
    if (ep == NULL) {
        return NULL;
    }
    return ep->me_value;
#endif
}
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#endif
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetFlags(tp)   (((PyTypeObject *)tp)->tp_flags)
  #define __Pyx_PyType_HasFeature(type, feature)  ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
  #define __Pyx_PyObject_GetIterNextFunc(obj)  (Py_TYPE(obj)->tp_iternext)
#else
  #define __Pyx_PyType_GetFlags(tp)   (PyType_GetFlags((PyTypeObject *)tp))
  #define __Pyx_PyType_HasFeature(type, feature)  PyType_HasFeature(type, feature)
  #define __Pyx_PyObject_GetIterNextFunc(obj)  PyIter_Next
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyObject_GenericSetAttr((PyObject*)tp, k, v)
#else
  #define __Pyx_SetItemOnTypeDict(tp, k, v) PyDict_SetItem(tp->tp_dict, k, v)
#endif
#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  {\
    PyTypeObject *type = Py_TYPE((PyObject*)obj);\
    assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
    PyObject_GC_Del(obj);\
    Py_DECREF(type);\
}
#else
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  PyObject_GC_Del(obj)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GetLength(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((void)u, 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((void)u, (0))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)u)
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GetLength(u))
#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_READY(op)       (0)
  #else
    #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                                0 : _PyUnicode_Ready((PyObject *)(op)))
  #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)
  #define __Pyx_PyUnicode_KIND(u)         ((int)PyUnicode_KIND(u))
  #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, (Py_UCS4) ch)
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #else
    #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
    #else
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
    #endif
  #endif
#else
  #define CYTHON_PEP393_ENABLED 0
  #define PyUnicode_1BYTE_KIND  1
  #define PyUnicode_2BYTE_KIND  2
  #define PyUnicode_4BYTE_KIND  4
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((int)sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #if !defined(PyUnicode_DecodeUnicodeEscape)
    #define PyUnicode_DecodeUnicodeEscape(s, size, errors)  PyUnicode_Decode(s, size, "unicode_escape", errors)
  #endif
  #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
    #undef PyUnicode_Contains
    #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
  #endif
  #if !defined(PyByteArray_Check)
    #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
  #endif
  #if !defined(PyObject_Format)
    #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
  #endif
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#ifndef PyObject_Unicode
  #define PyObject_Unicode             PyObject_Str
#endif
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#if CYTHON_COMPILING_IN_CPYTHON
  #define __Pyx_PySequence_ListKeepNew(obj)\
    (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
#else
  #define __Pyx_PySequence_ListKeepNew(obj)  PySequence_List(obj)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        __Pyx_IS_TYPE(obj, &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
#else
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
#else
  #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
  #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
#endif
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#else
  static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *module = PyImport_AddModule(name);
      Py_XINCREF(module);
      return module;
  }
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define __Pyx_Py3Int_Check(op)       PyLong_Check(op)
  #define __Pyx_Py3Int_CheckExact(op)  PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#else
  #define __Pyx_Py3Int_Check(op)       (PyLong_Check(op) || PyInt_Check(op))
  #define __Pyx_Py3Int_CheckExact(op)  (PyLong_CheckExact(op) || PyInt_CheckExact(op))
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsHash_t
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsSsize_t
#endif
#if CYTHON_USE_ASYNC_SLOTS
  #if PY_VERSION_HEX >= 0x030500B1
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
  #else
    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
  #endif
#else
  #define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef __Pyx_PyAsyncMethodsStruct
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
    } __Pyx_PyAsyncMethodsStruct;
#endif

#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
  #if !defined(_USE_MATH_DEFINES)
    #define _USE_MATH_DEFINES
  #endif
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#define __PYX_MARK_ERR_POS(f_index, lineno) \
    { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__;  (void)__pyx_clineno; }
#define __PYX_ERR(f_index, lineno, Ln_error) \
    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }

#ifdef CYTHON_EXTERN_C
    #undef __PYX_EXTERN_C
    #define __PYX_EXTERN_C CYTHON_EXTERN_C
#elif defined(__PYX_EXTERN_C)
    #ifdef _MSC_VER
    #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
    #else
    #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
    #endif
#else
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__mpi4py__MPI
#define __PYX_HAVE_API__mpi4py__MPI
/* Early includes */
#include <mpi.h>

    #include "lib-mpi/config.h"
    #include "lib-mpi/missing.h"
    #include "lib-mpi/fallback.h"
    #include "lib-mpi/compat.h"

    #include "pympivendor.h"
    #include "pympicommctx.h"
    

    #if defined(PYPY_VERSION)
    #  define PyMPI_RUNTIME_PYPY 1
    #else
    #  define PyMPI_RUNTIME_PYPY 0
    #endif
    

    #if !defined(PyMPI_USE_MATCHED_RECV)
    #  if defined(PyMPI_HAVE_MPI_Mprobe) && defined(PyMPI_HAVE_MPI_Mrecv)
    #    if defined(MPI_VERSION) && MPI_VERSION >= 3
    #      define PyMPI_USE_MATCHED_RECV 1
    #    endif
    #  endif
    #endif
    #if !defined(PyMPI_USE_MATCHED_RECV)
    #  define PyMPI_USE_MATCHED_RECV 0
    #endif
    

    static int PyMPI_tolower(int c)
    {
      return (c >= 'A' && c <= 'Z') ? c + ('a' - 'A') : c;
    }
    static int PyMPI_strcasecmp(const char *s1, const char *s2)
    {
      int c1, c2;
      do {
         c1 = PyMPI_tolower((int)*s1++);
         c2 = PyMPI_tolower((int)*s2++);
      } while (c1 && c1 == c2);
      return c1 - c2;
    }
    

    #define PyMPI_FLAGS_READY   (1U<<0)
    #define PyMPI_FLAGS_CONST   (1U<<1)
    #define PyMPI_FLAGS_TEMP    (1U<<2)
    

    #include <stddef.h>
    #if defined(__cplusplus)
    template<typename T> struct pympi_alignof_struct {char c; T member;};
    #define pympi_alignof(type) offsetof(pympi_alignof_struct<type>, member)
    #else
    #define pympi_alignof(type) offsetof(struct _{char c; type member;}, member)
    #endif
    
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    return (size_t) i < (size_t) limit;
}
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyObject_AsWritableString(s)    ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
#define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (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
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_VERSION_HEX >= 0x030C00A7
  #ifndef _PyLong_SIGN_MASK
    #define _PyLong_SIGN_MASK 3
  #endif
  #ifndef _PyLong_NON_SIZE_BITS
    #define _PyLong_NON_SIZE_BITS 3
  #endif
  #define __Pyx_PyLong_Sign(x)  (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
  #define __Pyx_PyLong_IsNeg(x)  ((__Pyx_PyLong_Sign(x) & 2) != 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (!__Pyx_PyLong_IsNeg(x))
  #define __Pyx_PyLong_IsZero(x)  (__Pyx_PyLong_Sign(x) & 1)
  #define __Pyx_PyLong_IsPos(x)  (__Pyx_PyLong_Sign(x) == 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  (__Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
  #define __Pyx_PyLong_SignedDigitCount(x)\
        ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
  #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
    #define __Pyx_PyLong_IsCompact(x)     PyUnstable_Long_IsCompact((PyLongObject*) x)
    #define __Pyx_PyLong_CompactValue(x)  PyUnstable_Long_CompactValue((PyLongObject*) x)
  #else
    #define __Pyx_PyLong_IsCompact(x)     (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
    #define __Pyx_PyLong_CompactValue(x)  ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
  #endif
  typedef Py_ssize_t  __Pyx_compact_pylong;
  typedef size_t  __Pyx_compact_upylong;
  #else
  #define __Pyx_PyLong_IsNeg(x)  (Py_SIZE(x) < 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (Py_SIZE(x) >= 0)
  #define __Pyx_PyLong_IsZero(x)  (Py_SIZE(x) == 0)
  #define __Pyx_PyLong_IsPos(x)  (Py_SIZE(x) > 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  __Pyx_sst_abs(Py_SIZE(x))
  #define __Pyx_PyLong_SignedDigitCount(x)  Py_SIZE(x)
  #define __Pyx_PyLong_IsCompact(x)  (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
  #define __Pyx_PyLong_CompactValue(x)\
        ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
  typedef sdigit  __Pyx_compact_pylong;
  typedef digit  __Pyx_compact_upylong;
  #endif
  #if PY_VERSION_HEX >= 0x030C00A5
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->long_value.ob_digit)
  #else
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->ob_digit)
  #endif
#endif
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
#include <string.h>
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = (char) c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
#include <string.h>
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }

#if !CYTHON_USE_MODULE_STATE
static PyObject *__pyx_m = NULL;
#endif
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm = __FILE__;
static const char *__pyx_filename;

/* #### Code section: filename_table ### */

static const char *__pyx_f[] = {
  "src/mpi4py/MPI.src/asbuffer.pxi",
  "src/mpi4py/MPI.src/objmodel.pxi",
  "src/mpi4py/MPI.src/atimport.pxi",
  "src/mpi4py/MPI.src/allocate.pxi",
  "src/mpi4py/MPI.src/asstring.pxi",
  "src/mpi4py/MPI.src/asdlpack.pxi",
  "src/mpi4py/MPI.src/attrimpl.pxi",
  "src/mpi4py/MPI.src/msgpickle.pxi",
  "src/mpi4py/MPI.src/asfspath.pxi",
  "src/mpi4py/MPI.src/ascaibuf.pxi",
  "src/mpi4py/MPI.src/asarray.pxi",
  "src/mpi4py/MPI.src/errhimpl.pxi",
  "src/mpi4py/MPI.src/reqimpl.pxi",
  "src/mpi4py/MPI.src/opimpl.pxi",
  "src/mpi4py/MPI.src/bufaimpl.pxi",
  "src/mpi4py/MPI.src/commimpl.pxi",
  "src/mpi4py/MPI.src/winimpl.pxi",
  "src/mpi4py/MPI.src/drepimpl.pxi",
  "src/mpi4py/MPI.src/msgbuffer.pxi",
  "src/mpi4py/MPI.src/CAPI.pxi",
  "src/mpi4py/MPI.src/ErrorCode.pyx",
  "src/mpi4py/MPI.src/Exception.pyx",
  "src/mpi4py/MPI.src/Datatype.pyx",
  "src/mpi4py/MPI.src/Status.pyx",
  "src/mpi4py/MPI.src/Request.pyx",
  "src/mpi4py/MPI.src/Message.pyx",
  "src/mpi4py/MPI.src/Op.pyx",
  "src/mpi4py/MPI.src/Group.pyx",
  "src/mpi4py/MPI.src/Info.pyx",
  "src/mpi4py/MPI.src/Errhandler.pyx",
  "src/mpi4py/MPI.src/Session.pyx",
  "src/mpi4py/MPI.src/Comm.pyx",
  "src/mpi4py/MPI.src/Win.pyx",
  "src/mpi4py/MPI.src/File.pyx",
  "src/mpi4py/MPI.src/MPI.pyx",
  "src/mpi4py/MPI.src/typemap.pxi",
  "src/mpi4py/MPI.src/typestr.pxi",
  "src/mpi4py/MPI.src/typedec.pxi",
  "src/mpi4py/MPI.pyx",
};
/* #### Code section: utility_code_proto_before_types ### */
/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif

/* NoFastGil.proto */
#define __Pyx_PyGILState_Ensure PyGILState_Ensure
#define __Pyx_PyGILState_Release PyGILState_Release
#define __Pyx_FastGIL_Remember()
#define __Pyx_FastGIL_Forget()
#define __Pyx_FastGilFuncInit()

/* #### Code section: numeric_typedefs ### */
/* #### Code section: complex_type_declarations ### */
/* #### Code section: type_declarations ### */

/*--- Type declarations ---*/
struct PyMPIDatatypeObject;
struct PyMPIStatusObject;
struct PyMPIRequestObject;
struct PyMPIPrequestObject;
struct PyMPIGrequestObject;
struct PyMPIMessageObject;
struct PyMPIOpObject;
struct PyMPIGroupObject;
struct PyMPIInfoObject;
struct PyMPIErrhandlerObject;
struct PyMPISessionObject;
struct PyMPICommObject;
struct PyMPIIntracommObject;
struct PyMPITopocommObject;
struct PyMPICartcommObject;
struct PyMPIGraphcommObject;
struct PyMPIDistgraphcommObject;
struct PyMPIIntercommObject;
struct PyMPIWinObject;
struct PyMPIFileObject;
struct __pyx_obj_6mpi4py_3MPI__PyMem;
struct __pyx_obj_6mpi4py_3MPI_buffer;
struct __pyx_obj_6mpi4py_3MPI__p_keyval;
struct __pyx_obj_6mpi4py_3MPI__p_rs;
struct __pyx_obj_6mpi4py_3MPI__p_greq;
struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType;
struct __pyx_obj_6mpi4py_3MPI__p_datarep;
struct __pyx_obj_6mpi4py_3MPI_BottomType;
struct __pyx_obj_6mpi4py_3MPI_InPlaceType;
struct __pyx_obj_6mpi4py_3MPI__p_message;
struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p;
struct __pyx_obj_6mpi4py_3MPI__p_msg_cco;
struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow;
struct __pyx_obj_6mpi4py_3MPI__p_msg_rma;
struct __pyx_obj_6mpi4py_3MPI__p_msg_io;
struct __pyx_obj_6mpi4py_3MPI_Pickle;
struct __pyx_obj_6mpi4py_3MPI__p_req_buf;
struct __pyx_obj_6mpi4py_3MPI__p_req_obj;
struct __pyx_obj_6mpi4py_3MPI_Exception;
struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback;
struct __pyx_t_6mpi4py_3MPI_Options;
typedef struct __pyx_t_6mpi4py_3MPI_Options __pyx_t_6mpi4py_3MPI_Options;
struct __pyx_t_6mpi4py_3MPI_DLPackVersion;
typedef struct __pyx_t_6mpi4py_3MPI_DLPackVersion __pyx_t_6mpi4py_3MPI_DLPackVersion;
struct __pyx_t_6mpi4py_3MPI_DLDevice;
typedef struct __pyx_t_6mpi4py_3MPI_DLDevice __pyx_t_6mpi4py_3MPI_DLDevice;
struct __pyx_t_6mpi4py_3MPI_DLDataType;
typedef struct __pyx_t_6mpi4py_3MPI_DLDataType __pyx_t_6mpi4py_3MPI_DLDataType;
struct __pyx_t_6mpi4py_3MPI_DLTensor;
typedef struct __pyx_t_6mpi4py_3MPI_DLTensor __pyx_t_6mpi4py_3MPI_DLTensor;
struct __pyx_t_6mpi4py_3MPI_DLManagedTensor;
typedef struct __pyx_t_6mpi4py_3MPI_DLManagedTensor __pyx_t_6mpi4py_3MPI_DLManagedTensor;
struct __pyx_t_6mpi4py_3MPI_DLManagedTensorVersioned;
typedef struct __pyx_t_6mpi4py_3MPI_DLManagedTensorVersioned __pyx_t_6mpi4py_3MPI_DLManagedTensorVersioned;
struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire;
struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release;
struct __pyx_defaults;
typedef struct __pyx_defaults __pyx_defaults;
struct __pyx_defaults1;
typedef struct __pyx_defaults1 __pyx_defaults1;
struct __pyx_defaults2;
typedef struct __pyx_defaults2 __pyx_defaults2;
struct __pyx_defaults3;
typedef struct __pyx_defaults3 __pyx_defaults3;
struct __pyx_defaults4;
typedef struct __pyx_defaults4 __pyx_defaults4;
struct __pyx_defaults5;
typedef struct __pyx_defaults5 __pyx_defaults5;

/* "src/mpi4py/MPI.src/asdlpack.pxi":17
 *     uint32_t minor
 * 
 * ctypedef enum DLDeviceType:             # <<<<<<<<<<<<<<
 *     kDLCPU = 1
 *     kDLCUDA = 2
 */
enum __pyx_t_6mpi4py_3MPI_DLDeviceType {
  __pyx_e_6mpi4py_3MPI_kDLCPU = 1,
  __pyx_e_6mpi4py_3MPI_kDLCUDA = 2,
  __pyx_e_6mpi4py_3MPI_kDLCUDAHost = 3,
  __pyx_e_6mpi4py_3MPI_kDLOpenCL = 4,
  __pyx_e_6mpi4py_3MPI_kDLVulkan = 7,
  __pyx_e_6mpi4py_3MPI_kDLMetal = 8,
  __pyx_e_6mpi4py_3MPI_kDLVPI = 9,
  __pyx_e_6mpi4py_3MPI_kDLROCM = 10,
  __pyx_e_6mpi4py_3MPI_kDLROCMHost = 11,
  __pyx_e_6mpi4py_3MPI_kDLExtDev = 12,
  __pyx_e_6mpi4py_3MPI_kDLCUDAManaged = 13,
  __pyx_e_6mpi4py_3MPI_kDLOneAPI = 14,
  __pyx_e_6mpi4py_3MPI_kDLWebGPU = 15,
  __pyx_e_6mpi4py_3MPI_kDLHexagon = 16,
  __pyx_e_6mpi4py_3MPI_kDLMAIA = 17
};
typedef enum __pyx_t_6mpi4py_3MPI_DLDeviceType __pyx_t_6mpi4py_3MPI_DLDeviceType;

/* "src/mpi4py/MPI.src/asdlpack.pxi":38
 *     int32_t device_id
 * 
 * ctypedef enum DLDataTypeCode:             # <<<<<<<<<<<<<<
 *     kDLInt = 0
 *     kDLUInt = 1
 */
enum __pyx_t_6mpi4py_3MPI_DLDataTypeCode {
  __pyx_e_6mpi4py_3MPI_kDLInt = 0,
  __pyx_e_6mpi4py_3MPI_kDLUInt = 1,
  __pyx_e_6mpi4py_3MPI_kDLFloat = 2,
  __pyx_e_6mpi4py_3MPI_kDLOpaqueHandle = 3,
  __pyx_e_6mpi4py_3MPI_kDLBfloat = 4,
  __pyx_e_6mpi4py_3MPI_kDLComplex = 5,
  __pyx_e_6mpi4py_3MPI_kDLBool = 6
};
typedef enum __pyx_t_6mpi4py_3MPI_DLDataTypeCode __pyx_t_6mpi4py_3MPI_DLDataTypeCode;

/* "src/mpi4py/MPI.src/asdlpack.pxi":66
 *     void (*deleter)(DLManagedTensor *)
 * 
 * ctypedef enum:             # <<<<<<<<<<<<<<
 *     DLPACK_FLAG_BITMASK_READ_ONLY = (1UL << 0UL)
 *     DLPACK_FLAG_BITMASK_IS_COPIED = (1UL << 1UL)
 */
enum  {

  /* "src/mpi4py/MPI.src/asdlpack.pxi":68
 * ctypedef enum:
 *     DLPACK_FLAG_BITMASK_READ_ONLY = (1UL << 0UL)
 *     DLPACK_FLAG_BITMASK_IS_COPIED = (1UL << 1UL)             # <<<<<<<<<<<<<<
 * 
 * ctypedef struct DLManagedTensorVersioned:
 */
  __pyx_e_6mpi4py_3MPI_DLPACK_FLAG_BITMASK_READ_ONLY = (1UL << 0UL),
  __pyx_e_6mpi4py_3MPI_DLPACK_FLAG_BITMASK_IS_COPIED = (1UL << 1UL)
};

/* "src/mpi4py/MPI.src/atimport.pxi":84
 *     enum: USE_MATCHED_RECV "PyMPI_USE_MATCHED_RECV"
 * 
 * ctypedef struct Options:             # <<<<<<<<<<<<<<
 *     bint      initialize
 *     bint      threads
 */
struct __pyx_t_6mpi4py_3MPI_Options {
  int initialize;
  int threads;
  int thread_level;
  int finalize;
  int fast_reduce;
  int recv_mprobe;
  MPI_Count irecv_bufsz;
  int errors;
};

/* "src/mpi4py/MPI.src/asdlpack.pxi":13
 *     ctypedef unsigned long long uint64_t
 * 
 * ctypedef struct DLPackVersion:             # <<<<<<<<<<<<<<
 *     uint32_t major
 *     uint32_t minor
 */
struct __pyx_t_6mpi4py_3MPI_DLPackVersion {
  uint32_t major;
  uint32_t minor;
};

/* "src/mpi4py/MPI.src/asdlpack.pxi":34
 *     kDLMAIA = 17
 * 
 * ctypedef struct DLDevice:             # <<<<<<<<<<<<<<
 *     DLDeviceType device_type
 *     int32_t device_id
 */
struct __pyx_t_6mpi4py_3MPI_DLDevice {
  __pyx_t_6mpi4py_3MPI_DLDeviceType device_type;
  int32_t device_id;
};

/* "src/mpi4py/MPI.src/asdlpack.pxi":47
 *     kDLBool = 6
 * 
 * ctypedef struct DLDataType:             # <<<<<<<<<<<<<<
 *     uint8_t code
 *     uint8_t bits
 */
struct __pyx_t_6mpi4py_3MPI_DLDataType {
  uint8_t code;
  uint8_t bits;
  uint16_t lanes;
};

/* "src/mpi4py/MPI.src/asdlpack.pxi":52
 *     uint16_t lanes
 * 
 * ctypedef struct DLTensor:             # <<<<<<<<<<<<<<
 *     void *data
 *     DLDevice device
 */
struct __pyx_t_6mpi4py_3MPI_DLTensor {
  void *data;
  __pyx_t_6mpi4py_3MPI_DLDevice device;
  int32_t ndim;
  __pyx_t_6mpi4py_3MPI_DLDataType dtype;
  int64_t *shape;
  int64_t *strides;
  uint64_t byte_offset;
};

/* "src/mpi4py/MPI.src/asdlpack.pxi":61
 *     uint64_t byte_offset
 * 
 * ctypedef struct DLManagedTensor:             # <<<<<<<<<<<<<<
 *     DLTensor dl_tensor
 *     void *manager_ctx
 */
struct __pyx_t_6mpi4py_3MPI_DLManagedTensor {
  __pyx_t_6mpi4py_3MPI_DLTensor dl_tensor;
  void *manager_ctx;
  void (*deleter)(__pyx_t_6mpi4py_3MPI_DLManagedTensor *);
};

/* "src/mpi4py/MPI.src/asdlpack.pxi":70
 *     DLPACK_FLAG_BITMASK_IS_COPIED = (1UL << 1UL)
 * 
 * ctypedef struct DLManagedTensorVersioned:             # <<<<<<<<<<<<<<
 *     DLPackVersion version
 *     void *manager_ctx
 */
struct __pyx_t_6mpi4py_3MPI_DLManagedTensorVersioned {
  __pyx_t_6mpi4py_3MPI_DLPackVersion version;
  void *manager_ctx;
  void (*deleter)(__pyx_t_6mpi4py_3MPI_DLManagedTensorVersioned *);
  uint64_t flags;
  __pyx_t_6mpi4py_3MPI_DLTensor dl_tensor;
};

/* "src/mpi4py/MPI.src/reqimpl.pxi":71
 *         return 0
 * 
 *     cdef int acquire(self, requests, statuses=None) except -1:             # <<<<<<<<<<<<<<
 *         self.set_requests(requests)
 *         if statuses is not None:
 */
struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire {
  int __pyx_n;
  PyObject *statuses;
};

/* "src/mpi4py/MPI.src/reqimpl.pxi":77
 *         return 0
 * 
 *     cdef int release(self, statuses=None) except -1:             # <<<<<<<<<<<<<<
 *         cdef Request request
 *         cdef Py_ssize_t nr = self.count
 */
struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release {
  int __pyx_n;
  PyObject *statuses;
};
struct __pyx_defaults {
  struct PyMPIInfoObject *__pyx_arg_info;
};
struct __pyx_defaults1 {
  struct PyMPIInfoObject *__pyx_arg_info;
};
struct __pyx_defaults2 {
  struct PyMPIInfoObject *__pyx_arg_info;
};
struct __pyx_defaults3 {
  PyObject *__pyx_arg_info;
};
struct __pyx_defaults4 {
  struct PyMPIInfoObject *__pyx_arg_info;
};
struct __pyx_defaults5 {
  int __pyx_arg_required;
};

/* "mpi4py/MPI.pxd":29
 *     ctypedef MPI_Count  Count  "MPI_Count"
 * 
 * ctypedef api class Datatype [             # <<<<<<<<<<<<<<
 *     type   PyMPIDatatype_Type,
 *     object PyMPIDatatypeObject,
 */
struct PyMPIDatatypeObject {
  PyObject_HEAD
  MPI_Datatype ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPIDatatypeObject PyMPIDatatypeObject;


/* "mpi4py/MPI.pxd":37
 *     cdef object     __weakref__
 * 
 * ctypedef api class Status [             # <<<<<<<<<<<<<<
 *     type   PyMPIStatus_Type,
 *     object PyMPIStatusObject,
 */
struct PyMPIStatusObject {
  PyObject_HEAD
  MPI_Status ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPIStatusObject PyMPIStatusObject;


/* "mpi4py/MPI.pxd":45
 *     cdef object   __weakref__
 * 
 * ctypedef api class Request [             # <<<<<<<<<<<<<<
 *     type   PyMPIRequest_Type,
 *     object PyMPIRequestObject,
 */
struct PyMPIRequestObject {
  PyObject_HEAD
  MPI_Request ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
  PyObject *ob_buf;
};
typedef struct PyMPIRequestObject PyMPIRequestObject;


/* "mpi4py/MPI.pxd":54
 *     cdef object      ob_buf
 * 
 * ctypedef api class Prequest(Request) [             # <<<<<<<<<<<<<<
 *     type   PyMPIPrequest_Type,
 *     object PyMPIPrequestObject,
 */
struct PyMPIPrequestObject {
  struct PyMPIRequestObject __pyx_base;
};
typedef struct PyMPIPrequestObject PyMPIPrequestObject;


/* "mpi4py/MPI.pxd":60
 *     pass
 * 
 * ctypedef api class Grequest(Request) [             # <<<<<<<<<<<<<<
 *     type   PyMPIGrequest_Type,
 *     object PyMPIGrequestObject,
 */
struct PyMPIGrequestObject {
  struct PyMPIRequestObject __pyx_base;
  MPI_Request ob_grequest;
};
typedef struct PyMPIGrequestObject PyMPIGrequestObject;


/* "mpi4py/MPI.pxd":66
 *     cdef MPI_Request ob_grequest
 * 
 * ctypedef api class Message [             # <<<<<<<<<<<<<<
 *     type   PyMPIMessage_Type,
 *     object PyMPIMessageObject,
 */
struct PyMPIMessageObject {
  PyObject_HEAD
  MPI_Message ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
  PyObject *ob_buf;
};
typedef struct PyMPIMessageObject PyMPIMessageObject;


/* "mpi4py/MPI.pxd":75
 *     cdef object      ob_buf
 * 
 * ctypedef api class Op [             # <<<<<<<<<<<<<<
 *     type   PyMPIOp_Type,
 *     object PyMPIOpObject,
 */
struct PyMPIOpObject {
  PyObject_HEAD
  MPI_Op ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPIOpObject PyMPIOpObject;


/* "mpi4py/MPI.pxd":83
 *     cdef object __weakref__
 * 
 * ctypedef api class Group [             # <<<<<<<<<<<<<<
 *     type   PyMPIGroup_Type,
 *     object PyMPIGroupObject,
 */
struct PyMPIGroupObject {
  PyObject_HEAD
  MPI_Group ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPIGroupObject PyMPIGroupObject;


/* "mpi4py/MPI.pxd":91
 *     cdef object  __weakref__
 * 
 * ctypedef api class Info [             # <<<<<<<<<<<<<<
 *     type   PyMPIInfo_Type,
 *     object PyMPIInfoObject,
 */
struct PyMPIInfoObject {
  PyObject_HEAD
  MPI_Info ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPIInfoObject PyMPIInfoObject;


/* "mpi4py/MPI.pxd":99
 *     cdef object __weakref__
 * 
 * ctypedef api class Errhandler [             # <<<<<<<<<<<<<<
 *     type   PyMPIErrhandler_Type,
 *     object PyMPIErrhandlerObject,
 */
struct PyMPIErrhandlerObject {
  PyObject_HEAD
  MPI_Errhandler ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPIErrhandlerObject PyMPIErrhandlerObject;


/* "mpi4py/MPI.pxd":107
 *     cdef object       __weakref__
 * 
 * ctypedef api class Session [             # <<<<<<<<<<<<<<
 *     type   PyMPISession_Type,
 *     object PyMPISessionObject,
 */
struct PyMPISessionObject {
  PyObject_HEAD
  MPI_Session ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPISessionObject PyMPISessionObject;


/* "mpi4py/MPI.pxd":115
 *     cdef object     __weakref__
 * 
 * ctypedef api class Comm [             # <<<<<<<<<<<<<<
 *     type   PyMPIComm_Type,
 *     object PyMPICommObject,
 */
struct PyMPICommObject {
  PyObject_HEAD
  MPI_Comm ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPICommObject PyMPICommObject;


/* "mpi4py/MPI.pxd":123
 *     cdef object __weakref__
 * 
 * ctypedef api class Intracomm(Comm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIIntracomm_Type,
 *     object PyMPIIntracommObject,
 */
struct PyMPIIntracommObject {
  struct PyMPICommObject __pyx_base;
};
typedef struct PyMPIIntracommObject PyMPIIntracommObject;


/* "mpi4py/MPI.pxd":129
 *     pass
 * 
 * ctypedef api class Topocomm(Intracomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPITopocomm_Type,
 *     object PyMPITopocommObject,
 */
struct PyMPITopocommObject {
  struct PyMPIIntracommObject __pyx_base;
};
typedef struct PyMPITopocommObject PyMPITopocommObject;


/* "mpi4py/MPI.pxd":135
 *     pass
 * 
 * ctypedef api class Cartcomm(Topocomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPICartcomm_Type,
 *     object PyMPICartcommObject,
 */
struct PyMPICartcommObject {
  struct PyMPITopocommObject __pyx_base;
};
typedef struct PyMPICartcommObject PyMPICartcommObject;


/* "mpi4py/MPI.pxd":141
 *     pass
 * 
 * ctypedef api class Graphcomm(Topocomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIGraphcomm_Type,
 *     object PyMPIGraphcommObject,
 */
struct PyMPIGraphcommObject {
  struct PyMPITopocommObject __pyx_base;
};
typedef struct PyMPIGraphcommObject PyMPIGraphcommObject;


/* "mpi4py/MPI.pxd":147
 *     pass
 * 
 * ctypedef api class Distgraphcomm(Topocomm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIDistgraphcomm_Type,
 *     object PyMPIDistgraphcommObject,
 */
struct PyMPIDistgraphcommObject {
  struct PyMPITopocommObject __pyx_base;
};
typedef struct PyMPIDistgraphcommObject PyMPIDistgraphcommObject;


/* "mpi4py/MPI.pxd":153
 *     pass
 * 
 * ctypedef api class Intercomm(Comm) [             # <<<<<<<<<<<<<<
 *     type   PyMPIIntercomm_Type,
 *     object PyMPIIntercommObject,
 */
struct PyMPIIntercommObject {
  struct PyMPICommObject __pyx_base;
};
typedef struct PyMPIIntercommObject PyMPIIntercommObject;


/* "mpi4py/MPI.pxd":159
 *     pass
 * 
 * ctypedef api class Win [             # <<<<<<<<<<<<<<
 *     type   PyMPIWin_Type,
 *     object PyMPIWinObject,
 */
struct PyMPIWinObject {
  PyObject_HEAD
  MPI_Win ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
  PyObject *ob_mem;
};
typedef struct PyMPIWinObject PyMPIWinObject;


/* "mpi4py/MPI.pxd":168
 *     cdef object   ob_mem
 * 
 * ctypedef api class File [             # <<<<<<<<<<<<<<
 *     type   PyMPIFile_Type,
 *     object PyMPIFileObject,
 */
struct PyMPIFileObject {
  PyObject_HEAD
  MPI_File ob_mpi;
  unsigned int flags;
  PyObject *__weakref__;
};
typedef struct PyMPIFileObject PyMPIFileObject;


/* "src/mpi4py/MPI.src/allocate.pxi":19
 * @cython.final
 * @cython.internal
 * cdef class _PyMem:             # <<<<<<<<<<<<<<
 * 
 *     cdef void *buf
 */
struct __pyx_obj_6mpi4py_3MPI__PyMem {
  PyObject_HEAD
  void *buf;
  Py_ssize_t len;
  void (*free)(void *);
};


/* "src/mpi4py/MPI.src/asbuffer.pxi":111
 * 
 * @cython.final
 * cdef class buffer:             # <<<<<<<<<<<<<<
 *     """
 *     Buffer.
 */
struct __pyx_obj_6mpi4py_3MPI_buffer {
  PyObject_HEAD
  Py_buffer view;
  int kind;
};


/* "src/mpi4py/MPI.src/attrimpl.pxi":12
 * @cython.final
 * @cython.internal
 * cdef class _p_keyval:             # <<<<<<<<<<<<<<
 * 
 *     cdef public object copy_fn
 */
struct __pyx_obj_6mpi4py_3MPI__p_keyval {
  PyObject_HEAD
  PyObject *copy_fn;
  PyObject *delete_fn;
  int nopython;
  int ierr;
  PyObject *lock;
};


/* "src/mpi4py/MPI.src/reqimpl.pxi":6
 * @cython.final
 * @cython.internal
 * cdef class _p_rs:             # <<<<<<<<<<<<<<
 * 
 *     cdef int         count
 */
struct __pyx_obj_6mpi4py_3MPI__p_rs {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_rs *__pyx_vtab;
  int count;
  MPI_Request *requests;
  MPI_Status *status;
  MPI_Status _status[1];
  MPI_Status *statuses;
  int outcount;
  int *indices;
  PyObject *arg_req;
  PyObject *buf_req;
  PyObject *buf_sts;
  PyObject *buf_ids;
  MPI_Status tmp_sts;
};


/* "src/mpi4py/MPI.src/reqimpl.pxi":140
 * @cython.final
 * @cython.internal
 * cdef class _p_greq:             # <<<<<<<<<<<<<<
 * 
 *     cdef object query_fn
 */
struct __pyx_obj_6mpi4py_3MPI__p_greq {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *__pyx_vtab;
  PyObject *query_fn;
  PyObject *free_fn;
  PyObject *cancel_fn;
  PyObject *args;
  PyObject *kwargs;
};


/* "src/mpi4py/MPI.src/bufaimpl.pxi":4
 * 
 * @cython.final
 * cdef class BufferAutomaticType(int):             # <<<<<<<<<<<<<<
 *     """
 *     Type of `BUFFER_AUTOMATIC`.
 */
struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType {
  PyIntObject __pyx_base;
};


/* "src/mpi4py/MPI.src/drepimpl.pxi":10
 * @cython.final
 * @cython.internal
 * cdef class _p_datarep:             # <<<<<<<<<<<<<<
 * 
 *     cdef object read_fn
 */
struct __pyx_obj_6mpi4py_3MPI__p_datarep {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_datarep *__pyx_vtab;
  PyObject *read_fn;
  PyObject *write_fn;
  PyObject *extent_fn;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":29
 * 
 * @cython.final
 * cdef class BottomType(int):             # <<<<<<<<<<<<<<
 *     """
 *     Type of `BOTTOM`.
 */
struct __pyx_obj_6mpi4py_3MPI_BottomType {
  PyIntObject __pyx_base;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":52
 * 
 * @cython.final
 * cdef class InPlaceType(int):             # <<<<<<<<<<<<<<
 *     """
 *     Type of `IN_PLACE`.
 */
struct __pyx_obj_6mpi4py_3MPI_InPlaceType {
  PyIntObject __pyx_base;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":124
 * @cython.final
 * @cython.internal
 * cdef class _p_message:             # <<<<<<<<<<<<<<
 *     cdef buffer buf
 *     cdef object count
 */
struct __pyx_obj_6mpi4py_3MPI__p_message {
  PyObject_HEAD
  struct __pyx_obj_6mpi4py_3MPI_buffer *buf;
  PyObject *count;
  PyObject *displ;
  struct PyMPIDatatypeObject *type;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":438
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_p2p:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p *__pyx_vtab;
  void *buf;
  MPI_Count count;
  MPI_Datatype dtype;
  PyObject *_msg;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":498
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_cco:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_cco {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *__pyx_vtab;
  void *sbuf;
  void *rbuf;
  MPI_Count scount;
  MPI_Count rcount;
  MPI_Count *scounts;
  MPI_Count *rcounts;
  MPI_Aint *sdispls;
  MPI_Aint *rdispls;
  MPI_Datatype stype;
  MPI_Datatype rtype;
  PyObject *_smsg;
  PyObject *_rmsg;
  PyObject *_rcnt;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":899
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_ccow:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_ccow *__pyx_vtab;
  void *sbuf;
  void *rbuf;
  MPI_Count *scounts;
  MPI_Count *rcounts;
  MPI_Aint *sdispls;
  MPI_Aint *rdispls;
  MPI_Datatype *stypes;
  MPI_Datatype *rtypes;
  PyObject *_smsg;
  PyObject *_rmsg;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":969
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_rma:             # <<<<<<<<<<<<<<
 * 
 *     # raw origin arguments
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_rma {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *__pyx_vtab;
  void *oaddr;
  MPI_Count ocount;
  MPI_Datatype otype;
  void *caddr;
  MPI_Count ccount;
  MPI_Datatype ctype;
  void *raddr;
  MPI_Count rcount;
  MPI_Datatype rtype;
  MPI_Aint tdisp;
  MPI_Count tcount;
  MPI_Datatype ttype;
  PyObject *_origin;
  PyObject *_compare;
  PyObject *_result;
  PyObject *_target;
};


/* "src/mpi4py/MPI.src/msgbuffer.pxi":1135
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_io:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side data
 */
struct __pyx_obj_6mpi4py_3MPI__p_msg_io {
  PyObject_HEAD
  struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io *__pyx_vtab;
  void *buf;
  MPI_Count count;
  MPI_Datatype dtype;
  PyObject *_msg;
};


/* "src/mpi4py/MPI.src/msgpickle.pxi":26
 *     PyPickle_THRESHOLD = int(Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD"))
 * 
 * cdef class Pickle:             # <<<<<<<<<<<<<<
 *     """
 *     Pickle/unpickle Python objects.
 */
struct __pyx_obj_6mpi4py_3MPI_Pickle {
  PyObject_HEAD
  PyObject *ob_dumps;
  PyObject *ob_loads;
  PyObject *ob_PROTO;
  PyObject *ob_THRES;
};


/* "src/mpi4py/MPI.src/msgpickle.pxi":508
 * @cython.final
 * @cython.internal
 * cdef class _p_req_buf:             # <<<<<<<<<<<<<<
 *     cdef buffer buf
 * 
 */
struct __pyx_obj_6mpi4py_3MPI__p_req_buf {
  PyObject_HEAD
  struct __pyx_obj_6mpi4py_3MPI_buffer *buf;
};


/* "src/mpi4py/MPI.src/msgpickle.pxi":528
 * @cython.final
 * @cython.internal
 * cdef class _p_req_obj:             # <<<<<<<<<<<<<<
 *     cdef object obj
 * 
 */
struct __pyx_obj_6mpi4py_3MPI__p_req_obj {
  PyObject_HEAD
  PyObject *obj;
};


/* "src/mpi4py/MPI.src/Exception.pyx":8
 *         pass
 * 
 * cdef class Exception(RuntimeError):             # <<<<<<<<<<<<<<
 *     """
 *     Exception class.
 */
struct __pyx_obj_6mpi4py_3MPI_Exception {
  PyBaseExceptionObject __pyx_base;
  int ob_mpi;
};


/* "src/mpi4py/MPI.src/msgpickle.pxi":149
 * 
 * 
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):             # <<<<<<<<<<<<<<
 *     def buffer_callback(ob):
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 */
struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback {
  PyObject_HEAD
  PyObject *__pyx_v_buffers;
  Py_ssize_t __pyx_v_threshold;
};



/* "src/mpi4py/MPI.src/reqimpl.pxi":6
 * @cython.final
 * @cython.internal
 * cdef class _p_rs:             # <<<<<<<<<<<<<<
 * 
 *     cdef int         count
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_rs {
  int (*set_request)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct PyMPIRequestObject *);
  int (*set_status)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct PyMPIStatusObject *);
  int (*set_requests)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, PyObject *);
  int (*add_statuses)(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
  int (*add_indices)(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
  int (*acquire)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, PyObject *, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire *__pyx_optional_args);
  int (*release)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release *__pyx_optional_args);
  PyObject *(*get_buffer)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, Py_ssize_t);
  PyObject *(*get_result)(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
  PyObject *(*get_object)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, Py_ssize_t);
  PyObject *(*get_objects)(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
  PyObject *(*get_indices)(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_rs *__pyx_vtabptr_6mpi4py_3MPI__p_rs;
static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_request(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct PyMPIRequestObject *);
static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_status(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct PyMPIStatusObject *);
static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_requests(struct __pyx_obj_6mpi4py_3MPI__p_rs *, PyObject *);
static int __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
static int __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
static int __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(struct __pyx_obj_6mpi4py_3MPI__p_rs *, PyObject *, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire *__pyx_optional_args);
static int __pyx_f_6mpi4py_3MPI_5_p_rs_release(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release *__pyx_optional_args);
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_buffer(struct __pyx_obj_6mpi4py_3MPI__p_rs *, Py_ssize_t);
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_result(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_object(struct __pyx_obj_6mpi4py_3MPI__p_rs *, Py_ssize_t);
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_objects(struct __pyx_obj_6mpi4py_3MPI__p_rs *);
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(struct __pyx_obj_6mpi4py_3MPI__p_rs *);


/* "src/mpi4py/MPI.src/reqimpl.pxi":140
 * @cython.final
 * @cython.internal
 * cdef class _p_greq:             # <<<<<<<<<<<<<<
 * 
 *     cdef object query_fn
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq {
  int (*query)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, MPI_Status *);
  int (*free)(struct __pyx_obj_6mpi4py_3MPI__p_greq *);
  int (*cancel)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, int);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq *__pyx_vtabptr_6mpi4py_3MPI__p_greq;
static int __pyx_f_6mpi4py_3MPI_7_p_greq_query(struct __pyx_obj_6mpi4py_3MPI__p_greq *, MPI_Status *);
static int __pyx_f_6mpi4py_3MPI_7_p_greq_free(struct __pyx_obj_6mpi4py_3MPI__p_greq *);
static int __pyx_f_6mpi4py_3MPI_7_p_greq_cancel(struct __pyx_obj_6mpi4py_3MPI__p_greq *, int);


/* "src/mpi4py/MPI.src/drepimpl.pxi":10
 * @cython.final
 * @cython.internal
 * cdef class _p_datarep:             # <<<<<<<<<<<<<<
 * 
 *     cdef object read_fn
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_datarep {
  int (*read)(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, void *, MPI_Datatype, MPI_Count, void *, MPI_Offset);
  int (*write)(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, void *, MPI_Datatype, MPI_Count, void *, MPI_Offset);
  int (*extent)(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, MPI_Datatype, MPI_Aint *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_datarep *__pyx_vtabptr_6mpi4py_3MPI__p_datarep;
static int __pyx_f_6mpi4py_3MPI_10_p_datarep_read(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, void *, MPI_Datatype, MPI_Count, void *, MPI_Offset);
static int __pyx_f_6mpi4py_3MPI_10_p_datarep_write(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, void *, MPI_Datatype, MPI_Count, void *, MPI_Offset);
static int __pyx_f_6mpi4py_3MPI_10_p_datarep_extent(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, MPI_Datatype, MPI_Aint *);


/* "src/mpi4py/MPI.src/msgbuffer.pxi":438
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_p2p:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p {
  int (*for_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int, int);
  int (*for_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int, int);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p *__pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p;
static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int, int);


/* "src/mpi4py/MPI.src/msgbuffer.pxi":498
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_cco:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco {
  int (*for_cco_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
  int (*for_cco_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
  int (*for_bcast)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int, MPI_Comm);
  int (*for_gather)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
  int (*for_scatter)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
  int (*for_allgather)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  int (*for_alltoall)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  int (*for_neighbor_allgather)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  int (*for_neighbor_alltoall)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
  int (*for_cro_send)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
  int (*for_cro_recv)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
  int (*chk_cro_args)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *);
  int (*for_reduce)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, int, MPI_Comm);
  int (*for_allreduce)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  int (*for_reduce_scatter_block)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  int (*for_reduce_scatter)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, PyObject *, MPI_Comm);
  int (*for_scan)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
  int (*for_exscan)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco *__pyx_vtabptr_6mpi4py_3MPI__p_msg_cco;
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, int, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm);


/* "src/mpi4py/MPI.src/msgbuffer.pxi":899
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_ccow:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_ccow {
  int (*for_alltoallw)(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *, PyObject *, PyObject *, MPI_Comm);
  int (*for_neighbor_alltoallw)(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *, PyObject *, PyObject *, MPI_Comm);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_ccow *__pyx_vtabptr_6mpi4py_3MPI__p_msg_ccow;
static int __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_alltoallw(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *, PyObject *, PyObject *, MPI_Comm);
static int __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_neighbor_alltoallw(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *, PyObject *, PyObject *, MPI_Comm);


/* "src/mpi4py/MPI.src/msgbuffer.pxi":969
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_rma:             # <<<<<<<<<<<<<<
 * 
 *     # raw origin arguments
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma {
  int (*for_rma)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, int, PyObject *, int, PyObject *);
  int (*for_put)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
  int (*for_get)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
  int (*for_acc)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
  int (*set_origin)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int);
  int (*set_compare)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int);
  int (*set_result)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int);
  int (*for_get_acc)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, int, PyObject *);
  int (*for_fetch_op)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, int, MPI_Aint);
  int (*for_cmp_swap)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, PyObject *, int, MPI_Aint);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma *__pyx_vtabptr_6mpi4py_3MPI__p_msg_rma;
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, int, PyObject *, int, PyObject *);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_origin(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_compare(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_result(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get_acc(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, int, PyObject *);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_fetch_op(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, int, MPI_Aint);
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_cmp_swap(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, PyObject *, int, MPI_Aint);


/* "src/mpi4py/MPI.src/msgbuffer.pxi":1135
 * @cython.final
 * @cython.internal
 * cdef class _p_msg_io:             # <<<<<<<<<<<<<<
 * 
 *     # raw C-side data
 */

struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io {
  int (*for_read)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *);
  int (*for_write)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *);
};
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io *__pyx_vtabptr_6mpi4py_3MPI__p_msg_io;
static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *);
static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *);
/* #### Code section: utility_code_proto ### */

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, Py_ssize_t);
    void (*DECREF)(void*, PyObject*, Py_ssize_t);
    void (*GOTREF)(void*, PyObject*, Py_ssize_t);
    void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
    void* (*SetupContext)(const char*, Py_ssize_t, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
          }
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
  #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
#endif
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_XINCREF(r)  do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContextNogil()
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_Py_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; Py_XDECREF(tmp);\
    } while (0)
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#if PY_VERSION_HEX >= 0x030C00A6
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->current_exception != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
#else
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->curexc_type != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->curexc_type)
#endif
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  (PyErr_Occurred() != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* PyObjectGetAttrStrNoError.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#if !CYTHON_VECTORCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
    (sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
#if !CYTHON_VECTORCALL
#if PY_VERSION_HEX >= 0x03080000
  #include "frameobject.h"
#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
  #define __Pxy_PyFrame_Initialize_Offsets()
  #define __Pyx_PyFrame_GetLocalsplus(frame)  ((frame)->f_localsplus)
#else
  static size_t __pyx_pyframe_localsplus_offset = 0;
  #include "frameobject.h"
  #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
#endif
#endif

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectFastCall.proto */
#define __Pyx_PyObject_FastCall(func, args, nargs)  __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);

/* RaiseUnexpectedTypeError.proto */
static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);

/* GetAttr3.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);

/* GetTopmostException.proto */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* IncludeStringH.proto */
#include <string.h>

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
#define __Pyx_PyErr_ExceptionMatches2(err1, err2)  __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
#else
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif

/* GCCDiagnostics.proto */
#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif

/* BuildPyUnicode.proto */
static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
                                                int prepend_sign, char padding_char);

/* CIntToPyUnicode.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char);

/* JoinPyUnicode.proto */
static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char);

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* TupleAndListFromArray.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
#endif

/* fastcall.proto */
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_Arg_VARARGS(args, i) PySequence_GetItem(args, i)
#elif CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
#else
    #define __Pyx_Arg_VARARGS(args, i) PyTuple_GetItem(args, i)
#endif
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_Arg_NewRef_VARARGS(arg) __Pyx_NewRef(arg)
    #define __Pyx_Arg_XDECREF_VARARGS(arg) Py_XDECREF(arg)
#else
    #define __Pyx_Arg_NewRef_VARARGS(arg) arg
    #define __Pyx_Arg_XDECREF_VARARGS(arg)
#endif
#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
#define __Pyx_KwValues_VARARGS(args, nargs) NULL
#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
#if CYTHON_METH_FASTCALL
    #define __Pyx_Arg_FASTCALL(args, i) args[i]
    #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
    #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
    static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
    CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
  #else
    #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
  #endif
    #define __Pyx_Arg_NewRef_FASTCALL(arg) arg  /* no-op, __Pyx_Arg_FASTCALL is direct and this needs
                                                   to have the same reference counting */
    #define __Pyx_Arg_XDECREF_FASTCALL(arg)
#else
    #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
    #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
    #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
    #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
    #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
    #define __Pyx_Arg_NewRef_FASTCALL(arg) __Pyx_Arg_NewRef_VARARGS(arg)
    #define __Pyx_Arg_XDECREF_FASTCALL(arg) __Pyx_Arg_XDECREF_VARARGS(arg)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
#else
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
#endif

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues,
    PyObject **argnames[],
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,
    const char* function_name);

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* KeywordStringCheck.proto */
static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);

/* GetAttr.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);

/* HasAttr.proto */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* IterFinish.proto */
static CYTHON_INLINE int __Pyx_IterFinish(void);

/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);

/* SwapException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name)\
    (likely(PyDict_CheckExact(obj)) ?\
     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
#else
#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
#endif

/* dict_getitem_default.proto */
static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);

/* UnpackUnboundCMethod.proto */
typedef struct {
    PyObject *type;
    PyObject **method_name;
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;

/* CallUnboundCMethod1.proto */
static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
#else
#define __Pyx_CallUnboundCMethod1(cfunc, self, arg)  __Pyx__CallUnboundCMethod1(cfunc, self, arg)
#endif

/* CallUnboundCMethod2.proto */
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
#else
#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
#endif

/* RaiseNoneIterError.proto */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* UnicodeAsUCS4.proto */
static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject*);

/* object_ord.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyObject_Ord(c)\
    (likely(PyUnicode_Check(c)) ? (long)__Pyx_PyUnicode_AsPy_UCS4(c) : __Pyx__PyObject_Ord(c))
#else
#define __Pyx_PyObject_Ord(c) __Pyx__PyObject_Ord(c)
#endif
static long __Pyx__PyObject_Ord(PyObject* c);

/* PyObjectFormatAndDecref.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f);
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f);

/* PyObjectFormatSimple.proto */
#if CYTHON_COMPILING_IN_PYPY
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#elif PY_MAJOR_VERSION < 3
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\
        PyObject_Format(s, f))
#elif CYTHON_USE_TYPE_SLOTS
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\
        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\
        PyObject_Format(s, f))
#else
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#endif

/* CIntToPyUnicode.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char);

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                               int is_list, int wraparound, int boundscheck);

/* tp_new.proto */
#define __Pyx_tp_new(type_obj, args) __Pyx_tp_new_kwargs(type_obj, args, NULL)
static CYTHON_INLINE PyObject* __Pyx_tp_new_kwargs(PyObject* type_obj, PyObject* args, PyObject* kwargs) {
    return (PyObject*) (((PyTypeObject*)type_obj)->tp_new((PyTypeObject*)type_obj, args, kwargs));
}

/* PyDictContains.proto */
static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
    int result = PyDict_Contains(dict, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    (version_var) = __PYX_GET_DICT_VERSION(dict);\
    (cache_var) = (value);
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
        (VAR) = __pyx_dict_cached_value;\
    } else {\
        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    }\
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
#else
#define __PYX_GET_DICT_VERSION(dict)  (0)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
#endif

/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
#define __Pyx_GetModuleGlobalName(var, name)  do {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
        (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
        __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  do {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
#endif

/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 0)
#define __Pyx_PyObject_LookupSpecial(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 1)
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error);
#else
#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n)
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif

/* ListCompAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len)) {
        Py_INCREF(x);
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
        L->ob_item[len] = x;
        #else
        PyList_SET_ITEM(list, len, x);
        #endif
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
#endif

/* py_dict_pop.proto */
static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value);

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
        __Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
        Py_INCREF(x);
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
        L->ob_item[len] = x;
        #else
        PyList_SET_ITEM(list, len, x);
        #endif
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* RaiseClosureNameError.proto */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);

/* IncludeStructmemberH.proto */
#include <structmember.h>

/* FixUpExtensionType.proto */
#if CYTHON_USE_TYPE_SPECS
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
#endif

/* FetchSharedCythonModule.proto */
static PyObject *__Pyx_FetchSharedCythonABIModule(void);

/* FetchCommonType.proto */
#if !CYTHON_USE_TYPE_SPECS
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
#else
static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
#endif

/* PyMethodNew.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    PyObject *typesModule=NULL, *methodType=NULL, *result=NULL;
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    typesModule = PyImport_ImportModule("types");
    if (!typesModule) return NULL;
    methodType = PyObject_GetAttrString(typesModule, "MethodType");
    Py_DECREF(typesModule);
    if (!methodType) return NULL;
    result = PyObject_CallFunctionObjArgs(methodType, func, self, NULL);
    Py_DECREF(methodType);
    return result;
}
#elif PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    return PyMethod_New(func, self);
}
#else
    #define __Pyx_PyMethod_New PyMethod_New
#endif

/* PyVectorcallFastCallDict.proto */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
#endif

/* CythonFunctionShared.proto */
#define __Pyx_CyFunction_USED
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CYFUNCTION_COROUTINE     0x08
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_CyFunction_GetClassObj(f)\
      (((__pyx_CyFunctionObject *) (f))->func_classobj)
#else
  #define __Pyx_CyFunction_GetClassObj(f)\
      ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
#endif
#define __Pyx_CyFunction_SetClassObj(f, classobj)\
    __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject_HEAD
    PyObject *func;
#elif PY_VERSION_HEX < 0x030900B1
    PyCFunctionObject func;
#else
    PyCMethodObject func;
#endif
#if CYTHON_BACKPORT_VECTORCALL
    __pyx_vectorcallfunc func_vectorcall;
#endif
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_classobj;
#endif
    void *defaults;
    int defaults_pyobjects;
    size_t defaults_size;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
    PyObject *func_is_coroutine;
} __pyx_CyFunctionObject;
#undef __Pyx_CyOrPyCFunction_Check
#define __Pyx_CyFunction_Check(obj)  __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
#define __Pyx_CyOrPyCFunction_Check(obj)  __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
#define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc);
#undef __Pyx_IsSameCFunction
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCyOrCFunction(func, cfunc)
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(PyObject *module);
#if CYTHON_METH_FASTCALL
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
#if CYTHON_BACKPORT_VECTORCALL
#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
#else
#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
#endif
#endif

/* CythonFunction.proto */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);

/* PyObjectCall2Args.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);

/* PyObjectGetMethod.proto */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);

/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);

/* StringJoin.proto */
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyString_Join __Pyx_PyBytes_Join
#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v))
#else
#define __Pyx_PyString_Join PyUnicode_Join
#define __Pyx_PyBaseString_Join PyUnicode_Join
#endif
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values);

/* pop_index.proto */
static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix);
static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix);
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix);
#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
    (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\
        __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
            __Pyx__PyObject_PopIndex(L, py_ix)))
#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
    __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\
        __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
            __Pyx__PyObject_PopIndex(L, py_ix)))
#else
#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\
    __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)
#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
    (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
        __Pyx__PyObject_PopIndex(L, py_ix))
#endif

/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* PyObjectCallNoArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);

/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* UnpackTupleError.proto */
static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);

/* UnpackTuple2.proto */
#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
    (likely(is_tuple || PyTuple_Check(tuple)) ?\
        (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
            __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
            (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
        __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
static int __Pyx_unpack_tuple2_generic(
    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);

/* dict_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);

/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key);
#else
#define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
#endif

/* SliceObject.proto */
#define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
    __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
        PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_MultiplyCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyInt_MultiplyCObj(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceMultiply(op1, op2) : PyNumber_Multiply(op1, op2))
#endif

/* SliceObject.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* append.proto */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);

/* py_dict_values.proto */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);

/* CallUnboundCMethod0.proto */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CallUnboundCMethod0(cfunc, self)\
    (likely((cfunc)->func) ?\
        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
         (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
            (PY_VERSION_HEX >= 0x030700A0 ?\
                (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
                (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
          (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
            (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
            (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
               ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
               __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
        __Pyx__CallUnboundCMethod0(cfunc, self))
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

/* ValidateBasesTuple.proto */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
#endif

/* PyType_Ready.proto */
CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);

/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
#endif

/* PyObject_GenericGetAttr.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
#endif

/* SetVTable.proto */
static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);

/* GetVTable.proto */
static void* __Pyx_GetVtable(PyTypeObject *type);

/* MergeVTables.proto */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_MergeVtables(PyTypeObject *type);
#endif

/* FormatTypeName.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%U"
static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
#else
typedef const char *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%.200s"
#define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
#define __Pyx_DECREF_TypeName(obj)
#endif

/* ValidateExternBase.proto */
static int __Pyx_validate_extern_base(PyTypeObject *base);

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_11
#define __PYX_HAVE_RT_ImportType_proto_3_0_11
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#include <stdalign.h>
#endif
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) alignof(s)
#else
#define __PYX_GET_STRUCT_ALIGNMENT_3_0_11(s) sizeof(void*)
#endif
enum __Pyx_ImportType_CheckSize_3_0_11 {
   __Pyx_ImportType_CheckSize_Error_3_0_11 = 0,
   __Pyx_ImportType_CheckSize_Warn_3_0_11 = 1,
   __Pyx_ImportType_CheckSize_Ignore_3_0_11 = 2
};
static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size);
#endif

/* GetNameInClass.proto */
#define __Pyx_GetNameInClass(var, nmspace, name)  (var) = __Pyx__GetNameInClass(nmspace, name)
static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name);

/* ClassMethod.proto */
#include "descrobject.h"
CYTHON_UNUSED static PyObject* __Pyx_Method_ClassMethod(PyObject *method);

/* RegisterModuleCleanup.proto */
static void __pyx_module_cleanup(PyObject *self);
#if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
static int __Pyx_RegisterCleanup(void);
#else
#define __Pyx_RegisterCleanup() (0)
#endif

/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#else
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif

/* CodeObjectCache.proto */
#if !CYTHON_COMPILING_IN_LIMITED_API
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
#endif

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From___pyx_anon_enum(int value);

/* CIntFromPy.proto */
static CYTHON_INLINE MPI_Count __Pyx_PyInt_As_MPI_Count(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* 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 int __Pyx_PyInt_As_unsigned_int(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value);

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);

/* 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 *);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* CheckBinaryVersion.proto */
static unsigned long __Pyx_get_runtime_version(void);
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);

/* FunctionExport.proto */
static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);

/* #### Code section: module_declarations ### */
static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_request(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request); /* proto*/
static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_status(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto*/
static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_requests(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, PyObject *__pyx_v_requests); /* proto*/
static int __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self); /* proto*/
static int __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self); /* proto*/
static int __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, PyObject *__pyx_v_requests, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire *__pyx_optional_args); /* proto*/
static int __pyx_f_6mpi4py_3MPI_5_p_rs_release(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release *__pyx_optional_args); /* proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_buffer(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, Py_ssize_t __pyx_v_index); /* proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_result(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_object(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, Py_ssize_t __pyx_v_index); /* proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_objects(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self); /* proto*/
static int __pyx_f_6mpi4py_3MPI_7_p_greq_query(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, MPI_Status *__pyx_v_status); /* proto*/
static int __pyx_f_6mpi4py_3MPI_7_p_greq_free(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self); /* proto*/
static int __pyx_f_6mpi4py_3MPI_7_p_greq_cancel(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, int __pyx_v_completed); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_datarep_read(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_datarep_write(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_datarep_extent(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, MPI_Datatype __pyx_v_datatype, MPI_Aint *__pyx_v_file_extent); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_rank, int __pyx_v_parts); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_rank, int __pyx_v_parts); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_VECTOR, PyObject *__pyx_v_amsg, int __pyx_v_rank, int __pyx_v_blocks); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_VECTOR, PyObject *__pyx_v_amsg, int __pyx_v_rank, int __pyx_v_blocks); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_root, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_amsg, int __pyx_v_root); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_amsg, int __pyx_v_root); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, PyObject *__pyx_v_rcnt, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_alltoallw(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_neighbor_alltoallw(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, int __pyx_v_readonly, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_origin(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_compare(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_compare, int __pyx_v_rank); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_result(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_result, int __pyx_v_rank); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get_acc(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_rank, PyObject *__pyx_v_target); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_fetch_op(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_rank, MPI_Aint __pyx_v_disp); /* proto*/
static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_cmp_swap(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_compare, PyObject *__pyx_v_result, int __pyx_v_rank, MPI_Aint __pyx_v_disp); /* proto*/
static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self, PyObject *__pyx_v_msg); /* proto*/
static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self, PyObject *__pyx_v_msg); /* proto*/

/* Module declarations from "mpi4py.libmpi" */

/* Module declarations from "cython" */

/* Module declarations from "__builtin__" */

/* Module declarations from "mpi4py.MPI" */
static __pyx_t_6mpi4py_3MPI_Options __pyx_v_6mpi4py_3MPI_options;
static int __pyx_v_6mpi4py_3MPI_mpi_version;
static int __pyx_v_6mpi4py_3MPI_mpi_subversion;
static int __pyx_v_6mpi4py_3MPI_mpi_numversion;
static int __pyx_v_6mpi4py_3MPI_abort_status;
static PyObject *__pyx_v_6mpi4py_3MPI_MPIException = 0;
static PyObject *__pyx_v_6mpi4py_3MPI__py_module_sentinel = 0;
static char __pyx_v_6mpi4py_3MPI_BYTE_FMT[2];
static PyObject *__pyx_v_6mpi4py_3MPI_Lock = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_RLock = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_def_registry = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___newobj__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_def_op = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_keyval_lock_type = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_keyval_lock_comm = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_keyval_lock_win = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_keyval_registry_type = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_keyval_registry_comm = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_keyval_registry_win = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_errhdl_lock = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_errhdl_registry = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_op_user_lock = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_op_user_registry = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI__mpi_buffer_comm = 0;
static PyObject *__pyx_v_6mpi4py_3MPI__mpi_buffer_session = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___UNWEIGHTED__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__ = 0;
static int __pyx_v_6mpi4py_3MPI_commlock_keyval;
static PyObject *__pyx_v_6mpi4py_3MPI_commlock_lock = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_commlock_registry = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_datarep_lock = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_datarep_registry = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___BOTTOM__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI___IN_PLACE__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_dumps = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_loads = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD = 0;
static struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE = 0;
static int __pyx_v_6mpi4py_3MPI_have_pickle5;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle5_dumps = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_PyPickle5_loads = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___PACKED__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___BYTE__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___AINT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___OFFSET__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COUNT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___WCHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SHORT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_BOOL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT8_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT16_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT32_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT64_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT8_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT16_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT32_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___UINT64_T__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CXX_BOOL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___SHORT_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INT_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___FLOAT_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___CHARACTER__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL1__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL2__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___LOGICAL8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER1__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER2__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___INTEGER16__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL2__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___REAL16__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX4__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX8__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX16__ = 0;
static struct PyMPIDatatypeObject *__pyx_v_6mpi4py_3MPI___COMPLEX32__ = 0;
static struct PyMPIRequestObject *__pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = 0;
static struct PyMPIMessageObject *__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__ = 0;
static struct PyMPIMessageObject *__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___OP_NULL__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MAX__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MIN__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___SUM__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___PROD__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LAND__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BAND__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___LXOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___BXOR__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MAXLOC__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___MINLOC__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___REPLACE__ = 0;
static struct PyMPIOpObject *__pyx_v_6mpi4py_3MPI___NO_OP__ = 0;
static struct PyMPIGroupObject *__pyx_v_6mpi4py_3MPI___GROUP_NULL__ = 0;
static struct PyMPIGroupObject *__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = 0;
static struct PyMPIInfoObject *__pyx_v_6mpi4py_3MPI___INFO_NULL__ = 0;
static struct PyMPIInfoObject *__pyx_v_6mpi4py_3MPI___INFO_ENV__ = 0;
static struct PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = 0;
static struct PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = 0;
static struct PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__ = 0;
static struct PyMPIErrhandlerObject *__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = 0;
static struct PyMPISessionObject *__pyx_v_6mpi4py_3MPI___SESSION_NULL__ = 0;
static struct PyMPICommObject *__pyx_v_6mpi4py_3MPI___COMM_NULL__ = 0;
static struct PyMPIIntracommObject *__pyx_v_6mpi4py_3MPI___COMM_SELF__ = 0;
static struct PyMPIIntracommObject *__pyx_v_6mpi4py_3MPI___COMM_WORLD__ = 0;
static struct PyMPIIntercommObject *__pyx_v_6mpi4py_3MPI___COMM_PARENT__ = 0;
static struct PyMPIWinObject *__pyx_v_6mpi4py_3MPI___WIN_NULL__ = 0;
static struct PyMPIFileObject *__pyx_v_6mpi4py_3MPI___FILE_NULL__ = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_TypeDict = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_CTypeDict = 0;
static PyObject *__pyx_v_6mpi4py_3MPI_FTypeDict = 0;
static PyObject *__pyx_f_6mpi4py_3MPI_getOpt(PyObject *, char const *, PyObject *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_warnOpt(char const *, PyObject *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_getOptions(__pyx_t_6mpi4py_3MPI_Options *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_warn_environ(char const *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_warn_mpiexec(char const *, char const *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_check_mpiexec(void); /*proto*/
static int __pyx_f_6mpi4py_3MPI_bootstrap(void); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_mpi_active(void); /*proto*/
static int __pyx_f_6mpi4py_3MPI_initialize(void); /*proto*/
static void __pyx_f_6mpi4py_3MPI_finalize(void); /*proto*/
static void __pyx_f_6mpi4py_3MPI_atexit(void); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Raise(int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_CHKERR(int); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_py_module_alive(void); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_Py_IsInitialized(void); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_f_6mpi4py_3MPI_allocate(Py_ssize_t, size_t, void *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_f_6mpi4py_3MPI_rawalloc(Py_ssize_t, size_t, int, void *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmpistr(PyObject *, char **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_tompistr(char const *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_mpistr(char const *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_pystr(char const *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cstr2bool(char const *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cstr_is_bool(char const *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cstr_is_uint(char const *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmpifspath(PyObject *, char **); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_big_endian(void); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_little_endian(void); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_check_version(__pyx_t_6mpi4py_3MPI_DLPackVersion const *, unsigned int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_is_contig(__pyx_t_6mpi4py_3MPI_DLTensor const *, char); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_check_shape(__pyx_t_6mpi4py_3MPI_DLTensor const *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_check_contig(__pyx_t_6mpi4py_3MPI_DLTensor const *); /*proto*/
static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_dlpack_get_data(__pyx_t_6mpi4py_3MPI_DLTensor const *); /*proto*/
static CYTHON_INLINE Py_ssize_t __pyx_f_6mpi4py_3MPI_dlpack_get_size(__pyx_t_6mpi4py_3MPI_DLTensor const *); /*proto*/
static CYTHON_INLINE char *__pyx_f_6mpi4py_3MPI_dlpack_get_format(__pyx_t_6mpi4py_3MPI_DLTensor const *); /*proto*/
static CYTHON_INLINE Py_ssize_t __pyx_f_6mpi4py_3MPI_dlpack_get_itemsize(__pyx_t_6mpi4py_3MPI_DLTensor const *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_Py_CheckDLPackBuffer(PyObject *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_Py_GetDLPackBuffer(PyObject *, Py_buffer *, int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cuda_is_contig(PyObject *, PyObject *, Py_ssize_t, char); /*proto*/
static CYTHON_INLINE char *__pyx_f_6mpi4py_3MPI_cuda_get_format(char, Py_ssize_t); /*proto*/
static int __pyx_f_6mpi4py_3MPI_Py_CheckCAIBuffer(PyObject *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_Py_GetCAIBuffer(PyObject *, Py_buffer *, int); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_GetBuffer(PyObject *, Py_buffer *, int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_check_cpu_accessible(int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_newbuffer(void); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_getbuffer(PyObject *, int, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_asbuffer(PyObject *, void **, MPI_Aint *, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_asbuffer_r(PyObject *, void **, MPI_Aint *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_asbuffer_w(PyObject *, void **, MPI_Aint *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_tobuffer(PyObject *, void *, MPI_Aint, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_mpibuf(void *, MPI_Count); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_aspybuffer(PyObject *, void **, MPI_Aint *, int, char const *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_integral(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_chklength(Py_ssize_t); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Datatype(PyObject *, MPI_Count, MPI_Datatype **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Info(PyObject *, MPI_Count, MPI_Info **); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_string(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asstring(PyObject *, char **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_str(PyObject *, char ***); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argv(PyObject *, char ***); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_cmds(PyObject *, int *, char ***); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argvs(PyObject *, int, char ****); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_nprocs(PyObject *, int, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_New(PyTypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_named_Datatype(MPI_Datatype); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Datatype(MPI_Datatype); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Request(MPI_Request); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Message(MPI_Message); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Op(MPI_Op); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Group(MPI_Group); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Info(MPI_Info); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Errhandler(MPI_Errhandler); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Session(MPI_Session); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Comm(MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Win(MPI_Win); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_File(MPI_File); /*proto*/
static CYTHON_INLINE MPI_Status *__pyx_f_6mpi4py_3MPI_arg_Status(PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_Datatype, PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_ref_Datatype(MPI_Datatype); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_reduce_Datatype(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE struct PyMPIRequestObject *__pyx_f_6mpi4py_3MPI_def_Request(MPI_Request, PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIMessageObject *__pyx_f_6mpi4py_3MPI_def_Message(MPI_Message, PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIOpObject *__pyx_f_6mpi4py_3MPI_def_Op(MPI_Op, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_reduce_Op(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE struct PyMPIGroupObject *__pyx_f_6mpi4py_3MPI_def_Group(MPI_Group, PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIInfoObject *__pyx_f_6mpi4py_3MPI_def_Info(MPI_Info, PyObject *); /*proto*/
static CYTHON_INLINE MPI_Info __pyx_f_6mpi4py_3MPI_arg_Info(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_reduce_Info(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE struct PyMPIErrhandlerObject *__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_Errhandler, PyObject *); /*proto*/
static CYTHON_INLINE MPI_Errhandler __pyx_f_6mpi4py_3MPI_arg_Errhandler(PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPISessionObject *__pyx_f_6mpi4py_3MPI_def_Session(MPI_Session, PyObject *); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_f_6mpi4py_3MPI_CommType(MPI_Comm); /*proto*/
static CYTHON_INLINE struct PyMPICommObject *__pyx_f_6mpi4py_3MPI_def_Comm(MPI_Comm, PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIIntracommObject *__pyx_f_6mpi4py_3MPI_def_Intracomm(MPI_Comm, PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIIntercommObject *__pyx_f_6mpi4py_3MPI_def_Intercomm(MPI_Comm); /*proto*/
static CYTHON_INLINE struct PyMPIWinObject *__pyx_f_6mpi4py_3MPI_def_Win(MPI_Win, PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIFileObject *__pyx_f_6mpi4py_3MPI_def_File(MPI_File, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_session_set_eh(MPI_Session); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_comm_set_eh(MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_set_eh(MPI_Win); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_file_set_eh(MPI_File); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_query(void *, MPI_Status *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_free(void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_greq_cancel(void *, int); /*proto*/
static int MPIAPI __pyx_f_6mpi4py_3MPI_greq_query_fn(void *, MPI_Status *); /*proto*/
static int MPIAPI __pyx_f_6mpi4py_3MPI_greq_free_fn(void *); /*proto*/
static int MPIAPI __pyx_f_6mpi4py_3MPI_greq_cancel_fn(void *, int); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_MAX(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_MIN(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_SUM(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_PROD(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_BAND(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_BOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_BXOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_LAND(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_LOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_LXOR(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_MAXLOC(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_MINLOC(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_REPLACE(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_op_NO_OP(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_op_user_call_py(int, PyObject *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_call_mpi(int, void *, void *, MPI_Count, MPI_Datatype); /*proto*/
static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_call(int, void *, void *, MPI_Count, MPI_Datatype); /*proto*/
static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_id_set(struct PyMPIOpObject *, int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_id_get(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_id_pop(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_new(struct PyMPIOpObject *, PyObject *, MPI_User_function **, MPI_User_function_c **); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_cpy(struct PyMPIOpObject *, struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_del(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_op_call(MPI_Op, int, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_BUFFER_AUTOMATIC(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_attach_buffer(PyObject *, void **, MPI_Count *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_UNWEIGHTED(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_WEIGHTS_EMPTY(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_weights(PyObject *, int, int **); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_comm_neighbors_count(MPI_Comm, int *, int *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_commlock_free_cb(MPI_Comm); /*proto*/
static int MPIAPI __pyx_f_6mpi4py_3MPI_commlock_free_fn(MPI_Comm, int, void *, void *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_commlock_table(MPI_Comm); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Lock(MPI_Comm, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Lock_table(MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_get_base(MPI_Win, void **); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_get_size(MPI_Win, MPI_Aint *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_get_unit(MPI_Win, int *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_datarep_read(void *, MPI_Datatype, MPI_Count, void *, MPI_Offset, void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_datarep_write(void *, MPI_Datatype, MPI_Count, void *, MPI_Offset, void *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_datarep_extent(MPI_Datatype, MPI_Aint *, void *); /*proto*/
static int MPIAPI __pyx_f_6mpi4py_3MPI_datarep_read_fn(void *, MPI_Datatype, MPI_Count, void *, MPI_Offset, void *); /*proto*/
static int MPIAPI __pyx_f_6mpi4py_3MPI_datarep_write_fn(void *, MPI_Datatype, MPI_Count, void *, MPI_Offset, void *); /*proto*/
static int MPIAPI __pyx_f_6mpi4py_3MPI_datarep_extent_fn(MPI_Datatype, MPI_Aint *, void *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_buffer(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_dlpack_buffer(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_cai_buffer(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_datatype(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_constant(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_BOTTOM(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_IN_PLACE(PyObject *); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_getformat(char const *); /*proto*/
static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_lookup_datatype(PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_asdatatype(PyObject *); /*proto*/
static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_getdatatype(char const *); /*proto*/
static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_basic(PyObject *, PyObject *, int, void **, MPI_Count *, MPI_Datatype *); /*proto*/
static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_simple(PyObject *, int, int, int, void **, MPI_Count *, MPI_Datatype *); /*proto*/
static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_vector(PyObject *, int, int, int, void **, MPI_Count **, MPI_Aint **, MPI_Datatype *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_message_vector_w(PyObject *, int, int, void **, MPI_Count **, MPI_Aint **, MPI_Datatype **); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_send(PyObject *, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_recv(PyObject *, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_psend(PyObject *, int, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_precv(PyObject *, int, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_f_6mpi4py_3MPI_message_cco(void); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_f_6mpi4py_3MPI_message_ccow(void); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma(void); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_read(PyObject *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_write(PyObject *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_import_pickle5(void); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_get_buffer_callback(PyObject *, Py_ssize_t); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_cdumps_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_cloads_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_cdumps(struct __pyx_obj_6mpi4py_3MPI_Pickle *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_cloads(struct __pyx_obj_6mpi4py_3MPI_Pickle *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_pickle_dump(struct __pyx_obj_6mpi4py_3MPI_Pickle *, PyObject *, void **, MPI_Count *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_pickle_load(struct __pyx_obj_6mpi4py_3MPI_Pickle *, void *, MPI_Count); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_pickle_dumpv(struct __pyx_obj_6mpi4py_3MPI_Pickle *, PyObject *, void **, int, MPI_Count *, MPI_Aint *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_pickle_loadv(struct __pyx_obj_6mpi4py_3MPI_Pickle *, void *, int, MPI_Count *, MPI_Aint *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_pickle_alloc(void **, MPI_Count); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_pickle_allocv(void **, int, MPI_Count *, MPI_Aint *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_allocate_count_displ(int, MPI_Count **, MPI_Aint **); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_send(PyObject *, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bsend(PyObject *, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ssend(PyObject *, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_obarg(PyObject *, int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_match(PyObject *, int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_probe(PyObject *, int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv(PyObject *, int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_isend(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ibsend(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_issend(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_irecv(PyObject *, int, int, MPI_Comm, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_sendrecv(PyObject *, int, int, PyObject *, int, int, MPI_Comm, MPI_Status *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wrap_buffer(struct __pyx_obj_6mpi4py_3MPI_buffer *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_load_buffer(struct __pyx_obj_6mpi4py_3MPI__p_req_buf *, MPI_Status *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wrap_object(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_load_object(struct __pyx_obj_6mpi4py_3MPI__p_req_obj *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_load(PyObject *, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wait(struct PyMPIRequestObject *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_test(struct PyMPIRequestObject *, int *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitany(PyObject *, int *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testany(PyObject *, int *, int *, struct PyMPIStatusObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitall(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testall(PyObject *, int *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitsome(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testsome(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_probe(int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_iprobe(int, int, MPI_Comm, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_mprobe(int, int, MPI_Comm, MPI_Message *, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_improbe(int, int, MPI_Comm, int *, MPI_Message *, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_mrecv(PyObject *, MPI_Message *, MPI_Status *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_imrecv(PyObject *, MPI_Message *, MPI_Request *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_barrier(MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bcast(PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_gather(PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scatter(PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allgather(PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_alltoall(PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_neighbor_allgather(PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_neighbor_alltoall(PyObject *, MPI_Comm); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_reduce(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_scan(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_exscan(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_naive(PyObject *, PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce_naive(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan_naive(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan_naive(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_copy(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_send_p2p(PyObject *, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_p2p(int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_sendrecv_p2p(PyObject *, int, int, int, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bcast_p2p(PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_p2p(PyObject *, PyObject *, int, MPI_Comm, int); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan_p2p(PyObject *, PyObject *, MPI_Comm, int); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan_p2p(PyObject *, PyObject *, MPI_Comm, int); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTRA(MPI_Comm, MPI_Comm *, int *); /*proto*/
static int __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTER(MPI_Comm, MPI_Comm *, int *, MPI_Comm *, int *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_intra(PyObject *, PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_inter(PyObject *, PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce_intra(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce_inter(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan_intra(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan_intra(PyObject *, PyObject *, MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_comm_is_intra(MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce(PyObject *, PyObject *, int, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan(PyObject *, PyObject *, MPI_Comm); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_New(MPI_Datatype); /*proto*/
static MPI_Datatype *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIStatus_New(MPI_Status *); /*proto*/
static MPI_Status *__pyx_f_6mpi4py_3MPI_PyMPIStatus_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIRequest_New(MPI_Request); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIPrequest_New(MPI_Request); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIGrequest_New(MPI_Request); /*proto*/
static MPI_Request *__pyx_f_6mpi4py_3MPI_PyMPIRequest_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIMessage_New(MPI_Message); /*proto*/
static MPI_Message *__pyx_f_6mpi4py_3MPI_PyMPIMessage_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIOp_New(MPI_Op); /*proto*/
static MPI_Op *__pyx_f_6mpi4py_3MPI_PyMPIOp_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIGroup_New(MPI_Group); /*proto*/
static MPI_Group *__pyx_f_6mpi4py_3MPI_PyMPIGroup_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIInfo_New(MPI_Info); /*proto*/
static MPI_Info *__pyx_f_6mpi4py_3MPI_PyMPIInfo_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New(MPI_Errhandler); /*proto*/
static MPI_Errhandler *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPISession_New(MPI_Session); /*proto*/
static MPI_Session *__pyx_f_6mpi4py_3MPI_PyMPISession_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIComm_New(MPI_Comm); /*proto*/
static MPI_Comm *__pyx_f_6mpi4py_3MPI_PyMPIComm_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIWin_New(MPI_Win); /*proto*/
static MPI_Win *__pyx_f_6mpi4py_3MPI_PyMPIWin_Get(PyObject *); /*proto*/
static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIFile_New(MPI_File); /*proto*/
static MPI_File *__pyx_f_6mpi4py_3MPI_PyMPIFile_Get(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_AddTypeMap(PyObject *, char const *, struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typechr(char const *, size_t); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typestr(char const *, size_t); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typechr_to_typestr(char const *); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_mpiaddrchr(size_t); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_mpicombiner(MPI_Datatype); /*proto*/
static CYTHON_INLINE MPI_Count __pyx_f_6mpi4py_3MPI_mpiextent(MPI_Datatype); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_mpifortchr(char const *, MPI_Datatype); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_mpifortstr(char const *, MPI_Datatype); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typeDUP(char const *(*)(MPI_Datatype), MPI_Datatype); /*proto*/
static CYTHON_INLINE size_t __pyx_f_6mpi4py_3MPI_typealign(char const *); /*proto*/
static CYTHON_INLINE size_t __pyx_f_6mpi4py_3MPI_typealignpair(char const *, char const *); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_DatatypeChar(MPI_Datatype); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_DatatypeStr(MPI_Datatype); /*proto*/
static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_DatatypeCode(MPI_Datatype); /*proto*/
static CYTHON_INLINE size_t __pyx_f_6mpi4py_3MPI_DatatypeAlign(MPI_Datatype); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_combinername(int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_datatype_decode(struct PyMPIDatatypeObject *, int); /*proto*/
static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_datatype_create(struct PyMPIDatatypeObject *, PyObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_datatype_visit(int (*)(struct PyMPIDatatypeObject *), PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI__mpi_type(PyObject *, PyTypeObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(Py_ssize_t, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_newarray(Py_ssize_t, MPI_Aint **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(Py_ssize_t, MPI_Count **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(PyObject *, int *, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0_1__pyx_f_6mpi4py_3MPI_getarray(PyObject *, int *, MPI_Aint **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_getarray(PyObject *, int *, MPI_Count **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1_0__pyx_f_6mpi4py_3MPI_getarray(PyObject *, MPI_Count *, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1_1__pyx_f_6mpi4py_3MPI_getarray(PyObject *, MPI_Count *, MPI_Aint **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(PyObject *, MPI_Count *, MPI_Count **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(PyObject *, int, int **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0_1__pyx_f_6mpi4py_3MPI_chkarray(PyObject *, int, MPI_Aint **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_chkarray(PyObject *, int, MPI_Count **); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_chkarray(PyObject *, MPI_Count, MPI_Count **); /*proto*/
static CYTHON_INLINE MPI_Datatype __pyx_fuse_0__pyx_f_6mpi4py_3MPI_mpinull(MPI_Datatype); /*proto*/
static CYTHON_INLINE MPI_Request __pyx_fuse_1__pyx_f_6mpi4py_3MPI_mpinull(MPI_Request); /*proto*/
static CYTHON_INLINE MPI_Message __pyx_fuse_2__pyx_f_6mpi4py_3MPI_mpinull(MPI_Message); /*proto*/
static CYTHON_INLINE MPI_Op __pyx_fuse_3__pyx_f_6mpi4py_3MPI_mpinull(MPI_Op); /*proto*/
static CYTHON_INLINE MPI_Group __pyx_fuse_4__pyx_f_6mpi4py_3MPI_mpinull(MPI_Group); /*proto*/
static CYTHON_INLINE MPI_Info __pyx_fuse_5__pyx_f_6mpi4py_3MPI_mpinull(MPI_Info); /*proto*/
static CYTHON_INLINE MPI_Errhandler __pyx_fuse_6__pyx_f_6mpi4py_3MPI_mpinull(MPI_Errhandler); /*proto*/
static CYTHON_INLINE MPI_Session __pyx_fuse_7__pyx_f_6mpi4py_3MPI_mpinull(MPI_Session); /*proto*/
static CYTHON_INLINE MPI_Comm __pyx_fuse_8__pyx_f_6mpi4py_3MPI_mpinull(MPI_Comm); /*proto*/
static CYTHON_INLINE MPI_Win __pyx_fuse_9__pyx_f_6mpi4py_3MPI_mpinull(MPI_Win); /*proto*/
static CYTHON_INLINE MPI_File __pyx_fuse_10__pyx_f_6mpi4py_3MPI_mpinull(MPI_File); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_predefined(MPI_Datatype); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_predefined(MPI_Request); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_predefined(MPI_Message); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_predefined(MPI_Op); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_predefined(MPI_Group); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_predefined(MPI_Info); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_predefined(MPI_Errhandler); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_predefined(MPI_Session); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_predefined(MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_predefined(MPI_Win); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_predefined(MPI_File); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_named(MPI_Datatype); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_named(MPI_Request); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_named(MPI_Message); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_named(MPI_Op); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_named(MPI_Group); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_named(MPI_Info); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_named(MPI_Errhandler); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_named(MPI_Session); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_named(MPI_Comm); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_named(MPI_Win); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_named(MPI_File); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIDatatypeObject *, struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIRequestObject *, struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIMessageObject *, struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIOpObject *, struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIGroupObject *, struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIInfoObject *, struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIErrhandlerObject *, struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_cinit(struct PyMPISessionObject *, struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_cinit(struct PyMPICommObject *, struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIWinObject *, struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIFileObject *, struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_marktemp(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIDatatypeObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIRequestObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIMessageObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIOpObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIGroupObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIInfoObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIErrhandlerObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPISessionObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPICommObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIWinObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIFileObject *, PyObject *, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_class(MPI_Datatype); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_class(MPI_Request); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_class(MPI_Message); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_class(MPI_Op); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_class(MPI_Group); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_class(MPI_Info); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_class(MPI_Errhandler); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_class(MPI_Session); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_class(MPI_Comm); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_class(MPI_Win); /*proto*/
static CYTHON_INLINE PyTypeObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_class(MPI_File); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_register(MPI_Datatype, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_register(MPI_Request, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_register(MPI_Message, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_register(MPI_Op, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_register(MPI_Group, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_register(MPI_Info, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_register(MPI_Errhandler, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_register(MPI_Session, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_register(MPI_Comm, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_register(MPI_Win, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_register(MPI_File, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Datatype); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Request); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Message); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Op); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Group); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Info); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Errhandler); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Session); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Comm); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Win); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_lookup(MPI_File); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_0__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_1__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_2__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_3__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_4__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_5__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_6__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_7__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_8__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_9__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE Py_uintptr_t __pyx_fuse_10__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Datatype); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Request); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Message); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Op); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Group); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Info); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Errhandler); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Session); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Comm); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Win); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_fromhandle(MPI_File); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_nullify(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_nullify(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_callfree(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_callfree(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIDatatypeObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIRequestObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIMessageObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIOpObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIGroupObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIInfoObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIErrhandlerObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_safefree(struct PyMPISessionObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_safefree(struct PyMPICommObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIWinObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIFileObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(PyObject *, MPI_Datatype, int, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(PyObject *, MPI_Comm, int, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(PyObject *, MPI_Win, int, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(MPI_Datatype, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(MPI_Comm, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(MPI_Win, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(MPI_Datatype, int, void *, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(MPI_Comm, int, void *, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(MPI_Win, int, void *, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(MPI_Datatype, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(MPI_Comm, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(MPI_Win, int, void *, void *, void *, int *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(MPI_Datatype, int, void *, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(MPI_Comm, int, void *, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(MPI_Win, int, void *, void *); /*proto*/
static int MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn(MPI_Datatype, int, void *, void *, void *, int *); /*proto*/
static int MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn(MPI_Comm, int, void *, void *, void *, int *); /*proto*/
static int MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn(MPI_Win, int, void *, void *, void *, int *); /*proto*/
static int MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn(MPI_Datatype, int, void *, void *); /*proto*/
static int MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn(MPI_Comm, int, void *, void *); /*proto*/
static int MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn(MPI_Win, int, void *, void *); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(MPI_Datatype, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(MPI_Comm, int); /*proto*/
static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(MPI_Win, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_Datatype, int, struct __pyx_obj_6mpi4py_3MPI__p_keyval *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_Comm, int, struct __pyx_obj_6mpi4py_3MPI__p_keyval *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_Win, int, struct __pyx_obj_6mpi4py_3MPI__p_keyval *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_Datatype, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_Comm, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_Win, int); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(MPI_Datatype, int, void *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(MPI_Comm, int, void *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(MPI_Win, int, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(MPI_Datatype, int, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(MPI_Comm, int, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(MPI_Win, int, void *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(MPI_Datatype, int, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(MPI_Comm, int, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(MPI_Win, int, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(MPI_Datatype, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(MPI_Comm, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(MPI_Win, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(MPI_Datatype, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(MPI_Comm, int); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(MPI_Win, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int, MPI_Session, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int, MPI_Comm, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int, MPI_Win, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int, MPI_File, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(int, MPI_Session, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(int, MPI_Comm, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(int, MPI_Win, int); /*proto*/
static CYTHON_INLINE void __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(int, MPI_File, int); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_File *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_Session *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_Comm *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_Win *, int *, ...); /*proto*/
static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_File *, int *, ...); /*proto*/
static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_map(int, MPI_Session_errhandler_function **); /*proto*/
static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_map(int, MPI_Comm_errhandler_function **); /*proto*/
static CYTHON_INLINE void __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_map(int, MPI_Win_errhandler_function **); /*proto*/
static CYTHON_INLINE void __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_map(int, MPI_File_errhandler_function **); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *, MPI_Session_errhandler_function **); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *, MPI_Comm_errhandler_function **); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *, MPI_Win_errhandler_function **); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *, MPI_File_errhandler_function **); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_del(int *, MPI_Session_errhandler_function *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_del(int *, MPI_Comm_errhandler_function *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_del(int *, MPI_Win_errhandler_function *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_del(int *, MPI_File_errhandler_function *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_01(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_01(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_02(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_02(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_03(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_03(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_04(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_04(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_05(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_05(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_06(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_06(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_07(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_07(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_08(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_08(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_09(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_09(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_10(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_10(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_11(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_11(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_12(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_12(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_13(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_13(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_14(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_14(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_15(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_15(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_16(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_16(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_17(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_17(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_18(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_18(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_19(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_19(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_20(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_20(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_21(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_21(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_22(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_22(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_23(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_23(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_24(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_24(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_25(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_25(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_26(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_26(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_27(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_27(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_28(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_28(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_29(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_29(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_30(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_30(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_31(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_31(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_32(void *, void *, int *, MPI_Datatype *); /*proto*/
static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_32(void *, void *, MPI_Count *, MPI_Datatype *); /*proto*/
static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_map(int, MPI_User_function **); /*proto*/
static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_map(int, MPI_User_function_c **); /*proto*/
static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_detach_buffer_set(Py_uintptr_t, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_detach_buffer_set(struct PyMPICommObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_detach_buffer_set(struct PyMPISessionObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_detach_buffer_get(Py_uintptr_t, void *, MPI_Count); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_detach_buffer_get(struct PyMPICommObject *, void *, MPI_Count); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_detach_buffer_get(struct PyMPISessionObject *, void *, MPI_Count); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(int *, MPI_Count, MPI_Count); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_makelist(MPI_Aint *, MPI_Count, MPI_Count); /*proto*/
static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(MPI_Count *, MPI_Count, MPI_Count); /*proto*/
/* #### Code section: typeinfo ### */
/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "mpi4py.MPI"
extern int __pyx_module_is_main_mpi4py__MPI;
int __pyx_module_is_main_mpi4py__MPI = 0;

/* Implementation of "mpi4py.MPI" */
/* #### Code section: global_var ### */
static PyObject *__pyx_builtin_staticmethod;
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_RuntimeWarning;
static PyObject *__pyx_builtin_ImportWarning;
static PyObject *__pyx_builtin_MemoryError;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_BufferError;
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_NotImplementedError;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_BaseException;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_Ellipsis;
static PyObject *__pyx_builtin_IndexError;
static PyObject *__pyx_builtin_OverflowError;
static PyObject *__pyx_builtin_NotImplemented;
static PyObject *__pyx_builtin_KeyError;
static PyObject *__pyx_builtin_UserWarning;
/* #### Code section: string_decls ### */
static const char __pyx_k_[] = "";
static const char __pyx_k_V[] = "V";
static const char __pyx_k_a[] = "a";
static const char __pyx_k_c[] = "c";
static const char __pyx_k_d[] = "d";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_j[] = "j";
static const char __pyx_k_k[] = "k";
static const char __pyx_k_m[] = "m";
static const char __pyx_k_n[] = "n";
static const char __pyx_k_p[] = "p";
static const char __pyx_k_q[] = "q";
static const char __pyx_k_r[] = "r";
static const char __pyx_k_s[] = "s";
static const char __pyx_k_t[] = "t";
static const char __pyx_k_x[] = "x";
static const char __pyx_k_y[] = "y";
static const char __pyx_k_IO[] = "IO";
static const char __pyx_k_Op[] = "Op";
static const char __pyx_k__2[] = ".";
static const char __pyx_k__3[] = "]";
static const char __pyx_k_dw[] = "dw";
static const char __pyx_k_ex[] = "ex";
static const char __pyx_k_fd[] = "fd";
static const char __pyx_k_fn[] = "fn";
static const char __pyx_k_gc[] = "gc";
static const char __pyx_k_lb[] = " (lb:";
static const char __pyx_k_na[] = "na";
static const char __pyx_k_nc[] = "nc";
static const char __pyx_k_nd[] = "nd";
static const char __pyx_k_ne[] = "ne";
static const char __pyx_k_ni[] = "ni";
static const char __pyx_k_no[] = "no";
static const char __pyx_k_np[] = "np";
static const char __pyx_k_nv[] = "nv";
static const char __pyx_k_ob[] = "ob";
static const char __pyx_k_op[] = "op";
static const char __pyx_k_rc[] = "rc";
static const char __pyx_k_rd[] = "rd";
static const char __pyx_k_rs[] = "rs";
static const char __pyx_k_sw[] = "sw";
static const char __pyx_k_tc[] = "tc";
static const char __pyx_k_ub[] = ", ub:";
static const char __pyx_k_wr[] = "wr";
static const char __pyx_k_xs[] = "xs";
static const char __pyx_k_Any[] = "Any";
static const char __pyx_k_BOR[] = "BOR";
static const char __pyx_k_DUP[] = "DUP";
static const char __pyx_k_Dup[] = "Dup";
static const char __pyx_k_Get[] = "Get";
static const char __pyx_k_INT[] = "INT";
static const char __pyx_k_LOR[] = "LOR";
static const char __pyx_k_MAX[] = "MAX";
static const char __pyx_k_MIN[] = "MIN";
static const char __pyx_k_Put[] = "Put";
static const char __pyx_k_SUM[] = "SUM";
static const char __pyx_k_Set[] = "Set";
static const char __pyx_k_Sub[] = "Sub";
static const char __pyx_k_Win[] = "Win";
static const char __pyx_k__17[] = ")";
static const char __pyx_k__30[] = "'";
static const char __pyx_k__57[] = "] ";
static const char __pyx_k_arg[] = "arg";
static const char __pyx_k_buf[] = "buf";
static const char __pyx_k_cls[] = "cls";
static const char __pyx_k_cmd[] = "cmd";
static const char __pyx_k_del[] = "_del";
static const char __pyx_k_dim[] = "dim";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_dst[] = "dst";
static const char __pyx_k_get[] = "get";
static const char __pyx_k_got[] = ", got ";
static const char __pyx_k_int[] = "int";
static const char __pyx_k_key[] = "key";
static const char __pyx_k_mem[] = "mem";
static const char __pyx_k_msg[] = "msg";
static const char __pyx_k_obj[] = "obj";
static const char __pyx_k_pop[] = "pop";
static const char __pyx_k_ptr[] = "ptr";
static const char __pyx_k_src[] = "src";
static const char __pyx_k_str[] = "str";
static const char __pyx_k_tag[] = "tag";
static const char __pyx_k_val[] = "val";
static const char __pyx_k_win[] = "win";
static const char __pyx_k_yes[] = "yes";
static const char __pyx_k_AINT[] = "AINT";
static const char __pyx_k_BAND[] = "BAND";
static const char __pyx_k_BOOL[] = "BOOL";
static const char __pyx_k_BXOR[] = "BXOR";
static const char __pyx_k_BYTE[] = "BYTE";
static const char __pyx_k_CART[] = "CART";
static const char __pyx_k_CHAR[] = "CHAR";
static const char __pyx_k_Comm[] = "Comm";
static const char __pyx_k_Excl[] = "Excl";
static const char __pyx_k_File[] = "File";
static const char __pyx_k_Free[] = "Free";
static const char __pyx_k_Idup[] = "Idup";
static const char __pyx_k_Incl[] = "Incl";
static const char __pyx_k_Info[] = "Info";
static const char __pyx_k_Init[] = "Init";
static const char __pyx_k_Join[] = "Join";
static const char __pyx_k_LAND[] = "LAND";
static const char __pyx_k_LONG[] = "LONG";
static const char __pyx_k_LXOR[] = "LXOR";
static const char __pyx_k_Lock[] = "Lock";
static const char __pyx_k_None[] = "None";
static const char __pyx_k_Open[] = "Open";
static const char __pyx_k_PROD[] = "PROD";
static const char __pyx_k_Pack[] = "Pack";
static const char __pyx_k_Post[] = "Post";
static const char __pyx_k_REAL[] = "REAL";
static const char __pyx_k_ROOT[] = "ROOT";
static const char __pyx_k_Read[] = "Read";
static const char __pyx_k_Recv[] = "Recv";
static const char __pyx_k_Rget[] = "Rget";
static const char __pyx_k_Rput[] = "Rput";
static const char __pyx_k_Scan[] = "Scan";
static const char __pyx_k_Seek[] = "Seek";
static const char __pyx_k_Self[] = "Self";
static const char __pyx_k_Send[] = "Send";
static const char __pyx_k_Sync[] = "Sync";
static const char __pyx_k_Test[] = "Test";
static const char __pyx_k_Wait[] = "Wait";
static const char __pyx_k__205[] = "?";
static const char __pyx_k__809[] = "_";
static const char __pyx_k_addr[] = "addr";
static const char __pyx_k_argc[] = "argc";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_argv[] = "argv";
static const char __pyx_k_base[] = "base";
static const char __pyx_k_bool[] = "bool";
static const char __pyx_k_call[] = "__call__";
static const char __pyx_k_cast[] = "cast";
static const char __pyx_k_ckey[] = "ckey";
static const char __pyx_k_cmds[] = "cmds";
static const char __pyx_k_code[] = "code";
static const char __pyx_k_comm[] = "comm";
static const char __pyx_k_copy[] = "copy";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_dest[] = "dest";
static const char __pyx_k_dict[] = "__dict__";
static const char __pyx_k_dims[] = "dims";
static const char __pyx_k_disp[] = "disp";
static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_f2py[] = "f2py";
static const char __pyx_k_file[] = "file";
static const char __pyx_k_flag[] = "flag";
static const char __pyx_k_fn_c[] = "fn_c";
static const char __pyx_k_fn_i[] = "fn_i";
static const char __pyx_k_free[] = "free";
static const char __pyx_k_high[] = "high";
static const char __pyx_k_ierr[] = "ierr";
static const char __pyx_k_info[] = "info";
static const char __pyx_k_init[] = "__init__";
static const char __pyx_k_join[] = "join";
static const char __pyx_k_keys[] = "keys";
static const char __pyx_k_kwds[] = "kwds";
static const char __pyx_k_lb_2[] = "lb";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_mark[] = "mark";
static const char __pyx_k_mask[] = "mask";
static const char __pyx_k_name[] = "__name__";
static const char __pyx_k_ndim[] = "ndim";
static const char __pyx_k_nlen[] = "nlen";
static const char __pyx_k_py2f[] = "py2f";
static const char __pyx_k_rank[] = "rank";
static const char __pyx_k_recv[] = "recv";
static const char __pyx_k_rmsg[] = "rmsg";
static const char __pyx_k_root[] = "root";
static const char __pyx_k_scan[] = "scan";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_send[] = "send";
static const char __pyx_k_size[] = ", size:";
static const char __pyx_k_smsg[] = "smsg";
static const char __pyx_k_test[] = "test";
static const char __pyx_k_topo[] = "topo";
static const char __pyx_k_wait[] = "wait";
static const char __pyx_k_Abort[] = "Abort";
static const char __pyx_k_Agree[] = "Agree";
static const char __pyx_k_Bcast[] = "Bcast";
static const char __pyx_k_Bsend[] = "Bsend";
static const char __pyx_k_COUNT[] = "COUNT";
static const char __pyx_k_Clone[] = "Clone";
static const char __pyx_k_Close[] = "Close";
static const char __pyx_k_FLOAT[] = "FLOAT";
static const char __pyx_k_F_INT[] = "F_INT";
static const char __pyx_k_F_TAG[] = "F_TAG";
static const char __pyx_k_Fence[] = "Fence";
static const char __pyx_k_Flush[] = "Flush";
static const char __pyx_k_GRAPH[] = "GRAPH";
static const char __pyx_k_Group[] = "Group";
static const char __pyx_k_IDENT[] = "IDENT";
static const char __pyx_k_Iread[] = "Iread";
static const char __pyx_k_Irecv[] = "Irecv";
static const char __pyx_k_Iscan[] = "Iscan";
static const char __pyx_k_Isend[] = "Isend";
static const char __pyx_k_Merge[] = "Merge";
static const char __pyx_k_NAMED[] = "NAMED";
static const char __pyx_k_NO_OP[] = "NO_OP";
static const char __pyx_k_Probe[] = "Probe";
static const char __pyx_k_REAL2[] = "REAL2";
static const char __pyx_k_REAL4[] = "REAL4";
static const char __pyx_k_REAL8[] = "REAL8";
static const char __pyx_k_RLock[] = "RLock";
static const char __pyx_k_Rsend[] = "Rsend";
static const char __pyx_k_SHORT[] = "SHORT";
static const char __pyx_k_Shift[] = "Shift";
static const char __pyx_k_Spawn[] = "Spawn";
static const char __pyx_k_Split[] = "Split";
static const char __pyx_k_Ssend[] = "Ssend";
static const char __pyx_k_Start[] = "Start";
static const char __pyx_k_Union[] = "Union";
static const char __pyx_k_WCHAR[] = "WCHAR";
static const char __pyx_k_Write[] = "Write";
static const char __pyx_k_Wtick[] = "Wtick";
static const char __pyx_k_Wtime[] = "Wtime";
static const char __pyx_k_abort[] = "abort";
static const char __pyx_k_addr1[] = "addr1";
static const char __pyx_k_addr2[] = "addr2";
static const char __pyx_k_align[] = "align";
static const char __pyx_k_amode[] = "amode";
static const char __pyx_k_argvs[] = "argvs";
static const char __pyx_k_bcast[] = "bcast";
static const char __pyx_k_bsend[] = "bsend";
static const char __pyx_k_bytes[] = "bytes";
static const char __pyx_k_cinfo[] = "cinfo";
static const char __pyx_k_clear[] = "clear";
static const char __pyx_k_cname[] = "cname";
static const char __pyx_k_color[] = "color";
static const char __pyx_k_count[] = "count";
static const char __pyx_k_dargs[] = "dargs";
static const char __pyx_k_descr[] = "descr";
static const char __pyx_k_dtype[] = "dtype";
static const char __pyx_k_dumps[] = "dumps";
static const char __pyx_k_edges[] = "edges";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_error[] = "error";
static const char __pyx_k_etype[] = "etype";
static const char __pyx_k_fatal[] = "fatal";
static const char __pyx_k_flags[] = "flags";
static const char __pyx_k_float[] = "float";
static const char __pyx_k_ftype[] = "ftype";
static const char __pyx_k_group[] = "group";
static const char __pyx_k_iblen[] = "iblen";
static const char __pyx_k_ibptr[] = "ibptr";
static const char __pyx_k_idest[] = "idest";
static const char __pyx_k_idims[] = "idims";
static const char __pyx_k_idisp[] = "idisp";
static const char __pyx_k_inbuf[] = "inbuf";
static const char __pyx_k_index[] = "index";
static const char __pyx_k_infos[] = "infos";
static const char __pyx_k_irecv[] = "irecv";
static const char __pyx_k_isend[] = "isend";
static const char __pyx_k_items[] = "items";
static const char __pyx_k_level[] = "level";
static const char __pyx_k_loads[] = "loads";
static const char __pyx_k_lower[] = "lower";
static const char __pyx_k_major[] = "major";
static const char __pyx_k_micro[] = "micro";
static const char __pyx_k_minor[] = "minor";
static const char __pyx_k_ndims[] = "ndims";
static const char __pyx_k_nkeys[] = "nkeys";
static const char __pyx_k_oblen[] = "oblen";
static const char __pyx_k_obptr[] = "obptr";
static const char __pyx_k_order[] = "order";
static const char __pyx_k_probe[] = "probe";
static const char __pyx_k_ptype[] = "ptype";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_ranks[] = "ranks";
static const char __pyx_k_shape[] = "shape";
static const char __pyx_k_sizes[] = "sizes";
static const char __pyx_k_ssend[] = "ssend";
static const char __pyx_k_state[] = "state";
static const char __pyx_k_upper[] = "upper";
static const char __pyx_k_value[] = "value";
static const char __pyx_k_APPNUM[] = "APPNUM";
static const char __pyx_k_Accept[] = "Accept";
static const char __pyx_k_Attach[] = "Attach";
static const char __pyx_k_BOTTOM[] = "BOTTOM";
static const char __pyx_k_Buffer[] = "Buffer";
static const char __pyx_k_C_BOOL[] = "C_BOOL";
static const char __pyx_k_Cancel[] = "Cancel";
static const char __pyx_k_Commit[] = "Commit";
static const char __pyx_k_Create[] = "Create";
static const char __pyx_k_DARRAY[] = "DARRAY";
static const char __pyx_k_DOUBLE[] = "DOUBLE";
static const char __pyx_k_Delete[] = "Delete";
static const char __pyx_k_Detach[] = "Detach";
static const char __pyx_k_ERR_IO[] = "ERR_IO";
static const char __pyx_k_ERR_OP[] = "ERR_OP";
static const char __pyx_k_Exscan[] = "Exscan";
static const char __pyx_k_F_BOOL[] = "F_BOOL";
static const char __pyx_k_Gather[] = "Gather";
static const char __pyx_k_INT8_T[] = "INT8_T";
static const char __pyx_k_Iagree[] = "Iagree";
static const char __pyx_k_Ibcast[] = "Ibcast";
static const char __pyx_k_Ibsend[] = "Ibsend";
static const char __pyx_k_Iprobe[] = "Iprobe";
static const char __pyx_k_Irsend[] = "Irsend";
static const char __pyx_k_Issend[] = "Issend";
static const char __pyx_k_Iwrite[] = "Iwrite";
static const char __pyx_k_MAXLOC[] = "MAXLOC";
static const char __pyx_k_MINLOC[] = "MINLOC";
static const char __pyx_k_MPI_Op[] = "MPI_Op";
static const char __pyx_k_Mprobe[] = "Mprobe";
static const char __pyx_k_OFFSET[] = "OFFSET";
static const char __pyx_k_PACKED[] = "PACKED";
static const char __pyx_k_Pickle[] = "Pickle";
static const char __pyx_k_Pready[] = "Pready";
static const char __pyx_k_REAL16[] = "REAL16";
static const char __pyx_k_Reduce[] = "Reduce";
static const char __pyx_k_Revoke[] = "Revoke";
static const char __pyx_k_STRUCT[] = "STRUCT";
static const char __pyx_k_Shrink[] = "Shrink";
static const char __pyx_k_Status[] = "Status";
static const char __pyx_k_TAG_UB[] = "TAG_UB";
static const char __pyx_k_TWOINT[] = "TWOINT";
static const char __pyx_k_Unlock[] = "Unlock";
static const char __pyx_k_Unpack[] = "Unpack";
static const char __pyx_k_VECTOR[] = "VECTOR";
static const char __pyx_k_append[] = "append";
static const char __pyx_k_buffer[] = "buffer";
static const char __pyx_k_buflen[] = "buflen";
static const char __pyx_k_cancel[] = "cancel";
static const char __pyx_k_cetype[] = "cetype";
static const char __pyx_k_cftype[] = "cftype";
static const char __pyx_k_coords[] = "coords";
static const char __pyx_k_copy_2[] = "_copy";
static const char __pyx_k_counts[] = "counts";
static const char __pyx_k_cvalue[] = "cvalue";
static const char __pyx_k_decode[] = "decode";
static const char __pyx_k_dlpack[] = "__dlpack__";
static const char __pyx_k_enable[] = "enable";
static const char __pyx_k_exscan[] = "exscan";
static const char __pyx_k_extent[] = "extent";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_gather[] = "gather";
static const char __pyx_k_group1[] = "group1";
static const char __pyx_k_group2[] = "group2";
static const char __pyx_k_gsizes[] = "gsizes";
static const char __pyx_k_handle[] = "handle";
static const char __pyx_k_ibsend[] = "ibsend";
static const char __pyx_k_icount[] = "icount";
static const char __pyx_k_idargs[] = "idargs";
static const char __pyx_k_iedges[] = "iedges";
static const char __pyx_k_iindex[] = "iindex";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_insert[] = "insert";
static const char __pyx_k_iprobe[] = "iprobe";
static const char __pyx_k_iranks[] = "iranks";
static const char __pyx_k_isizes[] = "isizes";
static const char __pyx_k_issend[] = "issend";
static const char __pyx_k_keyval[] = "keyval";
static const char __pyx_k_kwargs[] = "kwargs";
static const char __pyx_k_length[] = "length";
static const char __pyx_k_memory[] = "memory";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_mprobe[] = "mprobe";
static const char __pyx_k_name_2[] = "name";
static const char __pyx_k_native[] = "native";
static const char __pyx_k_nbytes[] = "nbytes";
static const char __pyx_k_nedges[] = "nedges";
static const char __pyx_k_newobj[] = "__newobj__";
static const char __pyx_k_nindex[] = "nindex";
static const char __pyx_k_nnodes[] = "nnodes";
static const char __pyx_k_ocount[] = "ocount";
static const char __pyx_k_offset[] = "offset";
static const char __pyx_k_origin[] = "origin";
static const char __pyx_k_outbuf[] = "outbuf";
static const char __pyx_k_params[] = "params";
static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_psizes[] = "psizes";
static const char __pyx_k_ranges[] = "ranges";
static const char __pyx_k_ranks2[] = "ranks2";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_result[] = "result";
static const char __pyx_k_return[] = "return";
static const char __pyx_k_single[] = "single";
static const char __pyx_k_size_2[] = "size";
static const char __pyx_k_sizeof[] = "_sizeof";
static const char __pyx_k_source[] = "source";
static const char __pyx_k_starts[] = "starts";
static const char __pyx_k_status[] = "status";
static const char __pyx_k_stream[] = "stream";
static const char __pyx_k_stride[] = "stride";
static const char __pyx_k_string[] = "string";
static const char __pyx_k_target[] = "target";
static const char __pyx_k_thread[] = "_thread";
static const char __pyx_k_tocode[] = "tocode";
static const char __pyx_k_unused[] = "unused";
static const char __pyx_k_update[] = "update";
static const char __pyx_k_values[] = "values";
static const char __pyx_k_whence[] = "whence";
static const char __pyx_k_ANY_TAG[] = "ANY_TAG";
static const char __pyx_k_Barrier[] = "Barrier";
static const char __pyx_k_BufSpec[] = "BufSpec";
static const char __pyx_k_COMPLEX[] = "COMPLEX";
static const char __pyx_k_Compare[] = "Compare";
static const char __pyx_k_Connect[] = "Connect";
static const char __pyx_k_ERR_ARG[] = "ERR_ARG";
static const char __pyx_k_ERR_TAG[] = "ERR_TAG";
static const char __pyx_k_ERR_WIN[] = "ERR_WIN";
static const char __pyx_k_F_ERROR[] = "F_ERROR";
static const char __pyx_k_F_FLOAT[] = "F_FLOAT";
static const char __pyx_k_Gatherv[] = "Gatherv";
static const char __pyx_k_Get_dim[] = "Get_dim";
static const char __pyx_k_Get_tag[] = "Get_tag";
static const char __pyx_k_HVECTOR[] = "HVECTOR";
static const char __pyx_k_INDEXED[] = "INDEXED";
static const char __pyx_k_INT16_T[] = "INT16_T";
static const char __pyx_k_INT32_T[] = "INT32_T";
static const char __pyx_k_INT64_T[] = "INT64_T";
static const char __pyx_k_INTEGER[] = "INTEGER";
static const char __pyx_k_INT_INT[] = "INT_INT";
static const char __pyx_k_Iexscan[] = "Iexscan";
static const char __pyx_k_Igather[] = "Igather";
static const char __pyx_k_Improbe[] = "Improbe";
static const char __pyx_k_Ireduce[] = "Ireduce";
static const char __pyx_k_Ishrink[] = "Ishrink";
static const char __pyx_k_LOGICAL[] = "LOGICAL";
static const char __pyx_k_MPI_Win[] = "MPI_Win";
static const char __pyx_k_Message[] = "Message";
static const char __pyx_k_OP_NULL[] = "OP_NULL";
static const char __pyx_k_ORDER_C[] = "ORDER_C";
static const char __pyx_k_ORDER_F[] = "ORDER_F";
static const char __pyx_k_Op_Free[] = "Op.Free";
static const char __pyx_k_Op_f2py[] = "Op.f2py";
static const char __pyx_k_Op_free[] = "Op.free";
static const char __pyx_k_Op_py2f[] = "Op.py2f";
static const char __pyx_k_REPLACE[] = "REPLACE";
static const char __pyx_k_RESIZED[] = "RESIZED";
static const char __pyx_k_Read_at[] = "Read_at";
static const char __pyx_k_Request[] = "Request";
static const char __pyx_k_Resized[] = "Resized";
static const char __pyx_k_SIMILAR[] = "SIMILAR";
static const char __pyx_k_SINT8_T[] = "SINT8_T";
static const char __pyx_k_SUCCESS[] = "SUCCESS";
static const char __pyx_k_Scatter[] = "Scatter";
static const char __pyx_k_Session[] = "Session";
static const char __pyx_k_Set_tag[] = "Set_tag";
static const char __pyx_k_Testall[] = "Testall";
static const char __pyx_k_Testany[] = "Testany";
static const char __pyx_k_UINT8_T[] = "UINT8_T";
static const char __pyx_k_UNEQUAL[] = "UNEQUAL";
static const char __pyx_k_VERSION[] = "VERSION";
static const char __pyx_k_Waitall[] = "Waitall";
static const char __pyx_k_Waitany[] = "Waitany";
static const char __pyx_k_Win_Get[] = "Win.Get";
static const char __pyx_k_Win_Put[] = "Win.Put";
static const char __pyx_k_address[] = "address";
static const char __pyx_k_attrval[] = "attrval";
static const char __pyx_k_barrier[] = "barrier";
static const char __pyx_k_baseptr[] = "baseptr";
static const char __pyx_k_buffers[] = "buffers";
static const char __pyx_k_cerrhdl[] = "cerrhdl";
static const char __pyx_k_command[] = "command";
static const char __pyx_k_commute[] = "commute";
static const char __pyx_k_compare[] = "compare";
static const char __pyx_k_copy_fn[] = "copy_fn";
static const char __pyx_k_copyreg[] = "copyreg";
static const char __pyx_k_cstring[] = "cstring";
static const char __pyx_k_datarep[] = "datarep";
static const char __pyx_k_default[] = "default";
static const char __pyx_k_degrees[] = "degrees";
static const char __pyx_k_disable[] = "disable";
static const char __pyx_k_dupcomm[] = "dupcomm";
static const char __pyx_k_free_fn[] = "free_fn";
static const char __pyx_k_icoords[] = "icoords";
static const char __pyx_k_idegree[] = "idegree";
static const char __pyx_k_igsizes[] = "igsizes";
static const char __pyx_k_improbe[] = "improbe";
static const char __pyx_k_indices[] = "indices";
static const char __pyx_k_ipsizes[] = "ipsizes";
static const char __pyx_k_iranks1[] = "iranks1";
static const char __pyx_k_iranks2[] = "iranks2";
static const char __pyx_k_isource[] = "isource";
static const char __pyx_k_istarts[] = "istarts";
static const char __pyx_k_iweight[] = "iweight";
static const char __pyx_k_message[] = "message";
static const char __pyx_k_periods[] = "periods";
static const char __pyx_k_pickle5[] = "pickle5";
static const char __pyx_k_popitem[] = "popitem";
static const char __pyx_k_read_fn[] = "read_fn";
static const char __pyx_k_recvbuf[] = "recvbuf";
static const char __pyx_k_recvtag[] = "recvtag";
static const char __pyx_k_release[] = "release";
static const char __pyx_k_reorder[] = "reorder";
static const char __pyx_k_request[] = "request";
static const char __pyx_k_scatter[] = "scatter";
static const char __pyx_k_sendbuf[] = "sendbuf";
static const char __pyx_k_sendobj[] = "sendobj";
static const char __pyx_k_sendtag[] = "sendtag";
static const char __pyx_k_session[] = "session";
static const char __pyx_k_sources[] = "sources";
static const char __pyx_k_statusp[] = "statusp";
static const char __pyx_k_strides[] = "strides";
static const char __pyx_k_testall[] = "testall";
static const char __pyx_k_testany[] = "testany";
static const char __pyx_k_tobytes[] = "tobytes";
static const char __pyx_k_typestr[] = "typestr";
static const char __pyx_k_unused1[] = "unused1";
static const char __pyx_k_unused2[] = "unused2";
static const char __pyx_k_unused3[] = "unused3";
static const char __pyx_k_unused4[] = "unused4";
static const char __pyx_k_unused5[] = "unused5";
static const char __pyx_k_version[] = "version";
static const char __pyx_k_waitall[] = "waitall";
static const char __pyx_k_waitany[] = "waitany";
static const char __pyx_k_weights[] = "weights";
static const char __pyx_k_Aint_add[] = "Aint_add";
static const char __pyx_k_Allocate[] = "Allocate";
static const char __pyx_k_Alltoall[] = "Alltoall";
static const char __pyx_k_Any_None[] = "Any | None";
static const char __pyx_k_BufSpecB[] = "BufSpecB";
static const char __pyx_k_BufSpecV[] = "BufSpecV";
static const char __pyx_k_BufSpecW[] = "BufSpecW";
static const char __pyx_k_COMPLEX4[] = "COMPLEX4";
static const char __pyx_k_COMPLEX8[] = "COMPLEX8";
static const char __pyx_k_CXX_BOOL[] = "CXX_BOOL";
static const char __pyx_k_Cart_map[] = "Cart_map";
static const char __pyx_k_Cartcomm[] = "Cartcomm";
static const char __pyx_k_Comm_Dup[] = "Comm.Dup";
static const char __pyx_k_Complete[] = "Complete";
static const char __pyx_k_Create_2[] = "Create_";
static const char __pyx_k_DISP_CUR[] = "DISP_CUR";
static const char __pyx_k_Datatype[] = "Datatype";
static const char __pyx_k_ERR_BASE[] = "ERR_BASE";
static const char __pyx_k_ERR_COMM[] = "ERR_COMM";
static const char __pyx_k_ERR_DIMS[] = "ERR_DIMS";
static const char __pyx_k_ERR_DISP[] = "ERR_DISP";
static const char __pyx_k_ERR_FILE[] = "ERR_FILE";
static const char __pyx_k_ERR_INFO[] = "ERR_INFO";
static const char __pyx_k_ERR_NAME[] = "ERR_NAME";
static const char __pyx_k_ERR_PORT[] = "ERR_PORT";
static const char __pyx_k_ERR_RANK[] = "ERR_RANK";
static const char __pyx_k_ERR_ROOT[] = "ERR_ROOT";
static const char __pyx_k_ERR_SIZE[] = "ERR_SIZE";
static const char __pyx_k_ERR_TYPE[] = "ERR_TYPE";
static const char __pyx_k_Ellipsis[] = "Ellipsis";
static const char __pyx_k_F90_REAL[] = "F90_REAL";
static const char __pyx_k_F_DOUBLE[] = "F_DOUBLE";
static const char __pyx_k_F_SOURCE[] = "F_SOURCE";
static const char __pyx_k_Finalize[] = "Finalize";
static const char __pyx_k_Free_mem[] = "Free_mem";
static const char __pyx_k_Get_attr[] = "Get_attr";
static const char __pyx_k_Get_dims[] = "Get_dims";
static const char __pyx_k_Get_info[] = "Get_info";
static const char __pyx_k_Get_name[] = "Get_name";
static const char __pyx_k_Get_rank[] = "Get_rank";
static const char __pyx_k_Get_size[] = "Get_size";
static const char __pyx_k_Get_topo[] = "Get_topo";
static const char __pyx_k_Get_view[] = "Get_view";
static const char __pyx_k_Grequest[] = "Grequest";
static const char __pyx_k_HINDEXED[] = "HINDEXED";
static const char __pyx_k_INFO_ENV[] = "INFO_ENV";
static const char __pyx_k_INTEGER1[] = "INTEGER1";
static const char __pyx_k_INTEGER2[] = "INTEGER2";
static const char __pyx_k_INTEGER4[] = "INTEGER4";
static const char __pyx_k_INTEGER8[] = "INTEGER8";
static const char __pyx_k_IN_PLACE[] = "IN_PLACE";
static const char __pyx_k_Ibarrier[] = "Ibarrier";
static const char __pyx_k_Igatherv[] = "Igatherv";
static const char __pyx_k_Info_Dup[] = "Info.Dup";
static const char __pyx_k_Info_Get[] = "Info.Get";
static const char __pyx_k_Info_Set[] = "Info.Set";
static const char __pyx_k_Info_get[] = "Info.get";
static const char __pyx_k_Info_pop[] = "Info.pop";
static const char __pyx_k_Iread_at[] = "Iread_at";
static const char __pyx_k_Is_inter[] = "Is_inter";
static const char __pyx_k_Is_intra[] = "Is_intra";
static const char __pyx_k_Iscatter[] = "Iscatter";
static const char __pyx_k_KeyError[] = "KeyError";
static const char __pyx_k_LOGICAL1[] = "LOGICAL1";
static const char __pyx_k_LOGICAL2[] = "LOGICAL2";
static const char __pyx_k_LOGICAL4[] = "LOGICAL4";
static const char __pyx_k_LOGICAL8[] = "LOGICAL8";
static const char __pyx_k_LONG_INT[] = "LONG_INT";
static const char __pyx_k_Lock_all[] = "Lock_all";
static const char __pyx_k_MPI_Comm[] = "MPI_Comm";
static const char __pyx_k_MPI_File[] = "MPI_File";
static const char __pyx_k_MPI_Info[] = "MPI_Info";
static const char __pyx_k_NoReturn[] = "NoReturn";
static const char __pyx_k_Parrived[] = "Parrived";
static const char __pyx_k_Pcontrol[] = "Pcontrol";
static const char __pyx_k_Prequest[] = "Prequest";
static const char __pyx_k_Read_all[] = "Read_all";
static const char __pyx_k_SEEK_CUR[] = "SEEK_CUR";
static const char __pyx_k_SEEK_END[] = "SEEK_END";
static const char __pyx_k_SEEK_SET[] = "SEEK_SET";
static const char __pyx_k_SINT16_T[] = "SINT16_T";
static const char __pyx_k_SINT32_T[] = "SINT32_T";
static const char __pyx_k_SINT64_T[] = "SINT64_T";
static const char __pyx_k_SUBARRAY[] = "SUBARRAY";
static const char __pyx_k_Scatterv[] = "Scatterv";
static const char __pyx_k_Sendrecv[] = "Sendrecv";
static const char __pyx_k_Set_attr[] = "Set_attr";
static const char __pyx_k_Set_info[] = "Set_info";
static const char __pyx_k_Set_name[] = "Set_name";
static const char __pyx_k_Set_size[] = "Set_size";
static const char __pyx_k_Set_view[] = "Set_view";
static const char __pyx_k_Startall[] = "Startall";
static const char __pyx_k_Testsome[] = "Testsome";
static const char __pyx_k_Topocomm[] = "Topocomm";
static const char __pyx_k_UINT16_T[] = "UINT16_T";
static const char __pyx_k_UINT32_T[] = "UINT32_T";
static const char __pyx_k_UINT64_T[] = "UINT64_T";
static const char __pyx_k_UNSIGNED[] = "UNSIGNED";
static const char __pyx_k_WIN_BASE[] = "WIN_BASE";
static const char __pyx_k_WIN_NULL[] = "WIN_NULL";
static const char __pyx_k_WIN_SIZE[] = "WIN_SIZE";
static const char __pyx_k_Waitsome[] = "Waitsome";
static const char __pyx_k_Win_Free[] = "Win.Free";
static const char __pyx_k_Win_Lock[] = "Win.Lock";
static const char __pyx_k_Win_Post[] = "Win.Post";
static const char __pyx_k_Win_Rget[] = "Win.Rget";
static const char __pyx_k_Win_Rput[] = "Win.Rput";
static const char __pyx_k_Win_Sync[] = "Win.Sync";
static const char __pyx_k_Win_Test[] = "Win.Test";
static const char __pyx_k_Win_Wait[] = "Win.Wait";
static const char __pyx_k_Win_f2py[] = "Win.f2py";
static const char __pyx_k_Win_free[] = "Win.free";
static const char __pyx_k_Win_py2f[] = "Win.py2f";
static const char __pyx_k_Write_at[] = "Write_at";
static const char __pyx_k_allocate[] = "allocate";
static const char __pyx_k_alltoall[] = "alltoall";
static const char __pyx_k_c_status[] = "c_status";
static const char __pyx_k_cdatarep[] = "cdatarep";
static const char __pyx_k_cmessage[] = "cmessage";
static const char __pyx_k_combiner[] = "combiner";
static const char __pyx_k_complete[] = "complete";
static const char __pyx_k_datatype[] = "datatype";
static const char __pyx_k_distribs[] = "distribs";
static const char __pyx_k_elements[] = "elements";
static const char __pyx_k_errcodes[] = "errcodes";
static const char __pyx_k_f_status[] = "f_status";
static const char __pyx_k_filename[] = "filename";
static const char __pyx_k_filetype[] = "filetype";
static const char __pyx_k_flag_len[] = "flag_len";
static const char __pyx_k_flag_ptr[] = "flag_ptr";
static const char __pyx_k_fromcode[] = "fromcode";
static const char __pyx_k_function[] = "function";
static const char __pyx_k_funneled[] = "funneled";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_grequest[] = "grequest";
static const char __pyx_k_handleof[] = "_handleof";
static const char __pyx_k_indegree[] = "indegree";
static const char __pyx_k_inoutbuf[] = "inoutbuf";
static const char __pyx_k_instance[] = "' instance";
static const char __pyx_k_int_None[] = "int | None";
static const char __pyx_k_integers[] = "integers";
static const char __pyx_k_iperiods[] = "iperiods";
static const char __pyx_k_iremdims[] = "iremdims";
static const char __pyx_k_itemsize[] = ", itemsize:";
static const char __pyx_k_list_Any[] = "list[Any]";
static const char __pyx_k_list_int[] = "list[int]";
static const char __pyx_k_list_str[] = "list[str]";
static const char __pyx_k_location[] = "location";
static const char __pyx_k_maxprocs[] = "maxprocs";
static const char __pyx_k_multiple[] = "multiple";
static const char __pyx_k_nopython[] = "nopython";
static const char __pyx_k_position[] = "position";
static const char __pyx_k_protocol[] = "protocol";
static const char __pyx_k_provided[] = "provided";
static const char __pyx_k_query_fn[] = "query_fn";
static const char __pyx_k_readonly[] = "readonly";
static const char __pyx_k_reduce_2[] = "reduce";
static const char __pyx_k_requests[] = "requests";
static const char __pyx_k_required[] = "required";
static const char __pyx_k_sendrecv[] = "sendrecv";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_statuses[] = "statuses";
static const char __pyx_k_str_None[] = "str | None";
static const char __pyx_k_subsizes[] = "subsizes";
static const char __pyx_k_testsome[] = "testsome";
static const char __pyx_k_tomemory[] = "tomemory";
static const char __pyx_k_typecode[] = "_typecode";
static const char __pyx_k_typedict[] = "_typedict";
static const char __pyx_k_waitsome[] = "waitsome";
static const char __pyx_k_weighted[] = "weighted";
static const char __pyx_k_write_fn[] = "write_fn";
static const char __pyx_k_Aint_diff[] = "Aint_diff";
static const char __pyx_k_Allgather[] = "Allgather";
static const char __pyx_k_Alloc_mem[] = "Alloc_mem";
static const char __pyx_k_Allreduce[] = "Allreduce";
static const char __pyx_k_Alltoallv[] = "Alltoallv";
static const char __pyx_k_Alltoallw[] = "Alltoallw";
static const char __pyx_k_CHARACTER[] = "CHARACTER";
static const char __pyx_k_COMM_NULL[] = "COMM_NULL";
static const char __pyx_k_COMM_SELF[] = "COMM_SELF";
static const char __pyx_k_COMPLEX16[] = "COMPLEX16";
static const char __pyx_k_COMPLEX32[] = "COMPLEX32";
static const char __pyx_k_CONGRUENT[] = "CONGRUENT";
static const char __pyx_k_C_COMPLEX[] = "C_COMPLEX";
static const char __pyx_k_Comm_Free[] = "Comm.Free";
static const char __pyx_k_Comm_Idup[] = "Comm.Idup";
static const char __pyx_k_Comm_Join[] = "Comm.Join";
static const char __pyx_k_Comm_Recv[] = "Comm.Recv";
static const char __pyx_k_Comm_Send[] = "Comm.Send";
static const char __pyx_k_Comm_f2py[] = "Comm.f2py";
static const char __pyx_k_Comm_free[] = "Comm.free";
static const char __pyx_k_Comm_py2f[] = "Comm.py2f";
static const char __pyx_k_Comm_recv[] = "Comm.recv";
static const char __pyx_k_Comm_send[] = "Comm.send";
static const char __pyx_k_ERR_AMODE[] = "ERR_AMODE";
static const char __pyx_k_ERR_COUNT[] = "ERR_COUNT";
static const char __pyx_k_ERR_GROUP[] = "ERR_GROUP";
static const char __pyx_k_ERR_OTHER[] = "ERR_OTHER";
static const char __pyx_k_ERR_QUOTA[] = "ERR_QUOTA";
static const char __pyx_k_ERR_SPAWN[] = "ERR_SPAWN";
static const char __pyx_k_Exception[] = "Exception";
static const char __pyx_k_FILE_NULL[] = "FILE_NULL";
static const char __pyx_k_FLOAT_INT[] = "FLOAT_INT";
static const char __pyx_k_F_COMPLEX[] = "F_COMPLEX";
static const char __pyx_k_File_Open[] = "File.Open";
static const char __pyx_k_File_Read[] = "File.Read";
static const char __pyx_k_File_Seek[] = "File.Seek";
static const char __pyx_k_File_Sync[] = "File.Sync";
static const char __pyx_k_File_f2py[] = "File.f2py";
static const char __pyx_k_File_free[] = "File.free";
static const char __pyx_k_File_py2f[] = "File.py2f";
static const char __pyx_k_Flush_all[] = "Flush_all";
static const char __pyx_k_Get_amode[] = "Get_amode";
static const char __pyx_k_Get_count[] = "Get_count";
static const char __pyx_k_Get_error[] = "Get_error";
static const char __pyx_k_Get_group[] = "Get_group";
static const char __pyx_k_Get_nkeys[] = "Get_nkeys";
static const char __pyx_k_Graph_map[] = "Graph_map";
static const char __pyx_k_Graphcomm[] = "Graphcomm";
static const char __pyx_k_Group_Dup[] = "Group.Dup";
static const char __pyx_k_INFO_NULL[] = "INFO_NULL";
static const char __pyx_k_INTEGER16[] = "INTEGER16";
static const char __pyx_k_Ialltoall[] = "Ialltoall";
static const char __pyx_k_Info_Free[] = "Info.Free";
static const char __pyx_k_Info_None[] = "Info | None";
static const char __pyx_k_Info_copy[] = "Info.copy";
static const char __pyx_k_Info_f2py[] = "Info.f2py";
static const char __pyx_k_Info_free[] = "Info.free";
static const char __pyx_k_Info_keys[] = "Info.keys";
static const char __pyx_k_Info_py2f[] = "Info.py2f";
static const char __pyx_k_Intercomm[] = "Intercomm";
static const char __pyx_k_Intersect[] = "Intersect";
static const char __pyx_k_Intracomm[] = "Intracomm";
static const char __pyx_k_Iread_all[] = "Iread_all";
static const char __pyx_k_Iscatterv[] = "Iscatterv";
static const char __pyx_k_Isendrecv[] = "Isendrecv";
static const char __pyx_k_Iwrite_at[] = "Iwrite_at";
static const char __pyx_k_LONG_LONG[] = "LONG_LONG";
static const char __pyx_k_MODE_EXCL[] = "MODE_EXCL";
static const char __pyx_k_MODE_RDWR[] = "MODE_RDWR";
static const char __pyx_k_MPI4PY_RC[] = "MPI4PY_RC_";
static const char __pyx_k_MPI_Group[] = "MPI_Group";
static const char __pyx_k_Op_Create[] = "Op.Create";
static const char __pyx_k_Open_port[] = "Open_port";
static const char __pyx_k_PROC_NULL[] = "PROC_NULL";
static const char __pyx_k_Pack_size[] = "Pack_size";
static const char __pyx_k_Recv_init[] = "Recv_init";
static const char __pyx_k_SHORT_INT[] = "SHORT_INT";
static const char __pyx_k_Scan_init[] = "Scan_init";
static const char __pyx_k_Self_None[] = "Self | None";
static const char __pyx_k_Send_init[] = "Send_init";
static const char __pyx_k_Set_error[] = "Set_error";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_UNDEFINED[] = "UNDEFINED";
static const char __pyx_k_WIN_MODEL[] = "WIN_MODEL";
static const char __pyx_k_Win_Fence[] = "Win.Fence";
static const char __pyx_k_Win_Flush[] = "Win.Flush";
static const char __pyx_k_Win_Start[] = "Win.Start";
static const char __pyx_k_Write_all[] = "Write_all";
static const char __pyx_k_addresses[] = "addresses";
static const char __pyx_k_addressof[] = "_addressof";
static const char __pyx_k_allgather[] = "allgather";
static const char __pyx_k_allreduce[] = "allreduce";
static const char __pyx_k_assertion[] = "assertion";
static const char __pyx_k_bcast_p2p[] = "@bcast_p2p@";
static const char __pyx_k_cancel_fn[] = "cancel_fn";
static const char __pyx_k_cancelled[] = "cancelled";
static const char __pyx_k_cfilename[] = "cfilename";
static const char __pyx_k_comm_lock[] = "_comm_lock";
static const char __pyx_k_cportname[] = "cportname";
static const char __pyx_k_csrvcname[] = "csrvcname";
static const char __pyx_k_datatypes[] = "datatypes";
static const char __pyx_k_delete_fn[] = "delete_fn";
static const char __pyx_k_direction[] = "direction";
static const char __pyx_k_disp_unit[] = "disp_unit";
static const char __pyx_k_dumps_oob[] = "dumps_oob";
static const char __pyx_k_errorcode[] = "errorcode";
static const char __pyx_k_exception[] = "exception";
static const char __pyx_k_expecting[] = "expecting ";
static const char __pyx_k_extent_fn[] = "extent_fn";
static const char __pyx_k_idistribs[] = "idistribs";
static const char __pyx_k_ierrcodes[] = "ierrcodes";
static const char __pyx_k_imaxprocs[] = "imaxprocs";
static const char __pyx_k_isenabled[] = "isenabled";
static const char __pyx_k_isubsizes[] = "isubsizes";
static const char __pyx_k_items_got[] = " items, got ";
static const char __pyx_k_loads_oob[] = "loads_oob";
static const char __pyx_k_localcomm[] = "localcomm";
static const char __pyx_k_lock_type[] = "lock_type";
static const char __pyx_k_low_group[] = "low_group";
static const char __pyx_k_neighbors[] = "neighbors";
static const char __pyx_k_num_acked[] = "num_acked";
static const char __pyx_k_num_psets[] = "num_psets";
static const char __pyx_k_outdegree[] = "outdegree";
static const char __pyx_k_partition[] = "partition";
static const char __pyx_k_peer_comm[] = "peer_comm";
static const char __pyx_k_port_name[] = "port_name";
static const char __pyx_k_pset_name[] = "pset_name";
static const char __pyx_k_resultlen[] = "resultlen";
static const char __pyx_k_strides_2[] = ", strides:";
static const char __pyx_k_stringtag[] = "stringtag";
static const char __pyx_k_threshold[] = "threshold";
static const char __pyx_k_typealign[] = "_typealign";
static const char __pyx_k_typeclass[] = "typeclass";
static const char __pyx_k_ANY_SOURCE[] = "ANY_SOURCE";
static const char __pyx_k_Accumulate[] = "Accumulate";
static const char __pyx_k_Ack_failed[] = "Ack_failed";
static const char __pyx_k_Allgatherv[] = "Allgatherv";
static const char __pyx_k_Bcast_init[] = "Bcast_init";
static const char __pyx_k_BottomType[] = "BottomType";
static const char __pyx_k_Bsend_init[] = "Bsend_init";
static const char __pyx_k_COMM_WORLD[] = "COMM_WORLD";
static const char __pyx_k_CONTIGUOUS[] = "CONTIGUOUS";
static const char __pyx_k_Close_port[] = "Close_port";
static const char __pyx_k_Comm_Abort[] = "Comm.Abort";
static const char __pyx_k_Comm_Agree[] = "Comm.Agree";
static const char __pyx_k_Comm_Bcast[] = "Comm.Bcast";
static const char __pyx_k_Comm_Bsend[] = "Comm.Bsend";
static const char __pyx_k_Comm_Clone[] = "Comm.Clone";
static const char __pyx_k_Comm_Irecv[] = "Comm.Irecv";
static const char __pyx_k_Comm_Isend[] = "Comm.Isend";
static const char __pyx_k_Comm_Probe[] = "Comm.Probe";
static const char __pyx_k_Comm_Rsend[] = "Comm.Rsend";
static const char __pyx_k_Comm_Split[] = "Comm.Split";
static const char __pyx_k_Comm_Ssend[] = "Comm.Ssend";
static const char __pyx_k_Comm_bcast[] = "Comm.bcast";
static const char __pyx_k_Comm_bsend[] = "Comm.bsend";
static const char __pyx_k_Comm_irecv[] = "Comm.irecv";
static const char __pyx_k_Comm_isend[] = "Comm.isend";
static const char __pyx_k_Comm_probe[] = "Comm.probe";
static const char __pyx_k_Comm_ssend[] = "Comm.ssend";
static const char __pyx_k_Create_dup[] = "Create_dup";
static const char __pyx_k_Create_env[] = "Create_env";
static const char __pyx_k_DIST_GRAPH[] = "DIST_GRAPH";
static const char __pyx_k_DOUBLE_INT[] = "DOUBLE_INT";
static const char __pyx_k_Difference[] = "Difference";
static const char __pyx_k_Disconnect[] = "Disconnect";
static const char __pyx_k_ERR_ACCESS[] = "ERR_ACCESS";
static const char __pyx_k_ERR_ASSERT[] = "ERR_ASSERT";
static const char __pyx_k_ERR_BUFFER[] = "ERR_BUFFER";
static const char __pyx_k_ERR_INTERN[] = "ERR_INTERN";
static const char __pyx_k_ERR_KEYVAL[] = "ERR_KEYVAL";
static const char __pyx_k_ERR_NO_MEM[] = "ERR_NO_MEM";
static const char __pyx_k_Errhandler[] = "Errhandler";
static const char __pyx_k_File_Close[] = "File.Close";
static const char __pyx_k_File_Iread[] = "File.Iread";
static const char __pyx_k_File_Write[] = "File.Write";
static const char __pyx_k_GROUP_NULL[] = "GROUP_NULL";
static const char __pyx_k_Get_coords[] = "Get_coords";
static const char __pyx_k_Get_extent[] = "Get_extent";
static const char __pyx_k_Get_failed[] = "Get_failed";
static const char __pyx_k_Get_nthkey[] = "Get_nthkey";
static const char __pyx_k_Get_parent[] = "Get_parent";
static const char __pyx_k_Get_source[] = "Get_source";
static const char __pyx_k_Get_status[] = "Get_status";
static const char __pyx_k_Group_Excl[] = "Group.Excl";
static const char __pyx_k_Group_Free[] = "Group.Free";
static const char __pyx_k_Group_Incl[] = "Group.Incl";
static const char __pyx_k_Group_None[] = "Group | None";
static const char __pyx_k_Group_f2py[] = "Group.f2py";
static const char __pyx_k_Group_free[] = "Group.free";
static const char __pyx_k_Group_py2f[] = "Group.py2f";
static const char __pyx_k_Iallgather[] = "Iallgather";
static const char __pyx_k_Iallreduce[] = "Iallreduce";
static const char __pyx_k_Ialltoallv[] = "Ialltoallv";
static const char __pyx_k_Ialltoallw[] = "Ialltoallw";
static const char __pyx_k_IndexError[] = "IndexError";
static const char __pyx_k_Info_clear[] = "Info.clear";
static const char __pyx_k_Info_items[] = "Info.items";
static const char __pyx_k_Is_revoked[] = "Is_revoked";
static const char __pyx_k_Iwrite_all[] = "Iwrite_all";
static const char __pyx_k_MODE_NOPUT[] = "MODE_NOPUT";
static const char __pyx_k_Match_size[] = "Match_size";
static const char __pyx_k_Precv_init[] = "Precv_init";
static const char __pyx_k_Psend_init[] = "Psend_init";
static const char __pyx_k_Range_excl[] = "Range_excl";
static const char __pyx_k_Range_incl[] = "Range_incl";
static const char __pyx_k_Rsend_init[] = "Rsend_init";
static const char __pyx_k_SIGNED_INT[] = "SIGNED_INT";
static const char __pyx_k_SUBVERSION[] = "SUBVERSION";
static const char __pyx_k_Set_source[] = "Set_source";
static const char __pyx_k_Split_type[] = "Split_type";
static const char __pyx_k_Ssend_init[] = "Ssend_init";
static const char __pyx_k_UNWEIGHTED[] = "UNWEIGHTED";
static const char __pyx_k_Unlock_all[] = "Unlock_all";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_WIN_FLAVOR[] = "WIN_FLAVOR";
static const char __pyx_k_Win_Attach[] = "Win.Attach";
static const char __pyx_k_Win_Create[] = "Win.Create";
static const char __pyx_k_Win_Detach[] = "Win.Detach";
static const char __pyx_k_Win_Unlock[] = "Win.Unlock";
static const char __pyx_k_and_counts[] = " and counts[";
static const char __pyx_k_cannot_map[] = "cannot map ";
static const char __pyx_k_cstringtag[] = "cstringtag";
static const char __pyx_k_errhandler[] = "errhandler";
static const char __pyx_k_error_code[] = "error code: ";
static const char __pyx_k_errorclass[] = "errorclass";
static const char __pyx_k_frombuffer[] = "frombuffer";
static const char __pyx_k_fromhandle[] = "fromhandle";
static const char __pyx_k_get_status[] = "get_status";
static const char __pyx_k_get_vendor[] = "get_vendor";
static const char __pyx_k_ineighbors[] = "ineighbors";
static const char __pyx_k_inoutedges[] = "inoutedges";
static const char __pyx_k_memoryview[] = "memoryview";
static const char __pyx_k_mpi4py_MPI[] = "mpi4py.MPI";
static const char __pyx_k_nneighbors[] = "nneighbors";
static const char __pyx_k_num_to_ack[] = "num_to_ack";
static const char __pyx_k_org_mpi4py[] = "org.mpi4py";
static const char __pyx_k_partitions[] = "partitions";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_recvcounts[] = "recvcounts";
static const char __pyx_k_serialized[] = "serialized";
static const char __pyx_k_split_type[] = "split_type";
static const char __pyx_k_subversion[] = "subversion";
static const char __pyx_k_toreadonly[] = "toreadonly";
static const char __pyx_k_typedict_c[] = "_typedict_c";
static const char __pyx_k_typedict_f[] = "_typedict_f";
static const char __pyx_k_BufferError[] = "BufferError";
static const char __pyx_k_Buffer_None[] = "Buffer | None";
static const char __pyx_k_Comm_Create[] = "Comm.Create";
static const char __pyx_k_Comm_Gather[] = "Comm.Gather";
static const char __pyx_k_Comm_Iagree[] = "Comm.Iagree";
static const char __pyx_k_Comm_Ibcast[] = "Comm.Ibcast";
static const char __pyx_k_Comm_Ibsend[] = "Comm.Ibsend";
static const char __pyx_k_Comm_Iprobe[] = "Comm.Iprobe";
static const char __pyx_k_Comm_Irsend[] = "Comm.Irsend";
static const char __pyx_k_Comm_Issend[] = "Comm.Issend";
static const char __pyx_k_Comm_Mprobe[] = "Comm.Mprobe";
static const char __pyx_k_Comm_Reduce[] = "Comm.Reduce";
static const char __pyx_k_Comm_Revoke[] = "Comm.Revoke";
static const char __pyx_k_Comm_Shrink[] = "Comm.Shrink";
static const char __pyx_k_Comm_gather[] = "Comm.gather";
static const char __pyx_k_Comm_ibsend[] = "Comm.ibsend";
static const char __pyx_k_Comm_iprobe[] = "Comm.iprobe";
static const char __pyx_k_Comm_issend[] = "Comm.issend";
static const char __pyx_k_Comm_mprobe[] = "Comm.mprobe";
static const char __pyx_k_Comm_reduce[] = "Comm.reduce";
static const char __pyx_k_Create_cart[] = "Create_cart";
static const char __pyx_k_Delete_attr[] = "Delete_attr";
static const char __pyx_k_ERR_PENDING[] = "ERR_PENDING";
static const char __pyx_k_ERR_REQUEST[] = "ERR_REQUEST";
static const char __pyx_k_ERR_REVOKED[] = "ERR_REVOKED";
static const char __pyx_k_ERR_SERVICE[] = "ERR_SERVICE";
static const char __pyx_k_ERR_SESSION[] = "ERR_SESSION";
static const char __pyx_k_ERR_UNKNOWN[] = "ERR_UNKNOWN";
static const char __pyx_k_Exscan_init[] = "Exscan_init";
static const char __pyx_k_F90_COMPLEX[] = "F90_COMPLEX";
static const char __pyx_k_F90_INTEGER[] = "F90_INTEGER";
static const char __pyx_k_File_Delete[] = "File.Delete";
static const char __pyx_k_File_Iwrite[] = "File.Iwrite";
static const char __pyx_k_Flush_local[] = "Flush_local";
static const char __pyx_k_Free_keyval[] = "Free_keyval";
static const char __pyx_k_GROUP_EMPTY[] = "GROUP_EMPTY";
static const char __pyx_k_Gather_init[] = "Gather_init";
static const char __pyx_k_Get_address[] = "Get_address";
static const char __pyx_k_Get_version[] = "Get_version";
static const char __pyx_k_Group_Union[] = "Group.Union";
static const char __pyx_k_Iallgatherv[] = "Iallgatherv";
static const char __pyx_k_ImportError[] = "ImportError";
static const char __pyx_k_InPlaceType[] = "InPlaceType";
static const char __pyx_k_Info_Create[] = "Info.Create";
static const char __pyx_k_Info_Delete[] = "Info.Delete";
static const char __pyx_k_Info_update[] = "Info.update";
static const char __pyx_k_Info_values[] = "Info.values";
static const char __pyx_k_Init_thread[] = "Init_thread";
static const char __pyx_k_LOCK_SHARED[] = "LOCK_SHARED";
static const char __pyx_k_LONG_DOUBLE[] = "LONG_DOUBLE";
static const char __pyx_k_Lookup_name[] = "Lookup_name";
static const char __pyx_k_MODE_APPEND[] = "MODE_APPEND";
static const char __pyx_k_MODE_CREATE[] = "MODE_CREATE";
static const char __pyx_k_MODE_RDONLY[] = "MODE_RDONLY";
static const char __pyx_k_MODE_WRONLY[] = "MODE_WRONLY";
static const char __pyx_k_MPI_Message[] = "MPI_Message";
static const char __pyx_k_MPI_Request[] = "MPI_Request";
static const char __pyx_k_MPI_Session[] = "MPI_Session";
static const char __pyx_k_MemoryError[] = "MemoryError";
static const char __pyx_k_Op___reduce[] = "Op.__reduce__";
static const char __pyx_k_Pready_list[] = "Pready_list";
static const char __pyx_k_Preallocate[] = "Preallocate";
static const char __pyx_k_Raccumulate[] = "Raccumulate";
static const char __pyx_k_Read_at_all[] = "Read_at_all";
static const char __pyx_k_Read_shared[] = "Read_shared";
static const char __pyx_k_Reduce_init[] = "Reduce_init";
static const char __pyx_k_SIGNED_CHAR[] = "SIGNED_CHAR";
static const char __pyx_k_SIGNED_LONG[] = "SIGNED_LONG";
static const char __pyx_k_Seek_shared[] = "Seek_shared";
static const char __pyx_k_Status_None[] = "Status | None";
static const char __pyx_k_Status_f2py[] = "Status.f2py";
static const char __pyx_k_Status_py2f[] = "Status.py2f";
static const char __pyx_k_UserWarning[] = "UserWarning";
static const char __pyx_k_VALUE_INDEX[] = "VALUE_INDEX";
static const char __pyx_k_WIN_UNIFIED[] = "WIN_UNIFIED";
static const char __pyx_k_blocklength[] = "blocklength";
static const char __pyx_k_buffer_cast[] = "buffer.cast";
static const char __pyx_k_destweights[] = "destweights";
static const char __pyx_k_fromaddress[] = "fromaddress";
static const char __pyx_k_idestweight[] = "idestweight";
static const char __pyx_k_keyval_save[] = "keyval_save";
static const char __pyx_k_local_group[] = "local_group";
static const char __pyx_k_max_version[] = "max_version";
static const char __pyx_k_maxindegree[] = "maxindegree";
static const char __pyx_k_remain_dims[] = "remain_dims";
static const char __pyx_k_target_disp[] = "target_disp";
static const char __pyx_k_target_rank[] = "target_rank";
static const char __pyx_k_Barrier_init[] = "Barrier_init";
static const char __pyx_k_BufSpec_None[] = "BufSpec | None";
static const char __pyx_k_COMBINER_DUP[] = "COMBINER_DUP";
static const char __pyx_k_Cartcomm_Sub[] = "Cartcomm.Sub";
static const char __pyx_k_Comm_Barrier[] = "Comm.Barrier";
static const char __pyx_k_Comm_Compare[] = "Comm.Compare";
static const char __pyx_k_Comm_Gatherv[] = "Comm.Gatherv";
static const char __pyx_k_Comm_Igather[] = "Comm.Igather";
static const char __pyx_k_Comm_Improbe[] = "Comm.Improbe";
static const char __pyx_k_Comm_Ireduce[] = "Comm.Ireduce";
static const char __pyx_k_Comm_Ishrink[] = "Comm.Ishrink";
static const char __pyx_k_Comm_Scatter[] = "Comm.Scatter";
static const char __pyx_k_Comm_barrier[] = "Comm.barrier";
static const char __pyx_k_Comm_improbe[] = "Comm.improbe";
static const char __pyx_k_Comm_scatter[] = "Comm.scatter";
static const char __pyx_k_Compute_dims[] = "Compute_dims";
static const char __pyx_k_Create_graph[] = "Create_graph";
static const char __pyx_k_Create_group[] = "Create_group";
static const char __pyx_k_Datatype_Dup[] = "Datatype.Dup";
static const char __pyx_k_ERRORS_ABORT[] = "ERRORS_ABORT";
static const char __pyx_k_ERR_BAD_FILE[] = "ERR_BAD_FILE";
static const char __pyx_k_ERR_INFO_KEY[] = "ERR_INFO_KEY";
static const char __pyx_k_ERR_LASTCODE[] = "ERR_LASTCODE";
static const char __pyx_k_ERR_LOCKTYPE[] = "ERR_LOCKTYPE";
static const char __pyx_k_ERR_NOT_SAME[] = "ERR_NOT_SAME";
static const char __pyx_k_ERR_NO_SPACE[] = "ERR_NO_SPACE";
static const char __pyx_k_ERR_RMA_SYNC[] = "ERR_RMA_SYNC";
static const char __pyx_k_ERR_TOPOLOGY[] = "ERR_TOPOLOGY";
static const char __pyx_k_ERR_TRUNCATE[] = "ERR_TRUNCATE";
static const char __pyx_k_Fetch_and_op[] = "Fetch_and_op";
static const char __pyx_k_File_Read_at[] = "File.Read_at";
static const char __pyx_k_Flush_buffer[] = "Flush_buffer";
static const char __pyx_k_Gatherv_init[] = "Gatherv_init";
static const char __pyx_k_Get_contents[] = "Get_contents";
static const char __pyx_k_Get_elements[] = "Get_elements";
static const char __pyx_k_Get_envelope[] = "Get_envelope";
static const char __pyx_k_Get_nth_pset[] = "Get_nth_pset";
static const char __pyx_k_Get_position[] = "Get_position";
static const char __pyx_k_Get_topology[] = "Get_topology";
static const char __pyx_k_Info_popitem[] = "Info.popitem";
static const char __pyx_k_Intersection[] = "Intersection";
static const char __pyx_k_Iread_at_all[] = "Iread_at_all";
static const char __pyx_k_Iread_shared[] = "Iread_shared";
static const char __pyx_k_Is_cancelled[] = "Is_cancelled";
static const char __pyx_k_Is_finalized[] = "Is_finalized";
static const char __pyx_k_LASTUSEDCODE[] = "LASTUSEDCODE";
static const char __pyx_k_Literal_True[] = "Literal[True]";
static const char __pyx_k_MAX_INFO_KEY[] = "MAX_INFO_KEY";
static const char __pyx_k_MAX_INFO_VAL[] = "MAX_INFO_VAL";
static const char __pyx_k_MESSAGE_NULL[] = "MESSAGE_NULL";
static const char __pyx_k_MODE_NOCHECK[] = "MODE_NOCHECK";
static const char __pyx_k_MODE_NOSTORE[] = "MODE_NOSTORE";
static const char __pyx_k_MPI_Datatype[] = "MPI_Datatype";
static const char __pyx_k_Message_None[] = "Message | None";
static const char __pyx_k_Message_Recv[] = "Message.Recv";
static const char __pyx_k_Message_f2py[] = "Message.f2py";
static const char __pyx_k_Message_free[] = "Message.free";
static const char __pyx_k_Message_py2f[] = "Message.py2f";
static const char __pyx_k_Message_recv[] = "Message.recv";
static const char __pyx_k_Pickle_dumps[] = "Pickle.dumps";
static const char __pyx_k_Pickle_loads[] = "Pickle.loads";
static const char __pyx_k_Pready_range[] = "Pready_range";
static const char __pyx_k_Publish_name[] = "Publish_name";
static const char __pyx_k_Query_thread[] = "Query_thread";
static const char __pyx_k_REQUEST_NULL[] = "REQUEST_NULL";
static const char __pyx_k_Read_all_end[] = "Read_all_end";
static const char __pyx_k_Read_ordered[] = "Read_ordered";
static const char __pyx_k_Reduce_local[] = "Reduce_local";
static const char __pyx_k_Request_Free[] = "Request.Free";
static const char __pyx_k_Request_Test[] = "Request.Test";
static const char __pyx_k_Request_Wait[] = "Request.Wait";
static const char __pyx_k_Request_f2py[] = "Request.f2py";
static const char __pyx_k_Request_free[] = "Request.free";
static const char __pyx_k_Request_py2f[] = "Request.py2f";
static const char __pyx_k_Request_test[] = "Request.test";
static const char __pyx_k_Request_wait[] = "Request.wait";
static const char __pyx_k_SESSION_NULL[] = "SESSION_NULL";
static const char __pyx_k_SIGNED_SHORT[] = "SIGNED_SHORT";
static const char __pyx_k_Scatter_init[] = "Scatter_init";
static const char __pyx_k_Sequence_Any[] = "Sequence[Any]";
static const char __pyx_k_Sequence_int[] = "Sequence[int]";
static const char __pyx_k_Sequence_str[] = "Sequence[str]";
static const char __pyx_k_Session_Init[] = "Session.Init";
static const char __pyx_k_Session_f2py[] = "Session.f2py";
static const char __pyx_k_Session_free[] = "Session.free";
static const char __pyx_k_Session_py2f[] = "Session.py2f";
static const char __pyx_k_Set_elements[] = "Set_elements";
static const char __pyx_k_Shared_query[] = "Shared_query";
static const char __pyx_k_UNSIGNED_INT[] = "UNSIGNED_INT";
static const char __pyx_k_WIN_SEPARATE[] = "WIN_SEPARATE";
static const char __pyx_k_Win_Allocate[] = "Win.Allocate";
static const char __pyx_k_Win_Complete[] = "Win.Complete";
static const char __pyx_k_Win_Get_attr[] = "Win.Get_attr";
static const char __pyx_k_Win_Get_info[] = "Win.Get_info";
static const char __pyx_k_Win_Get_name[] = "Win.Get_name";
static const char __pyx_k_Win_Lock_all[] = "Win.Lock_all";
static const char __pyx_k_Win_Set_attr[] = "Win.Set_attr";
static const char __pyx_k_Win_Set_info[] = "Win.Set_info";
static const char __pyx_k_Win_Set_name[] = "Win.Set_name";
static const char __pyx_k_Win___reduce[] = "Win.__reduce__";
static const char __pyx_k_Win_tomemory[] = "Win.tomemory";
static const char __pyx_k_Write_at_all[] = "Write_at_all";
static const char __pyx_k_Write_shared[] = "Write_shared";
static const char __pyx_k_blocklengths[] = "blocklengths";
static const char __pyx_k_c_num_to_ack[] = "c_num_to_ack";
static const char __pyx_k_destinations[] = "destinations";
static const char __pyx_k_dict_str_Any[] = "dict[str, Any]";
static const char __pyx_k_dict_str_int[] = "dict[str, int]";
static const char __pyx_k_dummy_thread[] = "_dummy_thread";
static const char __pyx_k_int_Any_None[] = "int | Any | None";
static const char __pyx_k_is_coroutine[] = "_is_coroutine";
static const char __pyx_k_local_leader[] = "local_leader";
static const char __pyx_k_maxoutdegree[] = "maxoutdegree";
static const char __pyx_k_remote_group[] = "remote_group";
static const char __pyx_k_service_name[] = "service_name";
static const char __pyx_k_staticmethod[] = "staticmethod";
static const char __pyx_k_Alltoall_init[] = "Alltoall_init";
static const char __pyx_k_Attach_buffer[] = "Attach_buffer";
static const char __pyx_k_BaseException[] = "BaseException";
static const char __pyx_k_BufSpecB_None[] = "BufSpecB | None";
static const char __pyx_k_BufSpecV_None[] = "BufSpecV | None";
static const char __pyx_k_Buffer_Bottom[] = "Buffer | Bottom";
static const char __pyx_k_Comm_Alltoall[] = "Comm.Alltoall";
static const char __pyx_k_Comm_Get_attr[] = "Comm.Get_attr";
static const char __pyx_k_Comm_Get_info[] = "Comm.Get_info";
static const char __pyx_k_Comm_Get_name[] = "Comm.Get_name";
static const char __pyx_k_Comm_Get_rank[] = "Comm.Get_rank";
static const char __pyx_k_Comm_Get_size[] = "Comm.Get_size";
static const char __pyx_k_Comm_Ibarrier[] = "Comm.Ibarrier";
static const char __pyx_k_Comm_Igatherv[] = "Comm.Igatherv";
static const char __pyx_k_Comm_Is_inter[] = "Comm.Is_inter";
static const char __pyx_k_Comm_Is_intra[] = "Comm.Is_intra";
static const char __pyx_k_Comm_Iscatter[] = "Comm.Iscatter";
static const char __pyx_k_Comm_Scatterv[] = "Comm.Scatterv";
static const char __pyx_k_Comm_Sendrecv[] = "Comm.Sendrecv";
static const char __pyx_k_Comm_Set_attr[] = "Comm.Set_attr";
static const char __pyx_k_Comm_Set_info[] = "Comm.Set_info";
static const char __pyx_k_Comm_Set_name[] = "Comm.Set_name";
static const char __pyx_k_Comm___reduce[] = "Comm.__reduce__";
static const char __pyx_k_Comm_alltoall[] = "Comm.alltoall";
static const char __pyx_k_Comm_sendrecv[] = "Comm.sendrecv";
static const char __pyx_k_Create_darray[] = "Create_darray";
static const char __pyx_k_Create_keyval[] = "Create_keyval";
static const char __pyx_k_Create_struct[] = "Create_struct";
static const char __pyx_k_Create_vector[] = "Create_vector";
static const char __pyx_k_DATATYPE_NULL[] = "DATATYPE_NULL";
static const char __pyx_k_Datatype_Free[] = "Datatype.Free";
static const char __pyx_k_Datatype_None[] = "Datatype | None";
static const char __pyx_k_Datatype_Pack[] = "Datatype.Pack";
static const char __pyx_k_Datatype_f2py[] = "Datatype.f2py";
static const char __pyx_k_Datatype_free[] = "Datatype.free";
static const char __pyx_k_Datatype_py2f[] = "Datatype.py2f";
static const char __pyx_k_Detach_buffer[] = "Detach_buffer";
static const char __pyx_k_Distgraphcomm[] = "Distgraphcomm";
static const char __pyx_k_Dup_with_info[] = "Dup_with_info";
static const char __pyx_k_ERRORS_RETURN[] = "ERRORS_RETURN";
static const char __pyx_k_ERR_IN_STATUS[] = "ERR_IN_STATUS";
static const char __pyx_k_ERR_READ_ONLY[] = "ERR_READ_ONLY";
static const char __pyx_k_ERR_RMA_RANGE[] = "ERR_RMA_RANGE";
static const char __pyx_k_F_STATUS_SIZE[] = "F_STATUS_SIZE";
static const char __pyx_k_File_Get_info[] = "File.Get_info";
static const char __pyx_k_File_Get_size[] = "File.Get_size";
static const char __pyx_k_File_Get_view[] = "File.Get_view";
static const char __pyx_k_File_Iread_at[] = "File.Iread_at";
static const char __pyx_k_File_Read_all[] = "File.Read_all";
static const char __pyx_k_File_Set_info[] = "File.Set_info";
static const char __pyx_k_File_Set_size[] = "File.Set_size";
static const char __pyx_k_File_Set_view[] = "File.Set_view";
static const char __pyx_k_File_Write_at[] = "File.Write_at";
static const char __pyx_k_File___reduce[] = "File.__reduce__";
static const char __pyx_k_Get_atomicity[] = "Get_atomicity";
static const char __pyx_k_Get_cart_rank[] = "Get_cart_rank";
static const char __pyx_k_Get_neighbors[] = "Get_neighbors";
static const char __pyx_k_Get_num_psets[] = "Get_num_psets";
static const char __pyx_k_Get_pset_info[] = "Get_pset_info";
static const char __pyx_k_Group_Compare[] = "Group.Compare";
static const char __pyx_k_Hashable_None[] = "Hashable | None";
static const char __pyx_k_INDEXED_BLOCK[] = "INDEXED_BLOCK";
static const char __pyx_k_Iflush_buffer[] = "Iflush_buffer";
static const char __pyx_k_ImportWarning[] = "ImportWarning";
static const char __pyx_k_Info___reduce[] = "Info.__reduce__";
static const char __pyx_k_Iwrite_at_all[] = "Iwrite_at_all";
static const char __pyx_k_Iwrite_shared[] = "Iwrite_shared";
static const char __pyx_k_MAX_PORT_NAME[] = "MAX_PORT_NAME";
static const char __pyx_k_MPI_Exception[] = "MPI.Exception(";
static const char __pyx_k_Message_Irecv[] = "Message.Irecv";
static const char __pyx_k_Message_Probe[] = "Message.Probe";
static const char __pyx_k_Message_irecv[] = "Message.irecv";
static const char __pyx_k_Message_probe[] = "Message.probe";
static const char __pyx_k_ORDER_FORTRAN[] = "ORDER_FORTRAN";
static const char __pyx_k_Op_fromhandle[] = "Op.fromhandle";
static const char __pyx_k_OverflowError[] = "OverflowError";
static const char __pyx_k_Pack_external[] = "Pack_external";
static const char __pyx_k_Scatterv_init[] = "Scatterv_init";
static const char __pyx_k_Sequence_bool[] = "Sequence[bool]";
static const char __pyx_k_Set_atomicity[] = "Set_atomicity";
static const char __pyx_k_Set_cancelled[] = "Set_cancelled";
static const char __pyx_k_THREAD_SINGLE[] = "THREAD_SINGLE";
static const char __pyx_k_UNIVERSE_SIZE[] = "UNIVERSE_SIZE";
static const char __pyx_k_UNSIGNED_CHAR[] = "UNSIGNED_CHAR";
static const char __pyx_k_UNSIGNED_LONG[] = "UNSIGNED_LONG";
static const char __pyx_k_WEIGHTS_EMPTY[] = "WEIGHTS_EMPTY";
static const char __pyx_k_WIN_DISP_UNIT[] = "WIN_DISP_UNIT";
static const char __pyx_k_Win_Flush_all[] = "Win.Flush_all";
static const char __pyx_k_Win_Get_group[] = "Win.Get_group";
static const char __pyx_k_Write_all_end[] = "Write_all_end";
static const char __pyx_k_Write_ordered[] = "Write_ordered";
static const char __pyx_k_allocate_lock[] = "allocate_lock";
static const char __pyx_k_class_getitem[] = "__class_getitem__";
static const char __pyx_k_commctx_inter[] = "@commctx_inter";
static const char __pyx_k_commctx_intra[] = "@commctx_intra";
static const char __pyx_k_displacements[] = "displacements";
static const char __pyx_k_dlpack_device[] = "__dlpack_device__";
static const char __pyx_k_errhandler_fn[] = "errhandler_fn";
static const char __pyx_k_format_string[] = "format string ";
static const char __pyx_k_isourceweight[] = "isourceweight";
static const char __pyx_k_list_Any_None[] = "list[Any] | None";
static const char __pyx_k_list_Prequest[] = "list[Prequest]";
static const char __pyx_k_list_int_None[] = "list[int] | None";
static const char __pyx_k_partition_low[] = "partition_low";
static const char __pyx_k_remote_leader[] = "remote_leader";
static const char __pyx_k_sourceweights[] = "sourceweights";
static const char __pyx_k_str_tuple_Any[] = "str | tuple[Any, ...]";
static const char __pyx_k_tuple_int_Any[] = "tuple[int, Any]";
static const char __pyx_k_tuple_int_int[] = "tuple[int, int]";
static const char __pyx_k_tuple_str_str[] = "tuple[str, str]";
static const char __pyx_k_Add_error_code[] = "Add_error_code";
static const char __pyx_k_Allgather_init[] = "Allgather_init";
static const char __pyx_k_Allreduce_init[] = "Allreduce_init";
static const char __pyx_k_Alltoallv_init[] = "Alltoallv_init";
static const char __pyx_k_Alltoallw_init[] = "Alltoallw_init";
static const char __pyx_k_AttributeError[] = "AttributeError";
static const char __pyx_k_BSEND_OVERHEAD[] = "BSEND_OVERHEAD";
static const char __pyx_k_COMBINER_NAMED[] = "COMBINER_NAMED";
static const char __pyx_k_Cartcomm_Shift[] = "Cartcomm.Shift";
static const char __pyx_k_Comm_Allgather[] = "Comm.Allgather";
static const char __pyx_k_Comm_Allreduce[] = "Comm.Allreduce";
static const char __pyx_k_Comm_Alltoallv[] = "Comm.Alltoallv";
static const char __pyx_k_Comm_Alltoallw[] = "Comm.Alltoallw";
static const char __pyx_k_Comm_Get_group[] = "Comm.Get_group";
static const char __pyx_k_Comm_Ialltoall[] = "Comm.Ialltoall";
static const char __pyx_k_Comm_Iscatterv[] = "Comm.Iscatterv";
static const char __pyx_k_Comm_Isendrecv[] = "Comm.Isendrecv";
static const char __pyx_k_Comm_Recv_init[] = "Comm.Recv_init";
static const char __pyx_k_Comm_Send_init[] = "Comm.Send_init";
static const char __pyx_k_Comm_allgather[] = "Comm.allgather";
static const char __pyx_k_Comm_allreduce[] = "Comm.allreduce";
static const char __pyx_k_Create_dynamic[] = "Create_dynamic";
static const char __pyx_k_Create_hvector[] = "Create_hvector";
static const char __pyx_k_Create_indexed[] = "Create_indexed";
static const char __pyx_k_Create_resized[] = "Create_resized";
static const char __pyx_k_DOUBLE_COMPLEX[] = "DOUBLE_COMPLEX";
static const char __pyx_k_ERR_CONVERSION[] = "ERR_CONVERSION";
static const char __pyx_k_ERR_ERRHANDLER[] = "ERR_ERRHANDLER";
static const char __pyx_k_ERR_INFO_NOKEY[] = "ERR_INFO_NOKEY";
static const char __pyx_k_ERR_INFO_VALUE[] = "ERR_INFO_VALUE";
static const char __pyx_k_ERR_RMA_ATTACH[] = "ERR_RMA_ATTACH";
static const char __pyx_k_ERR_RMA_FLAVOR[] = "ERR_RMA_FLAVOR";
static const char __pyx_k_ERR_RMA_SHARED[] = "ERR_RMA_SHARED";
static const char __pyx_k_File_Get_amode[] = "File.Get_amode";
static const char __pyx_k_File_Get_group[] = "File.Get_group";
static const char __pyx_k_File_Iread_all[] = "File.Iread_all";
static const char __pyx_k_File_Iwrite_at[] = "File.Iwrite_at";
static const char __pyx_k_File_Write_all[] = "File.Write_all";
static const char __pyx_k_Get_accumulate[] = "Get_accumulate";
static const char __pyx_k_Get_errhandler[] = "Get_errhandler";
static const char __pyx_k_Get_error_code[] = "Get_error_code";
static const char __pyx_k_Get_status_all[] = "Get_status_all";
static const char __pyx_k_Get_status_any[] = "Get_status_any";
static const char __pyx_k_Grequest_Start[] = "Grequest.Start";
static const char __pyx_k_Group_Get_rank[] = "Group.Get_rank";
static const char __pyx_k_Group_Get_size[] = "Group.Get_size";
static const char __pyx_k_Group___reduce[] = "Group.__reduce__";
static const char __pyx_k_HINDEXED_BLOCK[] = "HINDEXED_BLOCK";
static const char __pyx_k_Idup_with_info[] = "Idup_with_info";
static const char __pyx_k_Info_Get_nkeys[] = "Info.Get_nkeys";
static const char __pyx_k_Intracomm_Scan[] = "Intracomm.Scan";
static const char __pyx_k_Intracomm_scan[] = "Intracomm.scan";
static const char __pyx_k_Is_commutative[] = "Is_commutative";
static const char __pyx_k_Is_initialized[] = "Is_initialized";
static const char __pyx_k_Is_thread_main[] = "Is_thread_main";
static const char __pyx_k_KEYVAL_INVALID[] = "KEYVAL_INVALID";
static const char __pyx_k_LOCK_EXCLUSIVE[] = "LOCK_EXCLUSIVE";
static const char __pyx_k_MODE_NOPRECEDE[] = "MODE_NOPRECEDE";
static const char __pyx_k_MODE_NOSUCCEED[] = "MODE_NOSUCCEED";
static const char __pyx_k_MPI_Errhandler[] = "MPI_Errhandler";
static const char __pyx_k_Message_Iprobe[] = "Message.Iprobe";
static const char __pyx_k_Message_iprobe[] = "Message.iprobe";
static const char __pyx_k_NotImplemented[] = "NotImplemented";
static const char __pyx_k_Prequest_Start[] = "Prequest.Start";
static const char __pyx_k_Read_all_begin[] = "Read_all_begin";
static const char __pyx_k_Reduce_scatter[] = "Reduce_scatter";
static const char __pyx_k_Request_Cancel[] = "Request.Cancel";
static const char __pyx_k_Request_cancel[] = "Request.cancel";
static const char __pyx_k_RuntimeWarning[] = "RuntimeWarning";
static const char __pyx_k_Set_errhandler[] = "Set_errhandler";
static const char __pyx_k_Spawn_multiple[] = "Spawn_multiple";
static const char __pyx_k_Status_Get_tag[] = "Status.Get_tag";
static const char __pyx_k_Status_Set_tag[] = "Status.Set_tag";
static const char __pyx_k_TYPECLASS_REAL[] = "TYPECLASS_REAL";
static const char __pyx_k_UNSIGNED_SHORT[] = "UNSIGNED_SHORT";
static const char __pyx_k_Unpublish_name[] = "Unpublish_name";
static const char __pyx_k_Win_Accumulate[] = "Win.Accumulate";
static const char __pyx_k_Win_Unlock_all[] = "Win.Unlock_all";
static const char __pyx_k_Win_fromhandle[] = "Win.fromhandle";
static const char __pyx_k_and_sum_counts[] = " and sum(counts) ";
static const char __pyx_k_buffer_release[] = "buffer.release";
static const char __pyx_k_buffer_tobytes[] = "buffer.tobytes";
static const char __pyx_k_get_status_all[] = "get_status_all";
static const char __pyx_k_get_status_any[] = "get_status_any";
static const char __pyx_k_partition_high[] = "partition_high";
static const char __pyx_k_tuple_Any_None[] = "tuple[Any] | None";
static const char __pyx_k_tuple_int_bool[] = "tuple[int, bool]";
static const char __pyx_k_Add_error_class[] = "Add_error_class";
static const char __pyx_k_Allgatherv_init[] = "Allgatherv_init";
static const char __pyx_k_Allocate_shared[] = "Allocate_shared";
static const char __pyx_k_BufSpec_InPlace[] = "BufSpec | InPlace";
static const char __pyx_k_COMBINER_DARRAY[] = "COMBINER_DARRAY";
static const char __pyx_k_COMBINER_STRUCT[] = "COMBINER_STRUCT";
static const char __pyx_k_COMBINER_VECTOR[] = "COMBINER_VECTOR";
static const char __pyx_k_C_FLOAT_COMPLEX[] = "C_FLOAT_COMPLEX";
static const char __pyx_k_Call_errhandler[] = "Call_errhandler";
static const char __pyx_k_Comm_Ack_failed[] = "Comm.Ack_failed";
static const char __pyx_k_Comm_Allgatherv[] = "Comm.Allgatherv";
static const char __pyx_k_Comm_Bcast_init[] = "Comm.Bcast_init";
static const char __pyx_k_Comm_Bsend_init[] = "Comm.Bsend_init";
static const char __pyx_k_Comm_Disconnect[] = "Comm.Disconnect";
static const char __pyx_k_Comm_Get_failed[] = "Comm.Get_failed";
static const char __pyx_k_Comm_Get_parent[] = "Comm.Get_parent";
static const char __pyx_k_Comm_Iallgather[] = "Comm.Iallgather";
static const char __pyx_k_Comm_Iallreduce[] = "Comm.Iallreduce";
static const char __pyx_k_Comm_Ialltoallv[] = "Comm.Ialltoallv";
static const char __pyx_k_Comm_Ialltoallw[] = "Comm.Ialltoallw";
static const char __pyx_k_Comm_Is_revoked[] = "Comm.Is_revoked";
static const char __pyx_k_Comm_Precv_init[] = "Comm.Precv_init";
static const char __pyx_k_Comm_Psend_init[] = "Comm.Psend_init";
static const char __pyx_k_Comm_Rsend_init[] = "Comm.Rsend_init";
static const char __pyx_k_Comm_Split_type[] = "Comm.Split_type";
static const char __pyx_k_Comm_Ssend_init[] = "Comm.Ssend_init";
static const char __pyx_k_Comm_fromhandle[] = "Comm.fromhandle";
static const char __pyx_k_Create_f90_real[] = "Create_f90_real";
static const char __pyx_k_Create_hindexed[] = "Create_hindexed";
static const char __pyx_k_Create_subarray[] = "Create_subarray";
static const char __pyx_k_DISTRIBUTE_NONE[] = "DISTRIBUTE_NONE";
static const char __pyx_k_Datatype_Commit[] = "Datatype.Commit";
static const char __pyx_k_Datatype_Unpack[] = "Datatype.Unpack";
static const char __pyx_k_Datatype_decode[] = "Datatype.decode";
static const char __pyx_k_Datatype_tocode[] = "Datatype.tocode";
static const char __pyx_k_ERRHANDLER_NULL[] = "ERRHANDLER_NULL";
static const char __pyx_k_ERR_DUP_DATAREP[] = "ERR_DUP_DATAREP";
static const char __pyx_k_ERR_FILE_EXISTS[] = "ERR_FILE_EXISTS";
static const char __pyx_k_ERR_FILE_IN_USE[] = "ERR_FILE_IN_USE";
static const char __pyx_k_ERR_PROC_FAILED[] = "ERR_PROC_FAILED";
static const char __pyx_k_Errhandler_Free[] = "Errhandler.Free";
static const char __pyx_k_Errhandler_None[] = "Errhandler | None";
static const char __pyx_k_Errhandler_f2py[] = "Errhandler.f2py";
static const char __pyx_k_Errhandler_free[] = "Errhandler.free";
static const char __pyx_k_Errhandler_py2f[] = "Errhandler.py2f";
static const char __pyx_k_F_FLOAT_COMPLEX[] = "F_FLOAT_COMPLEX";
static const char __pyx_k_File_Iwrite_all[] = "File.Iwrite_all";
static const char __pyx_k_File_fromhandle[] = "File.fromhandle";
static const char __pyx_k_Flush_local_all[] = "Flush_local_all";
static const char __pyx_k_Get_byte_offset[] = "Get_byte_offset";
static const char __pyx_k_Get_error_class[] = "Get_error_class";
static const char __pyx_k_Get_remote_size[] = "Get_remote_size";
static const char __pyx_k_Get_status_some[] = "Get_status_some";
static const char __pyx_k_Get_true_extent[] = "Get_true_extent";
static const char __pyx_k_Get_type_extent[] = "Get_type_extent";
static const char __pyx_k_Get_value_index[] = "Get_value_index";
static const char __pyx_k_Info_Create_env[] = "Info.Create_env";
static const char __pyx_k_Info_Get_nthkey[] = "Info.Get_nthkey";
static const char __pyx_k_Info_fromhandle[] = "Info.fromhandle";
static const char __pyx_k_Intercomm_Merge[] = "Intercomm.Merge";
static const char __pyx_k_Intracomm_Iscan[] = "Intracomm.Iscan";
static const char __pyx_k_Intracomm_Spawn[] = "Intracomm.Spawn";
static const char __pyx_k_Ireduce_scatter[] = "Ireduce_scatter";
static const char __pyx_k_Iterable_Buffer[] = "Iterable[Buffer]";
static const char __pyx_k_LONG_DOUBLE_INT[] = "LONG_DOUBLE_INT";
static const char __pyx_k_MAX_OBJECT_NAME[] = "MAX_OBJECT_NAME";
static const char __pyx_k_MESSAGE_NO_PROC[] = "MESSAGE_NO_PROC";
static const char __pyx_k_MODE_SEQUENTIAL[] = "MODE_SEQUENTIAL";
static const char __pyx_k_Op_Reduce_local[] = "Op.Reduce_local";
static const char __pyx_k_Prequest_Pready[] = "Prequest.Pready";
static const char __pyx_k_Read_at_all_end[] = "Read_at_all_end";
static const char __pyx_k_Request_Testall[] = "Request.Testall";
static const char __pyx_k_Request_Testany[] = "Request.Testany";
static const char __pyx_k_Request_Waitall[] = "Request.Waitall";
static const char __pyx_k_Request_Waitany[] = "Request.Waitany";
static const char __pyx_k_Request_testall[] = "Request.testall";
static const char __pyx_k_Request_testany[] = "Request.testany";
static const char __pyx_k_Request_waitall[] = "Request.waitall";
static const char __pyx_k_Request_waitany[] = "Request.waitany";
static const char __pyx_k_Rget_accumulate[] = "Rget_accumulate";
static const char __pyx_k_Status___reduce[] = "Status.__reduce__";
static const char __pyx_k_THREAD_FUNNELED[] = "THREAD_FUNNELED";
static const char __pyx_k_THREAD_MULTIPLE[] = "THREAD_MULTIPLE";
static const char __pyx_k_TargetSpec_None[] = "TargetSpec | None";
static const char __pyx_k_Translate_ranks[] = "Translate_ranks";
static const char __pyx_k_Unpack_external[] = "Unpack_external";
static const char __pyx_k_WTIME_IS_GLOBAL[] = "WTIME_IS_GLOBAL";
static const char __pyx_k_Win_Delete_attr[] = "Win.Delete_attr";
static const char __pyx_k_Win_Flush_local[] = "Win.Flush_local";
static const char __pyx_k_Win_Free_keyval[] = "Win.Free_keyval";
static const char __pyx_k_Win_Raccumulate[] = "Win.Raccumulate";
static const char __pyx_k_Write_all_begin[] = "Write_all_begin";
static const char __pyx_k_buffer_allocate[] = "buffer.allocate";
static const char __pyx_k_buffer_callback[] = "buffer_callback";
static const char __pyx_k_cannot_map_code[] = "cannot map code ";
static const char __pyx_k_comm_lock_table[] = "_comm_lock_table";
static const char __pyx_k_commctx_inter_2[] = "_commctx_inter";
static const char __pyx_k_commctx_intra_2[] = "_commctx_intra";
static const char __pyx_k_datatype_create[] = "_datatype_create";
static const char __pyx_k_datatype_decode[] = "_datatype_decode";
static const char __pyx_k_get_status_some[] = "get_status_some";
static const char __pyx_k_keyval_registry[] = "_keyval_registry";
static const char __pyx_k_to_MPI_datatype[] = " to MPI datatype";
static const char __pyx_k_Add_error_string[] = "Add_error_string";
static const char __pyx_k_BUFFER_AUTOMATIC[] = "BUFFER_AUTOMATIC";
static const char __pyx_k_BufSpecB_InPlace[] = "BufSpecB | InPlace";
static const char __pyx_k_BufSpecV_InPlace[] = "BufSpecV | InPlace";
static const char __pyx_k_BufSpecW_InPlace[] = "BufSpecW | InPlace";
static const char __pyx_k_BufSpec_BufSpecB[] = "BufSpec | BufSpecB";
static const char __pyx_k_COMBINER_HVECTOR[] = "COMBINER_HVECTOR";
static const char __pyx_k_COMBINER_INDEXED[] = "COMBINER_INDEXED";
static const char __pyx_k_COMBINER_RESIZED[] = "COMBINER_RESIZED";
static const char __pyx_k_COMM_TYPE_SHARED[] = "COMM_TYPE_SHARED";
static const char __pyx_k_C_DOUBLE_COMPLEX[] = "C_DOUBLE_COMPLEX";
static const char __pyx_k_Cartcomm_Get_dim[] = "Cartcomm.Get_dim";
static const char __pyx_k_Comm_Delete_attr[] = "Comm.Delete_attr";
static const char __pyx_k_Comm_Free_keyval[] = "Comm.Free_keyval";
static const char __pyx_k_Comm_Gather_init[] = "Comm.Gather_init";
static const char __pyx_k_Comm_Iallgatherv[] = "Comm.Iallgatherv";
static const char __pyx_k_Comm_Reduce_init[] = "Comm.Reduce_init";
static const char __pyx_k_Compare_and_swap[] = "Compare_and_swap";
static const char __pyx_k_Create_intercomm[] = "Create_intercomm";
static const char __pyx_k_DISTRIBUTE_BLOCK[] = "DISTRIBUTE_BLOCK";
static const char __pyx_k_DOUBLE_PRECISION[] = "DOUBLE_PRECISION";
static const char __pyx_k_ERRORS_ARE_FATAL[] = "ERRORS_ARE_FATAL";
static const char __pyx_k_ERR_NO_SUCH_FILE[] = "ERR_NO_SUCH_FILE";
static const char __pyx_k_ERR_PROC_ABORTED[] = "ERR_PROC_ABORTED";
static const char __pyx_k_ERR_RMA_CONFLICT[] = "ERR_RMA_CONFLICT";
static const char __pyx_k_F_DOUBLE_COMPLEX[] = "F_DOUBLE_COMPLEX";
static const char __pyx_k_File_Preallocate[] = "File.Preallocate";
static const char __pyx_k_File_Read_at_all[] = "File.Read_at_all";
static const char __pyx_k_File_Read_shared[] = "File.Read_shared";
static const char __pyx_k_File_Seek_shared[] = "File.Seek_shared";
static const char __pyx_k_Get_error_string[] = "Get_error_string";
static const char __pyx_k_Get_remote_group[] = "Get_remote_group";
static const char __pyx_k_Group_Difference[] = "Group.Difference";
static const char __pyx_k_Group_Range_excl[] = "Group.Range_excl";
static const char __pyx_k_Group_Range_incl[] = "Group.Range_incl";
static const char __pyx_k_Group_fromhandle[] = "Group.fromhandle";
static const char __pyx_k_HIGHEST_PROTOCOL[] = "HIGHEST_PROTOCOL";
static const char __pyx_k_Intracomm_Accept[] = "Intracomm.Accept";
static const char __pyx_k_Intracomm_Exscan[] = "Intracomm.Exscan";
static const char __pyx_k_Intracomm_exscan[] = "Intracomm.exscan";
static const char __pyx_k_MAX_ERROR_STRING[] = "MAX_ERROR_STRING";
static const char __pyx_k_MODE_UNIQUE_OPEN[] = "MODE_UNIQUE_OPEN";
static const char __pyx_k_Message___reduce[] = "Message.__reduce__";
static const char __pyx_k_Pickle_dumps_oob[] = "Pickle.dumps_oob";
static const char __pyx_k_Pickle_loads_oob[] = "Pickle.loads_oob";
static const char __pyx_k_Read_ordered_end[] = "Read_ordered_end";
static const char __pyx_k_Register_datarep[] = "Register_datarep";
static const char __pyx_k_Request_Testsome[] = "Request.Testsome";
static const char __pyx_k_Request_Waitsome[] = "Request.Waitsome";
static const char __pyx_k_Request___reduce[] = "Request.__reduce__";
static const char __pyx_k_Request_testsome[] = "Request.testsome";
static const char __pyx_k_Request_waitsome[] = "Request.waitsome";
static const char __pyx_k_SIGNED_LONG_LONG[] = "SIGNED_LONG_LONG";
static const char __pyx_k_Sendrecv_replace[] = "Sendrecv_replace";
static const char __pyx_k_Sequence_Request[] = "Sequence[Request]";
static const char __pyx_k_Session_Finalize[] = "Session.Finalize";
static const char __pyx_k_Session_Get_info[] = "Session.Get_info";
static const char __pyx_k_Session___reduce[] = "Session.__reduce__";
static const char __pyx_k_Status_Get_count[] = "Status.Get_count";
static const char __pyx_k_Status_Get_error[] = "Status.Get_error";
static const char __pyx_k_Status_Set_error[] = "Status.Set_error";
static const char __pyx_k_Win_Fetch_and_op[] = "Win.Fetch_and_op";
static const char __pyx_k_Win_Shared_query[] = "Win.Shared_query";
static const char __pyx_k_Write_at_all_end[] = "Write_at_all_end";
static const char __pyx_k_cannot_serialize[] = "cannot serialize '";
static const char __pyx_k_int_Sequence_int[] = "int | Sequence[int]";
static const char __pyx_k_list_Status_None[] = "list[Status] | None";
static const char __pyx_k_set_abort_status[] = "_set_abort_status";
static const char __pyx_k_tuple_buffer_int[] = "tuple[buffer, int]";
static const char __pyx_k_unorderable_type[] = "unorderable type '";
static const char __pyx_k_COMBINER_F90_REAL[] = "COMBINER_F90_REAL";
static const char __pyx_k_COMBINER_HINDEXED[] = "COMBINER_HINDEXED";
static const char __pyx_k_COMBINER_SUBARRAY[] = "COMBINER_SUBARRAY";
static const char __pyx_k_CXX_FLOAT_COMPLEX[] = "CXX_FLOAT_COMPLEX";
static const char __pyx_k_Cartcomm_Get_topo[] = "Cartcomm.Get_topo";
static const char __pyx_k_Comm_Barrier_init[] = "Comm.Barrier_init";
static const char __pyx_k_Comm_Flush_buffer[] = "Comm.Flush_buffer";
static const char __pyx_k_Comm_Gatherv_init[] = "Comm.Gatherv_init";
static const char __pyx_k_Comm_Get_topology[] = "Comm.Get_topology";
static const char __pyx_k_Comm_Scatter_init[] = "Comm.Scatter_init";
static const char __pyx_k_Create_contiguous[] = "Create_contiguous";
static const char __pyx_k_Create_dist_graph[] = "Create_dist_graph";
static const char __pyx_k_Create_errhandler[] = "Create_errhandler";
static const char __pyx_k_Create_from_group[] = "Create_from_group";
static const char __pyx_k_DISTRIBUTE_CYCLIC[] = "DISTRIBUTE_CYCLIC";
static const char __pyx_k_Datatype_Get_attr[] = "Datatype.Get_attr";
static const char __pyx_k_Datatype_Get_name[] = "Datatype.Get_name";
static const char __pyx_k_Datatype_Get_size[] = "Datatype.Get_size";
static const char __pyx_k_Datatype_Set_attr[] = "Datatype.Set_attr";
static const char __pyx_k_Datatype_Set_name[] = "Datatype.Set_name";
static const char __pyx_k_Datatype___reduce[] = "Datatype.__reduce__";
static const char __pyx_k_Datatype_fromcode[] = "Datatype.fromcode";
static const char __pyx_k_File_Get_position[] = "File.Get_position";
static const char __pyx_k_File_Iread_at_all[] = "File.Iread_at_all";
static const char __pyx_k_File_Iread_shared[] = "File.Iread_shared";
static const char __pyx_k_File_Read_all_end[] = "File.Read_all_end";
static const char __pyx_k_File_Read_ordered[] = "File.Read_ordered";
static const char __pyx_k_File_Write_at_all[] = "File.Write_at_all";
static const char __pyx_k_File_Write_shared[] = "File.Write_shared";
static const char __pyx_k_Grequest_Complete[] = "Grequest.Complete";
static const char __pyx_k_Grequest_complete[] = "Grequest.complete";
static const char __pyx_k_Intracomm_Connect[] = "Intracomm.Connect";
static const char __pyx_k_Intracomm_Iexscan[] = "Intracomm.Iexscan";
static const char __pyx_k_Isendrecv_replace[] = "Isendrecv_replace";
static const char __pyx_k_MAX_PSET_NAME_LEN[] = "MAX_PSET_NAME_LEN";
static const char __pyx_k_MAX_STRINGTAG_LEN[] = "MAX_STRINGTAG_LEN";
static const char __pyx_k_Neighbor_alltoall[] = "Neighbor_alltoall";
static const char __pyx_k_Op_Is_commutative[] = "Op.Is_commutative";
static const char __pyx_k_Prequest_Parrived[] = "Prequest.Parrived";
static const char __pyx_k_Prequest_Startall[] = "Prequest.Startall";
static const char __pyx_k_Read_at_all_begin[] = "Read_at_all_begin";
static const char __pyx_k_Remove_error_code[] = "Remove_error_code";
static const char __pyx_k_Sequence_Any_None[] = "Sequence[Any] | None";
static const char __pyx_k_Sequence_Datatype[] = "Sequence[Datatype]";
static const char __pyx_k_Sequence_int_None[] = "Sequence[int] | None";
static const char __pyx_k_Sequence_str_None[] = "Sequence[str] | None";
static const char __pyx_k_Status_Get_source[] = "Status.Get_source";
static const char __pyx_k_Status_Set_source[] = "Status.Set_source";
static const char __pyx_k_Status___getstate[] = "Status.__getstate__";
static const char __pyx_k_Status___setstate[] = "Status.__setstate__";
static const char __pyx_k_THREAD_SERIALIZED[] = "THREAD_SERIALIZED";
static const char __pyx_k_TYPECLASS_COMPLEX[] = "TYPECLASS_COMPLEX";
static const char __pyx_k_TYPECLASS_INTEGER[] = "TYPECLASS_INTEGER";
static const char __pyx_k_WIN_CREATE_FLAVOR[] = "WIN_CREATE_FLAVOR";
static const char __pyx_k_WIN_FLAVOR_CREATE[] = "WIN_FLAVOR_CREATE";
static const char __pyx_k_WIN_FLAVOR_SHARED[] = "WIN_FLAVOR_SHARED";
static const char __pyx_k_Win_Create_keyval[] = "Win.Create_keyval";
static const char __pyx_k_Write_ordered_end[] = "Write_ordered_end";
static const char __pyx_k_and_receive_count[] = " and receive count ";
static const char __pyx_k_buffer_frombuffer[] = "buffer.frombuffer";
static const char __pyx_k_buffer_toreadonly[] = "buffer.toreadonly";
static const char __pyx_k_dict_str_Any_None[] = "dict[str, Any] | None";
static const char __pyx_k_neighbor_alltoall[] = "neighbor_alltoall";
static const char __pyx_k_CXX_DOUBLE_COMPLEX[] = "CXX_DOUBLE_COMPLEX";
static const char __pyx_k_Callable_None_None[] = "Callable[..., None] | None";
static const char __pyx_k_Comm_Alltoall_init[] = "Comm.Alltoall_init";
static const char __pyx_k_Comm_Attach_buffer[] = "Comm.Attach_buffer";
static const char __pyx_k_Comm_Create_keyval[] = "Comm.Create_keyval";
static const char __pyx_k_Comm_Detach_buffer[] = "Comm.Detach_buffer";
static const char __pyx_k_Comm_Dup_with_info[] = "Comm.Dup_with_info";
static const char __pyx_k_Comm_Iflush_buffer[] = "Comm.Iflush_buffer";
static const char __pyx_k_Comm_Scatterv_init[] = "Comm.Scatterv_init";
static const char __pyx_k_Create_f90_complex[] = "Create_f90_complex";
static const char __pyx_k_Create_f90_integer[] = "Create_f90_integer";
static const char __pyx_k_Create_from_groups[] = "Create_from_groups";
static const char __pyx_k_Datatype_Pack_size[] = "Datatype.Pack_size";
static const char __pyx_k_File_Get_atomicity[] = "File.Get_atomicity";
static const char __pyx_k_File_Iwrite_at_all[] = "File.Iwrite_at_all";
static const char __pyx_k_File_Iwrite_shared[] = "File.Iwrite_shared";
static const char __pyx_k_File_Set_atomicity[] = "File.Set_atomicity";
static const char __pyx_k_File_Write_all_end[] = "File.Write_all_end";
static const char __pyx_k_File_Write_ordered[] = "File.Write_ordered";
static const char __pyx_k_Get_dist_neighbors[] = "Get_dist_neighbors";
static const char __pyx_k_Get_processor_name[] = "Get_processor_name";
static const char __pyx_k_Graphcomm_Get_dims[] = "Graphcomm.Get_dims";
static const char __pyx_k_Graphcomm_Get_topo[] = "Graphcomm.Get_topo";
static const char __pyx_k_Group_Intersection[] = "Group.Intersection";
static const char __pyx_k_Ineighbor_alltoall[] = "Ineighbor_alltoall";
static const char __pyx_k_Intracomm_Cart_map[] = "Intracomm.Cart_map";
static const char __pyx_k_MAX_DATAREP_STRING[] = "MAX_DATAREP_STRING";
static const char __pyx_k_MAX_PROCESSOR_NAME[] = "MAX_PROCESSOR_NAME";
static const char __pyx_k_Message_fromhandle[] = "Message.fromhandle";
static const char __pyx_k_Neighbor_allgather[] = "Neighbor_allgather";
static const char __pyx_k_Neighbor_alltoallv[] = "Neighbor_alltoallv";
static const char __pyx_k_Neighbor_alltoallw[] = "Neighbor_alltoallw";
static const char __pyx_k_Pack_external_size[] = "Pack_external_size";
static const char __pyx_k_Read_ordered_begin[] = "Read_ordered_begin";
static const char __pyx_k_Remove_error_class[] = "Remove_error_class";
static const char __pyx_k_Request_Get_status[] = "Request.Get_status";
static const char __pyx_k_Request_fromhandle[] = "Request.fromhandle";
static const char __pyx_k_Request_get_status[] = "Request.get_status";
static const char __pyx_k_Sequence_Info_Info[] = "Sequence[Info] | Info";
static const char __pyx_k_Sequence_bool_None[] = "Sequence[bool] | None";
static const char __pyx_k_Session_fromhandle[] = "Session.fromhandle";
static const char __pyx_k_UNSIGNED_LONG_LONG[] = "UNSIGNED_LONG_LONG";
static const char __pyx_k_WIN_FLAVOR_DYNAMIC[] = "WIN_FLAVOR_DYNAMIC";
static const char __pyx_k_Win_Create_dynamic[] = "Win.Create_dynamic";
static const char __pyx_k_Win_Get_accumulate[] = "Win.Get_accumulate";
static const char __pyx_k_Win_Get_errhandler[] = "Win.Get_errhandler";
static const char __pyx_k_Win_Set_errhandler[] = "Win.Set_errhandler";
static const char __pyx_k_Write_at_all_begin[] = "Write_at_all_begin";
static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_buffer_fromaddress[] = "buffer.fromaddress";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_dict_Hashable_Lock[] = "dict[Hashable, Lock]";
static const char __pyx_k_index_out_of_range[] = "index out of range";
static const char __pyx_k_list_int_tuple_int[] = "list[int] | tuple[int, ...]";
static const char __pyx_k_list_list_int_None[] = "list[list[int]] | None";
static const char __pyx_k_list_tuple_str_str[] = "list[tuple[str, str]]";
static const char __pyx_k_neighbor_allgather[] = "neighbor_allgather";
static const char __pyx_k_tuple_Comm_Request[] = "tuple[Comm, Request]";
static const char __pyx_k_tuple_Self_Request[] = "tuple[Self, Request]";
static const char __pyx_k_BottomType___reduce[] = "BottomType.__reduce__";
static const char __pyx_k_BufferAutomaticType[] = "BufferAutomaticType";
static const char __pyx_k_COMBINER_CONTIGUOUS[] = "COMBINER_CONTIGUOUS";
static const char __pyx_k_COMM_TYPE_HW_GUIDED[] = "COMM_TYPE_HW_GUIDED";
static const char __pyx_k_Cartcomm_Get_coords[] = "Cartcomm.Get_coords";
static const char __pyx_k_Comm_Allgather_init[] = "Comm.Allgather_init";
static const char __pyx_k_Comm_Allreduce_init[] = "Comm.Allreduce_init";
static const char __pyx_k_Comm_Alltoallv_init[] = "Comm.Alltoallv_init";
static const char __pyx_k_Comm_Alltoallw_init[] = "Comm.Alltoallw_init";
static const char __pyx_k_Comm_Get_errhandler[] = "Comm.Get_errhandler";
static const char __pyx_k_Comm_Idup_with_info[] = "Comm.Idup_with_info";
static const char __pyx_k_Comm_Reduce_scatter[] = "Comm.Reduce_scatter";
static const char __pyx_k_Comm_Set_errhandler[] = "Comm.Set_errhandler";
static const char __pyx_k_Datatype_Get_extent[] = "Datatype.Get_extent";
static const char __pyx_k_Datatype_Match_size[] = "Datatype.Match_size";
static const char __pyx_k_Datatype_fromhandle[] = "Datatype.fromhandle";
static const char __pyx_k_ERR_VALUE_TOO_LARGE[] = "ERR_VALUE_TOO_LARGE";
static const char __pyx_k_Errhandler___reduce[] = "Errhandler.__reduce__";
static const char __pyx_k_File_Get_errhandler[] = "File.Get_errhandler";
static const char __pyx_k_File_Read_all_begin[] = "File.Read_all_begin";
static const char __pyx_k_File_Set_errhandler[] = "File.Set_errhandler";
static const char __pyx_k_Get_library_version[] = "Get_library_version";
static const char __pyx_k_Get_neighbors_count[] = "Get_neighbors_count";
static const char __pyx_k_Get_position_shared[] = "Get_position_shared";
static const char __pyx_k_Ineighbor_allgather[] = "Ineighbor_allgather";
static const char __pyx_k_Ineighbor_alltoallv[] = "Ineighbor_alltoallv";
static const char __pyx_k_Ineighbor_alltoallw[] = "Ineighbor_alltoallw";
static const char __pyx_k_Intracomm_Graph_map[] = "Intracomm.Graph_map";
static const char __pyx_k_Intracomm_Scan_init[] = "Intracomm.Scan_init";
static const char __pyx_k_Neighbor_allgatherv[] = "Neighbor_allgatherv";
static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
static const char __pyx_k_Reduce_scatter_init[] = "Reduce_scatter_init";
static const char __pyx_k_Remove_error_string[] = "Remove_error_string";
static const char __pyx_k_Status_Get_elements[] = "Status.Get_elements";
static const char __pyx_k_Status_Is_cancelled[] = "Status.Is_cancelled";
static const char __pyx_k_Status_Set_elements[] = "Status.Set_elements";
static const char __pyx_k_WIN_FLAVOR_ALLOCATE[] = "WIN_FLAVOR_ALLOCATE";
static const char __pyx_k_Win_Allocate_shared[] = "Win.Allocate_shared";
static const char __pyx_k_Win_Call_errhandler[] = "Win.Call_errhandler";
static const char __pyx_k_Win_Flush_local_all[] = "Win.Flush_local_all";
static const char __pyx_k_Win_Rget_accumulate[] = "Win.Rget_accumulate";
static const char __pyx_k_Write_ordered_begin[] = "Write_ordered_begin";
static const char __pyx_k_array_of_partitions[] = "array_of_partitions";
static const char __pyx_k_buffer_is_read_only[] = "buffer is read-only";
static const char __pyx_k_tuple_Intracomm_int[] = "tuple[Intracomm, int]";
static const char __pyx_k_tuple_bool_Any_None[] = "tuple[bool, Any | None]";
static const char __pyx_k_COMBINER_F90_COMPLEX[] = "COMBINER_F90_COMPLEX";
static const char __pyx_k_COMBINER_F90_INTEGER[] = "COMBINER_F90_INTEGER";
static const char __pyx_k_COMBINER_VALUE_INDEX[] = "COMBINER_VALUE_INDEX";
static const char __pyx_k_Comm_Allgatherv_init[] = "Comm.Allgatherv_init";
static const char __pyx_k_Comm_Call_errhandler[] = "Comm.Call_errhandler";
static const char __pyx_k_Comm_Ireduce_scatter[] = "Comm.Ireduce_scatter";
static const char __pyx_k_Create_indexed_block[] = "Create_indexed_block";
static const char __pyx_k_DISPLACEMENT_CURRENT[] = "DISPLACEMENT_CURRENT";
static const char __pyx_k_DISTRIBUTE_DFLT_DARG[] = "DISTRIBUTE_DFLT_DARG";
static const char __pyx_k_Datatype_Delete_attr[] = "Datatype.Delete_attr";
static const char __pyx_k_Datatype_Free_keyval[] = "Datatype.Free_keyval";
static const char __pyx_k_File_Call_errhandler[] = "File.Call_errhandler";
static const char __pyx_k_File_Get_byte_offset[] = "File.Get_byte_offset";
static const char __pyx_k_File_Get_type_extent[] = "File.Get_type_extent";
static const char __pyx_k_File_Read_at_all_end[] = "File.Read_at_all_end";
static const char __pyx_k_File_Write_all_begin[] = "File.Write_all_begin";
static const char __pyx_k_Get_hw_resource_info[] = "Get_hw_resource_info";
static const char __pyx_k_InPlaceType___reduce[] = "InPlaceType.__reduce__";
static const char __pyx_k_Ineighbor_allgatherv[] = "Ineighbor_allgatherv";
static const char __pyx_k_MODE_DELETE_ON_CLOSE[] = "MODE_DELETE_ON_CLOSE";
static const char __pyx_k_Prequest_Pready_list[] = "Prequest.Pready_list";
static const char __pyx_k_Reduce_scatter_block[] = "Reduce_scatter_block";
static const char __pyx_k_Session_Create_group[] = "Session.Create_group";
static const char __pyx_k_Session_Flush_buffer[] = "Session.Flush_buffer";
static const char __pyx_k_Session_Get_nth_pset[] = "Session.Get_nth_pset";
static const char __pyx_k_Status_Set_cancelled[] = "Status.Set_cancelled";
static const char __pyx_k_Win_Compare_and_swap[] = "Win.Compare_and_swap";
static const char __pyx_k_cuda_array_interface[] = "__cuda_array_interface__";
static const char __pyx_k_dlpack_shape_is_NULL[] = "dlpack: shape is NULL";
static const char __pyx_k_message_displacement[] = "message: displacement ";
static const char __pyx_k_COMM_TYPE_HW_UNGUIDED[] = "COMM_TYPE_HW_UNGUIDED";
static const char __pyx_k_C_LONG_DOUBLE_COMPLEX[] = "C_LONG_DOUBLE_COMPLEX";
static const char __pyx_k_Callable_Datatype_int[] = "Callable[[Datatype], int]";
static const char __pyx_k_Callable_Win_int_None[] = "Callable[[Win, int], None]";
static const char __pyx_k_Comm_Sendrecv_replace[] = "Comm.Sendrecv_replace";
static const char __pyx_k_Create_hindexed_block[] = "Create_hindexed_block";
static const char __pyx_k_Datatype_Get_contents[] = "Datatype.Get_contents";
static const char __pyx_k_Datatype_Get_envelope[] = "Datatype.Get_envelope";
static const char __pyx_k_Errhandler_fromhandle[] = "Errhandler.fromhandle";
static const char __pyx_k_File_Read_ordered_end[] = "File.Read_ordered_end";
static const char __pyx_k_File_Write_at_all_end[] = "File.Write_at_all_end";
static const char __pyx_k_Group_Translate_ranks[] = "Group.Translate_ranks";
static const char __pyx_k_Intracomm_Create_cart[] = "Intracomm.Create_cart";
static const char __pyx_k_Intracomm_Exscan_init[] = "Intracomm.Exscan_init";
static const char __pyx_k_Ireduce_scatter_block[] = "Ireduce_scatter_block";
static const char __pyx_k_Prequest_Pready_range[] = "Prequest.Pready_range";
static const char __pyx_k_Session_Attach_buffer[] = "Session.Attach_buffer";
static const char __pyx_k_Session_Detach_buffer[] = "Session.Detach_buffer";
static const char __pyx_k_Session_Get_num_psets[] = "Session.Get_num_psets";
static const char __pyx_k_Session_Get_pset_info[] = "Session.Get_pset_info";
static const char __pyx_k_Session_Iflush_buffer[] = "Session.Iflush_buffer";
static const char __pyx_k_Win_Create_errhandler[] = "Win.Create_errhandler";
static const char __pyx_k_COMBINER_INDEXED_BLOCK[] = "COMBINER_INDEXED_BLOCK";
static const char __pyx_k_Callable_Comm_int_None[] = "Callable[[Comm, int], None]";
static const char __pyx_k_Callable_File_int_None[] = "Callable[[File, int], None]";
static const char __pyx_k_Cartcomm_Get_cart_rank[] = "Cartcomm.Get_cart_rank";
static const char __pyx_k_Comm_Create_errhandler[] = "Comm.Create_errhandler";
static const char __pyx_k_Comm_Isendrecv_replace[] = "Comm.Isendrecv_replace";
static const char __pyx_k_Datatype_Create_darray[] = "Datatype.Create_darray";
static const char __pyx_k_Datatype_Create_keyval[] = "Datatype.Create_keyval";
static const char __pyx_k_Datatype_Create_struct[] = "Datatype.Create_struct";
static const char __pyx_k_Datatype_Create_vector[] = "Datatype.Create_vector";
static const char __pyx_k_Datatype_Pack_external[] = "Datatype.Pack_external";
static const char __pyx_k_File_Create_errhandler[] = "File.Create_errhandler";
static const char __pyx_k_File_Read_at_all_begin[] = "File.Read_at_all_begin";
static const char __pyx_k_File_Write_ordered_end[] = "File.Write_ordered_end";
static const char __pyx_k_Intracomm_Create_graph[] = "Intracomm.Create_graph";
static const char __pyx_k_Intracomm_Create_group[] = "Intracomm.Create_group";
static const char __pyx_k_Neighbor_alltoall_init[] = "Neighbor_alltoall_init";
static const char __pyx_k_Object_is_not_writable[] = "Object is not writable";
static const char __pyx_k_Request_Get_status_all[] = "Request.Get_status_all";
static const char __pyx_k_Request_Get_status_any[] = "Request.Get_status_any";
static const char __pyx_k_Request_get_status_all[] = "Request.get_status_all";
static const char __pyx_k_Request_get_status_any[] = "Request.get_status_any";
static const char __pyx_k_Session_Get_errhandler[] = "Session.Get_errhandler";
static const char __pyx_k_Session_Set_errhandler[] = "Session.Set_errhandler";
static const char __pyx_k_cannot_create_instance[] = "cannot create instance";
static const char __pyx_k_dlpack_missing_support[] = "dlpack: missing support";
static const char __pyx_k_message_negative_count[] = "message: negative count ";
static const char __pyx_k_mismatch_in_send_count[] = "mismatch in send count ";
static const char __pyx_k_unknown_combiner_value[] = "unknown combiner value ";
static const char __pyx_k_COMBINER_HINDEXED_BLOCK[] = "COMBINER_HINDEXED_BLOCK";
static const char __pyx_k_CXX_LONG_DOUBLE_COMPLEX[] = "CXX_LONG_DOUBLE_COMPLEX";
static const char __pyx_k_Datatype_Create_hvector[] = "Datatype.Create_hvector";
static const char __pyx_k_Datatype_Create_indexed[] = "Datatype.Create_indexed";
static const char __pyx_k_Datatype_Create_resized[] = "Datatype.Create_resized";
static const char __pyx_k_ERR_PROC_FAILED_PENDING[] = "ERR_PROC_FAILED_PENDING";
static const char __pyx_k_ERR_UNSUPPORTED_DATAREP[] = "ERR_UNSUPPORTED_DATAREP";
static const char __pyx_k_File_Read_ordered_begin[] = "File.Read_ordered_begin";
static const char __pyx_k_File_Write_at_all_begin[] = "File.Write_at_all_begin";
static const char __pyx_k_Graphcomm_Get_neighbors[] = "Graphcomm.Get_neighbors";
static const char __pyx_k_Neighbor_allgather_init[] = "Neighbor_allgather_init";
static const char __pyx_k_Neighbor_alltoallv_init[] = "Neighbor_alltoallv_init";
static const char __pyx_k_Neighbor_alltoallw_init[] = "Neighbor_alltoallw_init";
static const char __pyx_k_Op_Callable_Any_Any_Any[] = "Op | Callable[[Any, Any], Any]";
static const char __pyx_k_Request_Get_status_some[] = "Request.Get_status_some";
static const char __pyx_k_Request_get_status_some[] = "Request.get_status_some";
static const char __pyx_k_Session_Call_errhandler[] = "Session.Call_errhandler";
static const char __pyx_k_tuple_bytes_list_buffer[] = "tuple[bytes, list[buffer]]";
static const char __pyx_k_tuple_int_bool_Any_None[] = "tuple[int, bool, Any | None]";
static const char __pyx_k_tuple_list_int_list_int[] = "tuple[list[int], list[int]]";
static const char __pyx_k_Comm_Reduce_scatter_init[] = "Comm.Reduce_scatter_init";
static const char __pyx_k_Create_from_session_pset[] = "Create_from_session_pset";
static const char __pyx_k_Datatype_Create_f90_real[] = "Datatype.Create_f90_real";
static const char __pyx_k_Datatype_Create_hindexed[] = "Datatype.Create_hindexed";
static const char __pyx_k_Datatype_Create_subarray[] = "Datatype.Create_subarray";
static const char __pyx_k_Datatype_Get_true_extent[] = "Datatype.Get_true_extent";
static const char __pyx_k_Datatype_Get_value_index[] = "Datatype.Get_value_index";
static const char __pyx_k_Datatype_Unpack_external[] = "Datatype.Unpack_external";
static const char __pyx_k_Exception_Get_error_code[] = "Exception.Get_error_code";
static const char __pyx_k_File_Get_position_shared[] = "File.Get_position_shared";
static const char __pyx_k_File_Write_ordered_begin[] = "File.Write_ordered_begin";
static const char __pyx_k_Get_dist_neighbors_count[] = "Get_dist_neighbors_count";
static const char __pyx_k_Intracomm_Spawn_multiple[] = "Intracomm.Spawn_multiple";
static const char __pyx_k_Neighbor_allgatherv_init[] = "Neighbor_allgatherv_init";
static const char __pyx_k_tuple_bool_list_Any_None[] = "tuple[bool, list[Any] | None]";
static const char __pyx_k_COMM_TYPE_RESOURCE_GUIDED[] = "COMM_TYPE_RESOURCE_GUIDED";
static const char __pyx_k_Callable_Session_int_None[] = "Callable[[Session, int], None]";
static const char __pyx_k_Comm_Reduce_scatter_block[] = "Comm.Reduce_scatter_block";
static const char __pyx_k_ERR_UNSUPPORTED_OPERATION[] = "ERR_UNSUPPORTED_OPERATION";
static const char __pyx_k_Exception_Get_error_class[] = "Exception.Get_error_class";
static const char __pyx_k_Intercomm_Get_remote_size[] = "Intercomm.Get_remote_size";
static const char __pyx_k_Message_Passing_Interface[] = "Message Passing Interface.";
static const char __pyx_k_PathLike_AnyStr_str_bytes[] = "PathLike[AnyStr] | str | bytes";
static const char __pyx_k_Reduce_scatter_block_init[] = "Reduce_scatter_block_init";
static const char __pyx_k_Session_Create_errhandler[] = "Session.Create_errhandler";
static const char __pyx_k_dlpack_unexpected_version[] = "dlpack: unexpected version";
static const char __pyx_k_expecting_an_MPI_instance[] = "expecting an MPI instance";
static const char __pyx_k_mismatch_in_receive_count[] = "mismatch in receive count ";
static const char __pyx_k_src_mpi4py_MPI_src_Op_pyx[] = "src/mpi4py/MPI.src/Op.pyx";
static const char __pyx_k_tuple_int_int_int_int_int[] = "tuple[int, int, int, int, int]";
static const char __pyx_k_Comm_Ireduce_scatter_block[] = "Comm.Ireduce_scatter_block";
static const char __pyx_k_Create_dist_graph_adjacent[] = "Create_dist_graph_adjacent";
static const char __pyx_k_Datatype_Create_contiguous[] = "Datatype.Create_contiguous";
static const char __pyx_k_Exception_Get_error_string[] = "Exception.Get_error_string";
static const char __pyx_k_Intercomm_Get_remote_group[] = "Intercomm.Get_remote_group";
static const char __pyx_k_Intracomm_Create_intercomm[] = "Intracomm.Create_intercomm";
static const char __pyx_k_MAX_LIBRARY_VERSION_STRING[] = "MAX_LIBRARY_VERSION_STRING";
static const char __pyx_k_MPI_Init_failed_error_code[] = "MPI_Init() failed [error code: ";
static const char __pyx_k_Sequence_Sequence_str_None[] = "Sequence[Sequence[str]] | None";
static const char __pyx_k_Sequence_tuple_int_int_int[] = "Sequence[tuple[int, int, int]]";
static const char __pyx_k_Topocomm_Neighbor_alltoall[] = "Topocomm.Neighbor_alltoall";
static const char __pyx_k_Topocomm_neighbor_alltoall[] = "Topocomm.neighbor_alltoall";
static const char __pyx_k_expecting_non_NULL_address[] = "expecting non-NULL address";
static const char __pyx_k_src_mpi4py_MPI_src_MPI_pyx[] = "src/mpi4py/MPI.src/MPI.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_Win_pyx[] = "src/mpi4py/MPI.src/Win.pyx";
static const char __pyx_k_with_non_native_byte_order[] = " with non-native byte order";
static const char __pyx_k_Datatype_Create_f90_complex[] = "Datatype.Create_f90_complex";
static const char __pyx_k_Datatype_Create_f90_integer[] = "Datatype.Create_f90_integer";
static const char __pyx_k_Datatype_Pack_external_size[] = "Datatype.Pack_external_size";
static const char __pyx_k_Intracomm_Create_dist_graph[] = "Intracomm.Create_dist_graph";
static const char __pyx_k_Intracomm_Create_from_group[] = "Intracomm.Create_from_group";
static const char __pyx_k_Topocomm_Ineighbor_alltoall[] = "Topocomm.Ineighbor_alltoall";
static const char __pyx_k_Topocomm_Neighbor_allgather[] = "Topocomm.Neighbor_allgather";
static const char __pyx_k_Topocomm_Neighbor_alltoallv[] = "Topocomm.Neighbor_alltoallv";
static const char __pyx_k_Topocomm_Neighbor_alltoallw[] = "Topocomm.Neighbor_alltoallw";
static const char __pyx_k_Topocomm_neighbor_allgather[] = "Topocomm.neighbor_allgather";
static const char __pyx_k_expecting_non_negative_size[] = "expecting non-negative size";
static const char __pyx_k_src_mpi4py_MPI_src_Comm_pyx[] = "src/mpi4py/MPI.src/Comm.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_File_pyx[] = "src/mpi4py/MPI.src/File.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_Info_pyx[] = "src/mpi4py/MPI.src/Info.pyx";
static const char __pyx_k_tuple_str_tuple_int_int_int[] = "tuple[str, tuple[int, int, int]]";
static const char __pyx_k_BufferAutomaticType___reduce[] = "BufferAutomaticType.__reduce__";
static const char __pyx_k_Intercomm_Create_from_groups[] = "Intercomm.Create_from_groups";
static const char __pyx_k_Topocomm_Ineighbor_allgather[] = "Topocomm.Ineighbor_allgather";
static const char __pyx_k_Topocomm_Ineighbor_alltoallv[] = "Topocomm.Ineighbor_alltoallv";
static const char __pyx_k_Topocomm_Ineighbor_alltoallw[] = "Topocomm.Ineighbor_alltoallw";
static const char __pyx_k_Topocomm_Neighbor_allgatherv[] = "Topocomm.Neighbor_allgatherv";
static const char __pyx_k_buffer_is_not_CPU_accessible[] = "buffer is not CPU-accessible";
static const char __pyx_k_expecting_buffer_with_format[] = "expecting buffer with format ";
static const char __pyx_k_missing_CUDA_array_interface[] = "missing CUDA array interface";
static const char __pyx_k_src_mpi4py_MPI_src_Group_pyx[] = "src/mpi4py/MPI.src/Group.pyx";
static const char __pyx_k_with_unrecognized_byte_order[] = " with unrecognized byte order";
static const char __pyx_k_Callable_Win_int_Any_Any_None[] = "Callable[[Win, int, Any], Any] | None";
static const char __pyx_k_Datatype_Create_indexed_block[] = "Datatype.Create_indexed_block";
static const char __pyx_k_Graphcomm_Get_neighbors_count[] = "Graphcomm.Get_neighbors_count";
static const char __pyx_k_Topocomm_Ineighbor_allgatherv[] = "Topocomm.Ineighbor_allgatherv";
static const char __pyx_k_cuda_array_interface___buffer[] = "__cuda_array_interface__: buffer with negative size (shape:";
static const char __pyx_k_cuda_array_interface___cannot[] = "__cuda_array_interface__: cannot handle masked arrays";
static const char __pyx_k_dlpack_invalid_capsule_object[] = "dlpack: invalid capsule object";
static const char __pyx_k_dlpack_shape_item_is_negative[] = "dlpack: shape item is negative";
static const char __pyx_k_message_negative_displacement[] = "message: negative displacement ";
static const char __pyx_k_slice_with_step_not_supported[] = "slice with step not supported";
static const char __pyx_k_src_mpi4py_MPI_src_Status_pyx[] = "src/mpi4py/MPI.src/Status.pyx";
static const char __pyx_k_Callable_Comm_int_Any_Any_None[] = "Callable[[Comm, int, Any], Any] | None";
static const char __pyx_k_Callable_Win_int_Any_None_None[] = "Callable[[Win, int, Any], None] | None";
static const char __pyx_k_Comm_Reduce_scatter_block_init[] = "Comm.Reduce_scatter_block_init";
static const char __pyx_k_Datatype_Create_hindexed_block[] = "Datatype.Create_hindexed_block";
static const char __pyx_k_Group_Create_from_session_pset[] = "Group.Create_from_session_pset";
static const char __pyx_k_cuda_array_interface___typestr[] = "__cuda_array_interface__: typestr ";
static const char __pyx_k_expecting_an_intercommunicator[] = "expecting an intercommunicator";
static const char __pyx_k_expecting_an_intracommunicator[] = "expecting an intracommunicator";
static const char __pyx_k_index_must_be_integer_or_slice[] = "index must be integer or slice";
static const char __pyx_k_message_BOTTOM_requires_counts[] = "message: BOTTOM requires counts";
static const char __pyx_k_message_BOTTOM_requires_displs[] = "message: BOTTOM requires displs";
static const char __pyx_k_message_expecting_2_to_4_items[] = "message: expecting 2 to 4 items";
static const char __pyx_k_src_mpi4py_MPI_src_Message_pyx[] = "src/mpi4py/MPI.src/Message.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_Request_pyx[] = "src/mpi4py/MPI.src/Request.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_Session_pyx[] = "src/mpi4py/MPI.src/Session.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_typedec_pxi[] = "src/mpi4py/MPI.src/typedec.pxi";
static const char __pyx_k_src_mpi4py_MPI_src_typestr_pxi[] = "src/mpi4py/MPI.src/typestr.pxi";
static const char __pyx_k_Callable_Buffer_Buffer_Datatype[] = "Callable[[Buffer, Buffer, Datatype], None]";
static const char __pyx_k_Callable_Comm_int_Any_None_None[] = "Callable[[Comm, int, Any], None] | None";
static const char __pyx_k_Topocomm_Neighbor_alltoall_init[] = "Topocomm.Neighbor_alltoall_init";
static const char __pyx_k_cannot_map_to_character_code_or[] = "cannot map to character code or type string";
static const char __pyx_k_cuda_array_interface___buffer_2[] = "__cuda_array_interface__: buffer is not contiguous (shape:";
static const char __pyx_k_dlpack_buffer_is_not_contiguous[] = "dlpack: buffer is not contiguous";
static const char __pyx_k_dlpack_strides_item_is_negative[] = "dlpack: strides item is negative";
static const char __pyx_k_expecting_a_sequence_of_strings[] = "expecting a sequence of strings";
static const char __pyx_k_is_not_a_multiple_of_datatype_e[] = " is not a multiple of datatype extent ";
static const char __pyx_k_is_not_a_multiple_of_required_n[] = " is not a multiple of required number of blocks ";
static const char __pyx_k_length_size_larger_than_INT_MAX[] = "length {size} larger than {INT_MAX}";
static const char __pyx_k_memory_allocation_with_negative[] = "memory allocation with negative size";
static const char __pyx_k_out_of_bounds_number_of_datatyp[] = " out of bounds, number of datatype entries ";
static const char __pyx_k_src_mpi4py_MPI_src_Datatype_pyx[] = "src/mpi4py/MPI.src/Datatype.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_asbuffer_pxi[] = "src/mpi4py/MPI.src/asbuffer.pxi";
static const char __pyx_k_src_mpi4py_MPI_src_atimport_pxi[] = "src/mpi4py/MPI.src/atimport.pxi";
static const char __pyx_k_src_mpi4py_MPI_src_bufaimpl_pxi[] = "src/mpi4py/MPI.src/bufaimpl.pxi";
static const char __pyx_k_src_mpi4py_MPI_src_commimpl_pxi[] = "src/mpi4py/MPI.src/commimpl.pxi";
static const char __pyx_k_tuple_Datatype_str_dict_str_Any[] = "tuple[Datatype, str, dict[str, Any]]";
static const char __pyx_k_tuple_int_Datatype_Datatype_str[] = "tuple[int, Datatype, Datatype, str]";
static const char __pyx_k_Callable_Buffer_Datatype_int_Buf[] = "Callable[[Buffer, Datatype, int, Buffer, int], None]";
static const char __pyx_k_Callable_Datatype_int_Any_Any_No[] = "Callable[[Datatype, int, Any], Any] | None";
static const char __pyx_k_Callable_Datatype_int_Any_None_N[] = "Callable[[Datatype, int, Any], None] | None";
static const char __pyx_k_Distgraphcomm_Get_dist_neighbors[] = "Distgraphcomm.Get_dist_neighbors_count";
static const char __pyx_k_Info_Mapping_str_str_Iterable_tu[] = "Info | Mapping[str, str] | Iterable[tuple[str, str]] | None";
static const char __pyx_k_Intracomm_Create_dist_graph_adja[] = "Intracomm.Create_dist_graph_adjacent";
static const char __pyx_k_MPI_Init_thread_failed_error_cod[] = "MPI_Init_thread() failed [error code: ";
static const char __pyx_k_Topocomm_Neighbor_allgather_init[] = "Topocomm.Neighbor_allgather_init";
static const char __pyx_k_Topocomm_Neighbor_allgatherv_ini[] = "Topocomm.Neighbor_allgatherv_init";
static const char __pyx_k_Topocomm_Neighbor_alltoallv_init[] = "Topocomm.Neighbor_alltoallv_init";
static const char __pyx_k_Topocomm_Neighbor_alltoallw_init[] = "Topocomm.Neighbor_alltoallw_init";
static const char __pyx_k_cannot_call_user_defined_operati[] = "cannot call user-defined operation";
static const char __pyx_k_cannot_create_too_many_user_defi[] = "cannot create too many user-defined error handlers";
static const char __pyx_k_cannot_pickle_user_defined_reduc[] = "cannot pickle user-defined reduction operation";
static const char __pyx_k_compare_expecting_a_single_eleme[] = "compare: expecting a single element, got ";
static const char __pyx_k_dlpack_number_of_dimensions_is_n[] = "dlpack: number of dimensions is negative";
static const char __pyx_k_empty_weights_but_nonzero_degree[] = "empty weights but nonzero degree";
static const char __pyx_k_expecting_a_Cartesian_communicat[] = "expecting a Cartesian communicator";
static const char __pyx_k_expecting_a_distributed_graph_co[] = "expecting a distributed graph communicator";
static const char __pyx_k_expecting_a_general_graph_commun[] = "expecting a general graph communicator";
static const char __pyx_k_expecting_a_topology_communicato[] = "expecting a topology communicator";
static const char __pyx_k_expecting_an_MPI_type_or_instanc[] = "expecting an MPI type or instance";
static const char __pyx_k_expecting_non_negative_buffer_le[] = "expecting non-negative buffer length";
static const char __pyx_k_flag_expecting_int_buffer_of_len[] = "flag: expecting int buffer of length one";
static const char __pyx_k_get_buffer_callback_locals_buffe[] = "get_buffer_callback.<locals>.buffer_callback";
static const char __pyx_k_length_count_does_not_fit_in_MPI[] = "length {count} does not fit in 'MPI_Aint'";
static const char __pyx_k_memory_allocation_size_too_large[] = "memory allocation size too large";
static const char __pyx_k_message_buffer_is_None_but_count[] = "message: buffer is None but count is ";
static const char __pyx_k_message_cannot_handle_displaceme[] = "message: cannot handle displacement, datatype is null";
static const char __pyx_k_message_cannot_infer_count_buffe[] = "message: cannot infer count, buffer length ";
static const char __pyx_k_message_cannot_infer_count_datat[] = "message: cannot infer count, datatype is null";
static const char __pyx_k_message_cannot_infer_count_numbe[] = "message: cannot infer count, number of entries ";
static const char __pyx_k_message_expecting_buffer_or_list[] = "message: expecting buffer or list/tuple";
static const char __pyx_k_mismatch_in_origin_and_compare_M[] = "mismatch in origin and compare MPI datatypes";
static const char __pyx_k_mismatch_in_origin_and_result_MP[] = "mismatch in origin and result MPI datatypes";
static const char __pyx_k_mismatch_in_send_and_receive_MPI[] = "mismatch in send and receive MPI datatypes";
static const char __pyx_k_origin_expecting_a_single_elemen[] = "origin: expecting a single element, got ";
static const char __pyx_k_result_expecting_a_single_elemen[] = "result: expecting a single element, got ";
static const char __pyx_k_slice_length_does_not_match_buff[] = "slice length does not match buffer";
static const char __pyx_k_src_mpi4py_MPI_src_Errhandler_py[] = "src/mpi4py/MPI.src/Errhandler.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_ErrorCode_pyx[] = "src/mpi4py/MPI.src/ErrorCode.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_Exception_pyx[] = "src/mpi4py/MPI.src/Exception.pyx";
static const char __pyx_k_src_mpi4py_MPI_src_msgbuffer_pxi[] = "src/mpi4py/MPI.src/msgbuffer.pxi";
static const char __pyx_k_src_mpi4py_MPI_src_msgpickle_pxi[] = "src/mpi4py/MPI.src/msgpickle.pxi";
static const char __pyx_k_target_expecting_3_items_at_most[] = "target: expecting 3 items at most";
static const char __pyx_k_target_expecting_integral_or_lis[] = "target: expecting integral or list/tuple";
static const char __pyx_k_tuple_Any_tuple_Any_dict_str_Any[] = "tuple[Any, tuple[Any, ...], dict[str, Any]]";
static const char __pyx_k_tuple_Intercomm_int_Intracomm_bo[] = "tuple[Intercomm, int, Intracomm, bool]";
static const char __pyx_k_tuple_list_int_None_list_Any_Non[] = "tuple[list[int] | None, list[Any] | None]";
static const char __pyx_k_tuple_list_int_list_int_list_int[] = "tuple[list[int], list[int], list[int], list[Datatype]]";
static const char __pyx_k_tuple_list_int_list_int_tuple_li[] = "tuple[list[int], list[int], tuple[list[int], list[int]] | None]";
static const char __pyx_k_Distgraphcomm_Get_dist_neighbors_2[] = "Distgraphcomm.Get_dist_neighbors";
static const char __pyx_k_Info_Mapping_str_str_Iterable_tu_2[] = "Info | Mapping[str, str] | Iterable[tuple[str, str]]";
static const char __pyx_k_cannot_create_too_many_user_defi_2[] = "cannot create too many user-defined reduction operations";
static const char __pyx_k_message_cannot_handle_displaceme_2[] = "message: cannot handle displacement, datatype extent ";
static const char __pyx_k_message_cannot_infer_count_datat_2[] = "message: cannot infer count, datatype extent ";
static const char __pyx_k_tuple_list_int_list_int_list_int_2[] = "tuple[list[int], list[int], list[int]]";
/* #### Code section: decls ### */
static PyObject *__pyx_pf_6mpi4py_3MPI__set_abort_status(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_status); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6_PyMem___cinit__(struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_self); /* proto */
static void __pyx_pf_6mpi4py_3MPI_6_PyMem_2__dealloc__(struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6_PyMem_4__getbuffer__(struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6buffer___cinit__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_args); /* proto */
static void __pyx_pf_6mpi4py_3MPI_6buffer_2__dealloc__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_4allocate(MPI_Aint __pyx_v_nbytes, int __pyx_v_clear); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_6frombuffer(PyObject *__pyx_v_obj, int __pyx_v_readonly); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_8fromaddress(PyObject *__pyx_v_address, MPI_Aint __pyx_v_nbytes, int __pyx_v_readonly); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_7address___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_3obj___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_6nbytes___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_8readonly___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_6format___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_8itemsize___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_10cast(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_format, PyObject *__pyx_v_shape); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_12tobytes(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_order); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_14toreadonly(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_16release(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6buffer_18__getbuffer__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /* proto */
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_6buffer_20__len__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_22__getitem__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_item); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6buffer_24__setitem__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9_p_keyval___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn___get__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn_2__set__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn_4__del__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn___get__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn_2__set__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn_4__del__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_keyval_8nopython___get__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_8nopython_2__set__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_5_p_rs___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_7_p_greq___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, PyObject *__pyx_v_query_fn, PyObject *__pyx_v_free_fn, PyObject *__pyx_v_cancel_fn, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static int __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType___cinit__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_2__getbuffer__(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_4__repr__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_6__reduce__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2_comm_lock(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4_comm_lock_table(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10_p_datarep___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, PyObject *__pyx_v_read_fn, PyObject *__pyx_v_write_fn, PyObject *__pyx_v_extent_fn); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10BottomType___cinit__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10BottomType_2__getbuffer__(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_4__repr__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_6__reduce__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_11InPlaceType___cinit__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_11InPlaceType_2__getbuffer__(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_4__repr__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_6__reduce__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10_p_msg_p2p___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10_p_msg_cco___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_11_p_msg_ccow___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10_p_msg_rma___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9_p_msg_io___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Pickle___cinit__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Pickle_2__init__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_dumps, PyObject *__pyx_v_loads, PyObject *__pyx_v_protocol, PyObject *__pyx_v_threshold); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_4dumps(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_obj); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_6loads(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_8dumps_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_obj); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_10loads_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_buffers); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_8PROTOCOL___get__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Pickle_8PROTOCOL_2__set__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_protocol); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_9THRESHOLD___get__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Pickle_9THRESHOLD_2__set__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_threshold); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_19get_buffer_callback_buffer_callback(PyObject *__pyx_self, PyObject *__pyx_v_ob); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6_commctx_intra(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIIntracommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8_commctx_inter(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIIntercommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Get_error_class(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_12Get_error_string(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_14Add_error_class(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_16Remove_error_class(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorclass); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_18Add_error_code(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorclass); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_20Remove_error_code(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_22Add_error_string(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode, PyObject *__pyx_v_string); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_24Remove_error_string(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9Exception___cinit__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self, int __pyx_v_ierr); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_2__richcmp__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self, PyObject *__pyx_v_error, int __pyx_v_op); /* proto */
static Py_hash_t __pyx_pf_6mpi4py_3MPI_9Exception_4__hash__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9Exception_6__bool__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_8__int__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10__repr__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12__str__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_14Get_error_code(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10error_code___get__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_16Get_error_class(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_11error_class___get__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_18Get_error_string(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12error_string___get__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_8Datatype___cinit__(struct PyMPIDatatypeObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static void __pyx_pf_6mpi4py_3MPI_8Datatype_2__dealloc__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4__richcmp__(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_8Datatype_6__bool__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8__reduce__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6handle___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_12free(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_14Get_size(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4size___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_16Get_extent(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6extent___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2lb___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2ub___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_18Dup(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_20Create_contiguous(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_22Create_vector(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count, MPI_Count __pyx_v_blocklength, MPI_Count __pyx_v_stride); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_24Create_hvector(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count, MPI_Count __pyx_v_blocklength, MPI_Count __pyx_v_stride); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_26Create_indexed(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_blocklengths, PyObject *__pyx_v_displacements); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_28Create_hindexed(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_blocklengths, PyObject *__pyx_v_displacements); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_30Create_indexed_block(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_blocklength, PyObject *__pyx_v_displacements); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_32Create_hindexed_block(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_blocklength, PyObject *__pyx_v_displacements); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_34Create_struct(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_blocklengths, PyObject *__pyx_v_displacements, PyObject *__pyx_v_datatypes); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_36Create_subarray(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_sizes, PyObject *__pyx_v_subsizes, PyObject *__pyx_v_starts, int __pyx_v_order); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_38Create_darray(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_size, int __pyx_v_rank, PyObject *__pyx_v_gsizes, PyObject *__pyx_v_distribs, PyObject *__pyx_v_dargs, PyObject *__pyx_v_psizes, int __pyx_v_order); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_40Get_value_index(PyTypeObject *__pyx_v_cls, struct PyMPIDatatypeObject *__pyx_v_value, struct PyMPIDatatypeObject *__pyx_v_index); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_42Create_f90_integer(PyTypeObject *__pyx_v_cls, int __pyx_v_r); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_44Create_f90_real(PyTypeObject *__pyx_v_cls, int __pyx_v_p, int __pyx_v_r); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_46Create_f90_complex(PyTypeObject *__pyx_v_cls, int __pyx_v_p, int __pyx_v_r); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_48Match_size(PyTypeObject *__pyx_v_cls, int __pyx_v_typeclass, int __pyx_v_size); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_50Commit(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_52Free(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_54Create_resized(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_lb, MPI_Count __pyx_v_extent); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_56Get_true_extent(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_11true_extent___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_lb___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_ub___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_58Get_envelope(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8envelope___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_60Get_contents(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8contents___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_62decode(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8combiner___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8is_named___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_13is_predefined___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_64Pack(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_inbuf, PyObject *__pyx_v_outbuf, MPI_Count __pyx_v_position, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_66Unpack(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_inbuf, MPI_Count __pyx_v_position, PyObject *__pyx_v_outbuf, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_68Pack_size(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_70Pack_external(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_datarep, PyObject *__pyx_v_inbuf, PyObject *__pyx_v_outbuf, MPI_Count __pyx_v_position); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_72Unpack_external(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_datarep, PyObject *__pyx_v_inbuf, MPI_Count __pyx_v_position, PyObject *__pyx_v_outbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_74Pack_external_size(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_datarep, MPI_Count __pyx_v_count); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_76Get_attr(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_78Set_attr(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_keyval, PyObject *__pyx_v_attrval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_80Delete_attr(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_82Create_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_84Free_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_86Get_name(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_88Set_name(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4name___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_8Datatype_4name_2__set__(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_90py2f(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_92f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_94tocode(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_96fromcode(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_code); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7typestr___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8typechar___get__(struct PyMPIDatatypeObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_26Get_address(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_location); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_28Aint_add(CYTHON_UNUSED PyObject *__pyx_self, MPI_Aint __pyx_v_base, MPI_Aint __pyx_v_disp); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_30Aint_diff(CYTHON_UNUSED PyObject *__pyx_self, MPI_Aint __pyx_v_addr1, MPI_Aint __pyx_v_addr2); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Status___cinit__(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_2__richcmp__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_4__reduce__(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6__getstate__(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_8__setstate__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_state); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_10Get_source(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_12Set_source(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_source); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6source___get__(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Status_6source_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_14Get_tag(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_16Set_tag(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_3tag___get__(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Status_3tag_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_18Get_error(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_20Set_error(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_error); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5error___get__(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Status_5error_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_22Get_count(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5count___get__(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Status_5count_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_24Get_elements(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_26Set_elements(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype, MPI_Count __pyx_v_count); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_28Is_cancelled(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_30Set_cancelled(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_flag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_9cancelled___get__(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_6Status_9cancelled_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_32py2f(struct PyMPIStatusObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_34f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_6mpi4py_3MPI_7Request___cinit__(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request); /* proto */
static void __pyx_pf_6mpi4py_3MPI_7Request_2__dealloc__(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_4__richcmp__(struct PyMPIRequestObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_7Request_6__bool__(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_8__reduce__(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_6handle___get__(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_10fromhandle(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_12free(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_14Wait(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_16Test(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_18Get_status(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_20Waitany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_22Testany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_24Get_status_any(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_26Waitall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_28Testall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_30Get_status_all(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_32Waitsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_34Testsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_36Get_status_some(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_38Cancel(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_40Free(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_42py2f(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_44f2py(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_46wait(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_48test(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_50get_status(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_52waitany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_54testany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_56get_status_any(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_58waitall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_60testall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_62get_status_all(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_64waitsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_66testsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_68get_status_some(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_70cancel(struct PyMPIRequestObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_8Prequest___cinit__(struct PyMPIPrequestObject *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_2Start(struct PyMPIPrequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_4Startall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_6Pready(struct PyMPIPrequestObject *__pyx_v_self, int __pyx_v_partition); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_8Pready_range(struct PyMPIPrequestObject *__pyx_v_self, int __pyx_v_partition_low, int __pyx_v_partition_high); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_10Pready_list(struct PyMPIPrequestObject *__pyx_v_self, PyObject *__pyx_v_partitions); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_12Parrived(struct PyMPIPrequestObject *__pyx_v_self, int __pyx_v_partition); /* proto */
static int __pyx_pf_6mpi4py_3MPI_8Grequest___cinit__(struct PyMPIGrequestObject *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_2Start(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_query_fn, PyObject *__pyx_v_free_fn, PyObject *__pyx_v_cancel_fn, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_4Complete(struct PyMPIGrequestObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_6complete(struct PyMPIGrequestObject *__pyx_v_self, PyObject *__pyx_v_obj); /* proto */
static int __pyx_pf_6mpi4py_3MPI_7Message___cinit__(struct PyMPIMessageObject *__pyx_v_self, struct PyMPIMessageObject *__pyx_v_message); /* proto */
static void __pyx_pf_6mpi4py_3MPI_7Message_2__dealloc__(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_4__richcmp__(struct PyMPIMessageObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_7Message_6__bool__(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_8__reduce__(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_6handle___get__(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_12free(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_14Probe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_16Iprobe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_18Recv(struct PyMPIMessageObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_20Irecv(struct PyMPIMessageObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_22probe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_24iprobe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_26recv(struct PyMPIMessageObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_28irecv(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_30py2f(struct PyMPIMessageObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_32f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_6mpi4py_3MPI_2Op___cinit__(struct PyMPIOpObject *__pyx_v_self, struct PyMPIOpObject *__pyx_v_op); /* proto */
static void __pyx_pf_6mpi4py_3MPI_2Op_2__dealloc__(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_4__richcmp__(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_2Op_6__bool__(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_8__reduce__(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_10__call__(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_6handle___get__(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_12fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_14free(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_16Create(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_function, int __pyx_v_commute); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_18Free(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_20Is_commutative(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_14is_commutative___get__(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_22Reduce_local(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_inbuf, PyObject *__pyx_v_inoutbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_13is_predefined___get__(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_24py2f(struct PyMPIOpObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_26f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_6mpi4py_3MPI_5Group___cinit__(struct PyMPIGroupObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group); /* proto */
static void __pyx_pf_6mpi4py_3MPI_5Group_2__dealloc__(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4__richcmp__(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_5Group_6__bool__(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_8__reduce__(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_6handle___get__(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_12free(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_14Get_size(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4size___get__(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_16Get_rank(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4rank___get__(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_18Translate_ranks(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks, struct PyMPIGroupObject *__pyx_v_group); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_20Compare(struct PyMPIGroupObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_22Dup(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_24Union(PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group1, struct PyMPIGroupObject *__pyx_v_group2); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_26Intersection(PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group1, struct PyMPIGroupObject *__pyx_v_group2); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_28Difference(PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group1, struct PyMPIGroupObject *__pyx_v_group2); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_30Incl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_32Excl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_34Range_incl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_36Range_excl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_38Create_from_session_pset(PyTypeObject *__pyx_v_cls, struct PyMPISessionObject *__pyx_v_session, PyObject *__pyx_v_pset_name); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_40Free(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_42py2f(struct PyMPIGroupObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_44f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info___cinit__(struct PyMPIInfoObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static void __pyx_pf_6mpi4py_3MPI_4Info_2__dealloc__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_4__richcmp__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info_6__bool__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_8__reduce__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_6handle___get__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_12free(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_14Create(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_items); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_16Create_env(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_18Free(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_20Dup(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_22Get(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_24Set(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_26Delete(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_28Get_nkeys(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_30Get_nthkey(struct PyMPIInfoObject *__pyx_v_self, int __pyx_v_n); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_32py2f(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_34f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static Py_ssize_t __pyx_pf_6mpi4py_3MPI_4Info_36__len__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info_38__contains__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_40__iter__(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_42__getitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info_44__setitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Info_46__delitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_48get(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_50keys(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_52values(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_54items(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_56update(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_items, PyObject *__pyx_v_kwds); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_58pop(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_60popitem(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_62copy(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_64clear(struct PyMPIInfoObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10Errhandler___cinit__(struct PyMPIErrhandlerObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static void __pyx_pf_6mpi4py_3MPI_10Errhandler_2__dealloc__(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_4__richcmp__(struct PyMPIErrhandlerObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_10Errhandler_6__bool__(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_8__reduce__(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_6handle___get__(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_12free(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_14Free(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_16py2f(struct PyMPIErrhandlerObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_18f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_6mpi4py_3MPI_7Session___cinit__(struct PyMPISessionObject *__pyx_v_self, struct PyMPISessionObject *__pyx_v_session); /* proto */
static void __pyx_pf_6mpi4py_3MPI_7Session_2__dealloc__(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_4__richcmp__(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_7Session_6__bool__(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_8__reduce__(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_6handle___get__(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_12free(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_14Init(PyTypeObject *__pyx_v_cls, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_16Finalize(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_18Get_num_psets(struct PyMPISessionObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_20Get_nth_pset(struct PyMPISessionObject *__pyx_v_self, int __pyx_v_n, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_22Get_info(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_24Get_pset_info(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_pset_name); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_26Create_group(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_pset_name); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_28Attach_buffer(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_30Detach_buffer(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_32Flush_buffer(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_34Iflush_buffer(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_36Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_38Get_errhandler(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_40Set_errhandler(struct PyMPISessionObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_42Call_errhandler(struct PyMPISessionObject *__pyx_v_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_44py2f(struct PyMPISessionObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_46f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Comm___cinit__(struct PyMPICommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static void __pyx_pf_6mpi4py_3MPI_4Comm_2__dealloc__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4__richcmp__(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Comm_6__bool__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8__reduce__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_6handle___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_12free(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_14Get_group(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_5group___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_16Get_size(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4size___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_18Get_rank(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4rank___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_20Compare(struct PyMPICommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_22Clone(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_24Dup(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_26Dup_with_info(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_28Idup(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_30Idup_with_info(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_32Create(struct PyMPICommObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_34Split(struct PyMPICommObject *__pyx_v_self, int __pyx_v_color, int __pyx_v_key); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_36Split_type(struct PyMPICommObject *__pyx_v_self, int __pyx_v_split_type, int __pyx_v_key, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_38Free(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_40Revoke(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_42Is_revoked(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_44Get_failed(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_46Ack_failed(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_num_to_ack); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_48Agree(struct PyMPICommObject *__pyx_v_self, int __pyx_v_flag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_50Iagree(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_flag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_52Shrink(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_54Ishrink(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_56Set_info(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_58Get_info(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4info___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Comm_4info_2__set__(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_60Attach_buffer(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_62Detach_buffer(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_64Flush_buffer(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_66Iflush_buffer(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_68Send(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_70Recv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_72Sendrecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_recvbuf, int __pyx_v_source, int __pyx_v_recvtag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_74Sendrecv_replace(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_sendtag, int __pyx_v_source, int __pyx_v_recvtag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_76Isend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_78Irecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_80Isendrecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_recvbuf, int __pyx_v_source, int __pyx_v_recvtag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_82Isendrecv_replace(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_sendtag, int __pyx_v_source, int __pyx_v_recvtag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_84Probe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_86Iprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_88Mprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_90Improbe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_92Send_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_94Recv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_96Psend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_partitions, int __pyx_v_dest, int __pyx_v_tag, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_98Precv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_partitions, int __pyx_v_source, int __pyx_v_tag, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_100Bsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_102Ssend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_104Rsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_106Ibsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_108Issend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_110Irsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_112Bsend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_114Ssend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_116Rsend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_118Barrier(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_120Bcast(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_122Gather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_124Gatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_126Scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_128Scatterv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_130Allgather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_132Allgatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_134Alltoall(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_136Alltoallv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_138Alltoallw(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_140Reduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_142Allreduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_144Reduce_scatter_block(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_146Reduce_scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, PyObject *__pyx_v_recvcounts, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_148Ibarrier(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_150Ibcast(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_152Igather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_154Igatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_156Iscatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_158Iscatterv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_160Iallgather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_162Iallgatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_164Ialltoall(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_166Ialltoallv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_168Ialltoallw(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_170Ireduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_172Iallreduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_174Ireduce_scatter_block(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_176Ireduce_scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, PyObject *__pyx_v_recvcounts, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_178Barrier_init(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_180Bcast_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_182Gather_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_184Gatherv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_186Scatter_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_188Scatterv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_190Allgather_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_192Allgatherv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_194Alltoall_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_196Alltoallv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_198Alltoallw_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_200Reduce_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_202Allreduce_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_204Reduce_scatter_block_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_206Reduce_scatter_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, PyObject *__pyx_v_recvcounts, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_208Is_inter(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_inter___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_210Is_intra(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_intra___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_212Get_topology(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8topology___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_7is_topo___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_214Get_parent(CYTHON_UNUSED PyTypeObject *__pyx_v_cls); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_216Disconnect(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_218Join(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_fd); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_220Get_attr(struct PyMPICommObject *__pyx_v_self, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_222Set_attr(struct PyMPICommObject *__pyx_v_self, int __pyx_v_keyval, PyObject *__pyx_v_attrval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_224Delete_attr(struct PyMPICommObject *__pyx_v_self, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_226Create_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_228Free_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_230Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_232Get_errhandler(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_234Set_errhandler(struct PyMPICommObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_236Call_errhandler(struct PyMPICommObject *__pyx_v_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_238Abort(struct PyMPICommObject *__pyx_v_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_240Get_name(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_242Set_name(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4name___get__(struct PyMPICommObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4Comm_4name_2__set__(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_244py2f(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_246f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_248send(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_250bsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_252ssend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_254recv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_256sendrecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_recvbuf, int __pyx_v_source, int __pyx_v_recvtag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_258isend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_260ibsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_262issend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_264irecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_266probe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_268iprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_270mprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_272improbe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_274barrier(struct PyMPICommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_276bcast(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_278gather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_280scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_282allgather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_284alltoall(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_286reduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_288allreduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9Intracomm___cinit__(struct PyMPIIntracommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_2Create_group(struct PyMPIIntracommObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_4Create_from_group(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group, PyObject *__pyx_v_stringtag, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_6Create_cart(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_dims, PyObject *__pyx_v_periods, int __pyx_v_reorder); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_8Create_graph(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_edges, int __pyx_v_reorder); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_10Create_dist_graph_adjacent(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sources, PyObject *__pyx_v_destinations, PyObject *__pyx_v_sourceweights, PyObject *__pyx_v_destweights, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_reorder); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_12Create_dist_graph(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sources, PyObject *__pyx_v_degrees, PyObject *__pyx_v_destinations, PyObject *__pyx_v_weights, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_reorder); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_14Create_intercomm(struct PyMPIIntracommObject *__pyx_v_self, int __pyx_v_local_leader, struct PyMPIIntracommObject *__pyx_v_peer_comm, int __pyx_v_remote_leader, int __pyx_v_tag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_16Cart_map(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_dims, PyObject *__pyx_v_periods); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_18Graph_map(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_20Scan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_22Exscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_24Iscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_26Iexscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_28Scan_init(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_30Exscan_init(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_32scan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_34exscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_36Spawn(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_command, PyObject *__pyx_v_args, int __pyx_v_maxprocs, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_root, PyObject *__pyx_v_errcodes); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_38Spawn_multiple(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_command, PyObject *__pyx_v_args, PyObject *__pyx_v_maxprocs, PyObject *__pyx_v_info, int __pyx_v_root, PyObject *__pyx_v_errcodes); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_40Accept(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_root); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_42Connect(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_root); /* proto */
static int __pyx_pf_6mpi4py_3MPI_8Topocomm___cinit__(struct PyMPITopocommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_7degrees___get__(struct PyMPITopocommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_8indegree___get__(struct PyMPITopocommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_9outdegree___get__(struct PyMPITopocommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_10inoutedges___get__(struct PyMPITopocommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_7inedges___get__(struct PyMPITopocommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_8outedges___get__(struct PyMPITopocommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_2Neighbor_allgather(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_4Neighbor_allgatherv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_6Neighbor_alltoall(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_8Neighbor_alltoallv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_10Neighbor_alltoallw(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_12Ineighbor_allgather(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_14Ineighbor_allgatherv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_16Ineighbor_alltoall(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_18Ineighbor_alltoallv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_20Ineighbor_alltoallw(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_22Neighbor_allgather_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_24Neighbor_allgatherv_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_26Neighbor_alltoall_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_28Neighbor_alltoallv_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_30Neighbor_alltoallw_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_32neighbor_allgather(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendobj); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_34neighbor_alltoall(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendobj); /* proto */
static int __pyx_pf_6mpi4py_3MPI_8Cartcomm___cinit__(struct PyMPICartcommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_2Get_dim(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_3dim___get__(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4ndim___get__(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4Get_topo(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4topo___get__(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4dims___get__(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_7periods___get__(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6coords___get__(struct PyMPICartcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6Get_cart_rank(struct PyMPICartcommObject *__pyx_v_self, PyObject *__pyx_v_coords); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_8Get_coords(struct PyMPICartcommObject *__pyx_v_self, int __pyx_v_rank); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_10Shift(struct PyMPICartcommObject *__pyx_v_self, int __pyx_v_direction, int __pyx_v_disp); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_12Sub(struct PyMPICartcommObject *__pyx_v_self, PyObject *__pyx_v_remain_dims); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_32Compute_dims(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_nnodes, PyObject *__pyx_v_dims); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9Graphcomm___cinit__(struct PyMPIGraphcommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_2Get_dims(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4dims___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nnodes___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nedges___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4Get_topo(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4topo___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5index___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5edges___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6Get_neighbors_count(struct PyMPIGraphcommObject *__pyx_v_self, int __pyx_v_rank); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_10nneighbors___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_8Get_neighbors(struct PyMPIGraphcommObject *__pyx_v_self, int __pyx_v_rank); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_9neighbors___get__(struct PyMPIGraphcommObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_13Distgraphcomm___cinit__(struct PyMPIDistgraphcommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count(struct PyMPIDistgraphcommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_4Get_dist_neighbors(struct PyMPIDistgraphcommObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_9Intercomm___cinit__(struct PyMPIIntercommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_2Create_from_groups(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_local_group, int __pyx_v_local_leader, struct PyMPIGroupObject *__pyx_v_remote_group, int __pyx_v_remote_leader, PyObject *__pyx_v_stringtag, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_4Get_remote_group(struct PyMPIIntercommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_12remote_group___get__(struct PyMPIIntercommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_6Get_remote_size(struct PyMPIIntercommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_11remote_size___get__(struct PyMPIIntercommObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_8Merge(struct PyMPIIntercommObject *__pyx_v_self, int __pyx_v_high); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_34Attach_buffer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_36Detach_buffer(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_38Flush_buffer(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_40Iflush_buffer(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_102__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_42Open_port(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_44Close_port(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_port_name); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_104__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_46Publish_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_name, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_106__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_48Unpublish_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_name, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_108__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_50Lookup_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_name, PyObject *__pyx_v_info); /* proto */
static int __pyx_pf_6mpi4py_3MPI_3Win___cinit__(struct PyMPIWinObject *__pyx_v_self, struct PyMPIWinObject *__pyx_v_win); /* proto */
static void __pyx_pf_6mpi4py_3MPI_3Win_2__dealloc__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4__richcmp__(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_3Win_6__bool__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_8__reduce__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6handle___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_12free(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_14Create(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_memory, MPI_Aint __pyx_v_disp_unit, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_16Allocate(PyTypeObject *__pyx_v_cls, MPI_Aint __pyx_v_size, MPI_Aint __pyx_v_disp_unit, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_18Allocate_shared(PyTypeObject *__pyx_v_cls, MPI_Aint __pyx_v_size, MPI_Aint __pyx_v_disp_unit, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_20Shared_query(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_22Create_dynamic(PyTypeObject *__pyx_v_cls, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_24Attach(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_memory); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_26Detach(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_memory); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_28Free(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_30Set_info(struct PyMPIWinObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_32Get_info(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4info___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_3Win_4info_2__set__(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_34Get_group(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5group___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10group_size___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10group_rank___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_36Get_attr(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_38Set_attr(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_keyval, PyObject *__pyx_v_attrval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_40Delete_attr(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_42Create_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_44Free_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_keyval); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5attrs___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6flavor___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5model___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_46tomemory(struct PyMPIWinObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_3Win_48__getbuffer__(struct PyMPIWinObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_50Put(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_52Get(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_54Accumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_56Get_accumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_58Fetch_and_op(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_target_rank, MPI_Aint __pyx_v_target_disp, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_60Compare_and_swap(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_compare, PyObject *__pyx_v_result, int __pyx_v_target_rank, MPI_Aint __pyx_v_target_disp); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_62Rput(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_64Rget(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_66Raccumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_68Rget_accumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_70Fence(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_assertion); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_72Start(struct PyMPIWinObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group, int __pyx_v_assertion); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_74Complete(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_76Post(struct PyMPIWinObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group, int __pyx_v_assertion); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_78Wait(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_80Test(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_82Lock(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank, int __pyx_v_lock_type, int __pyx_v_assertion); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_84Unlock(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_86Lock_all(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_assertion); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_88Unlock_all(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_90Flush(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_92Flush_all(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_94Flush_local(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_96Flush_local_all(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_98Sync(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_100Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_102Get_errhandler(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_104Set_errhandler(struct PyMPIWinObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_106Call_errhandler(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_108Get_name(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_110Set_name(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4name___get__(struct PyMPIWinObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_3Win_4name_2__set__(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_112py2f(struct PyMPIWinObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_114f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4File___cinit__(struct PyMPIFileObject *__pyx_v_self, struct PyMPIFileObject *__pyx_v_file); /* proto */
static void __pyx_pf_6mpi4py_3MPI_4File_2__dealloc__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4__richcmp__(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4File_6__bool__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_8__reduce__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_6handle___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_12free(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_14Open(PyTypeObject *__pyx_v_cls, struct PyMPIIntracommObject *__pyx_v_comm, PyObject *__pyx_v_filename, int __pyx_v_amode, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_16Close(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_18Delete(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_filename, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_20Set_size(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_size); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_22Preallocate(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_size); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_24Get_size(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4size___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_26Get_amode(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5amode___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_28Get_group(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5group___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10group_size___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10group_rank___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_30Set_info(struct PyMPIFileObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_32Get_info(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4info___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4File_4info_2__set__(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_34Set_view(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_disp, struct PyMPIDatatypeObject *__pyx_v_etype, struct PyMPIDatatypeObject *__pyx_v_filetype, PyObject *__pyx_v_datarep, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_36Get_view(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_38Read_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_40Read_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_42Write_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_44Write_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_46Iread_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_48Iread_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_50Iwrite_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_52Iwrite_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_54Read(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_56Read_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_58Write(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_60Write_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_62Iread(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_64Iread_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_66Iwrite(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_68Iwrite_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_70Seek(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, int __pyx_v_whence); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_72Get_position(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_74Get_byte_offset(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_76Read_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_78Write_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_80Iread_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_82Iwrite_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_84Read_ordered(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_86Write_ordered(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_88Seek_shared(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, int __pyx_v_whence); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_90Get_position_shared(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_92Read_at_all_begin(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_94Read_at_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_96Write_at_all_begin(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_98Write_at_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_100Read_all_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_102Read_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_104Write_all_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_106Write_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_108Read_ordered_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_110Read_ordered_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_112Write_ordered_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_114Write_ordered_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_116Get_type_extent(struct PyMPIFileObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_118Set_atomicity(struct PyMPIFileObject *__pyx_v_self, int __pyx_v_flag); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_120Get_atomicity(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_9atomicity___get__(struct PyMPIFileObject *__pyx_v_self); /* proto */
static int __pyx_pf_6mpi4py_3MPI_4File_9atomicity_2__set__(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_122Sync(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_124Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_126Get_errhandler(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_128Set_errhandler(struct PyMPIFileObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_130Call_errhandler(struct PyMPIFileObject *__pyx_v_self, int __pyx_v_errorcode); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_132py2f(struct PyMPIFileObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_4File_134f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_52Register_datarep(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_datarep, PyObject *__pyx_v_read_fn, PyObject *__pyx_v_write_fn, PyObject *__pyx_v_extent_fn); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_110__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_54Alloc_mem(CYTHON_UNUSED PyObject *__pyx_self, MPI_Aint __pyx_v_size, struct PyMPIInfoObject *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_56Free_mem(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_mem); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_58Init(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_60Finalize(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_112__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_62Init_thread(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_required); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_64Query_thread(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_66Is_thread_main(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_68Is_initialized(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_70Is_finalized(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_72Get_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_74Get_library_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_76Get_processor_name(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_78Get_hw_resource_info(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_80Wtime(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_82Wtick(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_84Pcontrol(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_level); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_86_typecode(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_88_typealign(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_90_datatype_create(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype, PyObject *__pyx_v_combiner, PyObject *__pyx_v_params, int __pyx_v_free); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_92_datatype_decode(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype, int __pyx_v_mark); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_94get_vendor(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_96_sizeof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_98_addressof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_pf_6mpi4py_3MPI_100_handleof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg); /* proto */
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Datatype(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Status(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Request(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Prequest(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Grequest(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Op(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Group(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Info(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Errhandler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Session(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Comm(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intracomm(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Topocomm(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Cartcomm(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Graphcomm(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Distgraphcomm(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intercomm(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Win(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_File(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__PyMem(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_buffer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_keyval(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_rs(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_greq(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_BufferAutomaticType(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_datarep(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_BottomType(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_InPlaceType(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_cco(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_ccow(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_rma(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_io(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Pickle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_req_buf(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_req_obj(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI_Exception(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, 0, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop = {0, 0, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, 0, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyList_Type_index = {0, 0, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyString_Type_lower = {0, 0, 0, 0, 0};
/* #### Code section: late_includes ### */
/* #### Code section: module_state ### */
typedef struct {
  PyObject *__pyx_d;
  PyObject *__pyx_b;
  PyObject *__pyx_cython_runtime;
  PyObject *__pyx_empty_tuple;
  PyObject *__pyx_empty_bytes;
  PyObject *__pyx_empty_unicode;
  #ifdef __Pyx_CyFunction_USED
  PyTypeObject *__pyx_CyFunctionType;
  #endif
  #ifdef __Pyx_FusedFunction_USED
  PyTypeObject *__pyx_FusedFunctionType;
  #endif
  #ifdef __Pyx_Generator_USED
  PyTypeObject *__pyx_GeneratorType;
  #endif
  #ifdef __Pyx_IterableCoroutine_USED
  PyTypeObject *__pyx_IterableCoroutineType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineAwaitType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineType;
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  PyObject *PyMPIDatatype_Type;
  PyObject *PyMPIStatus_Type;
  PyObject *PyMPIRequest_Type;
  PyObject *PyMPIPrequest_Type;
  PyObject *PyMPIGrequest_Type;
  PyObject *PyMPIMessage_Type;
  PyObject *PyMPIOp_Type;
  PyObject *PyMPIGroup_Type;
  PyObject *PyMPIInfo_Type;
  PyObject *PyMPIErrhandler_Type;
  PyObject *PyMPISession_Type;
  PyObject *PyMPIComm_Type;
  PyObject *PyMPIIntracomm_Type;
  PyObject *PyMPITopocomm_Type;
  PyObject *PyMPICartcomm_Type;
  PyObject *PyMPIGraphcomm_Type;
  PyObject *PyMPIDistgraphcomm_Type;
  PyObject *PyMPIIntercomm_Type;
  PyObject *PyMPIWin_Type;
  PyObject *PyMPIFile_Type;
  PyObject *__pyx_type_6mpi4py_3MPI__PyMem;
  PyObject *__pyx_type_6mpi4py_3MPI_buffer;
  PyObject *__pyx_type_6mpi4py_3MPI__p_keyval;
  PyObject *__pyx_type_6mpi4py_3MPI__p_rs;
  PyObject *__pyx_type_6mpi4py_3MPI__p_greq;
  PyObject *__pyx_type_6mpi4py_3MPI_BufferAutomaticType;
  PyObject *__pyx_type_6mpi4py_3MPI__p_datarep;
  PyObject *__pyx_type_6mpi4py_3MPI_BottomType;
  PyObject *__pyx_type_6mpi4py_3MPI_InPlaceType;
  PyObject *__pyx_type_6mpi4py_3MPI__p_message;
  PyObject *__pyx_type_6mpi4py_3MPI__p_msg_p2p;
  PyObject *__pyx_type_6mpi4py_3MPI__p_msg_cco;
  PyObject *__pyx_type_6mpi4py_3MPI__p_msg_ccow;
  PyObject *__pyx_type_6mpi4py_3MPI__p_msg_rma;
  PyObject *__pyx_type_6mpi4py_3MPI__p_msg_io;
  PyObject *__pyx_type_6mpi4py_3MPI_Pickle;
  PyObject *__pyx_type_6mpi4py_3MPI__p_req_buf;
  PyObject *__pyx_type_6mpi4py_3MPI__p_req_obj;
  PyObject *__pyx_type_6mpi4py_3MPI_Exception;
  PyObject *__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback;
  #endif
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Datatype;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Status;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Request;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Prequest;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Grequest;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Message;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Op;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Group;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Info;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Errhandler;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Session;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Comm;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Intracomm;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Topocomm;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Cartcomm;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Graphcomm;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Distgraphcomm;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Intercomm;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Win;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_File;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__PyMem;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_buffer;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_keyval;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_rs;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_greq;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_datarep;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_BottomType;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_InPlaceType;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_message;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_p2p;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_cco;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_ccow;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_rma;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_msg_io;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Pickle;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_req_buf;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI__p_req_obj;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_RuntimeError;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI_Exception;
  PyTypeObject *__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback;
  PyObject *__pyx_n_s_;
  PyObject *__pyx_kp_b_;
  PyObject *__pyx_n_s_AINT;
  PyObject *__pyx_n_s_ANY_SOURCE;
  PyObject *__pyx_n_s_ANY_TAG;
  PyObject *__pyx_n_s_APPNUM;
  PyObject *__pyx_n_s_Abort;
  PyObject *__pyx_n_s_Accept;
  PyObject *__pyx_n_s_Accumulate;
  PyObject *__pyx_n_s_Ack_failed;
  PyObject *__pyx_n_s_Add_error_class;
  PyObject *__pyx_n_s_Add_error_code;
  PyObject *__pyx_n_s_Add_error_string;
  PyObject *__pyx_n_s_Agree;
  PyObject *__pyx_n_s_Aint_add;
  PyObject *__pyx_n_s_Aint_diff;
  PyObject *__pyx_n_s_Allgather;
  PyObject *__pyx_n_s_Allgather_init;
  PyObject *__pyx_n_s_Allgatherv;
  PyObject *__pyx_n_s_Allgatherv_init;
  PyObject *__pyx_n_s_Alloc_mem;
  PyObject *__pyx_n_s_Allocate;
  PyObject *__pyx_n_s_Allocate_shared;
  PyObject *__pyx_n_s_Allreduce;
  PyObject *__pyx_n_s_Allreduce_init;
  PyObject *__pyx_n_s_Alltoall;
  PyObject *__pyx_n_s_Alltoall_init;
  PyObject *__pyx_n_s_Alltoallv;
  PyObject *__pyx_n_s_Alltoallv_init;
  PyObject *__pyx_n_s_Alltoallw;
  PyObject *__pyx_n_s_Alltoallw_init;
  PyObject *__pyx_n_s_Any;
  PyObject *__pyx_kp_s_Any_None;
  PyObject *__pyx_n_s_Attach;
  PyObject *__pyx_n_s_Attach_buffer;
  PyObject *__pyx_n_s_AttributeError;
  PyObject *__pyx_n_s_BAND;
  PyObject *__pyx_n_s_BOOL;
  PyObject *__pyx_n_s_BOR;
  PyObject *__pyx_n_s_BOTTOM;
  PyObject *__pyx_n_s_BSEND_OVERHEAD;
  PyObject *__pyx_n_s_BUFFER_AUTOMATIC;
  PyObject *__pyx_n_s_BXOR;
  PyObject *__pyx_n_s_BYTE;
  PyObject *__pyx_n_s_Barrier;
  PyObject *__pyx_n_s_Barrier_init;
  PyObject *__pyx_n_s_BaseException;
  PyObject *__pyx_n_s_Bcast;
  PyObject *__pyx_n_s_Bcast_init;
  PyObject *__pyx_n_s_BottomType;
  PyObject *__pyx_n_s_BottomType___reduce;
  PyObject *__pyx_n_s_Bsend;
  PyObject *__pyx_n_s_Bsend_init;
  PyObject *__pyx_n_s_BufSpec;
  PyObject *__pyx_n_s_BufSpecB;
  PyObject *__pyx_kp_s_BufSpecB_InPlace;
  PyObject *__pyx_kp_s_BufSpecB_None;
  PyObject *__pyx_n_s_BufSpecV;
  PyObject *__pyx_kp_s_BufSpecV_InPlace;
  PyObject *__pyx_kp_s_BufSpecV_None;
  PyObject *__pyx_n_s_BufSpecW;
  PyObject *__pyx_kp_s_BufSpecW_InPlace;
  PyObject *__pyx_kp_s_BufSpec_BufSpecB;
  PyObject *__pyx_kp_s_BufSpec_InPlace;
  PyObject *__pyx_kp_s_BufSpec_None;
  PyObject *__pyx_n_s_Buffer;
  PyObject *__pyx_n_s_BufferAutomaticType;
  PyObject *__pyx_n_s_BufferAutomaticType___reduce;
  PyObject *__pyx_n_s_BufferError;
  PyObject *__pyx_kp_s_Buffer_Bottom;
  PyObject *__pyx_kp_s_Buffer_None;
  PyObject *__pyx_n_s_CART;
  PyObject *__pyx_n_s_CHAR;
  PyObject *__pyx_n_s_CHARACTER;
  PyObject *__pyx_n_s_COMBINER_CONTIGUOUS;
  PyObject *__pyx_n_s_COMBINER_DARRAY;
  PyObject *__pyx_n_s_COMBINER_DUP;
  PyObject *__pyx_n_s_COMBINER_F90_COMPLEX;
  PyObject *__pyx_n_s_COMBINER_F90_INTEGER;
  PyObject *__pyx_n_s_COMBINER_F90_REAL;
  PyObject *__pyx_n_s_COMBINER_HINDEXED;
  PyObject *__pyx_n_s_COMBINER_HINDEXED_BLOCK;
  PyObject *__pyx_n_s_COMBINER_HVECTOR;
  PyObject *__pyx_n_s_COMBINER_INDEXED;
  PyObject *__pyx_n_s_COMBINER_INDEXED_BLOCK;
  PyObject *__pyx_n_s_COMBINER_NAMED;
  PyObject *__pyx_n_s_COMBINER_RESIZED;
  PyObject *__pyx_n_s_COMBINER_STRUCT;
  PyObject *__pyx_n_s_COMBINER_SUBARRAY;
  PyObject *__pyx_n_s_COMBINER_VALUE_INDEX;
  PyObject *__pyx_n_s_COMBINER_VECTOR;
  PyObject *__pyx_n_s_COMM_NULL;
  PyObject *__pyx_n_s_COMM_SELF;
  PyObject *__pyx_n_s_COMM_TYPE_HW_GUIDED;
  PyObject *__pyx_n_s_COMM_TYPE_HW_UNGUIDED;
  PyObject *__pyx_n_s_COMM_TYPE_RESOURCE_GUIDED;
  PyObject *__pyx_n_s_COMM_TYPE_SHARED;
  PyObject *__pyx_n_s_COMM_WORLD;
  PyObject *__pyx_n_s_COMPLEX;
  PyObject *__pyx_n_s_COMPLEX16;
  PyObject *__pyx_n_s_COMPLEX32;
  PyObject *__pyx_n_s_COMPLEX4;
  PyObject *__pyx_n_s_COMPLEX8;
  PyObject *__pyx_n_s_CONGRUENT;
  PyObject *__pyx_n_s_CONTIGUOUS;
  PyObject *__pyx_n_s_COUNT;
  PyObject *__pyx_n_s_CXX_BOOL;
  PyObject *__pyx_n_s_CXX_DOUBLE_COMPLEX;
  PyObject *__pyx_n_s_CXX_FLOAT_COMPLEX;
  PyObject *__pyx_n_s_CXX_LONG_DOUBLE_COMPLEX;
  PyObject *__pyx_n_s_C_BOOL;
  PyObject *__pyx_n_s_C_COMPLEX;
  PyObject *__pyx_n_s_C_DOUBLE_COMPLEX;
  PyObject *__pyx_n_s_C_FLOAT_COMPLEX;
  PyObject *__pyx_n_s_C_LONG_DOUBLE_COMPLEX;
  PyObject *__pyx_n_s_Call_errhandler;
  PyObject *__pyx_kp_s_Callable_Buffer_Buffer_Datatype;
  PyObject *__pyx_kp_s_Callable_Buffer_Datatype_int_Buf;
  PyObject *__pyx_kp_s_Callable_Comm_int_Any_Any_None;
  PyObject *__pyx_kp_s_Callable_Comm_int_Any_None_None;
  PyObject *__pyx_kp_s_Callable_Comm_int_None;
  PyObject *__pyx_kp_s_Callable_Datatype_int;
  PyObject *__pyx_kp_s_Callable_Datatype_int_Any_Any_No;
  PyObject *__pyx_kp_s_Callable_Datatype_int_Any_None_N;
  PyObject *__pyx_kp_s_Callable_File_int_None;
  PyObject *__pyx_kp_s_Callable_None_None;
  PyObject *__pyx_kp_s_Callable_Session_int_None;
  PyObject *__pyx_kp_s_Callable_Win_int_Any_Any_None;
  PyObject *__pyx_kp_s_Callable_Win_int_Any_None_None;
  PyObject *__pyx_kp_s_Callable_Win_int_None;
  PyObject *__pyx_n_s_Cancel;
  PyObject *__pyx_n_s_Cart_map;
  PyObject *__pyx_n_s_Cartcomm;
  PyObject *__pyx_n_s_Cartcomm_Get_cart_rank;
  PyObject *__pyx_n_s_Cartcomm_Get_coords;
  PyObject *__pyx_n_s_Cartcomm_Get_dim;
  PyObject *__pyx_n_s_Cartcomm_Get_topo;
  PyObject *__pyx_n_s_Cartcomm_Shift;
  PyObject *__pyx_n_s_Cartcomm_Sub;
  PyObject *__pyx_n_s_Clone;
  PyObject *__pyx_n_s_Close;
  PyObject *__pyx_n_s_Close_port;
  PyObject *__pyx_n_s_Comm;
  PyObject *__pyx_n_s_Comm_Abort;
  PyObject *__pyx_n_s_Comm_Ack_failed;
  PyObject *__pyx_n_s_Comm_Agree;
  PyObject *__pyx_n_s_Comm_Allgather;
  PyObject *__pyx_n_s_Comm_Allgather_init;
  PyObject *__pyx_n_s_Comm_Allgatherv;
  PyObject *__pyx_n_s_Comm_Allgatherv_init;
  PyObject *__pyx_n_s_Comm_Allreduce;
  PyObject *__pyx_n_s_Comm_Allreduce_init;
  PyObject *__pyx_n_s_Comm_Alltoall;
  PyObject *__pyx_n_s_Comm_Alltoall_init;
  PyObject *__pyx_n_s_Comm_Alltoallv;
  PyObject *__pyx_n_s_Comm_Alltoallv_init;
  PyObject *__pyx_n_s_Comm_Alltoallw;
  PyObject *__pyx_n_s_Comm_Alltoallw_init;
  PyObject *__pyx_n_s_Comm_Attach_buffer;
  PyObject *__pyx_n_s_Comm_Barrier;
  PyObject *__pyx_n_s_Comm_Barrier_init;
  PyObject *__pyx_n_s_Comm_Bcast;
  PyObject *__pyx_n_s_Comm_Bcast_init;
  PyObject *__pyx_n_s_Comm_Bsend;
  PyObject *__pyx_n_s_Comm_Bsend_init;
  PyObject *__pyx_n_s_Comm_Call_errhandler;
  PyObject *__pyx_n_s_Comm_Clone;
  PyObject *__pyx_n_s_Comm_Compare;
  PyObject *__pyx_n_s_Comm_Create;
  PyObject *__pyx_n_s_Comm_Create_errhandler;
  PyObject *__pyx_n_s_Comm_Create_keyval;
  PyObject *__pyx_n_s_Comm_Delete_attr;
  PyObject *__pyx_n_s_Comm_Detach_buffer;
  PyObject *__pyx_n_s_Comm_Disconnect;
  PyObject *__pyx_n_s_Comm_Dup;
  PyObject *__pyx_n_s_Comm_Dup_with_info;
  PyObject *__pyx_n_s_Comm_Flush_buffer;
  PyObject *__pyx_n_s_Comm_Free;
  PyObject *__pyx_n_s_Comm_Free_keyval;
  PyObject *__pyx_n_s_Comm_Gather;
  PyObject *__pyx_n_s_Comm_Gather_init;
  PyObject *__pyx_n_s_Comm_Gatherv;
  PyObject *__pyx_n_s_Comm_Gatherv_init;
  PyObject *__pyx_n_s_Comm_Get_attr;
  PyObject *__pyx_n_s_Comm_Get_errhandler;
  PyObject *__pyx_n_s_Comm_Get_failed;
  PyObject *__pyx_n_s_Comm_Get_group;
  PyObject *__pyx_n_s_Comm_Get_info;
  PyObject *__pyx_n_s_Comm_Get_name;
  PyObject *__pyx_n_s_Comm_Get_parent;
  PyObject *__pyx_n_s_Comm_Get_rank;
  PyObject *__pyx_n_s_Comm_Get_size;
  PyObject *__pyx_n_s_Comm_Get_topology;
  PyObject *__pyx_n_s_Comm_Iagree;
  PyObject *__pyx_n_s_Comm_Iallgather;
  PyObject *__pyx_n_s_Comm_Iallgatherv;
  PyObject *__pyx_n_s_Comm_Iallreduce;
  PyObject *__pyx_n_s_Comm_Ialltoall;
  PyObject *__pyx_n_s_Comm_Ialltoallv;
  PyObject *__pyx_n_s_Comm_Ialltoallw;
  PyObject *__pyx_n_s_Comm_Ibarrier;
  PyObject *__pyx_n_s_Comm_Ibcast;
  PyObject *__pyx_n_s_Comm_Ibsend;
  PyObject *__pyx_n_s_Comm_Idup;
  PyObject *__pyx_n_s_Comm_Idup_with_info;
  PyObject *__pyx_n_s_Comm_Iflush_buffer;
  PyObject *__pyx_n_s_Comm_Igather;
  PyObject *__pyx_n_s_Comm_Igatherv;
  PyObject *__pyx_n_s_Comm_Improbe;
  PyObject *__pyx_n_s_Comm_Iprobe;
  PyObject *__pyx_n_s_Comm_Irecv;
  PyObject *__pyx_n_s_Comm_Ireduce;
  PyObject *__pyx_n_s_Comm_Ireduce_scatter;
  PyObject *__pyx_n_s_Comm_Ireduce_scatter_block;
  PyObject *__pyx_n_s_Comm_Irsend;
  PyObject *__pyx_n_s_Comm_Is_inter;
  PyObject *__pyx_n_s_Comm_Is_intra;
  PyObject *__pyx_n_s_Comm_Is_revoked;
  PyObject *__pyx_n_s_Comm_Iscatter;
  PyObject *__pyx_n_s_Comm_Iscatterv;
  PyObject *__pyx_n_s_Comm_Isend;
  PyObject *__pyx_n_s_Comm_Isendrecv;
  PyObject *__pyx_n_s_Comm_Isendrecv_replace;
  PyObject *__pyx_n_s_Comm_Ishrink;
  PyObject *__pyx_n_s_Comm_Issend;
  PyObject *__pyx_n_s_Comm_Join;
  PyObject *__pyx_n_s_Comm_Mprobe;
  PyObject *__pyx_n_s_Comm_Precv_init;
  PyObject *__pyx_n_s_Comm_Probe;
  PyObject *__pyx_n_s_Comm_Psend_init;
  PyObject *__pyx_n_s_Comm_Recv;
  PyObject *__pyx_n_s_Comm_Recv_init;
  PyObject *__pyx_n_s_Comm_Reduce;
  PyObject *__pyx_n_s_Comm_Reduce_init;
  PyObject *__pyx_n_s_Comm_Reduce_scatter;
  PyObject *__pyx_n_s_Comm_Reduce_scatter_block;
  PyObject *__pyx_n_s_Comm_Reduce_scatter_block_init;
  PyObject *__pyx_n_s_Comm_Reduce_scatter_init;
  PyObject *__pyx_n_s_Comm_Revoke;
  PyObject *__pyx_n_s_Comm_Rsend;
  PyObject *__pyx_n_s_Comm_Rsend_init;
  PyObject *__pyx_n_s_Comm_Scatter;
  PyObject *__pyx_n_s_Comm_Scatter_init;
  PyObject *__pyx_n_s_Comm_Scatterv;
  PyObject *__pyx_n_s_Comm_Scatterv_init;
  PyObject *__pyx_n_s_Comm_Send;
  PyObject *__pyx_n_s_Comm_Send_init;
  PyObject *__pyx_n_s_Comm_Sendrecv;
  PyObject *__pyx_n_s_Comm_Sendrecv_replace;
  PyObject *__pyx_n_s_Comm_Set_attr;
  PyObject *__pyx_n_s_Comm_Set_errhandler;
  PyObject *__pyx_n_s_Comm_Set_info;
  PyObject *__pyx_n_s_Comm_Set_name;
  PyObject *__pyx_n_s_Comm_Shrink;
  PyObject *__pyx_n_s_Comm_Split;
  PyObject *__pyx_n_s_Comm_Split_type;
  PyObject *__pyx_n_s_Comm_Ssend;
  PyObject *__pyx_n_s_Comm_Ssend_init;
  PyObject *__pyx_n_s_Comm___reduce;
  PyObject *__pyx_n_s_Comm_allgather;
  PyObject *__pyx_n_s_Comm_allreduce;
  PyObject *__pyx_n_s_Comm_alltoall;
  PyObject *__pyx_n_s_Comm_barrier;
  PyObject *__pyx_n_s_Comm_bcast;
  PyObject *__pyx_n_s_Comm_bsend;
  PyObject *__pyx_n_s_Comm_f2py;
  PyObject *__pyx_n_s_Comm_free;
  PyObject *__pyx_n_s_Comm_fromhandle;
  PyObject *__pyx_n_s_Comm_gather;
  PyObject *__pyx_n_s_Comm_ibsend;
  PyObject *__pyx_n_s_Comm_improbe;
  PyObject *__pyx_n_s_Comm_iprobe;
  PyObject *__pyx_n_s_Comm_irecv;
  PyObject *__pyx_n_s_Comm_isend;
  PyObject *__pyx_n_s_Comm_issend;
  PyObject *__pyx_n_s_Comm_mprobe;
  PyObject *__pyx_n_s_Comm_probe;
  PyObject *__pyx_n_s_Comm_py2f;
  PyObject *__pyx_n_s_Comm_recv;
  PyObject *__pyx_n_s_Comm_reduce;
  PyObject *__pyx_n_s_Comm_scatter;
  PyObject *__pyx_n_s_Comm_send;
  PyObject *__pyx_n_s_Comm_sendrecv;
  PyObject *__pyx_n_s_Comm_ssend;
  PyObject *__pyx_n_s_Commit;
  PyObject *__pyx_n_s_Compare;
  PyObject *__pyx_n_s_Compare_and_swap;
  PyObject *__pyx_n_s_Complete;
  PyObject *__pyx_n_s_Compute_dims;
  PyObject *__pyx_n_s_Connect;
  PyObject *__pyx_n_s_Create;
  PyObject *__pyx_n_u_Create_2;
  PyObject *__pyx_n_s_Create_cart;
  PyObject *__pyx_n_s_Create_contiguous;
  PyObject *__pyx_n_s_Create_darray;
  PyObject *__pyx_n_s_Create_dist_graph;
  PyObject *__pyx_n_s_Create_dist_graph_adjacent;
  PyObject *__pyx_n_s_Create_dup;
  PyObject *__pyx_n_s_Create_dynamic;
  PyObject *__pyx_n_s_Create_env;
  PyObject *__pyx_n_s_Create_errhandler;
  PyObject *__pyx_n_s_Create_f90_complex;
  PyObject *__pyx_n_s_Create_f90_integer;
  PyObject *__pyx_n_s_Create_f90_real;
  PyObject *__pyx_n_s_Create_from_group;
  PyObject *__pyx_n_s_Create_from_groups;
  PyObject *__pyx_n_s_Create_from_session_pset;
  PyObject *__pyx_n_s_Create_graph;
  PyObject *__pyx_n_s_Create_group;
  PyObject *__pyx_n_s_Create_hindexed;
  PyObject *__pyx_n_s_Create_hindexed_block;
  PyObject *__pyx_n_s_Create_hvector;
  PyObject *__pyx_n_s_Create_indexed;
  PyObject *__pyx_n_s_Create_indexed_block;
  PyObject *__pyx_n_s_Create_intercomm;
  PyObject *__pyx_n_s_Create_keyval;
  PyObject *__pyx_n_s_Create_resized;
  PyObject *__pyx_n_s_Create_struct;
  PyObject *__pyx_n_s_Create_subarray;
  PyObject *__pyx_n_s_Create_vector;
  PyObject *__pyx_n_s_DARRAY;
  PyObject *__pyx_n_s_DATATYPE_NULL;
  PyObject *__pyx_n_s_DISPLACEMENT_CURRENT;
  PyObject *__pyx_n_s_DISP_CUR;
  PyObject *__pyx_n_s_DISTRIBUTE_BLOCK;
  PyObject *__pyx_n_s_DISTRIBUTE_CYCLIC;
  PyObject *__pyx_n_s_DISTRIBUTE_DFLT_DARG;
  PyObject *__pyx_n_s_DISTRIBUTE_NONE;
  PyObject *__pyx_n_s_DIST_GRAPH;
  PyObject *__pyx_n_s_DOUBLE;
  PyObject *__pyx_n_s_DOUBLE_COMPLEX;
  PyObject *__pyx_n_s_DOUBLE_INT;
  PyObject *__pyx_n_s_DOUBLE_PRECISION;
  PyObject *__pyx_n_s_DUP;
  PyObject *__pyx_n_s_Datatype;
  PyObject *__pyx_n_s_Datatype_Commit;
  PyObject *__pyx_n_s_Datatype_Create_contiguous;
  PyObject *__pyx_n_s_Datatype_Create_darray;
  PyObject *__pyx_n_s_Datatype_Create_f90_complex;
  PyObject *__pyx_n_s_Datatype_Create_f90_integer;
  PyObject *__pyx_n_s_Datatype_Create_f90_real;
  PyObject *__pyx_n_s_Datatype_Create_hindexed;
  PyObject *__pyx_n_s_Datatype_Create_hindexed_block;
  PyObject *__pyx_n_s_Datatype_Create_hvector;
  PyObject *__pyx_n_s_Datatype_Create_indexed;
  PyObject *__pyx_n_s_Datatype_Create_indexed_block;
  PyObject *__pyx_n_s_Datatype_Create_keyval;
  PyObject *__pyx_n_s_Datatype_Create_resized;
  PyObject *__pyx_n_s_Datatype_Create_struct;
  PyObject *__pyx_n_s_Datatype_Create_subarray;
  PyObject *__pyx_n_s_Datatype_Create_vector;
  PyObject *__pyx_n_s_Datatype_Delete_attr;
  PyObject *__pyx_n_s_Datatype_Dup;
  PyObject *__pyx_n_s_Datatype_Free;
  PyObject *__pyx_n_s_Datatype_Free_keyval;
  PyObject *__pyx_n_s_Datatype_Get_attr;
  PyObject *__pyx_n_s_Datatype_Get_contents;
  PyObject *__pyx_n_s_Datatype_Get_envelope;
  PyObject *__pyx_n_s_Datatype_Get_extent;
  PyObject *__pyx_n_s_Datatype_Get_name;
  PyObject *__pyx_n_s_Datatype_Get_size;
  PyObject *__pyx_n_s_Datatype_Get_true_extent;
  PyObject *__pyx_n_s_Datatype_Get_value_index;
  PyObject *__pyx_n_s_Datatype_Match_size;
  PyObject *__pyx_kp_s_Datatype_None;
  PyObject *__pyx_n_s_Datatype_Pack;
  PyObject *__pyx_n_s_Datatype_Pack_external;
  PyObject *__pyx_n_s_Datatype_Pack_external_size;
  PyObject *__pyx_n_s_Datatype_Pack_size;
  PyObject *__pyx_n_s_Datatype_Set_attr;
  PyObject *__pyx_n_s_Datatype_Set_name;
  PyObject *__pyx_n_s_Datatype_Unpack;
  PyObject *__pyx_n_s_Datatype_Unpack_external;
  PyObject *__pyx_n_s_Datatype___reduce;
  PyObject *__pyx_n_s_Datatype_decode;
  PyObject *__pyx_n_s_Datatype_f2py;
  PyObject *__pyx_n_s_Datatype_free;
  PyObject *__pyx_n_s_Datatype_fromcode;
  PyObject *__pyx_n_s_Datatype_fromhandle;
  PyObject *__pyx_n_s_Datatype_py2f;
  PyObject *__pyx_n_s_Datatype_tocode;
  PyObject *__pyx_n_s_Delete;
  PyObject *__pyx_n_s_Delete_attr;
  PyObject *__pyx_n_s_Detach;
  PyObject *__pyx_n_s_Detach_buffer;
  PyObject *__pyx_n_s_Difference;
  PyObject *__pyx_n_s_Disconnect;
  PyObject *__pyx_n_s_Distgraphcomm;
  PyObject *__pyx_n_s_Distgraphcomm_Get_dist_neighbors;
  PyObject *__pyx_n_s_Distgraphcomm_Get_dist_neighbors_2;
  PyObject *__pyx_n_s_Dup;
  PyObject *__pyx_n_s_Dup_with_info;
  PyObject *__pyx_n_s_ERRHANDLER_NULL;
  PyObject *__pyx_n_s_ERRORS_ABORT;
  PyObject *__pyx_n_s_ERRORS_ARE_FATAL;
  PyObject *__pyx_n_s_ERRORS_RETURN;
  PyObject *__pyx_n_s_ERR_ACCESS;
  PyObject *__pyx_n_s_ERR_AMODE;
  PyObject *__pyx_n_s_ERR_ARG;
  PyObject *__pyx_n_s_ERR_ASSERT;
  PyObject *__pyx_n_s_ERR_BAD_FILE;
  PyObject *__pyx_n_s_ERR_BASE;
  PyObject *__pyx_n_s_ERR_BUFFER;
  PyObject *__pyx_n_s_ERR_COMM;
  PyObject *__pyx_n_s_ERR_CONVERSION;
  PyObject *__pyx_n_s_ERR_COUNT;
  PyObject *__pyx_n_s_ERR_DIMS;
  PyObject *__pyx_n_s_ERR_DISP;
  PyObject *__pyx_n_s_ERR_DUP_DATAREP;
  PyObject *__pyx_n_s_ERR_ERRHANDLER;
  PyObject *__pyx_n_s_ERR_FILE;
  PyObject *__pyx_n_s_ERR_FILE_EXISTS;
  PyObject *__pyx_n_s_ERR_FILE_IN_USE;
  PyObject *__pyx_n_s_ERR_GROUP;
  PyObject *__pyx_n_s_ERR_INFO;
  PyObject *__pyx_n_s_ERR_INFO_KEY;
  PyObject *__pyx_n_s_ERR_INFO_NOKEY;
  PyObject *__pyx_n_s_ERR_INFO_VALUE;
  PyObject *__pyx_n_s_ERR_INTERN;
  PyObject *__pyx_n_s_ERR_IN_STATUS;
  PyObject *__pyx_n_s_ERR_IO;
  PyObject *__pyx_n_s_ERR_KEYVAL;
  PyObject *__pyx_n_s_ERR_LASTCODE;
  PyObject *__pyx_n_s_ERR_LOCKTYPE;
  PyObject *__pyx_n_s_ERR_NAME;
  PyObject *__pyx_n_s_ERR_NOT_SAME;
  PyObject *__pyx_n_s_ERR_NO_MEM;
  PyObject *__pyx_n_s_ERR_NO_SPACE;
  PyObject *__pyx_n_s_ERR_NO_SUCH_FILE;
  PyObject *__pyx_n_s_ERR_OP;
  PyObject *__pyx_n_s_ERR_OTHER;
  PyObject *__pyx_n_s_ERR_PENDING;
  PyObject *__pyx_n_s_ERR_PORT;
  PyObject *__pyx_n_s_ERR_PROC_ABORTED;
  PyObject *__pyx_n_s_ERR_PROC_FAILED;
  PyObject *__pyx_n_s_ERR_PROC_FAILED_PENDING;
  PyObject *__pyx_n_s_ERR_QUOTA;
  PyObject *__pyx_n_s_ERR_RANK;
  PyObject *__pyx_n_s_ERR_READ_ONLY;
  PyObject *__pyx_n_s_ERR_REQUEST;
  PyObject *__pyx_n_s_ERR_REVOKED;
  PyObject *__pyx_n_s_ERR_RMA_ATTACH;
  PyObject *__pyx_n_s_ERR_RMA_CONFLICT;
  PyObject *__pyx_n_s_ERR_RMA_FLAVOR;
  PyObject *__pyx_n_s_ERR_RMA_RANGE;
  PyObject *__pyx_n_s_ERR_RMA_SHARED;
  PyObject *__pyx_n_s_ERR_RMA_SYNC;
  PyObject *__pyx_n_s_ERR_ROOT;
  PyObject *__pyx_n_s_ERR_SERVICE;
  PyObject *__pyx_n_s_ERR_SESSION;
  PyObject *__pyx_n_s_ERR_SIZE;
  PyObject *__pyx_n_s_ERR_SPAWN;
  PyObject *__pyx_n_s_ERR_TAG;
  PyObject *__pyx_n_s_ERR_TOPOLOGY;
  PyObject *__pyx_n_s_ERR_TRUNCATE;
  PyObject *__pyx_n_s_ERR_TYPE;
  PyObject *__pyx_n_s_ERR_UNKNOWN;
  PyObject *__pyx_n_s_ERR_UNSUPPORTED_DATAREP;
  PyObject *__pyx_n_s_ERR_UNSUPPORTED_OPERATION;
  PyObject *__pyx_n_s_ERR_VALUE_TOO_LARGE;
  PyObject *__pyx_n_s_ERR_WIN;
  PyObject *__pyx_n_s_Ellipsis;
  PyObject *__pyx_n_s_Errhandler;
  PyObject *__pyx_n_s_Errhandler_Free;
  PyObject *__pyx_kp_s_Errhandler_None;
  PyObject *__pyx_n_s_Errhandler___reduce;
  PyObject *__pyx_n_s_Errhandler_f2py;
  PyObject *__pyx_n_s_Errhandler_free;
  PyObject *__pyx_n_s_Errhandler_fromhandle;
  PyObject *__pyx_n_s_Errhandler_py2f;
  PyObject *__pyx_n_s_Exception;
  PyObject *__pyx_n_s_Exception_Get_error_class;
  PyObject *__pyx_n_s_Exception_Get_error_code;
  PyObject *__pyx_n_s_Exception_Get_error_string;
  PyObject *__pyx_n_s_Excl;
  PyObject *__pyx_n_s_Exscan;
  PyObject *__pyx_n_s_Exscan_init;
  PyObject *__pyx_n_s_F90_COMPLEX;
  PyObject *__pyx_n_s_F90_INTEGER;
  PyObject *__pyx_n_s_F90_REAL;
  PyObject *__pyx_n_s_FILE_NULL;
  PyObject *__pyx_n_s_FLOAT;
  PyObject *__pyx_n_s_FLOAT_INT;
  PyObject *__pyx_n_s_F_BOOL;
  PyObject *__pyx_n_s_F_COMPLEX;
  PyObject *__pyx_n_s_F_DOUBLE;
  PyObject *__pyx_n_s_F_DOUBLE_COMPLEX;
  PyObject *__pyx_n_s_F_ERROR;
  PyObject *__pyx_n_s_F_FLOAT;
  PyObject *__pyx_n_s_F_FLOAT_COMPLEX;
  PyObject *__pyx_n_s_F_INT;
  PyObject *__pyx_n_s_F_SOURCE;
  PyObject *__pyx_n_s_F_STATUS_SIZE;
  PyObject *__pyx_n_s_F_TAG;
  PyObject *__pyx_n_s_Fence;
  PyObject *__pyx_n_s_Fetch_and_op;
  PyObject *__pyx_n_s_File;
  PyObject *__pyx_n_s_File_Call_errhandler;
  PyObject *__pyx_n_s_File_Close;
  PyObject *__pyx_n_s_File_Create_errhandler;
  PyObject *__pyx_n_s_File_Delete;
  PyObject *__pyx_n_s_File_Get_amode;
  PyObject *__pyx_n_s_File_Get_atomicity;
  PyObject *__pyx_n_s_File_Get_byte_offset;
  PyObject *__pyx_n_s_File_Get_errhandler;
  PyObject *__pyx_n_s_File_Get_group;
  PyObject *__pyx_n_s_File_Get_info;
  PyObject *__pyx_n_s_File_Get_position;
  PyObject *__pyx_n_s_File_Get_position_shared;
  PyObject *__pyx_n_s_File_Get_size;
  PyObject *__pyx_n_s_File_Get_type_extent;
  PyObject *__pyx_n_s_File_Get_view;
  PyObject *__pyx_n_s_File_Iread;
  PyObject *__pyx_n_s_File_Iread_all;
  PyObject *__pyx_n_s_File_Iread_at;
  PyObject *__pyx_n_s_File_Iread_at_all;
  PyObject *__pyx_n_s_File_Iread_shared;
  PyObject *__pyx_n_s_File_Iwrite;
  PyObject *__pyx_n_s_File_Iwrite_all;
  PyObject *__pyx_n_s_File_Iwrite_at;
  PyObject *__pyx_n_s_File_Iwrite_at_all;
  PyObject *__pyx_n_s_File_Iwrite_shared;
  PyObject *__pyx_n_s_File_Open;
  PyObject *__pyx_n_s_File_Preallocate;
  PyObject *__pyx_n_s_File_Read;
  PyObject *__pyx_n_s_File_Read_all;
  PyObject *__pyx_n_s_File_Read_all_begin;
  PyObject *__pyx_n_s_File_Read_all_end;
  PyObject *__pyx_n_s_File_Read_at;
  PyObject *__pyx_n_s_File_Read_at_all;
  PyObject *__pyx_n_s_File_Read_at_all_begin;
  PyObject *__pyx_n_s_File_Read_at_all_end;
  PyObject *__pyx_n_s_File_Read_ordered;
  PyObject *__pyx_n_s_File_Read_ordered_begin;
  PyObject *__pyx_n_s_File_Read_ordered_end;
  PyObject *__pyx_n_s_File_Read_shared;
  PyObject *__pyx_n_s_File_Seek;
  PyObject *__pyx_n_s_File_Seek_shared;
  PyObject *__pyx_n_s_File_Set_atomicity;
  PyObject *__pyx_n_s_File_Set_errhandler;
  PyObject *__pyx_n_s_File_Set_info;
  PyObject *__pyx_n_s_File_Set_size;
  PyObject *__pyx_n_s_File_Set_view;
  PyObject *__pyx_n_s_File_Sync;
  PyObject *__pyx_n_s_File_Write;
  PyObject *__pyx_n_s_File_Write_all;
  PyObject *__pyx_n_s_File_Write_all_begin;
  PyObject *__pyx_n_s_File_Write_all_end;
  PyObject *__pyx_n_s_File_Write_at;
  PyObject *__pyx_n_s_File_Write_at_all;
  PyObject *__pyx_n_s_File_Write_at_all_begin;
  PyObject *__pyx_n_s_File_Write_at_all_end;
  PyObject *__pyx_n_s_File_Write_ordered;
  PyObject *__pyx_n_s_File_Write_ordered_begin;
  PyObject *__pyx_n_s_File_Write_ordered_end;
  PyObject *__pyx_n_s_File_Write_shared;
  PyObject *__pyx_n_s_File___reduce;
  PyObject *__pyx_n_s_File_f2py;
  PyObject *__pyx_n_s_File_free;
  PyObject *__pyx_n_s_File_fromhandle;
  PyObject *__pyx_n_s_File_py2f;
  PyObject *__pyx_n_s_Finalize;
  PyObject *__pyx_n_s_Flush;
  PyObject *__pyx_n_s_Flush_all;
  PyObject *__pyx_n_s_Flush_buffer;
  PyObject *__pyx_n_s_Flush_local;
  PyObject *__pyx_n_s_Flush_local_all;
  PyObject *__pyx_n_s_Free;
  PyObject *__pyx_n_s_Free_keyval;
  PyObject *__pyx_n_s_Free_mem;
  PyObject *__pyx_n_s_GRAPH;
  PyObject *__pyx_n_s_GROUP_EMPTY;
  PyObject *__pyx_n_s_GROUP_NULL;
  PyObject *__pyx_n_s_Gather;
  PyObject *__pyx_n_s_Gather_init;
  PyObject *__pyx_n_s_Gatherv;
  PyObject *__pyx_n_s_Gatherv_init;
  PyObject *__pyx_n_s_Get;
  PyObject *__pyx_n_s_Get_accumulate;
  PyObject *__pyx_n_s_Get_address;
  PyObject *__pyx_n_s_Get_amode;
  PyObject *__pyx_n_s_Get_atomicity;
  PyObject *__pyx_n_s_Get_attr;
  PyObject *__pyx_n_s_Get_byte_offset;
  PyObject *__pyx_n_s_Get_cart_rank;
  PyObject *__pyx_n_s_Get_contents;
  PyObject *__pyx_n_s_Get_coords;
  PyObject *__pyx_n_s_Get_count;
  PyObject *__pyx_n_s_Get_dim;
  PyObject *__pyx_n_s_Get_dims;
  PyObject *__pyx_n_s_Get_dist_neighbors;
  PyObject *__pyx_n_s_Get_dist_neighbors_count;
  PyObject *__pyx_n_s_Get_elements;
  PyObject *__pyx_n_s_Get_envelope;
  PyObject *__pyx_n_s_Get_errhandler;
  PyObject *__pyx_n_s_Get_error;
  PyObject *__pyx_n_s_Get_error_class;
  PyObject *__pyx_n_s_Get_error_code;
  PyObject *__pyx_n_s_Get_error_string;
  PyObject *__pyx_n_s_Get_extent;
  PyObject *__pyx_n_s_Get_failed;
  PyObject *__pyx_n_s_Get_group;
  PyObject *__pyx_n_s_Get_hw_resource_info;
  PyObject *__pyx_n_s_Get_info;
  PyObject *__pyx_n_s_Get_library_version;
  PyObject *__pyx_n_s_Get_name;
  PyObject *__pyx_n_s_Get_neighbors;
  PyObject *__pyx_n_s_Get_neighbors_count;
  PyObject *__pyx_n_s_Get_nkeys;
  PyObject *__pyx_n_s_Get_nth_pset;
  PyObject *__pyx_n_s_Get_nthkey;
  PyObject *__pyx_n_s_Get_num_psets;
  PyObject *__pyx_n_s_Get_parent;
  PyObject *__pyx_n_s_Get_position;
  PyObject *__pyx_n_s_Get_position_shared;
  PyObject *__pyx_n_s_Get_processor_name;
  PyObject *__pyx_n_s_Get_pset_info;
  PyObject *__pyx_n_s_Get_rank;
  PyObject *__pyx_n_s_Get_remote_group;
  PyObject *__pyx_n_s_Get_remote_size;
  PyObject *__pyx_n_s_Get_size;
  PyObject *__pyx_n_s_Get_source;
  PyObject *__pyx_n_s_Get_status;
  PyObject *__pyx_n_s_Get_status_all;
  PyObject *__pyx_n_s_Get_status_any;
  PyObject *__pyx_n_s_Get_status_some;
  PyObject *__pyx_n_s_Get_tag;
  PyObject *__pyx_n_s_Get_topo;
  PyObject *__pyx_n_s_Get_topology;
  PyObject *__pyx_n_s_Get_true_extent;
  PyObject *__pyx_n_s_Get_type_extent;
  PyObject *__pyx_n_s_Get_value_index;
  PyObject *__pyx_n_s_Get_version;
  PyObject *__pyx_n_s_Get_view;
  PyObject *__pyx_n_s_Graph_map;
  PyObject *__pyx_n_s_Graphcomm;
  PyObject *__pyx_n_s_Graphcomm_Get_dims;
  PyObject *__pyx_n_s_Graphcomm_Get_neighbors;
  PyObject *__pyx_n_s_Graphcomm_Get_neighbors_count;
  PyObject *__pyx_n_s_Graphcomm_Get_topo;
  PyObject *__pyx_n_s_Grequest;
  PyObject *__pyx_n_s_Grequest_Complete;
  PyObject *__pyx_n_s_Grequest_Start;
  PyObject *__pyx_n_s_Grequest_complete;
  PyObject *__pyx_n_s_Group;
  PyObject *__pyx_n_s_Group_Compare;
  PyObject *__pyx_n_s_Group_Create_from_session_pset;
  PyObject *__pyx_n_s_Group_Difference;
  PyObject *__pyx_n_s_Group_Dup;
  PyObject *__pyx_n_s_Group_Excl;
  PyObject *__pyx_n_s_Group_Free;
  PyObject *__pyx_n_s_Group_Get_rank;
  PyObject *__pyx_n_s_Group_Get_size;
  PyObject *__pyx_n_s_Group_Incl;
  PyObject *__pyx_n_s_Group_Intersection;
  PyObject *__pyx_kp_s_Group_None;
  PyObject *__pyx_n_s_Group_Range_excl;
  PyObject *__pyx_n_s_Group_Range_incl;
  PyObject *__pyx_n_s_Group_Translate_ranks;
  PyObject *__pyx_n_s_Group_Union;
  PyObject *__pyx_n_s_Group___reduce;
  PyObject *__pyx_n_s_Group_f2py;
  PyObject *__pyx_n_s_Group_free;
  PyObject *__pyx_n_s_Group_fromhandle;
  PyObject *__pyx_n_s_Group_py2f;
  PyObject *__pyx_n_s_HIGHEST_PROTOCOL;
  PyObject *__pyx_n_s_HINDEXED;
  PyObject *__pyx_n_s_HINDEXED_BLOCK;
  PyObject *__pyx_n_s_HVECTOR;
  PyObject *__pyx_kp_s_Hashable_None;
  PyObject *__pyx_n_s_IDENT;
  PyObject *__pyx_n_s_INDEXED;
  PyObject *__pyx_n_s_INDEXED_BLOCK;
  PyObject *__pyx_n_s_INFO_ENV;
  PyObject *__pyx_n_s_INFO_NULL;
  PyObject *__pyx_n_s_INT;
  PyObject *__pyx_n_s_INT16_T;
  PyObject *__pyx_n_s_INT32_T;
  PyObject *__pyx_n_s_INT64_T;
  PyObject *__pyx_n_s_INT8_T;
  PyObject *__pyx_n_s_INTEGER;
  PyObject *__pyx_n_s_INTEGER1;
  PyObject *__pyx_n_s_INTEGER16;
  PyObject *__pyx_n_s_INTEGER2;
  PyObject *__pyx_n_s_INTEGER4;
  PyObject *__pyx_n_s_INTEGER8;
  PyObject *__pyx_n_s_INT_INT;
  PyObject *__pyx_n_s_IN_PLACE;
  PyObject *__pyx_n_s_IO;
  PyObject *__pyx_n_s_Iagree;
  PyObject *__pyx_n_s_Iallgather;
  PyObject *__pyx_n_s_Iallgatherv;
  PyObject *__pyx_n_s_Iallreduce;
  PyObject *__pyx_n_s_Ialltoall;
  PyObject *__pyx_n_s_Ialltoallv;
  PyObject *__pyx_n_s_Ialltoallw;
  PyObject *__pyx_n_s_Ibarrier;
  PyObject *__pyx_n_s_Ibcast;
  PyObject *__pyx_n_s_Ibsend;
  PyObject *__pyx_n_s_Idup;
  PyObject *__pyx_n_s_Idup_with_info;
  PyObject *__pyx_n_s_Iexscan;
  PyObject *__pyx_n_s_Iflush_buffer;
  PyObject *__pyx_n_s_Igather;
  PyObject *__pyx_n_s_Igatherv;
  PyObject *__pyx_n_s_ImportError;
  PyObject *__pyx_n_s_ImportWarning;
  PyObject *__pyx_n_s_Improbe;
  PyObject *__pyx_n_s_InPlaceType;
  PyObject *__pyx_n_s_InPlaceType___reduce;
  PyObject *__pyx_n_s_Incl;
  PyObject *__pyx_n_s_IndexError;
  PyObject *__pyx_n_s_Ineighbor_allgather;
  PyObject *__pyx_n_s_Ineighbor_allgatherv;
  PyObject *__pyx_n_s_Ineighbor_alltoall;
  PyObject *__pyx_n_s_Ineighbor_alltoallv;
  PyObject *__pyx_n_s_Ineighbor_alltoallw;
  PyObject *__pyx_n_s_Info;
  PyObject *__pyx_n_s_Info_Create;
  PyObject *__pyx_n_s_Info_Create_env;
  PyObject *__pyx_n_s_Info_Delete;
  PyObject *__pyx_n_s_Info_Dup;
  PyObject *__pyx_n_s_Info_Free;
  PyObject *__pyx_n_s_Info_Get;
  PyObject *__pyx_n_s_Info_Get_nkeys;
  PyObject *__pyx_n_s_Info_Get_nthkey;
  PyObject *__pyx_kp_s_Info_Mapping_str_str_Iterable_tu;
  PyObject *__pyx_kp_s_Info_Mapping_str_str_Iterable_tu_2;
  PyObject *__pyx_kp_s_Info_None;
  PyObject *__pyx_n_s_Info_Set;
  PyObject *__pyx_n_s_Info___reduce;
  PyObject *__pyx_n_s_Info_clear;
  PyObject *__pyx_n_s_Info_copy;
  PyObject *__pyx_n_s_Info_f2py;
  PyObject *__pyx_n_s_Info_free;
  PyObject *__pyx_n_s_Info_fromhandle;
  PyObject *__pyx_n_s_Info_get;
  PyObject *__pyx_n_s_Info_items;
  PyObject *__pyx_n_s_Info_keys;
  PyObject *__pyx_n_s_Info_pop;
  PyObject *__pyx_n_s_Info_popitem;
  PyObject *__pyx_n_s_Info_py2f;
  PyObject *__pyx_n_s_Info_update;
  PyObject *__pyx_n_s_Info_values;
  PyObject *__pyx_n_s_Init;
  PyObject *__pyx_n_s_Init_thread;
  PyObject *__pyx_n_s_Intercomm;
  PyObject *__pyx_n_s_Intercomm_Create_from_groups;
  PyObject *__pyx_n_s_Intercomm_Get_remote_group;
  PyObject *__pyx_n_s_Intercomm_Get_remote_size;
  PyObject *__pyx_n_s_Intercomm_Merge;
  PyObject *__pyx_n_s_Intersect;
  PyObject *__pyx_n_s_Intersection;
  PyObject *__pyx_n_s_Intracomm;
  PyObject *__pyx_n_s_Intracomm_Accept;
  PyObject *__pyx_n_s_Intracomm_Cart_map;
  PyObject *__pyx_n_s_Intracomm_Connect;
  PyObject *__pyx_n_s_Intracomm_Create_cart;
  PyObject *__pyx_n_s_Intracomm_Create_dist_graph;
  PyObject *__pyx_n_s_Intracomm_Create_dist_graph_adja;
  PyObject *__pyx_n_s_Intracomm_Create_from_group;
  PyObject *__pyx_n_s_Intracomm_Create_graph;
  PyObject *__pyx_n_s_Intracomm_Create_group;
  PyObject *__pyx_n_s_Intracomm_Create_intercomm;
  PyObject *__pyx_n_s_Intracomm_Exscan;
  PyObject *__pyx_n_s_Intracomm_Exscan_init;
  PyObject *__pyx_n_s_Intracomm_Graph_map;
  PyObject *__pyx_n_s_Intracomm_Iexscan;
  PyObject *__pyx_n_s_Intracomm_Iscan;
  PyObject *__pyx_n_s_Intracomm_Scan;
  PyObject *__pyx_n_s_Intracomm_Scan_init;
  PyObject *__pyx_n_s_Intracomm_Spawn;
  PyObject *__pyx_n_s_Intracomm_Spawn_multiple;
  PyObject *__pyx_n_s_Intracomm_exscan;
  PyObject *__pyx_n_s_Intracomm_scan;
  PyObject *__pyx_n_s_Iprobe;
  PyObject *__pyx_n_s_Iread;
  PyObject *__pyx_n_s_Iread_all;
  PyObject *__pyx_n_s_Iread_at;
  PyObject *__pyx_n_s_Iread_at_all;
  PyObject *__pyx_n_s_Iread_shared;
  PyObject *__pyx_n_s_Irecv;
  PyObject *__pyx_n_s_Ireduce;
  PyObject *__pyx_n_s_Ireduce_scatter;
  PyObject *__pyx_n_s_Ireduce_scatter_block;
  PyObject *__pyx_n_s_Irsend;
  PyObject *__pyx_n_s_Is_cancelled;
  PyObject *__pyx_n_s_Is_commutative;
  PyObject *__pyx_n_s_Is_finalized;
  PyObject *__pyx_n_s_Is_initialized;
  PyObject *__pyx_n_s_Is_inter;
  PyObject *__pyx_n_s_Is_intra;
  PyObject *__pyx_n_s_Is_revoked;
  PyObject *__pyx_n_s_Is_thread_main;
  PyObject *__pyx_n_s_Iscan;
  PyObject *__pyx_n_s_Iscatter;
  PyObject *__pyx_n_s_Iscatterv;
  PyObject *__pyx_n_s_Isend;
  PyObject *__pyx_n_s_Isendrecv;
  PyObject *__pyx_n_s_Isendrecv_replace;
  PyObject *__pyx_n_s_Ishrink;
  PyObject *__pyx_n_s_Issend;
  PyObject *__pyx_kp_s_Iterable_Buffer;
  PyObject *__pyx_n_s_Iwrite;
  PyObject *__pyx_n_s_Iwrite_all;
  PyObject *__pyx_n_s_Iwrite_at;
  PyObject *__pyx_n_s_Iwrite_at_all;
  PyObject *__pyx_n_s_Iwrite_shared;
  PyObject *__pyx_n_s_Join;
  PyObject *__pyx_n_s_KEYVAL_INVALID;
  PyObject *__pyx_n_s_KeyError;
  PyObject *__pyx_n_s_LAND;
  PyObject *__pyx_n_s_LASTUSEDCODE;
  PyObject *__pyx_n_s_LOCK_EXCLUSIVE;
  PyObject *__pyx_n_s_LOCK_SHARED;
  PyObject *__pyx_n_s_LOGICAL;
  PyObject *__pyx_n_s_LOGICAL1;
  PyObject *__pyx_n_s_LOGICAL2;
  PyObject *__pyx_n_s_LOGICAL4;
  PyObject *__pyx_n_s_LOGICAL8;
  PyObject *__pyx_n_s_LONG;
  PyObject *__pyx_n_s_LONG_DOUBLE;
  PyObject *__pyx_n_s_LONG_DOUBLE_INT;
  PyObject *__pyx_n_s_LONG_INT;
  PyObject *__pyx_n_s_LONG_LONG;
  PyObject *__pyx_n_s_LOR;
  PyObject *__pyx_n_s_LXOR;
  PyObject *__pyx_kp_s_Literal_True;
  PyObject *__pyx_n_s_Lock;
  PyObject *__pyx_n_s_Lock_all;
  PyObject *__pyx_n_s_Lookup_name;
  PyObject *__pyx_n_s_MAX;
  PyObject *__pyx_n_s_MAXLOC;
  PyObject *__pyx_n_s_MAX_DATAREP_STRING;
  PyObject *__pyx_n_s_MAX_ERROR_STRING;
  PyObject *__pyx_n_s_MAX_INFO_KEY;
  PyObject *__pyx_n_s_MAX_INFO_VAL;
  PyObject *__pyx_n_s_MAX_LIBRARY_VERSION_STRING;
  PyObject *__pyx_n_s_MAX_OBJECT_NAME;
  PyObject *__pyx_n_s_MAX_PORT_NAME;
  PyObject *__pyx_n_s_MAX_PROCESSOR_NAME;
  PyObject *__pyx_n_s_MAX_PSET_NAME_LEN;
  PyObject *__pyx_n_s_MAX_STRINGTAG_LEN;
  PyObject *__pyx_n_s_MESSAGE_NO_PROC;
  PyObject *__pyx_n_s_MESSAGE_NULL;
  PyObject *__pyx_n_s_MIN;
  PyObject *__pyx_n_s_MINLOC;
  PyObject *__pyx_n_s_MODE_APPEND;
  PyObject *__pyx_n_s_MODE_CREATE;
  PyObject *__pyx_n_s_MODE_DELETE_ON_CLOSE;
  PyObject *__pyx_n_s_MODE_EXCL;
  PyObject *__pyx_n_s_MODE_NOCHECK;
  PyObject *__pyx_n_s_MODE_NOPRECEDE;
  PyObject *__pyx_n_s_MODE_NOPUT;
  PyObject *__pyx_n_s_MODE_NOSTORE;
  PyObject *__pyx_n_s_MODE_NOSUCCEED;
  PyObject *__pyx_n_s_MODE_RDONLY;
  PyObject *__pyx_n_s_MODE_RDWR;
  PyObject *__pyx_n_s_MODE_SEQUENTIAL;
  PyObject *__pyx_n_s_MODE_UNIQUE_OPEN;
  PyObject *__pyx_n_s_MODE_WRONLY;
  PyObject *__pyx_n_b_MPI4PY_RC;
  PyObject *__pyx_n_s_MPI_Comm;
  PyObject *__pyx_n_s_MPI_Datatype;
  PyObject *__pyx_n_s_MPI_Errhandler;
  PyObject *__pyx_kp_u_MPI_Exception;
  PyObject *__pyx_n_s_MPI_File;
  PyObject *__pyx_n_s_MPI_Group;
  PyObject *__pyx_n_s_MPI_Info;
  PyObject *__pyx_kp_u_MPI_Init_failed_error_code;
  PyObject *__pyx_kp_u_MPI_Init_thread_failed_error_cod;
  PyObject *__pyx_n_s_MPI_Message;
  PyObject *__pyx_n_s_MPI_Op;
  PyObject *__pyx_n_s_MPI_Request;
  PyObject *__pyx_n_s_MPI_Session;
  PyObject *__pyx_n_s_MPI_Win;
  PyObject *__pyx_n_s_Match_size;
  PyObject *__pyx_n_s_MemoryError;
  PyObject *__pyx_n_s_Merge;
  PyObject *__pyx_n_s_Message;
  PyObject *__pyx_n_s_Message_Iprobe;
  PyObject *__pyx_n_s_Message_Irecv;
  PyObject *__pyx_kp_s_Message_None;
  PyObject *__pyx_kp_s_Message_Passing_Interface;
  PyObject *__pyx_n_s_Message_Probe;
  PyObject *__pyx_n_s_Message_Recv;
  PyObject *__pyx_n_s_Message___reduce;
  PyObject *__pyx_n_s_Message_f2py;
  PyObject *__pyx_n_s_Message_free;
  PyObject *__pyx_n_s_Message_fromhandle;
  PyObject *__pyx_n_s_Message_iprobe;
  PyObject *__pyx_n_s_Message_irecv;
  PyObject *__pyx_n_s_Message_probe;
  PyObject *__pyx_n_s_Message_py2f;
  PyObject *__pyx_n_s_Message_recv;
  PyObject *__pyx_n_s_Mprobe;
  PyObject *__pyx_n_s_NAMED;
  PyObject *__pyx_n_s_NO_OP;
  PyObject *__pyx_n_s_Neighbor_allgather;
  PyObject *__pyx_n_s_Neighbor_allgather_init;
  PyObject *__pyx_n_s_Neighbor_allgatherv;
  PyObject *__pyx_n_s_Neighbor_allgatherv_init;
  PyObject *__pyx_n_s_Neighbor_alltoall;
  PyObject *__pyx_n_s_Neighbor_alltoall_init;
  PyObject *__pyx_n_s_Neighbor_alltoallv;
  PyObject *__pyx_n_s_Neighbor_alltoallv_init;
  PyObject *__pyx_n_s_Neighbor_alltoallw;
  PyObject *__pyx_n_s_Neighbor_alltoallw_init;
  PyObject *__pyx_n_s_NoReturn;
  PyObject *__pyx_n_s_None;
  PyObject *__pyx_n_s_NotImplemented;
  PyObject *__pyx_n_s_NotImplementedError;
  PyObject *__pyx_n_s_OFFSET;
  PyObject *__pyx_n_s_OP_NULL;
  PyObject *__pyx_n_s_ORDER_C;
  PyObject *__pyx_n_s_ORDER_F;
  PyObject *__pyx_n_s_ORDER_FORTRAN;
  PyObject *__pyx_kp_s_Object_is_not_writable;
  PyObject *__pyx_n_s_Op;
  PyObject *__pyx_kp_s_Op_Callable_Any_Any_Any;
  PyObject *__pyx_n_s_Op_Create;
  PyObject *__pyx_n_s_Op_Free;
  PyObject *__pyx_n_s_Op_Is_commutative;
  PyObject *__pyx_n_s_Op_Reduce_local;
  PyObject *__pyx_n_s_Op___reduce;
  PyObject *__pyx_n_s_Op_f2py;
  PyObject *__pyx_n_s_Op_free;
  PyObject *__pyx_n_s_Op_fromhandle;
  PyObject *__pyx_n_s_Op_py2f;
  PyObject *__pyx_n_s_Open;
  PyObject *__pyx_n_s_Open_port;
  PyObject *__pyx_n_s_OverflowError;
  PyObject *__pyx_n_s_PACKED;
  PyObject *__pyx_n_s_PROC_NULL;
  PyObject *__pyx_n_s_PROD;
  PyObject *__pyx_n_s_Pack;
  PyObject *__pyx_n_s_Pack_external;
  PyObject *__pyx_n_s_Pack_external_size;
  PyObject *__pyx_n_s_Pack_size;
  PyObject *__pyx_n_s_Parrived;
  PyObject *__pyx_kp_s_PathLike_AnyStr_str_bytes;
  PyObject *__pyx_n_s_Pcontrol;
  PyObject *__pyx_n_s_Pickle;
  PyObject *__pyx_n_s_Pickle_dumps;
  PyObject *__pyx_n_s_Pickle_dumps_oob;
  PyObject *__pyx_n_s_Pickle_loads;
  PyObject *__pyx_n_s_Pickle_loads_oob;
  PyObject *__pyx_n_s_Post;
  PyObject *__pyx_n_s_Pready;
  PyObject *__pyx_n_s_Pready_list;
  PyObject *__pyx_n_s_Pready_range;
  PyObject *__pyx_n_s_Preallocate;
  PyObject *__pyx_n_s_Precv_init;
  PyObject *__pyx_n_s_Prequest;
  PyObject *__pyx_n_s_Prequest_Parrived;
  PyObject *__pyx_n_s_Prequest_Pready;
  PyObject *__pyx_n_s_Prequest_Pready_list;
  PyObject *__pyx_n_s_Prequest_Pready_range;
  PyObject *__pyx_n_s_Prequest_Start;
  PyObject *__pyx_n_s_Prequest_Startall;
  PyObject *__pyx_n_s_Probe;
  PyObject *__pyx_n_s_Psend_init;
  PyObject *__pyx_n_s_Publish_name;
  PyObject *__pyx_n_s_Put;
  PyObject *__pyx_n_s_Query_thread;
  PyObject *__pyx_n_s_REAL;
  PyObject *__pyx_n_s_REAL16;
  PyObject *__pyx_n_s_REAL2;
  PyObject *__pyx_n_s_REAL4;
  PyObject *__pyx_n_s_REAL8;
  PyObject *__pyx_n_s_REPLACE;
  PyObject *__pyx_n_s_REQUEST_NULL;
  PyObject *__pyx_n_s_RESIZED;
  PyObject *__pyx_n_s_RLock;
  PyObject *__pyx_n_s_ROOT;
  PyObject *__pyx_n_s_Raccumulate;
  PyObject *__pyx_n_s_Range_excl;
  PyObject *__pyx_n_s_Range_incl;
  PyObject *__pyx_n_s_Read;
  PyObject *__pyx_n_s_Read_all;
  PyObject *__pyx_n_s_Read_all_begin;
  PyObject *__pyx_n_s_Read_all_end;
  PyObject *__pyx_n_s_Read_at;
  PyObject *__pyx_n_s_Read_at_all;
  PyObject *__pyx_n_s_Read_at_all_begin;
  PyObject *__pyx_n_s_Read_at_all_end;
  PyObject *__pyx_n_s_Read_ordered;
  PyObject *__pyx_n_s_Read_ordered_begin;
  PyObject *__pyx_n_s_Read_ordered_end;
  PyObject *__pyx_n_s_Read_shared;
  PyObject *__pyx_n_s_Recv;
  PyObject *__pyx_n_s_Recv_init;
  PyObject *__pyx_n_s_Reduce;
  PyObject *__pyx_n_s_Reduce_init;
  PyObject *__pyx_n_s_Reduce_local;
  PyObject *__pyx_n_s_Reduce_scatter;
  PyObject *__pyx_n_s_Reduce_scatter_block;
  PyObject *__pyx_n_s_Reduce_scatter_block_init;
  PyObject *__pyx_n_s_Reduce_scatter_init;
  PyObject *__pyx_n_s_Register_datarep;
  PyObject *__pyx_n_s_Remove_error_class;
  PyObject *__pyx_n_s_Remove_error_code;
  PyObject *__pyx_n_s_Remove_error_string;
  PyObject *__pyx_n_s_Request;
  PyObject *__pyx_n_s_Request_Cancel;
  PyObject *__pyx_n_s_Request_Free;
  PyObject *__pyx_n_s_Request_Get_status;
  PyObject *__pyx_n_s_Request_Get_status_all;
  PyObject *__pyx_n_s_Request_Get_status_any;
  PyObject *__pyx_n_s_Request_Get_status_some;
  PyObject *__pyx_n_s_Request_Test;
  PyObject *__pyx_n_s_Request_Testall;
  PyObject *__pyx_n_s_Request_Testany;
  PyObject *__pyx_n_s_Request_Testsome;
  PyObject *__pyx_n_s_Request_Wait;
  PyObject *__pyx_n_s_Request_Waitall;
  PyObject *__pyx_n_s_Request_Waitany;
  PyObject *__pyx_n_s_Request_Waitsome;
  PyObject *__pyx_n_s_Request___reduce;
  PyObject *__pyx_n_s_Request_cancel;
  PyObject *__pyx_n_s_Request_f2py;
  PyObject *__pyx_n_s_Request_free;
  PyObject *__pyx_n_s_Request_fromhandle;
  PyObject *__pyx_n_s_Request_get_status;
  PyObject *__pyx_n_s_Request_get_status_all;
  PyObject *__pyx_n_s_Request_get_status_any;
  PyObject *__pyx_n_s_Request_get_status_some;
  PyObject *__pyx_n_s_Request_py2f;
  PyObject *__pyx_n_s_Request_test;
  PyObject *__pyx_n_s_Request_testall;
  PyObject *__pyx_n_s_Request_testany;
  PyObject *__pyx_n_s_Request_testsome;
  PyObject *__pyx_n_s_Request_wait;
  PyObject *__pyx_n_s_Request_waitall;
  PyObject *__pyx_n_s_Request_waitany;
  PyObject *__pyx_n_s_Request_waitsome;
  PyObject *__pyx_n_s_Resized;
  PyObject *__pyx_n_s_Revoke;
  PyObject *__pyx_n_s_Rget;
  PyObject *__pyx_n_s_Rget_accumulate;
  PyObject *__pyx_n_s_Rput;
  PyObject *__pyx_n_s_Rsend;
  PyObject *__pyx_n_s_Rsend_init;
  PyObject *__pyx_n_s_RuntimeWarning;
  PyObject *__pyx_n_s_SEEK_CUR;
  PyObject *__pyx_n_s_SEEK_END;
  PyObject *__pyx_n_s_SEEK_SET;
  PyObject *__pyx_n_s_SESSION_NULL;
  PyObject *__pyx_n_s_SHORT;
  PyObject *__pyx_n_s_SHORT_INT;
  PyObject *__pyx_n_s_SIGNED_CHAR;
  PyObject *__pyx_n_s_SIGNED_INT;
  PyObject *__pyx_n_s_SIGNED_LONG;
  PyObject *__pyx_n_s_SIGNED_LONG_LONG;
  PyObject *__pyx_n_s_SIGNED_SHORT;
  PyObject *__pyx_n_s_SIMILAR;
  PyObject *__pyx_n_s_SINT16_T;
  PyObject *__pyx_n_s_SINT32_T;
  PyObject *__pyx_n_s_SINT64_T;
  PyObject *__pyx_n_s_SINT8_T;
  PyObject *__pyx_n_s_STRUCT;
  PyObject *__pyx_n_s_SUBARRAY;
  PyObject *__pyx_n_s_SUBVERSION;
  PyObject *__pyx_n_s_SUCCESS;
  PyObject *__pyx_n_s_SUM;
  PyObject *__pyx_n_s_Scan;
  PyObject *__pyx_n_s_Scan_init;
  PyObject *__pyx_n_s_Scatter;
  PyObject *__pyx_n_s_Scatter_init;
  PyObject *__pyx_n_s_Scatterv;
  PyObject *__pyx_n_s_Scatterv_init;
  PyObject *__pyx_n_s_Seek;
  PyObject *__pyx_n_s_Seek_shared;
  PyObject *__pyx_n_s_Self;
  PyObject *__pyx_kp_s_Self_None;
  PyObject *__pyx_n_s_Send;
  PyObject *__pyx_n_s_Send_init;
  PyObject *__pyx_n_s_Sendrecv;
  PyObject *__pyx_n_s_Sendrecv_replace;
  PyObject *__pyx_kp_s_Sequence_Any;
  PyObject *__pyx_kp_s_Sequence_Any_None;
  PyObject *__pyx_kp_s_Sequence_Datatype;
  PyObject *__pyx_kp_s_Sequence_Info_Info;
  PyObject *__pyx_kp_s_Sequence_Request;
  PyObject *__pyx_kp_s_Sequence_Sequence_str_None;
  PyObject *__pyx_kp_s_Sequence_bool;
  PyObject *__pyx_kp_s_Sequence_bool_None;
  PyObject *__pyx_kp_s_Sequence_int;
  PyObject *__pyx_kp_s_Sequence_int_None;
  PyObject *__pyx_kp_s_Sequence_str;
  PyObject *__pyx_kp_s_Sequence_str_None;
  PyObject *__pyx_kp_s_Sequence_tuple_int_int_int;
  PyObject *__pyx_n_s_Session;
  PyObject *__pyx_n_s_Session_Attach_buffer;
  PyObject *__pyx_n_s_Session_Call_errhandler;
  PyObject *__pyx_n_s_Session_Create_errhandler;
  PyObject *__pyx_n_s_Session_Create_group;
  PyObject *__pyx_n_s_Session_Detach_buffer;
  PyObject *__pyx_n_s_Session_Finalize;
  PyObject *__pyx_n_s_Session_Flush_buffer;
  PyObject *__pyx_n_s_Session_Get_errhandler;
  PyObject *__pyx_n_s_Session_Get_info;
  PyObject *__pyx_n_s_Session_Get_nth_pset;
  PyObject *__pyx_n_s_Session_Get_num_psets;
  PyObject *__pyx_n_s_Session_Get_pset_info;
  PyObject *__pyx_n_s_Session_Iflush_buffer;
  PyObject *__pyx_n_s_Session_Init;
  PyObject *__pyx_n_s_Session_Set_errhandler;
  PyObject *__pyx_n_s_Session___reduce;
  PyObject *__pyx_n_s_Session_f2py;
  PyObject *__pyx_n_s_Session_free;
  PyObject *__pyx_n_s_Session_fromhandle;
  PyObject *__pyx_n_s_Session_py2f;
  PyObject *__pyx_n_s_Set;
  PyObject *__pyx_n_s_Set_atomicity;
  PyObject *__pyx_n_s_Set_attr;
  PyObject *__pyx_n_s_Set_cancelled;
  PyObject *__pyx_n_s_Set_elements;
  PyObject *__pyx_n_s_Set_errhandler;
  PyObject *__pyx_n_s_Set_error;
  PyObject *__pyx_n_s_Set_info;
  PyObject *__pyx_n_s_Set_name;
  PyObject *__pyx_n_s_Set_size;
  PyObject *__pyx_n_s_Set_source;
  PyObject *__pyx_n_s_Set_tag;
  PyObject *__pyx_n_s_Set_view;
  PyObject *__pyx_n_s_Shared_query;
  PyObject *__pyx_n_s_Shift;
  PyObject *__pyx_n_s_Shrink;
  PyObject *__pyx_n_s_Spawn;
  PyObject *__pyx_n_s_Spawn_multiple;
  PyObject *__pyx_n_s_Split;
  PyObject *__pyx_n_s_Split_type;
  PyObject *__pyx_n_s_Ssend;
  PyObject *__pyx_n_s_Ssend_init;
  PyObject *__pyx_n_s_Start;
  PyObject *__pyx_n_s_Startall;
  PyObject *__pyx_n_s_Status;
  PyObject *__pyx_n_s_Status_Get_count;
  PyObject *__pyx_n_s_Status_Get_elements;
  PyObject *__pyx_n_s_Status_Get_error;
  PyObject *__pyx_n_s_Status_Get_source;
  PyObject *__pyx_n_s_Status_Get_tag;
  PyObject *__pyx_n_s_Status_Is_cancelled;
  PyObject *__pyx_kp_s_Status_None;
  PyObject *__pyx_n_s_Status_Set_cancelled;
  PyObject *__pyx_n_s_Status_Set_elements;
  PyObject *__pyx_n_s_Status_Set_error;
  PyObject *__pyx_n_s_Status_Set_source;
  PyObject *__pyx_n_s_Status_Set_tag;
  PyObject *__pyx_n_s_Status___getstate;
  PyObject *__pyx_n_s_Status___reduce;
  PyObject *__pyx_n_s_Status___setstate;
  PyObject *__pyx_n_s_Status_f2py;
  PyObject *__pyx_n_s_Status_py2f;
  PyObject *__pyx_n_s_Sub;
  PyObject *__pyx_n_s_Sync;
  PyObject *__pyx_n_s_TAG_UB;
  PyObject *__pyx_n_s_THREAD_FUNNELED;
  PyObject *__pyx_n_s_THREAD_MULTIPLE;
  PyObject *__pyx_n_s_THREAD_SERIALIZED;
  PyObject *__pyx_n_s_THREAD_SINGLE;
  PyObject *__pyx_n_s_TWOINT;
  PyObject *__pyx_n_s_TYPECLASS_COMPLEX;
  PyObject *__pyx_n_s_TYPECLASS_INTEGER;
  PyObject *__pyx_n_s_TYPECLASS_REAL;
  PyObject *__pyx_kp_s_TargetSpec_None;
  PyObject *__pyx_n_s_Test;
  PyObject *__pyx_n_s_Testall;
  PyObject *__pyx_n_s_Testany;
  PyObject *__pyx_n_s_Testsome;
  PyObject *__pyx_n_s_Topocomm;
  PyObject *__pyx_n_s_Topocomm_Ineighbor_allgather;
  PyObject *__pyx_n_s_Topocomm_Ineighbor_allgatherv;
  PyObject *__pyx_n_s_Topocomm_Ineighbor_alltoall;
  PyObject *__pyx_n_s_Topocomm_Ineighbor_alltoallv;
  PyObject *__pyx_n_s_Topocomm_Ineighbor_alltoallw;
  PyObject *__pyx_n_s_Topocomm_Neighbor_allgather;
  PyObject *__pyx_n_s_Topocomm_Neighbor_allgather_init;
  PyObject *__pyx_n_s_Topocomm_Neighbor_allgatherv;
  PyObject *__pyx_n_s_Topocomm_Neighbor_allgatherv_ini;
  PyObject *__pyx_n_s_Topocomm_Neighbor_alltoall;
  PyObject *__pyx_n_s_Topocomm_Neighbor_alltoall_init;
  PyObject *__pyx_n_s_Topocomm_Neighbor_alltoallv;
  PyObject *__pyx_n_s_Topocomm_Neighbor_alltoallv_init;
  PyObject *__pyx_n_s_Topocomm_Neighbor_alltoallw;
  PyObject *__pyx_n_s_Topocomm_Neighbor_alltoallw_init;
  PyObject *__pyx_n_s_Topocomm_neighbor_allgather;
  PyObject *__pyx_n_s_Topocomm_neighbor_alltoall;
  PyObject *__pyx_n_s_Translate_ranks;
  PyObject *__pyx_n_s_TypeError;
  PyObject *__pyx_n_s_UINT16_T;
  PyObject *__pyx_n_s_UINT32_T;
  PyObject *__pyx_n_s_UINT64_T;
  PyObject *__pyx_n_s_UINT8_T;
  PyObject *__pyx_n_s_UNDEFINED;
  PyObject *__pyx_n_s_UNEQUAL;
  PyObject *__pyx_n_s_UNIVERSE_SIZE;
  PyObject *__pyx_n_s_UNSIGNED;
  PyObject *__pyx_n_s_UNSIGNED_CHAR;
  PyObject *__pyx_n_s_UNSIGNED_INT;
  PyObject *__pyx_n_s_UNSIGNED_LONG;
  PyObject *__pyx_n_s_UNSIGNED_LONG_LONG;
  PyObject *__pyx_n_s_UNSIGNED_SHORT;
  PyObject *__pyx_n_s_UNWEIGHTED;
  PyObject *__pyx_n_s_Union;
  PyObject *__pyx_n_s_Unlock;
  PyObject *__pyx_n_s_Unlock_all;
  PyObject *__pyx_n_s_Unpack;
  PyObject *__pyx_n_s_Unpack_external;
  PyObject *__pyx_n_s_Unpublish_name;
  PyObject *__pyx_n_s_UserWarning;
  PyObject *__pyx_n_s_V;
  PyObject *__pyx_n_u_V;
  PyObject *__pyx_n_s_VALUE_INDEX;
  PyObject *__pyx_n_s_VECTOR;
  PyObject *__pyx_n_s_VERSION;
  PyObject *__pyx_n_s_ValueError;
  PyObject *__pyx_n_s_WCHAR;
  PyObject *__pyx_n_s_WEIGHTS_EMPTY;
  PyObject *__pyx_n_s_WIN_BASE;
  PyObject *__pyx_n_s_WIN_CREATE_FLAVOR;
  PyObject *__pyx_n_s_WIN_DISP_UNIT;
  PyObject *__pyx_n_s_WIN_FLAVOR;
  PyObject *__pyx_n_s_WIN_FLAVOR_ALLOCATE;
  PyObject *__pyx_n_s_WIN_FLAVOR_CREATE;
  PyObject *__pyx_n_s_WIN_FLAVOR_DYNAMIC;
  PyObject *__pyx_n_s_WIN_FLAVOR_SHARED;
  PyObject *__pyx_n_s_WIN_MODEL;
  PyObject *__pyx_n_s_WIN_NULL;
  PyObject *__pyx_n_s_WIN_SEPARATE;
  PyObject *__pyx_n_s_WIN_SIZE;
  PyObject *__pyx_n_s_WIN_UNIFIED;
  PyObject *__pyx_n_s_WTIME_IS_GLOBAL;
  PyObject *__pyx_n_s_Wait;
  PyObject *__pyx_n_s_Waitall;
  PyObject *__pyx_n_s_Waitany;
  PyObject *__pyx_n_s_Waitsome;
  PyObject *__pyx_n_s_Win;
  PyObject *__pyx_n_s_Win_Accumulate;
  PyObject *__pyx_n_s_Win_Allocate;
  PyObject *__pyx_n_s_Win_Allocate_shared;
  PyObject *__pyx_n_s_Win_Attach;
  PyObject *__pyx_n_s_Win_Call_errhandler;
  PyObject *__pyx_n_s_Win_Compare_and_swap;
  PyObject *__pyx_n_s_Win_Complete;
  PyObject *__pyx_n_s_Win_Create;
  PyObject *__pyx_n_s_Win_Create_dynamic;
  PyObject *__pyx_n_s_Win_Create_errhandler;
  PyObject *__pyx_n_s_Win_Create_keyval;
  PyObject *__pyx_n_s_Win_Delete_attr;
  PyObject *__pyx_n_s_Win_Detach;
  PyObject *__pyx_n_s_Win_Fence;
  PyObject *__pyx_n_s_Win_Fetch_and_op;
  PyObject *__pyx_n_s_Win_Flush;
  PyObject *__pyx_n_s_Win_Flush_all;
  PyObject *__pyx_n_s_Win_Flush_local;
  PyObject *__pyx_n_s_Win_Flush_local_all;
  PyObject *__pyx_n_s_Win_Free;
  PyObject *__pyx_n_s_Win_Free_keyval;
  PyObject *__pyx_n_s_Win_Get;
  PyObject *__pyx_n_s_Win_Get_accumulate;
  PyObject *__pyx_n_s_Win_Get_attr;
  PyObject *__pyx_n_s_Win_Get_errhandler;
  PyObject *__pyx_n_s_Win_Get_group;
  PyObject *__pyx_n_s_Win_Get_info;
  PyObject *__pyx_n_s_Win_Get_name;
  PyObject *__pyx_n_s_Win_Lock;
  PyObject *__pyx_n_s_Win_Lock_all;
  PyObject *__pyx_n_s_Win_Post;
  PyObject *__pyx_n_s_Win_Put;
  PyObject *__pyx_n_s_Win_Raccumulate;
  PyObject *__pyx_n_s_Win_Rget;
  PyObject *__pyx_n_s_Win_Rget_accumulate;
  PyObject *__pyx_n_s_Win_Rput;
  PyObject *__pyx_n_s_Win_Set_attr;
  PyObject *__pyx_n_s_Win_Set_errhandler;
  PyObject *__pyx_n_s_Win_Set_info;
  PyObject *__pyx_n_s_Win_Set_name;
  PyObject *__pyx_n_s_Win_Shared_query;
  PyObject *__pyx_n_s_Win_Start;
  PyObject *__pyx_n_s_Win_Sync;
  PyObject *__pyx_n_s_Win_Test;
  PyObject *__pyx_n_s_Win_Unlock;
  PyObject *__pyx_n_s_Win_Unlock_all;
  PyObject *__pyx_n_s_Win_Wait;
  PyObject *__pyx_n_s_Win___reduce;
  PyObject *__pyx_n_s_Win_f2py;
  PyObject *__pyx_n_s_Win_free;
  PyObject *__pyx_n_s_Win_fromhandle;
  PyObject *__pyx_n_s_Win_py2f;
  PyObject *__pyx_n_s_Win_tomemory;
  PyObject *__pyx_n_s_Write;
  PyObject *__pyx_n_s_Write_all;
  PyObject *__pyx_n_s_Write_all_begin;
  PyObject *__pyx_n_s_Write_all_end;
  PyObject *__pyx_n_s_Write_at;
  PyObject *__pyx_n_s_Write_at_all;
  PyObject *__pyx_n_s_Write_at_all_begin;
  PyObject *__pyx_n_s_Write_at_all_end;
  PyObject *__pyx_n_s_Write_ordered;
  PyObject *__pyx_n_s_Write_ordered_begin;
  PyObject *__pyx_n_s_Write_ordered_end;
  PyObject *__pyx_n_s_Write_shared;
  PyObject *__pyx_n_s_Wtick;
  PyObject *__pyx_n_s_Wtime;
  PyObject *__pyx_kp_u__17;
  PyObject *__pyx_kp_u__2;
  PyObject *__pyx_n_s__205;
  PyObject *__pyx_kp_u__3;
  PyObject *__pyx_kp_u__30;
  PyObject *__pyx_kp_u__57;
  PyObject *__pyx_n_s__809;
  PyObject *__pyx_n_s_a;
  PyObject *__pyx_n_s_abort;
  PyObject *__pyx_n_s_addr;
  PyObject *__pyx_n_s_addr1;
  PyObject *__pyx_n_s_addr2;
  PyObject *__pyx_n_s_address;
  PyObject *__pyx_n_s_addresses;
  PyObject *__pyx_n_s_addressof;
  PyObject *__pyx_n_s_align;
  PyObject *__pyx_n_s_allgather;
  PyObject *__pyx_n_s_allocate;
  PyObject *__pyx_n_s_allocate_lock;
  PyObject *__pyx_n_s_allreduce;
  PyObject *__pyx_n_s_alltoall;
  PyObject *__pyx_n_s_amode;
  PyObject *__pyx_kp_u_and_counts;
  PyObject *__pyx_kp_u_and_receive_count;
  PyObject *__pyx_kp_u_and_sum_counts;
  PyObject *__pyx_n_s_append;
  PyObject *__pyx_n_s_arg;
  PyObject *__pyx_n_s_argc;
  PyObject *__pyx_n_s_args;
  PyObject *__pyx_n_s_argv;
  PyObject *__pyx_n_s_argvs;
  PyObject *__pyx_n_s_array_of_partitions;
  PyObject *__pyx_n_s_assertion;
  PyObject *__pyx_n_s_asyncio_coroutines;
  PyObject *__pyx_n_s_attrval;
  PyObject *__pyx_n_s_barrier;
  PyObject *__pyx_n_s_base;
  PyObject *__pyx_n_s_baseptr;
  PyObject *__pyx_n_s_bcast;
  PyObject *__pyx_kp_s_bcast_p2p;
  PyObject *__pyx_n_s_blocklength;
  PyObject *__pyx_n_s_blocklengths;
  PyObject *__pyx_n_s_bool;
  PyObject *__pyx_n_s_bsend;
  PyObject *__pyx_n_s_buf;
  PyObject *__pyx_n_s_buffer;
  PyObject *__pyx_n_s_buffer_allocate;
  PyObject *__pyx_n_s_buffer_callback;
  PyObject *__pyx_n_s_buffer_cast;
  PyObject *__pyx_n_s_buffer_fromaddress;
  PyObject *__pyx_n_s_buffer_frombuffer;
  PyObject *__pyx_kp_s_buffer_is_not_CPU_accessible;
  PyObject *__pyx_kp_s_buffer_is_read_only;
  PyObject *__pyx_n_s_buffer_release;
  PyObject *__pyx_n_s_buffer_tobytes;
  PyObject *__pyx_n_s_buffer_toreadonly;
  PyObject *__pyx_n_s_buffers;
  PyObject *__pyx_n_s_buflen;
  PyObject *__pyx_n_s_bytes;
  PyObject *__pyx_n_s_c;
  PyObject *__pyx_n_s_c_num_to_ack;
  PyObject *__pyx_n_s_c_status;
  PyObject *__pyx_n_s_call;
  PyObject *__pyx_n_s_cancel;
  PyObject *__pyx_n_s_cancel_fn;
  PyObject *__pyx_n_s_cancelled;
  PyObject *__pyx_kp_s_cannot_call_user_defined_operati;
  PyObject *__pyx_kp_s_cannot_create_instance;
  PyObject *__pyx_kp_s_cannot_create_too_many_user_defi;
  PyObject *__pyx_kp_s_cannot_create_too_many_user_defi_2;
  PyObject *__pyx_kp_u_cannot_map;
  PyObject *__pyx_kp_u_cannot_map_code;
  PyObject *__pyx_kp_s_cannot_map_to_character_code_or;
  PyObject *__pyx_kp_s_cannot_pickle_user_defined_reduc;
  PyObject *__pyx_kp_u_cannot_serialize;
  PyObject *__pyx_n_s_cast;
  PyObject *__pyx_n_s_cdatarep;
  PyObject *__pyx_n_s_cerrhdl;
  PyObject *__pyx_n_s_cetype;
  PyObject *__pyx_n_s_cfilename;
  PyObject *__pyx_n_s_cftype;
  PyObject *__pyx_n_s_cinfo;
  PyObject *__pyx_n_s_ckey;
  PyObject *__pyx_n_s_class_getitem;
  PyObject *__pyx_n_s_clear;
  PyObject *__pyx_n_s_cline_in_traceback;
  PyObject *__pyx_n_s_cls;
  PyObject *__pyx_n_s_cmd;
  PyObject *__pyx_n_s_cmds;
  PyObject *__pyx_n_s_cmessage;
  PyObject *__pyx_n_s_cname;
  PyObject *__pyx_n_s_code;
  PyObject *__pyx_n_s_color;
  PyObject *__pyx_n_s_combiner;
  PyObject *__pyx_n_s_comm;
  PyObject *__pyx_n_s_comm_lock;
  PyObject *__pyx_n_s_comm_lock_table;
  PyObject *__pyx_n_s_command;
  PyObject *__pyx_kp_s_commctx_inter;
  PyObject *__pyx_n_s_commctx_inter_2;
  PyObject *__pyx_kp_s_commctx_intra;
  PyObject *__pyx_n_s_commctx_intra_2;
  PyObject *__pyx_n_s_commute;
  PyObject *__pyx_n_s_compare;
  PyObject *__pyx_kp_u_compare_expecting_a_single_eleme;
  PyObject *__pyx_n_s_complete;
  PyObject *__pyx_n_s_coords;
  PyObject *__pyx_n_s_copy;
  PyObject *__pyx_n_s_copy_2;
  PyObject *__pyx_n_s_copy_fn;
  PyObject *__pyx_n_s_copyreg;
  PyObject *__pyx_n_s_count;
  PyObject *__pyx_n_s_counts;
  PyObject *__pyx_n_s_cportname;
  PyObject *__pyx_n_s_csrvcname;
  PyObject *__pyx_n_s_cstring;
  PyObject *__pyx_n_s_cstringtag;
  PyObject *__pyx_n_s_cuda_array_interface;
  PyObject *__pyx_kp_u_cuda_array_interface___buffer;
  PyObject *__pyx_kp_u_cuda_array_interface___buffer_2;
  PyObject *__pyx_kp_s_cuda_array_interface___cannot;
  PyObject *__pyx_kp_u_cuda_array_interface___typestr;
  PyObject *__pyx_n_s_cvalue;
  PyObject *__pyx_n_s_d;
  PyObject *__pyx_n_s_dargs;
  PyObject *__pyx_n_s_data;
  PyObject *__pyx_n_s_datarep;
  PyObject *__pyx_n_s_datatype;
  PyObject *__pyx_n_s_datatype_create;
  PyObject *__pyx_n_s_datatype_decode;
  PyObject *__pyx_n_s_datatypes;
  PyObject *__pyx_n_s_decode;
  PyObject *__pyx_n_s_default;
  PyObject *__pyx_n_s_degrees;
  PyObject *__pyx_n_s_del;
  PyObject *__pyx_n_s_delete_fn;
  PyObject *__pyx_n_s_descr;
  PyObject *__pyx_n_s_dest;
  PyObject *__pyx_n_s_destinations;
  PyObject *__pyx_n_s_destweights;
  PyObject *__pyx_n_s_dict;
  PyObject *__pyx_kp_s_dict_Hashable_Lock;
  PyObject *__pyx_kp_s_dict_str_Any;
  PyObject *__pyx_kp_s_dict_str_Any_None;
  PyObject *__pyx_kp_s_dict_str_int;
  PyObject *__pyx_n_s_dim;
  PyObject *__pyx_n_s_dims;
  PyObject *__pyx_n_s_direction;
  PyObject *__pyx_kp_u_disable;
  PyObject *__pyx_n_s_disp;
  PyObject *__pyx_n_s_disp_unit;
  PyObject *__pyx_n_s_displacements;
  PyObject *__pyx_n_s_distribs;
  PyObject *__pyx_n_s_dlpack;
  PyObject *__pyx_kp_s_dlpack_buffer_is_not_contiguous;
  PyObject *__pyx_n_s_dlpack_device;
  PyObject *__pyx_kp_s_dlpack_invalid_capsule_object;
  PyObject *__pyx_kp_s_dlpack_missing_support;
  PyObject *__pyx_kp_s_dlpack_number_of_dimensions_is_n;
  PyObject *__pyx_kp_s_dlpack_shape_is_NULL;
  PyObject *__pyx_kp_s_dlpack_shape_item_is_negative;
  PyObject *__pyx_kp_s_dlpack_strides_item_is_negative;
  PyObject *__pyx_kp_s_dlpack_unexpected_version;
  PyObject *__pyx_n_s_doc;
  PyObject *__pyx_n_s_dst;
  PyObject *__pyx_n_s_dtype;
  PyObject *__pyx_n_s_dummy_thread;
  PyObject *__pyx_n_s_dumps;
  PyObject *__pyx_n_s_dumps_oob;
  PyObject *__pyx_n_s_dupcomm;
  PyObject *__pyx_n_s_dw;
  PyObject *__pyx_n_s_edges;
  PyObject *__pyx_n_s_elements;
  PyObject *__pyx_kp_s_empty_weights_but_nonzero_degree;
  PyObject *__pyx_kp_u_enable;
  PyObject *__pyx_n_s_enter;
  PyObject *__pyx_n_s_errcodes;
  PyObject *__pyx_n_s_errhandler;
  PyObject *__pyx_n_s_errhandler_fn;
  PyObject *__pyx_n_s_error;
  PyObject *__pyx_kp_u_error_code;
  PyObject *__pyx_n_s_errorclass;
  PyObject *__pyx_n_s_errorcode;
  PyObject *__pyx_n_s_etype;
  PyObject *__pyx_n_s_ex;
  PyObject *__pyx_n_s_exception;
  PyObject *__pyx_n_s_exit;
  PyObject *__pyx_kp_u_expecting;
  PyObject *__pyx_kp_s_expecting_a_Cartesian_communicat;
  PyObject *__pyx_kp_s_expecting_a_distributed_graph_co;
  PyObject *__pyx_kp_s_expecting_a_general_graph_commun;
  PyObject *__pyx_kp_s_expecting_a_sequence_of_strings;
  PyObject *__pyx_kp_s_expecting_a_topology_communicato;
  PyObject *__pyx_kp_s_expecting_an_MPI_instance;
  PyObject *__pyx_kp_s_expecting_an_MPI_type_or_instanc;
  PyObject *__pyx_kp_s_expecting_an_intercommunicator;
  PyObject *__pyx_kp_s_expecting_an_intracommunicator;
  PyObject *__pyx_kp_u_expecting_buffer_with_format;
  PyObject *__pyx_kp_s_expecting_non_NULL_address;
  PyObject *__pyx_kp_s_expecting_non_negative_buffer_le;
  PyObject *__pyx_kp_s_expecting_non_negative_size;
  PyObject *__pyx_n_s_exscan;
  PyObject *__pyx_n_s_extent;
  PyObject *__pyx_n_s_extent_fn;
  PyObject *__pyx_n_s_f2py;
  PyObject *__pyx_n_s_f_status;
  PyObject *__pyx_n_s_fatal;
  PyObject *__pyx_n_s_fd;
  PyObject *__pyx_n_s_file;
  PyObject *__pyx_n_s_filename;
  PyObject *__pyx_n_s_filetype;
  PyObject *__pyx_n_s_flag;
  PyObject *__pyx_kp_s_flag_expecting_int_buffer_of_len;
  PyObject *__pyx_n_s_flag_len;
  PyObject *__pyx_n_s_flag_ptr;
  PyObject *__pyx_n_s_flags;
  PyObject *__pyx_n_s_float;
  PyObject *__pyx_n_s_fn;
  PyObject *__pyx_n_s_fn_c;
  PyObject *__pyx_n_s_fn_i;
  PyObject *__pyx_n_s_format;
  PyObject *__pyx_kp_u_format_string;
  PyObject *__pyx_n_s_free;
  PyObject *__pyx_n_s_free_fn;
  PyObject *__pyx_n_s_fromaddress;
  PyObject *__pyx_n_s_frombuffer;
  PyObject *__pyx_n_s_fromcode;
  PyObject *__pyx_n_s_fromhandle;
  PyObject *__pyx_n_s_ftype;
  PyObject *__pyx_n_s_function;
  PyObject *__pyx_n_s_funneled;
  PyObject *__pyx_n_s_gather;
  PyObject *__pyx_kp_u_gc;
  PyObject *__pyx_n_s_get;
  PyObject *__pyx_n_s_get_buffer_callback_locals_buffe;
  PyObject *__pyx_n_s_get_status;
  PyObject *__pyx_n_s_get_status_all;
  PyObject *__pyx_n_s_get_status_any;
  PyObject *__pyx_n_s_get_status_some;
  PyObject *__pyx_n_s_get_vendor;
  PyObject *__pyx_n_s_getstate;
  PyObject *__pyx_kp_u_got;
  PyObject *__pyx_n_s_grequest;
  PyObject *__pyx_n_s_group;
  PyObject *__pyx_n_s_group1;
  PyObject *__pyx_n_s_group2;
  PyObject *__pyx_n_s_gsizes;
  PyObject *__pyx_n_s_handle;
  PyObject *__pyx_n_s_handleof;
  PyObject *__pyx_n_s_high;
  PyObject *__pyx_n_s_i;
  PyObject *__pyx_n_s_iblen;
  PyObject *__pyx_n_s_ibptr;
  PyObject *__pyx_n_s_ibsend;
  PyObject *__pyx_n_s_icoords;
  PyObject *__pyx_n_s_icount;
  PyObject *__pyx_n_s_idargs;
  PyObject *__pyx_n_s_idegree;
  PyObject *__pyx_n_s_idest;
  PyObject *__pyx_n_s_idestweight;
  PyObject *__pyx_n_s_idims;
  PyObject *__pyx_n_s_idisp;
  PyObject *__pyx_n_s_idistribs;
  PyObject *__pyx_n_s_iedges;
  PyObject *__pyx_n_s_ierr;
  PyObject *__pyx_n_s_ierrcodes;
  PyObject *__pyx_n_s_igsizes;
  PyObject *__pyx_n_s_iindex;
  PyObject *__pyx_n_s_imaxprocs;
  PyObject *__pyx_n_s_import;
  PyObject *__pyx_n_s_improbe;
  PyObject *__pyx_n_s_inbuf;
  PyObject *__pyx_n_s_indegree;
  PyObject *__pyx_n_s_index;
  PyObject *__pyx_kp_s_index_must_be_integer_or_slice;
  PyObject *__pyx_kp_s_index_out_of_range;
  PyObject *__pyx_n_s_indices;
  PyObject *__pyx_n_s_ineighbors;
  PyObject *__pyx_n_s_info;
  PyObject *__pyx_n_s_infos;
  PyObject *__pyx_n_s_init;
  PyObject *__pyx_n_s_inoutbuf;
  PyObject *__pyx_n_s_inoutedges;
  PyObject *__pyx_n_s_insert;
  PyObject *__pyx_kp_u_instance;
  PyObject *__pyx_n_s_int;
  PyObject *__pyx_kp_s_int_Any_None;
  PyObject *__pyx_kp_s_int_None;
  PyObject *__pyx_kp_s_int_Sequence_int;
  PyObject *__pyx_n_s_integers;
  PyObject *__pyx_n_s_iperiods;
  PyObject *__pyx_n_s_iprobe;
  PyObject *__pyx_n_s_ipsizes;
  PyObject *__pyx_n_s_iranks;
  PyObject *__pyx_n_s_iranks1;
  PyObject *__pyx_n_s_iranks2;
  PyObject *__pyx_n_s_irecv;
  PyObject *__pyx_n_s_iremdims;
  PyObject *__pyx_n_s_is_coroutine;
  PyObject *__pyx_kp_u_is_not_a_multiple_of_datatype_e;
  PyObject *__pyx_kp_u_is_not_a_multiple_of_required_n;
  PyObject *__pyx_kp_u_isenabled;
  PyObject *__pyx_n_s_isend;
  PyObject *__pyx_n_s_isizes;
  PyObject *__pyx_n_s_isource;
  PyObject *__pyx_n_s_isourceweight;
  PyObject *__pyx_n_s_issend;
  PyObject *__pyx_n_s_istarts;
  PyObject *__pyx_n_s_isubsizes;
  PyObject *__pyx_n_s_items;
  PyObject *__pyx_kp_u_items_got;
  PyObject *__pyx_kp_u_itemsize;
  PyObject *__pyx_n_s_iweight;
  PyObject *__pyx_n_s_j;
  PyObject *__pyx_n_s_join;
  PyObject *__pyx_n_s_k;
  PyObject *__pyx_n_s_key;
  PyObject *__pyx_n_s_keys;
  PyObject *__pyx_n_s_keyval;
  PyObject *__pyx_n_s_keyval_registry;
  PyObject *__pyx_n_s_keyval_save;
  PyObject *__pyx_n_s_kwargs;
  PyObject *__pyx_n_s_kwds;
  PyObject *__pyx_kp_u_lb;
  PyObject *__pyx_n_s_lb_2;
  PyObject *__pyx_n_s_length;
  PyObject *__pyx_kp_s_length_count_does_not_fit_in_MPI;
  PyObject *__pyx_kp_s_length_size_larger_than_INT_MAX;
  PyObject *__pyx_n_s_level;
  PyObject *__pyx_kp_s_list_Any;
  PyObject *__pyx_kp_s_list_Any_None;
  PyObject *__pyx_kp_s_list_Prequest;
  PyObject *__pyx_kp_s_list_Status_None;
  PyObject *__pyx_kp_s_list_int;
  PyObject *__pyx_kp_s_list_int_None;
  PyObject *__pyx_kp_s_list_int_tuple_int;
  PyObject *__pyx_kp_s_list_list_int_None;
  PyObject *__pyx_kp_s_list_str;
  PyObject *__pyx_kp_s_list_tuple_str_str;
  PyObject *__pyx_n_s_loads;
  PyObject *__pyx_n_s_loads_oob;
  PyObject *__pyx_n_s_local_group;
  PyObject *__pyx_n_s_local_leader;
  PyObject *__pyx_n_s_localcomm;
  PyObject *__pyx_n_s_location;
  PyObject *__pyx_n_s_lock_type;
  PyObject *__pyx_n_s_low_group;
  PyObject *__pyx_n_s_lower;
  PyObject *__pyx_n_s_m;
  PyObject *__pyx_n_s_main;
  PyObject *__pyx_n_s_major;
  PyObject *__pyx_n_s_mark;
  PyObject *__pyx_n_s_mask;
  PyObject *__pyx_n_s_max_version;
  PyObject *__pyx_n_s_maxindegree;
  PyObject *__pyx_n_s_maxoutdegree;
  PyObject *__pyx_n_s_maxprocs;
  PyObject *__pyx_n_s_mem;
  PyObject *__pyx_n_s_memory;
  PyObject *__pyx_kp_s_memory_allocation_size_too_large;
  PyObject *__pyx_kp_s_memory_allocation_with_negative;
  PyObject *__pyx_n_s_memoryview;
  PyObject *__pyx_n_s_message;
  PyObject *__pyx_kp_s_message_BOTTOM_requires_counts;
  PyObject *__pyx_kp_s_message_BOTTOM_requires_displs;
  PyObject *__pyx_kp_u_message_buffer_is_None_but_count;
  PyObject *__pyx_kp_u_message_cannot_handle_displaceme;
  PyObject *__pyx_kp_u_message_cannot_handle_displaceme_2;
  PyObject *__pyx_kp_u_message_cannot_infer_count_buffe;
  PyObject *__pyx_kp_u_message_cannot_infer_count_datat;
  PyObject *__pyx_kp_u_message_cannot_infer_count_datat_2;
  PyObject *__pyx_kp_u_message_cannot_infer_count_numbe;
  PyObject *__pyx_kp_u_message_displacement;
  PyObject *__pyx_kp_s_message_expecting_2_to_4_items;
  PyObject *__pyx_kp_s_message_expecting_buffer_or_list;
  PyObject *__pyx_kp_u_message_negative_count;
  PyObject *__pyx_kp_u_message_negative_displacement;
  PyObject *__pyx_n_s_micro;
  PyObject *__pyx_n_s_minor;
  PyObject *__pyx_kp_u_mismatch_in_origin_and_compare_M;
  PyObject *__pyx_kp_u_mismatch_in_origin_and_result_MP;
  PyObject *__pyx_kp_u_mismatch_in_receive_count;
  PyObject *__pyx_kp_u_mismatch_in_send_and_receive_MPI;
  PyObject *__pyx_kp_u_mismatch_in_send_count;
  PyObject *__pyx_kp_s_missing_CUDA_array_interface;
  PyObject *__pyx_n_s_module;
  PyObject *__pyx_n_s_mpi4py_MPI;
  PyObject *__pyx_n_s_mprobe;
  PyObject *__pyx_n_s_msg;
  PyObject *__pyx_n_s_multiple;
  PyObject *__pyx_n_s_n;
  PyObject *__pyx_n_s_na;
  PyObject *__pyx_n_s_name;
  PyObject *__pyx_n_s_name_2;
  PyObject *__pyx_n_s_native;
  PyObject *__pyx_n_s_nbytes;
  PyObject *__pyx_n_s_nc;
  PyObject *__pyx_n_s_nd;
  PyObject *__pyx_n_s_ndim;
  PyObject *__pyx_n_s_ndims;
  PyObject *__pyx_n_s_ne;
  PyObject *__pyx_n_s_nedges;
  PyObject *__pyx_n_s_neighbor_allgather;
  PyObject *__pyx_n_s_neighbor_alltoall;
  PyObject *__pyx_n_s_neighbors;
  PyObject *__pyx_n_s_newobj;
  PyObject *__pyx_n_s_ni;
  PyObject *__pyx_n_s_nindex;
  PyObject *__pyx_n_s_nkeys;
  PyObject *__pyx_n_s_nlen;
  PyObject *__pyx_n_s_nneighbors;
  PyObject *__pyx_n_s_nnodes;
  PyObject *__pyx_n_s_no;
  PyObject *__pyx_n_s_nopython;
  PyObject *__pyx_n_s_np;
  PyObject *__pyx_n_s_num_acked;
  PyObject *__pyx_n_s_num_psets;
  PyObject *__pyx_n_s_num_to_ack;
  PyObject *__pyx_n_s_nv;
  PyObject *__pyx_n_s_ob;
  PyObject *__pyx_n_s_obj;
  PyObject *__pyx_n_s_oblen;
  PyObject *__pyx_n_s_obptr;
  PyObject *__pyx_n_s_ocount;
  PyObject *__pyx_n_s_offset;
  PyObject *__pyx_n_s_op;
  PyObject *__pyx_n_s_order;
  PyObject *__pyx_kp_s_org_mpi4py;
  PyObject *__pyx_n_s_origin;
  PyObject *__pyx_kp_u_origin_expecting_a_single_elemen;
  PyObject *__pyx_kp_u_out_of_bounds_number_of_datatyp;
  PyObject *__pyx_n_s_outbuf;
  PyObject *__pyx_n_s_outdegree;
  PyObject *__pyx_n_s_p;
  PyObject *__pyx_n_s_params;
  PyObject *__pyx_n_s_partition;
  PyObject *__pyx_n_s_partition_high;
  PyObject *__pyx_n_s_partition_low;
  PyObject *__pyx_n_s_partitions;
  PyObject *__pyx_n_s_peer_comm;
  PyObject *__pyx_n_s_periods;
  PyObject *__pyx_n_s_pickle;
  PyObject *__pyx_n_s_pickle5;
  PyObject *__pyx_n_s_pop;
  PyObject *__pyx_n_s_popitem;
  PyObject *__pyx_n_s_port_name;
  PyObject *__pyx_n_s_position;
  PyObject *__pyx_n_s_probe;
  PyObject *__pyx_n_s_protocol;
  PyObject *__pyx_n_s_provided;
  PyObject *__pyx_n_s_pset_name;
  PyObject *__pyx_n_s_psizes;
  PyObject *__pyx_n_s_ptr;
  PyObject *__pyx_n_s_ptype;
  PyObject *__pyx_n_s_py2f;
  PyObject *__pyx_n_s_pyx_vtable;
  PyObject *__pyx_n_s_q;
  PyObject *__pyx_n_s_query_fn;
  PyObject *__pyx_n_s_r;
  PyObject *__pyx_n_s_range;
  PyObject *__pyx_n_s_ranges;
  PyObject *__pyx_n_s_rank;
  PyObject *__pyx_n_s_ranks;
  PyObject *__pyx_n_s_ranks2;
  PyObject *__pyx_n_s_rc;
  PyObject *__pyx_n_s_rd;
  PyObject *__pyx_n_s_read_fn;
  PyObject *__pyx_n_s_readonly;
  PyObject *__pyx_n_s_recv;
  PyObject *__pyx_n_s_recvbuf;
  PyObject *__pyx_n_s_recvcounts;
  PyObject *__pyx_n_s_recvtag;
  PyObject *__pyx_n_s_reduce;
  PyObject *__pyx_n_s_reduce_2;
  PyObject *__pyx_n_s_release;
  PyObject *__pyx_n_s_remain_dims;
  PyObject *__pyx_n_s_remote_group;
  PyObject *__pyx_n_s_remote_leader;
  PyObject *__pyx_n_s_reorder;
  PyObject *__pyx_n_s_request;
  PyObject *__pyx_n_s_requests;
  PyObject *__pyx_n_s_required;
  PyObject *__pyx_n_s_result;
  PyObject *__pyx_kp_u_result_expecting_a_single_elemen;
  PyObject *__pyx_n_s_resultlen;
  PyObject *__pyx_n_s_return;
  PyObject *__pyx_n_s_rmsg;
  PyObject *__pyx_n_s_root;
  PyObject *__pyx_n_s_rs;
  PyObject *__pyx_n_s_s;
  PyObject *__pyx_n_s_scan;
  PyObject *__pyx_n_s_scatter;
  PyObject *__pyx_n_s_self;
  PyObject *__pyx_n_s_send;
  PyObject *__pyx_n_s_sendbuf;
  PyObject *__pyx_n_s_sendobj;
  PyObject *__pyx_n_s_sendrecv;
  PyObject *__pyx_n_s_sendtag;
  PyObject *__pyx_n_s_serialized;
  PyObject *__pyx_n_s_service_name;
  PyObject *__pyx_n_s_session;
  PyObject *__pyx_n_s_set_abort_status;
  PyObject *__pyx_n_s_setstate;
  PyObject *__pyx_n_s_shape;
  PyObject *__pyx_n_s_single;
  PyObject *__pyx_kp_u_size;
  PyObject *__pyx_n_s_size_2;
  PyObject *__pyx_n_s_sizeof;
  PyObject *__pyx_n_s_sizes;
  PyObject *__pyx_kp_s_slice_length_does_not_match_buff;
  PyObject *__pyx_kp_s_slice_with_step_not_supported;
  PyObject *__pyx_n_s_smsg;
  PyObject *__pyx_n_s_source;
  PyObject *__pyx_n_s_sources;
  PyObject *__pyx_n_s_sourceweights;
  PyObject *__pyx_n_s_split_type;
  PyObject *__pyx_n_s_src;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_File_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Group_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Info_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Message_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Op_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Request_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Session_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Status_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_Win_pyx;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_atimport_pxi;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_bufaimpl_pxi;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi;
  PyObject *__pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi;
  PyObject *__pyx_n_s_ssend;
  PyObject *__pyx_n_s_starts;
  PyObject *__pyx_n_s_state;
  PyObject *__pyx_n_s_staticmethod;
  PyObject *__pyx_n_s_status;
  PyObject *__pyx_n_s_statuses;
  PyObject *__pyx_n_s_statusp;
  PyObject *__pyx_n_s_str;
  PyObject *__pyx_kp_s_str_None;
  PyObject *__pyx_kp_s_str_tuple_Any;
  PyObject *__pyx_n_s_stream;
  PyObject *__pyx_n_s_stride;
  PyObject *__pyx_n_s_strides;
  PyObject *__pyx_kp_u_strides_2;
  PyObject *__pyx_n_s_string;
  PyObject *__pyx_n_s_stringtag;
  PyObject *__pyx_n_s_subsizes;
  PyObject *__pyx_n_s_subversion;
  PyObject *__pyx_n_s_sw;
  PyObject *__pyx_n_s_t;
  PyObject *__pyx_n_s_tag;
  PyObject *__pyx_n_s_target;
  PyObject *__pyx_n_s_target_disp;
  PyObject *__pyx_kp_s_target_expecting_3_items_at_most;
  PyObject *__pyx_kp_s_target_expecting_integral_or_lis;
  PyObject *__pyx_n_s_target_rank;
  PyObject *__pyx_n_s_tc;
  PyObject *__pyx_n_s_test;
  PyObject *__pyx_n_s_testall;
  PyObject *__pyx_n_s_testany;
  PyObject *__pyx_n_s_testsome;
  PyObject *__pyx_n_s_thread;
  PyObject *__pyx_n_s_threshold;
  PyObject *__pyx_kp_u_to_MPI_datatype;
  PyObject *__pyx_n_s_tobytes;
  PyObject *__pyx_n_s_tocode;
  PyObject *__pyx_n_s_tomemory;
  PyObject *__pyx_n_s_topo;
  PyObject *__pyx_n_s_toreadonly;
  PyObject *__pyx_kp_s_tuple_Any_None;
  PyObject *__pyx_kp_s_tuple_Any_tuple_Any_dict_str_Any;
  PyObject *__pyx_kp_s_tuple_Comm_Request;
  PyObject *__pyx_kp_s_tuple_Datatype_str_dict_str_Any;
  PyObject *__pyx_kp_s_tuple_Intercomm_int_Intracomm_bo;
  PyObject *__pyx_kp_s_tuple_Intracomm_int;
  PyObject *__pyx_kp_s_tuple_Self_Request;
  PyObject *__pyx_kp_s_tuple_bool_Any_None;
  PyObject *__pyx_kp_s_tuple_bool_list_Any_None;
  PyObject *__pyx_kp_s_tuple_buffer_int;
  PyObject *__pyx_kp_s_tuple_bytes_list_buffer;
  PyObject *__pyx_kp_s_tuple_int_Any;
  PyObject *__pyx_kp_s_tuple_int_Datatype_Datatype_str;
  PyObject *__pyx_kp_s_tuple_int_bool;
  PyObject *__pyx_kp_s_tuple_int_bool_Any_None;
  PyObject *__pyx_kp_s_tuple_int_int;
  PyObject *__pyx_kp_s_tuple_int_int_int_int_int;
  PyObject *__pyx_kp_s_tuple_list_int_None_list_Any_Non;
  PyObject *__pyx_kp_s_tuple_list_int_list_int;
  PyObject *__pyx_kp_s_tuple_list_int_list_int_list_int;
  PyObject *__pyx_kp_s_tuple_list_int_list_int_list_int_2;
  PyObject *__pyx_kp_s_tuple_list_int_list_int_tuple_li;
  PyObject *__pyx_kp_s_tuple_str_str;
  PyObject *__pyx_kp_s_tuple_str_tuple_int_int_int;
  PyObject *__pyx_n_s_typealign;
  PyObject *__pyx_n_s_typeclass;
  PyObject *__pyx_n_s_typecode;
  PyObject *__pyx_n_s_typedict;
  PyObject *__pyx_n_s_typedict_c;
  PyObject *__pyx_n_s_typedict_f;
  PyObject *__pyx_n_s_typestr;
  PyObject *__pyx_kp_u_ub;
  PyObject *__pyx_kp_u_unknown_combiner_value;
  PyObject *__pyx_kp_u_unorderable_type;
  PyObject *__pyx_n_s_unused;
  PyObject *__pyx_n_s_unused1;
  PyObject *__pyx_n_s_unused2;
  PyObject *__pyx_n_s_unused3;
  PyObject *__pyx_n_s_unused4;
  PyObject *__pyx_n_s_unused5;
  PyObject *__pyx_n_s_update;
  PyObject *__pyx_n_s_upper;
  PyObject *__pyx_n_s_val;
  PyObject *__pyx_n_s_value;
  PyObject *__pyx_n_s_values;
  PyObject *__pyx_n_s_version;
  PyObject *__pyx_n_s_wait;
  PyObject *__pyx_n_s_waitall;
  PyObject *__pyx_n_s_waitany;
  PyObject *__pyx_n_s_waitsome;
  PyObject *__pyx_n_s_weighted;
  PyObject *__pyx_n_s_weights;
  PyObject *__pyx_n_s_whence;
  PyObject *__pyx_n_s_win;
  PyObject *__pyx_kp_u_with_non_native_byte_order;
  PyObject *__pyx_kp_u_with_unrecognized_byte_order;
  PyObject *__pyx_n_s_wr;
  PyObject *__pyx_n_s_write_fn;
  PyObject *__pyx_n_s_x;
  PyObject *__pyx_n_s_xs;
  PyObject *__pyx_n_s_y;
  PyObject *__pyx_n_s_yes;
  PyObject *__pyx_int_0;
  PyObject *__pyx_int_1;
  PyObject *__pyx_int_2;
  PyObject *__pyx_int_32768;
  PyObject *__pyx_int_262144;
  PyObject *__pyx_int_neg_1;
  int __pyx_k__65;
  int __pyx_k__66;
  struct PyMPIDatatypeObject *__pyx_k__68;
  int __pyx_k__69;
  int __pyx_k__70;
  int __pyx_k__71;
  int __pyx_k__72;
  int __pyx_k__73;
  int __pyx_k__74;
  int __pyx_k__75;
  int __pyx_k__76;
  struct PyMPIInfoObject *__pyx_k__77;
  struct PyMPIInfoObject *__pyx_k__78;
  struct PyMPIInfoObject *__pyx_k__79;
  struct PyMPIInfoObject *__pyx_k__80;
  int __pyx_k__82;
  int __pyx_k__83;
  int __pyx_k__84;
  int __pyx_k__85;
  int __pyx_k__86;
  int __pyx_k__87;
  int __pyx_k__88;
  int __pyx_k__89;
  int __pyx_k__90;
  int __pyx_k__91;
  int __pyx_k__92;
  int __pyx_k__93;
  int __pyx_k__94;
  int __pyx_k__95;
  int __pyx_k__96;
  int __pyx_k__97;
  int __pyx_k__98;
  int __pyx_k__99;
  int __pyx_k__100;
  int __pyx_k__101;
  int __pyx_k__102;
  int __pyx_k__103;
  struct PyMPIInfoObject *__pyx_k__104;
  struct PyMPIInfoObject *__pyx_k__105;
  int __pyx_k__106;
  int __pyx_k__107;
  struct PyMPIOpObject *__pyx_k__108;
  struct PyMPIOpObject *__pyx_k__109;
  struct PyMPIOpObject *__pyx_k__110;
  struct PyMPIOpObject *__pyx_k__111;
  struct PyMPIOpObject *__pyx_k__112;
  struct PyMPIOpObject *__pyx_k__113;
  struct PyMPIOpObject *__pyx_k__114;
  struct PyMPIOpObject *__pyx_k__115;
  struct PyMPIInfoObject *__pyx_k__116;
  struct PyMPIInfoObject *__pyx_k__117;
  struct PyMPIInfoObject *__pyx_k__118;
  struct PyMPIInfoObject *__pyx_k__119;
  struct PyMPIInfoObject *__pyx_k__120;
  struct PyMPIInfoObject *__pyx_k__121;
  struct PyMPIInfoObject *__pyx_k__122;
  struct PyMPIInfoObject *__pyx_k__123;
  struct PyMPIInfoObject *__pyx_k__124;
  struct PyMPIInfoObject *__pyx_k__125;
  struct PyMPIInfoObject *__pyx_k__126;
  struct PyMPIOpObject *__pyx_k__127;
  struct PyMPIInfoObject *__pyx_k__128;
  struct PyMPIOpObject *__pyx_k__129;
  struct PyMPIInfoObject *__pyx_k__130;
  struct PyMPIOpObject *__pyx_k__131;
  struct PyMPIInfoObject *__pyx_k__132;
  struct PyMPIOpObject *__pyx_k__133;
  struct PyMPIInfoObject *__pyx_k__134;
  int __pyx_k__135;
  int __pyx_k__136;
  int __pyx_k__137;
  int __pyx_k__138;
  int __pyx_k__139;
  int __pyx_k__140;
  int __pyx_k__141;
  int __pyx_k__142;
  int __pyx_k__143;
  int __pyx_k__144;
  int __pyx_k__145;
  int __pyx_k__146;
  int __pyx_k__147;
  int __pyx_k__148;
  PyObject *__pyx_k__149;
  PyObject *__pyx_k__150;
  struct PyMPIInfoObject *__pyx_k__152;
  struct PyMPIInfoObject *__pyx_k__153;
  struct PyMPIInfoObject *__pyx_k__154;
  struct PyMPIOpObject *__pyx_k__155;
  struct PyMPIOpObject *__pyx_k__156;
  struct PyMPIOpObject *__pyx_k__157;
  struct PyMPIOpObject *__pyx_k__158;
  struct PyMPIOpObject *__pyx_k__159;
  struct PyMPIInfoObject *__pyx_k__160;
  struct PyMPIOpObject *__pyx_k__161;
  struct PyMPIInfoObject *__pyx_k__162;
  PyObject *__pyx_k__163;
  PyObject *__pyx_k__164;
  struct PyMPIInfoObject *__pyx_k__165;
  PyObject *__pyx_k__167;
  struct PyMPIInfoObject *__pyx_k__168;
  struct PyMPIInfoObject *__pyx_k__169;
  struct PyMPIInfoObject *__pyx_k__172;
  struct PyMPIInfoObject *__pyx_k__173;
  struct PyMPIInfoObject *__pyx_k__174;
  struct PyMPIInfoObject *__pyx_k__175;
  struct PyMPIInfoObject *__pyx_k__176;
  struct PyMPIInfoObject *__pyx_k__181;
  struct PyMPIInfoObject *__pyx_k__182;
  struct PyMPIIntracommObject *__pyx_k__183;
  struct PyMPIInfoObject *__pyx_k__184;
  struct PyMPIIntracommObject *__pyx_k__185;
  struct PyMPIInfoObject *__pyx_k__186;
  struct PyMPIIntracommObject *__pyx_k__187;
  struct PyMPIInfoObject *__pyx_k__188;
  struct PyMPIIntracommObject *__pyx_k__189;
  struct PyMPIOpObject *__pyx_k__190;
  struct PyMPIOpObject *__pyx_k__191;
  struct PyMPIOpObject *__pyx_k__192;
  struct PyMPIOpObject *__pyx_k__193;
  struct PyMPIOpObject *__pyx_k__194;
  int __pyx_k__195;
  struct PyMPIInfoObject *__pyx_k__196;
  int __pyx_k__197;
  struct PyMPIInfoObject *__pyx_k__198;
  struct PyMPIDatatypeObject *__pyx_k__199;
  struct PyMPIInfoObject *__pyx_k__200;
  int __pyx_k__201;
  int __pyx_k__202;
  PyObject *__pyx_tuple__4;
  PyObject *__pyx_tuple__5;
  PyObject *__pyx_tuple__6;
  PyObject *__pyx_tuple__7;
  PyObject *__pyx_tuple__8;
  PyObject *__pyx_tuple__9;
  PyObject *__pyx_tuple__10;
  PyObject *__pyx_tuple__11;
  PyObject *__pyx_tuple__12;
  PyObject *__pyx_tuple__13;
  PyObject *__pyx_tuple__14;
  PyObject *__pyx_tuple__15;
  PyObject *__pyx_tuple__16;
  PyObject *__pyx_tuple__18;
  PyObject *__pyx_tuple__19;
  PyObject *__pyx_tuple__20;
  PyObject *__pyx_tuple__21;
  PyObject *__pyx_tuple__22;
  PyObject *__pyx_tuple__23;
  PyObject *__pyx_tuple__24;
  PyObject *__pyx_tuple__25;
  PyObject *__pyx_tuple__26;
  PyObject *__pyx_tuple__27;
  PyObject *__pyx_tuple__28;
  PyObject *__pyx_tuple__29;
  PyObject *__pyx_tuple__31;
  PyObject *__pyx_tuple__32;
  PyObject *__pyx_tuple__33;
  PyObject *__pyx_tuple__34;
  PyObject *__pyx_tuple__35;
  PyObject *__pyx_tuple__36;
  PyObject *__pyx_tuple__37;
  PyObject *__pyx_tuple__38;
  PyObject *__pyx_tuple__39;
  PyObject *__pyx_tuple__40;
  PyObject *__pyx_tuple__41;
  PyObject *__pyx_tuple__42;
  PyObject *__pyx_tuple__43;
  PyObject *__pyx_tuple__44;
  PyObject *__pyx_tuple__45;
  PyObject *__pyx_tuple__46;
  PyObject *__pyx_tuple__47;
  PyObject *__pyx_tuple__48;
  PyObject *__pyx_tuple__49;
  PyObject *__pyx_tuple__50;
  PyObject *__pyx_tuple__51;
  PyObject *__pyx_tuple__52;
  PyObject *__pyx_tuple__53;
  PyObject *__pyx_tuple__54;
  PyObject *__pyx_tuple__55;
  PyObject *__pyx_tuple__56;
  PyObject *__pyx_tuple__58;
  PyObject *__pyx_tuple__59;
  PyObject *__pyx_tuple__60;
  PyObject *__pyx_tuple__61;
  PyObject *__pyx_tuple__62;
  PyObject *__pyx_tuple__64;
  PyObject *__pyx_tuple__67;
  PyObject *__pyx_tuple__81;
  PyObject *__pyx_slice__166;
  PyObject *__pyx_slice__171;
  PyObject *__pyx_tuple__151;
  PyObject *__pyx_tuple__170;
  PyObject *__pyx_tuple__177;
  PyObject *__pyx_tuple__178;
  PyObject *__pyx_tuple__179;
  PyObject *__pyx_tuple__180;
  PyObject *__pyx_tuple__203;
  PyObject *__pyx_tuple__204;
  PyObject *__pyx_tuple__206;
  PyObject *__pyx_tuple__208;
  PyObject *__pyx_tuple__210;
  PyObject *__pyx_tuple__211;
  PyObject *__pyx_tuple__213;
  PyObject *__pyx_tuple__215;
  PyObject *__pyx_tuple__217;
  PyObject *__pyx_tuple__218;
  PyObject *__pyx_tuple__220;
  PyObject *__pyx_tuple__221;
  PyObject *__pyx_tuple__223;
  PyObject *__pyx_tuple__226;
  PyObject *__pyx_tuple__228;
  PyObject *__pyx_tuple__232;
  PyObject *__pyx_tuple__234;
  PyObject *__pyx_tuple__237;
  PyObject *__pyx_tuple__239;
  PyObject *__pyx_tuple__241;
  PyObject *__pyx_tuple__243;
  PyObject *__pyx_tuple__245;
  PyObject *__pyx_tuple__247;
  PyObject *__pyx_tuple__250;
  PyObject *__pyx_tuple__252;
  PyObject *__pyx_tuple__254;
  PyObject *__pyx_tuple__257;
  PyObject *__pyx_tuple__259;
  PyObject *__pyx_tuple__261;
  PyObject *__pyx_tuple__264;
  PyObject *__pyx_tuple__267;
  PyObject *__pyx_tuple__269;
  PyObject *__pyx_tuple__271;
  PyObject *__pyx_tuple__273;
  PyObject *__pyx_tuple__275;
  PyObject *__pyx_tuple__278;
  PyObject *__pyx_tuple__281;
  PyObject *__pyx_tuple__284;
  PyObject *__pyx_tuple__286;
  PyObject *__pyx_tuple__288;
  PyObject *__pyx_tuple__290;
  PyObject *__pyx_tuple__292;
  PyObject *__pyx_tuple__294;
  PyObject *__pyx_tuple__297;
  PyObject *__pyx_tuple__300;
  PyObject *__pyx_tuple__302;
  PyObject *__pyx_tuple__305;
  PyObject *__pyx_tuple__307;
  PyObject *__pyx_tuple__310;
  PyObject *__pyx_tuple__312;
  PyObject *__pyx_tuple__314;
  PyObject *__pyx_tuple__316;
  PyObject *__pyx_tuple__318;
  PyObject *__pyx_tuple__320;
  PyObject *__pyx_tuple__322;
  PyObject *__pyx_tuple__324;
  PyObject *__pyx_tuple__326;
  PyObject *__pyx_tuple__328;
  PyObject *__pyx_tuple__330;
  PyObject *__pyx_tuple__331;
  PyObject *__pyx_tuple__333;
  PyObject *__pyx_tuple__335;
  PyObject *__pyx_tuple__338;
  PyObject *__pyx_tuple__340;
  PyObject *__pyx_tuple__342;
  PyObject *__pyx_tuple__344;
  PyObject *__pyx_tuple__346;
  PyObject *__pyx_tuple__348;
  PyObject *__pyx_tuple__351;
  PyObject *__pyx_tuple__354;
  PyObject *__pyx_tuple__357;
  PyObject *__pyx_tuple__360;
  PyObject *__pyx_tuple__363;
  PyObject *__pyx_tuple__365;
  PyObject *__pyx_tuple__367;
  PyObject *__pyx_tuple__369;
  PyObject *__pyx_tuple__372;
  PyObject *__pyx_tuple__374;
  PyObject *__pyx_tuple__379;
  PyObject *__pyx_tuple__381;
  PyObject *__pyx_tuple__384;
  PyObject *__pyx_tuple__386;
  PyObject *__pyx_tuple__389;
  PyObject *__pyx_tuple__391;
  PyObject *__pyx_tuple__394;
  PyObject *__pyx_tuple__402;
  PyObject *__pyx_tuple__404;
  PyObject *__pyx_tuple__407;
  PyObject *__pyx_tuple__409;
  PyObject *__pyx_tuple__411;
  PyObject *__pyx_tuple__413;
  PyObject *__pyx_tuple__415;
  PyObject *__pyx_tuple__417;
  PyObject *__pyx_tuple__424;
  PyObject *__pyx_tuple__426;
  PyObject *__pyx_tuple__428;
  PyObject *__pyx_tuple__430;
  PyObject *__pyx_tuple__432;
  PyObject *__pyx_tuple__434;
  PyObject *__pyx_tuple__436;
  PyObject *__pyx_tuple__437;
  PyObject *__pyx_tuple__443;
  PyObject *__pyx_tuple__445;
  PyObject *__pyx_tuple__447;
  PyObject *__pyx_tuple__449;
  PyObject *__pyx_tuple__451;
  PyObject *__pyx_tuple__453;
  PyObject *__pyx_tuple__455;
  PyObject *__pyx_tuple__457;
  PyObject *__pyx_tuple__464;
  PyObject *__pyx_tuple__468;
  PyObject *__pyx_tuple__476;
  PyObject *__pyx_tuple__478;
  PyObject *__pyx_tuple__480;
  PyObject *__pyx_tuple__481;
  PyObject *__pyx_tuple__483;
  PyObject *__pyx_tuple__485;
  PyObject *__pyx_tuple__489;
  PyObject *__pyx_tuple__492;
  PyObject *__pyx_tuple__495;
  PyObject *__pyx_tuple__503;
  PyObject *__pyx_tuple__505;
  PyObject *__pyx_tuple__508;
  PyObject *__pyx_tuple__510;
  PyObject *__pyx_tuple__512;
  PyObject *__pyx_tuple__514;
  PyObject *__pyx_tuple__516;
  PyObject *__pyx_tuple__518;
  PyObject *__pyx_tuple__522;
  PyObject *__pyx_tuple__524;
  PyObject *__pyx_tuple__526;
  PyObject *__pyx_tuple__528;
  PyObject *__pyx_tuple__530;
  PyObject *__pyx_tuple__532;
  PyObject *__pyx_tuple__534;
  PyObject *__pyx_tuple__537;
  PyObject *__pyx_tuple__548;
  PyObject *__pyx_tuple__551;
  PyObject *__pyx_tuple__553;
  PyObject *__pyx_tuple__556;
  PyObject *__pyx_tuple__558;
  PyObject *__pyx_tuple__560;
  PyObject *__pyx_tuple__562;
  PyObject *__pyx_tuple__565;
  PyObject *__pyx_tuple__567;
  PyObject *__pyx_tuple__569;
  PyObject *__pyx_tuple__581;
  PyObject *__pyx_tuple__583;
  PyObject *__pyx_tuple__585;
  PyObject *__pyx_tuple__587;
  PyObject *__pyx_tuple__589;
  PyObject *__pyx_tuple__591;
  PyObject *__pyx_tuple__593;
  PyObject *__pyx_tuple__595;
  PyObject *__pyx_tuple__597;
  PyObject *__pyx_tuple__598;
  PyObject *__pyx_tuple__604;
  PyObject *__pyx_tuple__607;
  PyObject *__pyx_tuple__609;
  PyObject *__pyx_tuple__611;
  PyObject *__pyx_tuple__619;
  PyObject *__pyx_tuple__621;
  PyObject *__pyx_tuple__622;
  PyObject *__pyx_tuple__624;
  PyObject *__pyx_tuple__626;
  PyObject *__pyx_tuple__628;
  PyObject *__pyx_tuple__630;
  PyObject *__pyx_tuple__632;
  PyObject *__pyx_tuple__634;
  PyObject *__pyx_tuple__636;
  PyObject *__pyx_tuple__638;
  PyObject *__pyx_tuple__640;
  PyObject *__pyx_tuple__642;
  PyObject *__pyx_tuple__646;
  PyObject *__pyx_tuple__648;
  PyObject *__pyx_tuple__660;
  PyObject *__pyx_tuple__662;
  PyObject *__pyx_tuple__667;
  PyObject *__pyx_tuple__673;
  PyObject *__pyx_tuple__675;
  PyObject *__pyx_tuple__678;
  PyObject *__pyx_tuple__681;
  PyObject *__pyx_tuple__683;
  PyObject *__pyx_tuple__688;
  PyObject *__pyx_tuple__694;
  PyObject *__pyx_tuple__696;
  PyObject *__pyx_tuple__699;
  PyObject *__pyx_tuple__701;
  PyObject *__pyx_tuple__703;
  PyObject *__pyx_tuple__705;
  PyObject *__pyx_tuple__710;
  PyObject *__pyx_tuple__716;
  PyObject *__pyx_tuple__718;
  PyObject *__pyx_tuple__721;
  PyObject *__pyx_tuple__725;
  PyObject *__pyx_tuple__727;
  PyObject *__pyx_tuple__730;
  PyObject *__pyx_tuple__746;
  PyObject *__pyx_tuple__750;
  PyObject *__pyx_tuple__752;
  PyObject *__pyx_tuple__754;
  PyObject *__pyx_tuple__758;
  PyObject *__pyx_tuple__760;
  PyObject *__pyx_tuple__763;
  PyObject *__pyx_tuple__765;
  PyObject *__pyx_tuple__768;
  PyObject *__pyx_tuple__770;
  PyObject *__pyx_tuple__773;
  PyObject *__pyx_tuple__776;
  PyObject *__pyx_tuple__778;
  PyObject *__pyx_tuple__780;
  PyObject *__pyx_tuple__782;
  PyObject *__pyx_tuple__784;
  PyObject *__pyx_tuple__786;
  PyObject *__pyx_tuple__787;
  PyObject *__pyx_tuple__789;
  PyObject *__pyx_tuple__791;
  PyObject *__pyx_tuple__793;
  PyObject *__pyx_tuple__795;
  PyObject *__pyx_tuple__797;
  PyObject *__pyx_tuple__807;
  PyObject *__pyx_tuple__810;
  PyObject *__pyx_tuple__812;
  PyObject *__pyx_tuple__832;
  PyObject *__pyx_tuple__834;
  PyObject *__pyx_tuple__836;
  PyObject *__pyx_tuple__838;
  PyObject *__pyx_tuple__840;
  PyObject *__pyx_tuple__842;
  PyObject *__pyx_tuple__844;
  PyObject *__pyx_tuple__846;
  PyObject *__pyx_tuple__848;
  PyObject *__pyx_tuple__850;
  PyObject *__pyx_tuple__852;
  PyObject *__pyx_tuple__854;
  PyObject *__pyx_tuple__856;
  PyObject *__pyx_tuple__858;
  PyObject *__pyx_tuple__862;
  PyObject *__pyx_tuple__864;
  PyObject *__pyx_tuple__866;
  PyObject *__pyx_tuple__869;
  PyObject *__pyx_tuple__871;
  PyObject *__pyx_tuple__873;
  PyObject *__pyx_tuple__875;
  PyObject *__pyx_tuple__878;
  PyObject *__pyx_tuple__883;
  PyObject *__pyx_tuple__885;
  PyObject *__pyx_tuple__888;
  PyObject *__pyx_tuple__890;
  PyObject *__pyx_tuple__892;
  PyObject *__pyx_tuple__894;
  PyObject *__pyx_tuple__906;
  PyObject *__pyx_tuple__909;
  PyObject *__pyx_tuple__911;
  PyObject *__pyx_tuple__913;
  PyObject *__pyx_tuple__915;
  PyObject *__pyx_tuple__917;
  PyObject *__pyx_tuple__920;
  PyObject *__pyx_tuple__922;
  PyObject *__pyx_tuple__924;
  PyObject *__pyx_tuple__926;
  PyObject *__pyx_tuple__932;
  PyObject *__pyx_tuple__953;
  PyObject *__pyx_tuple__956;
  PyObject *__pyx_tuple__961;
  PyObject *__pyx_tuple__966;
  PyObject *__pyx_tuple__968;
  PyObject *__pyx_tuple__970;
  PyObject *__pyx_tuple__975;
  PyObject *__pyx_tuple__980;
  PyObject *__pyx_tuple__985;
  PyObject *__pyx_tuple__990;
  PyObject *__pyx_tuple__992;
  PyObject *__pyx_tuple__994;
  PyObject *__pyx_codeobj__63;
  PyObject *__pyx_tuple__1004;
  PyObject *__pyx_tuple__1009;
  PyObject *__pyx_tuple__1018;
  PyObject *__pyx_tuple__1029;
  PyObject *__pyx_tuple__1031;
  PyObject *__pyx_tuple__1033;
  PyObject *__pyx_tuple__1037;
  PyObject *__pyx_tuple__1039;
  PyObject *__pyx_tuple__1041;
  PyObject *__pyx_tuple__1045;
  PyObject *__pyx_tuple__1047;
  PyObject *__pyx_tuple__1050;
  PyObject *__pyx_tuple__1054;
  PyObject *__pyx_tuple__1056;
  PyObject *__pyx_tuple__1058;
  PyObject *__pyx_tuple__1060;
  PyObject *__pyx_tuple__1062;
  PyObject *__pyx_tuple__1064;
  PyObject *__pyx_tuple__1066;
  PyObject *__pyx_tuple__1068;
  PyObject *__pyx_codeobj__207;
  PyObject *__pyx_codeobj__209;
  PyObject *__pyx_codeobj__212;
  PyObject *__pyx_codeobj__214;
  PyObject *__pyx_codeobj__216;
  PyObject *__pyx_codeobj__219;
  PyObject *__pyx_codeobj__222;
  PyObject *__pyx_codeobj__224;
  PyObject *__pyx_codeobj__225;
  PyObject *__pyx_codeobj__227;
  PyObject *__pyx_codeobj__229;
  PyObject *__pyx_codeobj__230;
  PyObject *__pyx_codeobj__231;
  PyObject *__pyx_codeobj__233;
  PyObject *__pyx_codeobj__235;
  PyObject *__pyx_codeobj__236;
  PyObject *__pyx_codeobj__238;
  PyObject *__pyx_codeobj__240;
  PyObject *__pyx_codeobj__242;
  PyObject *__pyx_codeobj__244;
  PyObject *__pyx_codeobj__246;
  PyObject *__pyx_codeobj__248;
  PyObject *__pyx_codeobj__249;
  PyObject *__pyx_codeobj__251;
  PyObject *__pyx_codeobj__253;
  PyObject *__pyx_codeobj__255;
  PyObject *__pyx_codeobj__256;
  PyObject *__pyx_codeobj__258;
  PyObject *__pyx_codeobj__260;
  PyObject *__pyx_codeobj__262;
  PyObject *__pyx_codeobj__263;
  PyObject *__pyx_codeobj__265;
  PyObject *__pyx_codeobj__266;
  PyObject *__pyx_codeobj__268;
  PyObject *__pyx_codeobj__270;
  PyObject *__pyx_codeobj__272;
  PyObject *__pyx_codeobj__274;
  PyObject *__pyx_codeobj__276;
  PyObject *__pyx_codeobj__277;
  PyObject *__pyx_codeobj__279;
  PyObject *__pyx_codeobj__280;
  PyObject *__pyx_codeobj__282;
  PyObject *__pyx_codeobj__283;
  PyObject *__pyx_codeobj__285;
  PyObject *__pyx_codeobj__287;
  PyObject *__pyx_codeobj__289;
  PyObject *__pyx_codeobj__291;
  PyObject *__pyx_codeobj__293;
  PyObject *__pyx_codeobj__295;
  PyObject *__pyx_codeobj__296;
  PyObject *__pyx_codeobj__298;
  PyObject *__pyx_codeobj__299;
  PyObject *__pyx_codeobj__301;
  PyObject *__pyx_codeobj__303;
  PyObject *__pyx_codeobj__304;
  PyObject *__pyx_codeobj__306;
  PyObject *__pyx_codeobj__308;
  PyObject *__pyx_codeobj__309;
  PyObject *__pyx_codeobj__311;
  PyObject *__pyx_codeobj__313;
  PyObject *__pyx_codeobj__315;
  PyObject *__pyx_codeobj__317;
  PyObject *__pyx_codeobj__319;
  PyObject *__pyx_codeobj__321;
  PyObject *__pyx_codeobj__323;
  PyObject *__pyx_codeobj__325;
  PyObject *__pyx_codeobj__327;
  PyObject *__pyx_codeobj__329;
  PyObject *__pyx_codeobj__332;
  PyObject *__pyx_codeobj__334;
  PyObject *__pyx_codeobj__336;
  PyObject *__pyx_codeobj__337;
  PyObject *__pyx_codeobj__339;
  PyObject *__pyx_codeobj__341;
  PyObject *__pyx_codeobj__343;
  PyObject *__pyx_codeobj__345;
  PyObject *__pyx_codeobj__347;
  PyObject *__pyx_codeobj__349;
  PyObject *__pyx_codeobj__350;
  PyObject *__pyx_codeobj__352;
  PyObject *__pyx_codeobj__353;
  PyObject *__pyx_codeobj__355;
  PyObject *__pyx_codeobj__356;
  PyObject *__pyx_codeobj__358;
  PyObject *__pyx_codeobj__359;
  PyObject *__pyx_codeobj__361;
  PyObject *__pyx_codeobj__362;
  PyObject *__pyx_codeobj__364;
  PyObject *__pyx_codeobj__366;
  PyObject *__pyx_codeobj__368;
  PyObject *__pyx_codeobj__370;
  PyObject *__pyx_codeobj__371;
  PyObject *__pyx_codeobj__373;
  PyObject *__pyx_codeobj__375;
  PyObject *__pyx_codeobj__376;
  PyObject *__pyx_codeobj__377;
  PyObject *__pyx_codeobj__378;
  PyObject *__pyx_codeobj__380;
  PyObject *__pyx_codeobj__382;
  PyObject *__pyx_codeobj__383;
  PyObject *__pyx_codeobj__385;
  PyObject *__pyx_codeobj__387;
  PyObject *__pyx_codeobj__388;
  PyObject *__pyx_codeobj__390;
  PyObject *__pyx_codeobj__392;
  PyObject *__pyx_codeobj__393;
  PyObject *__pyx_codeobj__395;
  PyObject *__pyx_codeobj__396;
  PyObject *__pyx_codeobj__397;
  PyObject *__pyx_codeobj__398;
  PyObject *__pyx_codeobj__399;
  PyObject *__pyx_codeobj__400;
  PyObject *__pyx_codeobj__401;
  PyObject *__pyx_codeobj__403;
  PyObject *__pyx_codeobj__405;
  PyObject *__pyx_codeobj__406;
  PyObject *__pyx_codeobj__408;
  PyObject *__pyx_codeobj__410;
  PyObject *__pyx_codeobj__412;
  PyObject *__pyx_codeobj__414;
  PyObject *__pyx_codeobj__416;
  PyObject *__pyx_codeobj__418;
  PyObject *__pyx_codeobj__419;
  PyObject *__pyx_codeobj__420;
  PyObject *__pyx_codeobj__421;
  PyObject *__pyx_codeobj__422;
  PyObject *__pyx_codeobj__423;
  PyObject *__pyx_codeobj__425;
  PyObject *__pyx_codeobj__427;
  PyObject *__pyx_codeobj__429;
  PyObject *__pyx_codeobj__431;
  PyObject *__pyx_codeobj__433;
  PyObject *__pyx_codeobj__435;
  PyObject *__pyx_codeobj__438;
  PyObject *__pyx_codeobj__439;
  PyObject *__pyx_codeobj__440;
  PyObject *__pyx_codeobj__441;
  PyObject *__pyx_codeobj__442;
  PyObject *__pyx_codeobj__444;
  PyObject *__pyx_codeobj__446;
  PyObject *__pyx_codeobj__448;
  PyObject *__pyx_codeobj__450;
  PyObject *__pyx_codeobj__452;
  PyObject *__pyx_codeobj__454;
  PyObject *__pyx_codeobj__456;
  PyObject *__pyx_codeobj__458;
  PyObject *__pyx_codeobj__459;
  PyObject *__pyx_codeobj__460;
  PyObject *__pyx_codeobj__461;
  PyObject *__pyx_codeobj__462;
  PyObject *__pyx_codeobj__463;
  PyObject *__pyx_codeobj__465;
  PyObject *__pyx_codeobj__466;
  PyObject *__pyx_codeobj__467;
  PyObject *__pyx_codeobj__469;
  PyObject *__pyx_codeobj__470;
  PyObject *__pyx_codeobj__471;
  PyObject *__pyx_codeobj__472;
  PyObject *__pyx_codeobj__473;
  PyObject *__pyx_codeobj__474;
  PyObject *__pyx_codeobj__475;
  PyObject *__pyx_codeobj__477;
  PyObject *__pyx_codeobj__479;
  PyObject *__pyx_codeobj__482;
  PyObject *__pyx_codeobj__484;
  PyObject *__pyx_codeobj__486;
  PyObject *__pyx_codeobj__487;
  PyObject *__pyx_codeobj__488;
  PyObject *__pyx_codeobj__490;
  PyObject *__pyx_codeobj__491;
  PyObject *__pyx_codeobj__493;
  PyObject *__pyx_codeobj__494;
  PyObject *__pyx_codeobj__496;
  PyObject *__pyx_codeobj__497;
  PyObject *__pyx_codeobj__498;
  PyObject *__pyx_codeobj__499;
  PyObject *__pyx_codeobj__500;
  PyObject *__pyx_codeobj__501;
  PyObject *__pyx_codeobj__502;
  PyObject *__pyx_codeobj__504;
  PyObject *__pyx_codeobj__506;
  PyObject *__pyx_codeobj__507;
  PyObject *__pyx_codeobj__509;
  PyObject *__pyx_codeobj__511;
  PyObject *__pyx_codeobj__513;
  PyObject *__pyx_codeobj__515;
  PyObject *__pyx_codeobj__517;
  PyObject *__pyx_codeobj__519;
  PyObject *__pyx_codeobj__520;
  PyObject *__pyx_codeobj__521;
  PyObject *__pyx_codeobj__523;
  PyObject *__pyx_codeobj__525;
  PyObject *__pyx_codeobj__527;
  PyObject *__pyx_codeobj__529;
  PyObject *__pyx_codeobj__531;
  PyObject *__pyx_codeobj__533;
  PyObject *__pyx_codeobj__535;
  PyObject *__pyx_codeobj__536;
  PyObject *__pyx_codeobj__538;
  PyObject *__pyx_codeobj__539;
  PyObject *__pyx_codeobj__540;
  PyObject *__pyx_codeobj__541;
  PyObject *__pyx_codeobj__542;
  PyObject *__pyx_codeobj__543;
  PyObject *__pyx_codeobj__544;
  PyObject *__pyx_codeobj__545;
  PyObject *__pyx_codeobj__546;
  PyObject *__pyx_codeobj__547;
  PyObject *__pyx_codeobj__549;
  PyObject *__pyx_codeobj__550;
  PyObject *__pyx_codeobj__552;
  PyObject *__pyx_codeobj__554;
  PyObject *__pyx_codeobj__555;
  PyObject *__pyx_codeobj__557;
  PyObject *__pyx_codeobj__559;
  PyObject *__pyx_codeobj__561;
  PyObject *__pyx_codeobj__563;
  PyObject *__pyx_codeobj__564;
  PyObject *__pyx_codeobj__566;
  PyObject *__pyx_codeobj__568;
  PyObject *__pyx_codeobj__570;
  PyObject *__pyx_codeobj__571;
  PyObject *__pyx_codeobj__572;
  PyObject *__pyx_codeobj__573;
  PyObject *__pyx_codeobj__574;
  PyObject *__pyx_codeobj__575;
  PyObject *__pyx_codeobj__576;
  PyObject *__pyx_codeobj__577;
  PyObject *__pyx_codeobj__578;
  PyObject *__pyx_codeobj__579;
  PyObject *__pyx_codeobj__580;
  PyObject *__pyx_codeobj__582;
  PyObject *__pyx_codeobj__584;
  PyObject *__pyx_codeobj__586;
  PyObject *__pyx_codeobj__588;
  PyObject *__pyx_codeobj__590;
  PyObject *__pyx_codeobj__592;
  PyObject *__pyx_codeobj__594;
  PyObject *__pyx_codeobj__596;
  PyObject *__pyx_codeobj__599;
  PyObject *__pyx_codeobj__600;
  PyObject *__pyx_codeobj__601;
  PyObject *__pyx_codeobj__602;
  PyObject *__pyx_codeobj__603;
  PyObject *__pyx_codeobj__605;
  PyObject *__pyx_codeobj__606;
  PyObject *__pyx_codeobj__608;
  PyObject *__pyx_codeobj__610;
  PyObject *__pyx_codeobj__612;
  PyObject *__pyx_codeobj__613;
  PyObject *__pyx_codeobj__614;
  PyObject *__pyx_codeobj__615;
  PyObject *__pyx_codeobj__616;
  PyObject *__pyx_codeobj__617;
  PyObject *__pyx_codeobj__618;
  PyObject *__pyx_codeobj__620;
  PyObject *__pyx_codeobj__623;
  PyObject *__pyx_codeobj__625;
  PyObject *__pyx_codeobj__627;
  PyObject *__pyx_codeobj__629;
  PyObject *__pyx_codeobj__631;
  PyObject *__pyx_codeobj__633;
  PyObject *__pyx_codeobj__635;
  PyObject *__pyx_codeobj__637;
  PyObject *__pyx_codeobj__639;
  PyObject *__pyx_codeobj__641;
  PyObject *__pyx_codeobj__643;
  PyObject *__pyx_codeobj__644;
  PyObject *__pyx_codeobj__645;
  PyObject *__pyx_codeobj__647;
  PyObject *__pyx_codeobj__649;
  PyObject *__pyx_codeobj__650;
  PyObject *__pyx_codeobj__651;
  PyObject *__pyx_codeobj__652;
  PyObject *__pyx_codeobj__653;
  PyObject *__pyx_codeobj__654;
  PyObject *__pyx_codeobj__655;
  PyObject *__pyx_codeobj__656;
  PyObject *__pyx_codeobj__657;
  PyObject *__pyx_codeobj__658;
  PyObject *__pyx_codeobj__659;
  PyObject *__pyx_codeobj__661;
  PyObject *__pyx_codeobj__663;
  PyObject *__pyx_codeobj__664;
  PyObject *__pyx_codeobj__665;
  PyObject *__pyx_codeobj__666;
  PyObject *__pyx_codeobj__668;
  PyObject *__pyx_codeobj__669;
  PyObject *__pyx_codeobj__670;
  PyObject *__pyx_codeobj__671;
  PyObject *__pyx_codeobj__672;
  PyObject *__pyx_codeobj__674;
  PyObject *__pyx_codeobj__676;
  PyObject *__pyx_codeobj__677;
  PyObject *__pyx_codeobj__679;
  PyObject *__pyx_codeobj__680;
  PyObject *__pyx_codeobj__682;
  PyObject *__pyx_codeobj__684;
  PyObject *__pyx_codeobj__685;
  PyObject *__pyx_codeobj__686;
  PyObject *__pyx_codeobj__687;
  PyObject *__pyx_codeobj__689;
  PyObject *__pyx_codeobj__690;
  PyObject *__pyx_codeobj__691;
  PyObject *__pyx_codeobj__692;
  PyObject *__pyx_codeobj__693;
  PyObject *__pyx_codeobj__695;
  PyObject *__pyx_codeobj__697;
  PyObject *__pyx_codeobj__698;
  PyObject *__pyx_codeobj__700;
  PyObject *__pyx_codeobj__702;
  PyObject *__pyx_codeobj__704;
  PyObject *__pyx_codeobj__706;
  PyObject *__pyx_codeobj__707;
  PyObject *__pyx_codeobj__708;
  PyObject *__pyx_codeobj__709;
  PyObject *__pyx_codeobj__711;
  PyObject *__pyx_codeobj__712;
  PyObject *__pyx_codeobj__713;
  PyObject *__pyx_codeobj__714;
  PyObject *__pyx_codeobj__715;
  PyObject *__pyx_codeobj__717;
  PyObject *__pyx_codeobj__719;
  PyObject *__pyx_codeobj__720;
  PyObject *__pyx_codeobj__722;
  PyObject *__pyx_codeobj__723;
  PyObject *__pyx_codeobj__724;
  PyObject *__pyx_codeobj__726;
  PyObject *__pyx_codeobj__728;
  PyObject *__pyx_codeobj__729;
  PyObject *__pyx_codeobj__731;
  PyObject *__pyx_codeobj__732;
  PyObject *__pyx_codeobj__733;
  PyObject *__pyx_codeobj__734;
  PyObject *__pyx_codeobj__735;
  PyObject *__pyx_codeobj__736;
  PyObject *__pyx_codeobj__737;
  PyObject *__pyx_codeobj__738;
  PyObject *__pyx_codeobj__739;
  PyObject *__pyx_codeobj__740;
  PyObject *__pyx_codeobj__741;
  PyObject *__pyx_codeobj__742;
  PyObject *__pyx_codeobj__743;
  PyObject *__pyx_codeobj__744;
  PyObject *__pyx_codeobj__745;
  PyObject *__pyx_codeobj__747;
  PyObject *__pyx_codeobj__748;
  PyObject *__pyx_codeobj__749;
  PyObject *__pyx_codeobj__751;
  PyObject *__pyx_codeobj__753;
  PyObject *__pyx_codeobj__755;
  PyObject *__pyx_codeobj__756;
  PyObject *__pyx_codeobj__757;
  PyObject *__pyx_codeobj__759;
  PyObject *__pyx_codeobj__761;
  PyObject *__pyx_codeobj__762;
  PyObject *__pyx_codeobj__764;
  PyObject *__pyx_codeobj__766;
  PyObject *__pyx_codeobj__767;
  PyObject *__pyx_codeobj__769;
  PyObject *__pyx_codeobj__771;
  PyObject *__pyx_codeobj__772;
  PyObject *__pyx_codeobj__774;
  PyObject *__pyx_codeobj__775;
  PyObject *__pyx_codeobj__777;
  PyObject *__pyx_codeobj__779;
  PyObject *__pyx_codeobj__781;
  PyObject *__pyx_codeobj__783;
  PyObject *__pyx_codeobj__785;
  PyObject *__pyx_codeobj__788;
  PyObject *__pyx_codeobj__790;
  PyObject *__pyx_codeobj__792;
  PyObject *__pyx_codeobj__794;
  PyObject *__pyx_codeobj__796;
  PyObject *__pyx_codeobj__798;
  PyObject *__pyx_codeobj__799;
  PyObject *__pyx_codeobj__800;
  PyObject *__pyx_codeobj__801;
  PyObject *__pyx_codeobj__802;
  PyObject *__pyx_codeobj__803;
  PyObject *__pyx_codeobj__804;
  PyObject *__pyx_codeobj__805;
  PyObject *__pyx_codeobj__806;
  PyObject *__pyx_codeobj__808;
  PyObject *__pyx_codeobj__811;
  PyObject *__pyx_codeobj__813;
  PyObject *__pyx_codeobj__814;
  PyObject *__pyx_codeobj__815;
  PyObject *__pyx_codeobj__816;
  PyObject *__pyx_codeobj__817;
  PyObject *__pyx_codeobj__818;
  PyObject *__pyx_codeobj__819;
  PyObject *__pyx_codeobj__820;
  PyObject *__pyx_codeobj__821;
  PyObject *__pyx_codeobj__822;
  PyObject *__pyx_codeobj__823;
  PyObject *__pyx_codeobj__824;
  PyObject *__pyx_codeobj__825;
  PyObject *__pyx_codeobj__826;
  PyObject *__pyx_codeobj__827;
  PyObject *__pyx_codeobj__828;
  PyObject *__pyx_codeobj__829;
  PyObject *__pyx_codeobj__830;
  PyObject *__pyx_codeobj__831;
  PyObject *__pyx_codeobj__833;
  PyObject *__pyx_codeobj__835;
  PyObject *__pyx_codeobj__837;
  PyObject *__pyx_codeobj__839;
  PyObject *__pyx_codeobj__841;
  PyObject *__pyx_codeobj__843;
  PyObject *__pyx_codeobj__845;
  PyObject *__pyx_codeobj__847;
  PyObject *__pyx_codeobj__849;
  PyObject *__pyx_codeobj__851;
  PyObject *__pyx_codeobj__853;
  PyObject *__pyx_codeobj__855;
  PyObject *__pyx_codeobj__857;
  PyObject *__pyx_codeobj__859;
  PyObject *__pyx_codeobj__860;
  PyObject *__pyx_codeobj__861;
  PyObject *__pyx_codeobj__863;
  PyObject *__pyx_codeobj__865;
  PyObject *__pyx_codeobj__867;
  PyObject *__pyx_codeobj__868;
  PyObject *__pyx_codeobj__870;
  PyObject *__pyx_codeobj__872;
  PyObject *__pyx_codeobj__874;
  PyObject *__pyx_codeobj__876;
  PyObject *__pyx_codeobj__877;
  PyObject *__pyx_codeobj__879;
  PyObject *__pyx_codeobj__880;
  PyObject *__pyx_codeobj__881;
  PyObject *__pyx_codeobj__882;
  PyObject *__pyx_codeobj__884;
  PyObject *__pyx_codeobj__886;
  PyObject *__pyx_codeobj__887;
  PyObject *__pyx_codeobj__889;
  PyObject *__pyx_codeobj__891;
  PyObject *__pyx_codeobj__893;
  PyObject *__pyx_codeobj__895;
  PyObject *__pyx_codeobj__896;
  PyObject *__pyx_codeobj__897;
  PyObject *__pyx_codeobj__898;
  PyObject *__pyx_codeobj__899;
  PyObject *__pyx_codeobj__900;
  PyObject *__pyx_codeobj__901;
  PyObject *__pyx_codeobj__902;
  PyObject *__pyx_codeobj__903;
  PyObject *__pyx_codeobj__904;
  PyObject *__pyx_codeobj__905;
  PyObject *__pyx_codeobj__907;
  PyObject *__pyx_codeobj__908;
  PyObject *__pyx_codeobj__910;
  PyObject *__pyx_codeobj__912;
  PyObject *__pyx_codeobj__914;
  PyObject *__pyx_codeobj__916;
  PyObject *__pyx_codeobj__918;
  PyObject *__pyx_codeobj__919;
  PyObject *__pyx_codeobj__921;
  PyObject *__pyx_codeobj__923;
  PyObject *__pyx_codeobj__925;
  PyObject *__pyx_codeobj__927;
  PyObject *__pyx_codeobj__928;
  PyObject *__pyx_codeobj__929;
  PyObject *__pyx_codeobj__930;
  PyObject *__pyx_codeobj__931;
  PyObject *__pyx_codeobj__933;
  PyObject *__pyx_codeobj__934;
  PyObject *__pyx_codeobj__935;
  PyObject *__pyx_codeobj__936;
  PyObject *__pyx_codeobj__937;
  PyObject *__pyx_codeobj__938;
  PyObject *__pyx_codeobj__939;
  PyObject *__pyx_codeobj__940;
  PyObject *__pyx_codeobj__941;
  PyObject *__pyx_codeobj__942;
  PyObject *__pyx_codeobj__943;
  PyObject *__pyx_codeobj__944;
  PyObject *__pyx_codeobj__945;
  PyObject *__pyx_codeobj__946;
  PyObject *__pyx_codeobj__947;
  PyObject *__pyx_codeobj__948;
  PyObject *__pyx_codeobj__949;
  PyObject *__pyx_codeobj__950;
  PyObject *__pyx_codeobj__951;
  PyObject *__pyx_codeobj__952;
  PyObject *__pyx_codeobj__954;
  PyObject *__pyx_codeobj__955;
  PyObject *__pyx_codeobj__957;
  PyObject *__pyx_codeobj__958;
  PyObject *__pyx_codeobj__959;
  PyObject *__pyx_codeobj__960;
  PyObject *__pyx_codeobj__962;
  PyObject *__pyx_codeobj__963;
  PyObject *__pyx_codeobj__964;
  PyObject *__pyx_codeobj__965;
  PyObject *__pyx_codeobj__967;
  PyObject *__pyx_codeobj__969;
  PyObject *__pyx_codeobj__971;
  PyObject *__pyx_codeobj__972;
  PyObject *__pyx_codeobj__973;
  PyObject *__pyx_codeobj__974;
  PyObject *__pyx_codeobj__976;
  PyObject *__pyx_codeobj__977;
  PyObject *__pyx_codeobj__978;
  PyObject *__pyx_codeobj__979;
  PyObject *__pyx_codeobj__981;
  PyObject *__pyx_codeobj__982;
  PyObject *__pyx_codeobj__983;
  PyObject *__pyx_codeobj__984;
  PyObject *__pyx_codeobj__986;
  PyObject *__pyx_codeobj__987;
  PyObject *__pyx_codeobj__988;
  PyObject *__pyx_codeobj__989;
  PyObject *__pyx_codeobj__991;
  PyObject *__pyx_codeobj__993;
  PyObject *__pyx_codeobj__995;
  PyObject *__pyx_codeobj__996;
  PyObject *__pyx_codeobj__997;
  PyObject *__pyx_codeobj__998;
  PyObject *__pyx_codeobj__999;
  PyObject *__pyx_codeobj__1000;
  PyObject *__pyx_codeobj__1001;
  PyObject *__pyx_codeobj__1002;
  PyObject *__pyx_codeobj__1003;
  PyObject *__pyx_codeobj__1005;
  PyObject *__pyx_codeobj__1006;
  PyObject *__pyx_codeobj__1007;
  PyObject *__pyx_codeobj__1008;
  PyObject *__pyx_codeobj__1010;
  PyObject *__pyx_codeobj__1011;
  PyObject *__pyx_codeobj__1012;
  PyObject *__pyx_codeobj__1013;
  PyObject *__pyx_codeobj__1014;
  PyObject *__pyx_codeobj__1015;
  PyObject *__pyx_codeobj__1016;
  PyObject *__pyx_codeobj__1017;
  PyObject *__pyx_codeobj__1019;
  PyObject *__pyx_codeobj__1020;
  PyObject *__pyx_codeobj__1021;
  PyObject *__pyx_codeobj__1022;
  PyObject *__pyx_codeobj__1023;
  PyObject *__pyx_codeobj__1024;
  PyObject *__pyx_codeobj__1025;
  PyObject *__pyx_codeobj__1026;
  PyObject *__pyx_codeobj__1027;
  PyObject *__pyx_codeobj__1028;
  PyObject *__pyx_codeobj__1030;
  PyObject *__pyx_codeobj__1032;
  PyObject *__pyx_codeobj__1034;
  PyObject *__pyx_codeobj__1035;
  PyObject *__pyx_codeobj__1036;
  PyObject *__pyx_codeobj__1038;
  PyObject *__pyx_codeobj__1040;
  PyObject *__pyx_codeobj__1042;
  PyObject *__pyx_codeobj__1043;
  PyObject *__pyx_codeobj__1044;
  PyObject *__pyx_codeobj__1046;
  PyObject *__pyx_codeobj__1048;
  PyObject *__pyx_codeobj__1049;
  PyObject *__pyx_codeobj__1051;
  PyObject *__pyx_codeobj__1052;
  PyObject *__pyx_codeobj__1053;
  PyObject *__pyx_codeobj__1055;
  PyObject *__pyx_codeobj__1057;
  PyObject *__pyx_codeobj__1059;
  PyObject *__pyx_codeobj__1061;
  PyObject *__pyx_codeobj__1063;
  PyObject *__pyx_codeobj__1065;
  PyObject *__pyx_codeobj__1067;
  PyObject *__pyx_codeobj__1069;
  PyObject *__pyx_codeobj__1070;
} __pyx_mstate;

#if CYTHON_USE_MODULE_STATE
#ifdef __cplusplus
namespace {
  extern struct PyModuleDef __pyx_moduledef;
} /* anonymous namespace */
#else
static struct PyModuleDef __pyx_moduledef;
#endif

#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))

#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))

#define __pyx_m (PyState_FindModule(&__pyx_moduledef))
#else
static __pyx_mstate __pyx_mstate_global_static =
#ifdef __cplusplus
    {};
#else
    {0};
#endif
static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
#endif
/* #### Code section: module_state_clear ### */
#if CYTHON_USE_MODULE_STATE
static int __pyx_m_clear(PyObject *m) {
  __pyx_mstate *clear_module_state = __pyx_mstate(m);
  if (!clear_module_state) return 0;
  Py_CLEAR(clear_module_state->__pyx_d);
  Py_CLEAR(clear_module_state->__pyx_b);
  Py_CLEAR(clear_module_state->__pyx_cython_runtime);
  Py_CLEAR(clear_module_state->__pyx_empty_tuple);
  Py_CLEAR(clear_module_state->__pyx_empty_bytes);
  Py_CLEAR(clear_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
  #endif
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Datatype);
  Py_CLEAR(clear_module_state->PyMPIDatatype_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Status);
  Py_CLEAR(clear_module_state->PyMPIStatus_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Request);
  Py_CLEAR(clear_module_state->PyMPIRequest_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Prequest);
  Py_CLEAR(clear_module_state->PyMPIPrequest_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Grequest);
  Py_CLEAR(clear_module_state->PyMPIGrequest_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Message);
  Py_CLEAR(clear_module_state->PyMPIMessage_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Op);
  Py_CLEAR(clear_module_state->PyMPIOp_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Group);
  Py_CLEAR(clear_module_state->PyMPIGroup_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Info);
  Py_CLEAR(clear_module_state->PyMPIInfo_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Errhandler);
  Py_CLEAR(clear_module_state->PyMPIErrhandler_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Session);
  Py_CLEAR(clear_module_state->PyMPISession_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Comm);
  Py_CLEAR(clear_module_state->PyMPIComm_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Intracomm);
  Py_CLEAR(clear_module_state->PyMPIIntracomm_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Topocomm);
  Py_CLEAR(clear_module_state->PyMPITopocomm_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Cartcomm);
  Py_CLEAR(clear_module_state->PyMPICartcomm_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Graphcomm);
  Py_CLEAR(clear_module_state->PyMPIGraphcomm_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);
  Py_CLEAR(clear_module_state->PyMPIDistgraphcomm_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Intercomm);
  Py_CLEAR(clear_module_state->PyMPIIntercomm_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Win);
  Py_CLEAR(clear_module_state->PyMPIWin_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_File);
  Py_CLEAR(clear_module_state->PyMPIFile_Type);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__PyMem);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__PyMem);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_buffer);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI_buffer);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_keyval);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_keyval);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_rs);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_rs);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_greq);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_greq);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI_BufferAutomaticType);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_datarep);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_datarep);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_BottomType);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI_BottomType);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_InPlaceType);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI_InPlaceType);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_message);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_message);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_msg_p2p);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_cco);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_msg_cco);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_msg_ccow);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_rma);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_msg_rma);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_io);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_msg_io);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Pickle);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI_Pickle);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_req_buf);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_req_buf);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI__p_req_obj);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI__p_req_obj);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_RuntimeError);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI_Exception);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI_Exception);
  Py_CLEAR(clear_module_state->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback);
  Py_CLEAR(clear_module_state->__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback);
  Py_CLEAR(clear_module_state->__pyx_n_s_);
  Py_CLEAR(clear_module_state->__pyx_kp_b_);
  Py_CLEAR(clear_module_state->__pyx_n_s_AINT);
  Py_CLEAR(clear_module_state->__pyx_n_s_ANY_SOURCE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ANY_TAG);
  Py_CLEAR(clear_module_state->__pyx_n_s_APPNUM);
  Py_CLEAR(clear_module_state->__pyx_n_s_Abort);
  Py_CLEAR(clear_module_state->__pyx_n_s_Accept);
  Py_CLEAR(clear_module_state->__pyx_n_s_Accumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ack_failed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Add_error_class);
  Py_CLEAR(clear_module_state->__pyx_n_s_Add_error_code);
  Py_CLEAR(clear_module_state->__pyx_n_s_Add_error_string);
  Py_CLEAR(clear_module_state->__pyx_n_s_Agree);
  Py_CLEAR(clear_module_state->__pyx_n_s_Aint_add);
  Py_CLEAR(clear_module_state->__pyx_n_s_Aint_diff);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allgather_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allgatherv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Alloc_mem);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allocate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allocate_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allreduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Allreduce_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Alltoall_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Alltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Alltoallv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Alltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Alltoallw_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Any);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Any_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Attach);
  Py_CLEAR(clear_module_state->__pyx_n_s_Attach_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError);
  Py_CLEAR(clear_module_state->__pyx_n_s_BAND);
  Py_CLEAR(clear_module_state->__pyx_n_s_BOOL);
  Py_CLEAR(clear_module_state->__pyx_n_s_BOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_BOTTOM);
  Py_CLEAR(clear_module_state->__pyx_n_s_BSEND_OVERHEAD);
  Py_CLEAR(clear_module_state->__pyx_n_s_BUFFER_AUTOMATIC);
  Py_CLEAR(clear_module_state->__pyx_n_s_BXOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_BYTE);
  Py_CLEAR(clear_module_state->__pyx_n_s_Barrier);
  Py_CLEAR(clear_module_state->__pyx_n_s_Barrier_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_BaseException);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bcast);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bcast_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_BottomType);
  Py_CLEAR(clear_module_state->__pyx_n_s_BottomType___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bsend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_BufSpec);
  Py_CLEAR(clear_module_state->__pyx_n_s_BufSpecB);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpecB_InPlace);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpecB_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_BufSpecV);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpecV_InPlace);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpecV_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_BufSpecW);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpecW_InPlace);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpec_BufSpecB);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpec_InPlace);
  Py_CLEAR(clear_module_state->__pyx_kp_s_BufSpec_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_BufferAutomaticType);
  Py_CLEAR(clear_module_state->__pyx_n_s_BufferAutomaticType___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_BufferError);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Buffer_Bottom);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Buffer_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_CART);
  Py_CLEAR(clear_module_state->__pyx_n_s_CHAR);
  Py_CLEAR(clear_module_state->__pyx_n_s_CHARACTER);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_CONTIGUOUS);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_DARRAY);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_DUP);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_F90_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_F90_INTEGER);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_F90_REAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_HINDEXED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_HINDEXED_BLOCK);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_HVECTOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_INDEXED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_INDEXED_BLOCK);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_NAMED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_RESIZED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_STRUCT);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_SUBARRAY);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_VALUE_INDEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMBINER_VECTOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMM_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMM_SELF);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMM_TYPE_HW_GUIDED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMM_TYPE_HW_UNGUIDED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMM_TYPE_RESOURCE_GUIDED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMM_TYPE_SHARED);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMM_WORLD);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMPLEX16);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMPLEX32);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMPLEX4);
  Py_CLEAR(clear_module_state->__pyx_n_s_COMPLEX8);
  Py_CLEAR(clear_module_state->__pyx_n_s_CONGRUENT);
  Py_CLEAR(clear_module_state->__pyx_n_s_CONTIGUOUS);
  Py_CLEAR(clear_module_state->__pyx_n_s_COUNT);
  Py_CLEAR(clear_module_state->__pyx_n_s_CXX_BOOL);
  Py_CLEAR(clear_module_state->__pyx_n_s_CXX_DOUBLE_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_CXX_FLOAT_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_CXX_LONG_DOUBLE_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_C_BOOL);
  Py_CLEAR(clear_module_state->__pyx_n_s_C_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_C_DOUBLE_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_C_FLOAT_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_C_LONG_DOUBLE_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Call_errhandler);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Buffer_Buffer_Datatype);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Buffer_Datatype_int_Buf);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Comm_int_Any_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Comm_int_Any_None_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Comm_int_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Datatype_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Datatype_int_Any_Any_No);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Datatype_int_Any_None_N);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_File_int_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_None_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Session_int_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Win_int_Any_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Win_int_Any_None_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callable_Win_int_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cancel);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cart_map);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cartcomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cartcomm_Get_cart_rank);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cartcomm_Get_coords);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cartcomm_Get_dim);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cartcomm_Get_topo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cartcomm_Shift);
  Py_CLEAR(clear_module_state->__pyx_n_s_Cartcomm_Sub);
  Py_CLEAR(clear_module_state->__pyx_n_s_Clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Close);
  Py_CLEAR(clear_module_state->__pyx_n_s_Close_port);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Abort);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ack_failed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Agree);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Allgather_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Allgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Allgatherv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Allreduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Allreduce_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Alltoall_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Alltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Alltoallv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Alltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Alltoallw_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Attach_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Barrier);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Barrier_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Bcast);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Bcast_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Bsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Bsend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Call_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Compare);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Create);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Create_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Create_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Delete_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Detach_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Disconnect);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Dup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Dup_with_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Flush_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Free_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Gather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Gather_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Gatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Gatherv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_failed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_parent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_rank);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Get_topology);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iagree);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iallgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iallgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iallreduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ialltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ialltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ialltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ibarrier);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ibcast);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ibsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Idup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Idup_with_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iflush_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Igather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Igatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Improbe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Irecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ireduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ireduce_scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ireduce_scatter_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Irsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Is_inter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Is_intra);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Is_revoked);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iscatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Iscatterv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Isend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Isendrecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Isendrecv_replace);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ishrink);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Issend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Join);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Mprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Precv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Probe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Psend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Recv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Recv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Reduce_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Reduce_scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Reduce_scatter_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Reduce_scatter_block_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Reduce_scatter_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Revoke);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Rsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Rsend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Scatter_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Scatterv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Scatterv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Send);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Send_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Sendrecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Sendrecv_replace);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Set_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Set_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Set_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Set_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Shrink);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Split);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Split_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ssend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_Ssend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_allreduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_barrier);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_bcast);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_bsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_gather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_ibsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_improbe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_iprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_irecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_isend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_issend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_mprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_probe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_recv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_send);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_sendrecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Comm_ssend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Commit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Compare);
  Py_CLEAR(clear_module_state->__pyx_n_s_Compare_and_swap);
  Py_CLEAR(clear_module_state->__pyx_n_s_Complete);
  Py_CLEAR(clear_module_state->__pyx_n_s_Compute_dims);
  Py_CLEAR(clear_module_state->__pyx_n_s_Connect);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create);
  Py_CLEAR(clear_module_state->__pyx_n_u_Create_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_cart);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_contiguous);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_darray);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_dist_graph);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_dist_graph_adjacent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_dup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_dynamic);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_env);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_f90_complex);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_f90_integer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_f90_real);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_from_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_from_groups);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_from_session_pset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_graph);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_hindexed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_hindexed_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_hvector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_indexed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_indexed_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_intercomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_resized);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_struct);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_subarray);
  Py_CLEAR(clear_module_state->__pyx_n_s_Create_vector);
  Py_CLEAR(clear_module_state->__pyx_n_s_DARRAY);
  Py_CLEAR(clear_module_state->__pyx_n_s_DATATYPE_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_DISPLACEMENT_CURRENT);
  Py_CLEAR(clear_module_state->__pyx_n_s_DISP_CUR);
  Py_CLEAR(clear_module_state->__pyx_n_s_DISTRIBUTE_BLOCK);
  Py_CLEAR(clear_module_state->__pyx_n_s_DISTRIBUTE_CYCLIC);
  Py_CLEAR(clear_module_state->__pyx_n_s_DISTRIBUTE_DFLT_DARG);
  Py_CLEAR(clear_module_state->__pyx_n_s_DISTRIBUTE_NONE);
  Py_CLEAR(clear_module_state->__pyx_n_s_DIST_GRAPH);
  Py_CLEAR(clear_module_state->__pyx_n_s_DOUBLE);
  Py_CLEAR(clear_module_state->__pyx_n_s_DOUBLE_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_DOUBLE_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_DOUBLE_PRECISION);
  Py_CLEAR(clear_module_state->__pyx_n_s_DUP);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Commit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_contiguous);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_darray);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_f90_complex);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_f90_integer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_f90_real);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_hindexed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_hindexed_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_hvector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_indexed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_indexed_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_resized);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_struct);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_subarray);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Create_vector);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Delete_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Dup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Free_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_contents);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_envelope);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_extent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_true_extent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Get_value_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Match_size);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Datatype_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Pack);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Pack_external);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Pack_external_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Pack_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Set_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Set_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Unpack);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_Unpack_external);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_decode);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_fromcode);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Datatype_tocode);
  Py_CLEAR(clear_module_state->__pyx_n_s_Delete);
  Py_CLEAR(clear_module_state->__pyx_n_s_Delete_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detach);
  Py_CLEAR(clear_module_state->__pyx_n_s_Detach_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Difference);
  Py_CLEAR(clear_module_state->__pyx_n_s_Disconnect);
  Py_CLEAR(clear_module_state->__pyx_n_s_Distgraphcomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Distgraphcomm_Get_dist_neighbors);
  Py_CLEAR(clear_module_state->__pyx_n_s_Distgraphcomm_Get_dist_neighbors_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dup_with_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERRHANDLER_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERRORS_ABORT);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERRORS_ARE_FATAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERRORS_RETURN);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_ACCESS);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_AMODE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_ARG);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_ASSERT);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_BAD_FILE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_BASE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_BUFFER);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_COMM);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_CONVERSION);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_COUNT);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_DIMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_DISP);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_DUP_DATAREP);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_ERRHANDLER);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_FILE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_FILE_EXISTS);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_FILE_IN_USE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_GROUP);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_INFO);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_INFO_KEY);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_INFO_NOKEY);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_INFO_VALUE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_INTERN);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_IN_STATUS);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_IO);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_KEYVAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_LASTCODE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_LOCKTYPE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_NAME);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_NOT_SAME);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_NO_MEM);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_NO_SPACE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_NO_SUCH_FILE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_OP);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_OTHER);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_PENDING);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_PORT);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_PROC_ABORTED);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_PROC_FAILED);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_PROC_FAILED_PENDING);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_QUOTA);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_RANK);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_READ_ONLY);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_REQUEST);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_REVOKED);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_RMA_ATTACH);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_RMA_CONFLICT);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_RMA_FLAVOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_RMA_RANGE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_RMA_SHARED);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_RMA_SYNC);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_ROOT);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_SERVICE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_SESSION);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_SIZE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_SPAWN);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_TAG);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_TOPOLOGY);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_TRUNCATE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_TYPE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_UNKNOWN);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_UNSUPPORTED_DATAREP);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_UNSUPPORTED_OPERATION);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_VALUE_TOO_LARGE);
  Py_CLEAR(clear_module_state->__pyx_n_s_ERR_WIN);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ellipsis);
  Py_CLEAR(clear_module_state->__pyx_n_s_Errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Errhandler_Free);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Errhandler_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Errhandler___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Errhandler_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Errhandler_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Errhandler_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Errhandler_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Exception);
  Py_CLEAR(clear_module_state->__pyx_n_s_Exception_Get_error_class);
  Py_CLEAR(clear_module_state->__pyx_n_s_Exception_Get_error_code);
  Py_CLEAR(clear_module_state->__pyx_n_s_Exception_Get_error_string);
  Py_CLEAR(clear_module_state->__pyx_n_s_Excl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Exscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Exscan_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_F90_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_F90_INTEGER);
  Py_CLEAR(clear_module_state->__pyx_n_s_F90_REAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_FILE_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_FLOAT);
  Py_CLEAR(clear_module_state->__pyx_n_s_FLOAT_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_BOOL);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_DOUBLE);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_DOUBLE_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_ERROR);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_FLOAT);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_FLOAT_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_SOURCE);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_STATUS_SIZE);
  Py_CLEAR(clear_module_state->__pyx_n_s_F_TAG);
  Py_CLEAR(clear_module_state->__pyx_n_s_Fence);
  Py_CLEAR(clear_module_state->__pyx_n_s_Fetch_and_op);
  Py_CLEAR(clear_module_state->__pyx_n_s_File);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Call_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Close);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Create_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Delete);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_amode);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_atomicity);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_byte_offset);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_position);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_position_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_type_extent);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Get_view);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iread);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iread_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iread_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iread_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iread_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iwrite);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iwrite_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iwrite_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iwrite_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Iwrite_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Open);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Preallocate);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_at_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_at_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_ordered);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_ordered_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_ordered_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Read_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Seek);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Seek_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Set_atomicity);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Set_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Set_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Set_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Set_view);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Sync);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_at_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_at_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_ordered);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_ordered_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_ordered_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_Write_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_File___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_File_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Finalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_Flush);
  Py_CLEAR(clear_module_state->__pyx_n_s_Flush_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Flush_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Flush_local);
  Py_CLEAR(clear_module_state->__pyx_n_s_Flush_local_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Free_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Free_mem);
  Py_CLEAR(clear_module_state->__pyx_n_s_GRAPH);
  Py_CLEAR(clear_module_state->__pyx_n_s_GROUP_EMPTY);
  Py_CLEAR(clear_module_state->__pyx_n_s_GROUP_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_Gather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Gather_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Gatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Gatherv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_accumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_address);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_amode);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_atomicity);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_byte_offset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_cart_rank);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_contents);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_coords);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_count);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_dim);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_dims);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_dist_neighbors);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_dist_neighbors_count);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_elements);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_envelope);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_error);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_error_class);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_error_code);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_error_string);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_extent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_failed);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_hw_resource_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_library_version);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_neighbors);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_neighbors_count);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_nkeys);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_nth_pset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_nthkey);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_num_psets);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_parent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_position);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_position_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_processor_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_pset_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_rank);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_remote_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_remote_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_source);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_status_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_status_any);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_status_some);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_tag);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_topo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_topology);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_true_extent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_type_extent);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_value_index);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_version);
  Py_CLEAR(clear_module_state->__pyx_n_s_Get_view);
  Py_CLEAR(clear_module_state->__pyx_n_s_Graph_map);
  Py_CLEAR(clear_module_state->__pyx_n_s_Graphcomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Graphcomm_Get_dims);
  Py_CLEAR(clear_module_state->__pyx_n_s_Graphcomm_Get_neighbors);
  Py_CLEAR(clear_module_state->__pyx_n_s_Graphcomm_Get_neighbors_count);
  Py_CLEAR(clear_module_state->__pyx_n_s_Graphcomm_Get_topo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Grequest);
  Py_CLEAR(clear_module_state->__pyx_n_s_Grequest_Complete);
  Py_CLEAR(clear_module_state->__pyx_n_s_Grequest_Start);
  Py_CLEAR(clear_module_state->__pyx_n_s_Grequest_complete);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Compare);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Create_from_session_pset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Difference);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Dup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Excl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Get_rank);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Get_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Incl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Intersection);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Group_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Range_excl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Range_incl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Translate_ranks);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_Union);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Group_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_HIGHEST_PROTOCOL);
  Py_CLEAR(clear_module_state->__pyx_n_s_HINDEXED);
  Py_CLEAR(clear_module_state->__pyx_n_s_HINDEXED_BLOCK);
  Py_CLEAR(clear_module_state->__pyx_n_s_HVECTOR);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Hashable_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_IDENT);
  Py_CLEAR(clear_module_state->__pyx_n_s_INDEXED);
  Py_CLEAR(clear_module_state->__pyx_n_s_INDEXED_BLOCK);
  Py_CLEAR(clear_module_state->__pyx_n_s_INFO_ENV);
  Py_CLEAR(clear_module_state->__pyx_n_s_INFO_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_INT16_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_INT32_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_INT64_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_INT8_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_INTEGER);
  Py_CLEAR(clear_module_state->__pyx_n_s_INTEGER1);
  Py_CLEAR(clear_module_state->__pyx_n_s_INTEGER16);
  Py_CLEAR(clear_module_state->__pyx_n_s_INTEGER2);
  Py_CLEAR(clear_module_state->__pyx_n_s_INTEGER4);
  Py_CLEAR(clear_module_state->__pyx_n_s_INTEGER8);
  Py_CLEAR(clear_module_state->__pyx_n_s_INT_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_IN_PLACE);
  Py_CLEAR(clear_module_state->__pyx_n_s_IO);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iagree);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iallgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iallgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iallreduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ialltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ialltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ialltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ibarrier);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ibcast);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ibsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Idup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Idup_with_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iexscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iflush_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Igather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Igatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_ImportError);
  Py_CLEAR(clear_module_state->__pyx_n_s_ImportWarning);
  Py_CLEAR(clear_module_state->__pyx_n_s_Improbe);
  Py_CLEAR(clear_module_state->__pyx_n_s_InPlaceType);
  Py_CLEAR(clear_module_state->__pyx_n_s_InPlaceType___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Incl);
  Py_CLEAR(clear_module_state->__pyx_n_s_IndexError);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ineighbor_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ineighbor_allgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ineighbor_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ineighbor_alltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ineighbor_alltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Create);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Create_env);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Delete);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Dup);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Get);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Get_nkeys);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Get_nthkey);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Info_Mapping_str_str_Iterable_tu);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Info_Mapping_str_str_Iterable_tu_2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Info_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_Set);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_clear);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_get);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_items);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_keys);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_pop);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_popitem);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_update);
  Py_CLEAR(clear_module_state->__pyx_n_s_Info_values);
  Py_CLEAR(clear_module_state->__pyx_n_s_Init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Init_thread);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intercomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intercomm_Create_from_groups);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intercomm_Get_remote_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intercomm_Get_remote_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intercomm_Merge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intersect);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intersection);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Accept);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Cart_map);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Connect);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Create_cart);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Create_dist_graph);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Create_dist_graph_adja);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Create_from_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Create_graph);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Create_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Create_intercomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Exscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Exscan_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Graph_map);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Iexscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Iscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Scan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Scan_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Spawn);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_Spawn_multiple);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_exscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Intracomm_scan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iread);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iread_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iread_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iread_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iread_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Irecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ireduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ireduce_scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ireduce_scatter_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Irsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_cancelled);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_commutative);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_finalized);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_initialized);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_inter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_intra);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_revoked);
  Py_CLEAR(clear_module_state->__pyx_n_s_Is_thread_main);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iscatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iscatterv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Isend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Isendrecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Isendrecv_replace);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ishrink);
  Py_CLEAR(clear_module_state->__pyx_n_s_Issend);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Iterable_Buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iwrite);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iwrite_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iwrite_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iwrite_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Iwrite_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Join);
  Py_CLEAR(clear_module_state->__pyx_n_s_KEYVAL_INVALID);
  Py_CLEAR(clear_module_state->__pyx_n_s_KeyError);
  Py_CLEAR(clear_module_state->__pyx_n_s_LAND);
  Py_CLEAR(clear_module_state->__pyx_n_s_LASTUSEDCODE);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOCK_EXCLUSIVE);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOCK_SHARED);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOGICAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOGICAL1);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOGICAL2);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOGICAL4);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOGICAL8);
  Py_CLEAR(clear_module_state->__pyx_n_s_LONG);
  Py_CLEAR(clear_module_state->__pyx_n_s_LONG_DOUBLE);
  Py_CLEAR(clear_module_state->__pyx_n_s_LONG_DOUBLE_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_LONG_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_LONG_LONG);
  Py_CLEAR(clear_module_state->__pyx_n_s_LOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_LXOR);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Literal_True);
  Py_CLEAR(clear_module_state->__pyx_n_s_Lock);
  Py_CLEAR(clear_module_state->__pyx_n_s_Lock_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Lookup_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAXLOC);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_DATAREP_STRING);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_ERROR_STRING);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_INFO_KEY);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_INFO_VAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_LIBRARY_VERSION_STRING);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_OBJECT_NAME);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_PORT_NAME);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_PROCESSOR_NAME);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_PSET_NAME_LEN);
  Py_CLEAR(clear_module_state->__pyx_n_s_MAX_STRINGTAG_LEN);
  Py_CLEAR(clear_module_state->__pyx_n_s_MESSAGE_NO_PROC);
  Py_CLEAR(clear_module_state->__pyx_n_s_MESSAGE_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_MIN);
  Py_CLEAR(clear_module_state->__pyx_n_s_MINLOC);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_APPEND);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_CREATE);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_DELETE_ON_CLOSE);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_EXCL);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_NOCHECK);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_NOPRECEDE);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_NOPUT);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_NOSTORE);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_NOSUCCEED);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_RDONLY);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_RDWR);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_SEQUENTIAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_UNIQUE_OPEN);
  Py_CLEAR(clear_module_state->__pyx_n_s_MODE_WRONLY);
  Py_CLEAR(clear_module_state->__pyx_n_b_MPI4PY_RC);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Comm);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Datatype);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Errhandler);
  Py_CLEAR(clear_module_state->__pyx_kp_u_MPI_Exception);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_File);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Group);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Info);
  Py_CLEAR(clear_module_state->__pyx_kp_u_MPI_Init_failed_error_code);
  Py_CLEAR(clear_module_state->__pyx_kp_u_MPI_Init_thread_failed_error_cod);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Message);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Op);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Request);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Session);
  Py_CLEAR(clear_module_state->__pyx_n_s_MPI_Win);
  Py_CLEAR(clear_module_state->__pyx_n_s_Match_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_MemoryError);
  Py_CLEAR(clear_module_state->__pyx_n_s_Merge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_Iprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_Irecv);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Message_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Message_Passing_Interface);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_Probe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_Recv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_iprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_irecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_probe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Message_recv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Mprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_NAMED);
  Py_CLEAR(clear_module_state->__pyx_n_s_NO_OP);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_allgather_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_allgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_allgatherv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_alltoall_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_alltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_alltoallv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_alltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Neighbor_alltoallw_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_NoReturn);
  Py_CLEAR(clear_module_state->__pyx_n_s_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_NotImplemented);
  Py_CLEAR(clear_module_state->__pyx_n_s_NotImplementedError);
  Py_CLEAR(clear_module_state->__pyx_n_s_OFFSET);
  Py_CLEAR(clear_module_state->__pyx_n_s_OP_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_ORDER_C);
  Py_CLEAR(clear_module_state->__pyx_n_s_ORDER_F);
  Py_CLEAR(clear_module_state->__pyx_n_s_ORDER_FORTRAN);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Object_is_not_writable);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Op_Callable_Any_Any_Any);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_Create);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_Is_commutative);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_Reduce_local);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Op_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Open);
  Py_CLEAR(clear_module_state->__pyx_n_s_Open_port);
  Py_CLEAR(clear_module_state->__pyx_n_s_OverflowError);
  Py_CLEAR(clear_module_state->__pyx_n_s_PACKED);
  Py_CLEAR(clear_module_state->__pyx_n_s_PROC_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_PROD);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pack);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pack_external);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pack_external_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pack_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Parrived);
  Py_CLEAR(clear_module_state->__pyx_kp_s_PathLike_AnyStr_str_bytes);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pcontrol);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pickle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pickle_dumps);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pickle_dumps_oob);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pickle_loads);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pickle_loads_oob);
  Py_CLEAR(clear_module_state->__pyx_n_s_Post);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pready);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pready_list);
  Py_CLEAR(clear_module_state->__pyx_n_s_Pready_range);
  Py_CLEAR(clear_module_state->__pyx_n_s_Preallocate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Precv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Prequest);
  Py_CLEAR(clear_module_state->__pyx_n_s_Prequest_Parrived);
  Py_CLEAR(clear_module_state->__pyx_n_s_Prequest_Pready);
  Py_CLEAR(clear_module_state->__pyx_n_s_Prequest_Pready_list);
  Py_CLEAR(clear_module_state->__pyx_n_s_Prequest_Pready_range);
  Py_CLEAR(clear_module_state->__pyx_n_s_Prequest_Start);
  Py_CLEAR(clear_module_state->__pyx_n_s_Prequest_Startall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Probe);
  Py_CLEAR(clear_module_state->__pyx_n_s_Psend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Publish_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Put);
  Py_CLEAR(clear_module_state->__pyx_n_s_Query_thread);
  Py_CLEAR(clear_module_state->__pyx_n_s_REAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_REAL16);
  Py_CLEAR(clear_module_state->__pyx_n_s_REAL2);
  Py_CLEAR(clear_module_state->__pyx_n_s_REAL4);
  Py_CLEAR(clear_module_state->__pyx_n_s_REAL8);
  Py_CLEAR(clear_module_state->__pyx_n_s_REPLACE);
  Py_CLEAR(clear_module_state->__pyx_n_s_REQUEST_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_RESIZED);
  Py_CLEAR(clear_module_state->__pyx_n_s_RLock);
  Py_CLEAR(clear_module_state->__pyx_n_s_ROOT);
  Py_CLEAR(clear_module_state->__pyx_n_s_Raccumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Range_excl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Range_incl);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_at_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_at_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_ordered);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_ordered_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_ordered_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_Read_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Recv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Recv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Reduce_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Reduce_local);
  Py_CLEAR(clear_module_state->__pyx_n_s_Reduce_scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Reduce_scatter_block);
  Py_CLEAR(clear_module_state->__pyx_n_s_Reduce_scatter_block_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Reduce_scatter_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Register_datarep);
  Py_CLEAR(clear_module_state->__pyx_n_s_Remove_error_class);
  Py_CLEAR(clear_module_state->__pyx_n_s_Remove_error_code);
  Py_CLEAR(clear_module_state->__pyx_n_s_Remove_error_string);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Cancel);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Get_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Get_status_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Get_status_any);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Get_status_some);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Test);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Testall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Testany);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Testsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Wait);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Waitall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Waitany);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_Waitsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_cancel);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_get_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_get_status_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_get_status_any);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_get_status_some);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_test);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_testall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_testany);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_testsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_wait);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_waitall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_waitany);
  Py_CLEAR(clear_module_state->__pyx_n_s_Request_waitsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_Resized);
  Py_CLEAR(clear_module_state->__pyx_n_s_Revoke);
  Py_CLEAR(clear_module_state->__pyx_n_s_Rget);
  Py_CLEAR(clear_module_state->__pyx_n_s_Rget_accumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Rput);
  Py_CLEAR(clear_module_state->__pyx_n_s_Rsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Rsend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_RuntimeWarning);
  Py_CLEAR(clear_module_state->__pyx_n_s_SEEK_CUR);
  Py_CLEAR(clear_module_state->__pyx_n_s_SEEK_END);
  Py_CLEAR(clear_module_state->__pyx_n_s_SEEK_SET);
  Py_CLEAR(clear_module_state->__pyx_n_s_SESSION_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_SHORT);
  Py_CLEAR(clear_module_state->__pyx_n_s_SHORT_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_SIGNED_CHAR);
  Py_CLEAR(clear_module_state->__pyx_n_s_SIGNED_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_SIGNED_LONG);
  Py_CLEAR(clear_module_state->__pyx_n_s_SIGNED_LONG_LONG);
  Py_CLEAR(clear_module_state->__pyx_n_s_SIGNED_SHORT);
  Py_CLEAR(clear_module_state->__pyx_n_s_SIMILAR);
  Py_CLEAR(clear_module_state->__pyx_n_s_SINT16_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_SINT32_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_SINT64_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_SINT8_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_STRUCT);
  Py_CLEAR(clear_module_state->__pyx_n_s_SUBARRAY);
  Py_CLEAR(clear_module_state->__pyx_n_s_SUBVERSION);
  Py_CLEAR(clear_module_state->__pyx_n_s_SUCCESS);
  Py_CLEAR(clear_module_state->__pyx_n_s_SUM);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scan);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scan_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatterv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatterv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Seek);
  Py_CLEAR(clear_module_state->__pyx_n_s_Seek_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Self);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Self_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Send);
  Py_CLEAR(clear_module_state->__pyx_n_s_Send_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Sendrecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Sendrecv_replace);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_Any);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_Datatype);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_Info_Info);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_Request);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_Sequence_str_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_bool);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_bool_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_int_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_str);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_str_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Sequence_tuple_int_int_int);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Attach_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Call_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Create_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Create_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Detach_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Finalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Flush_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Get_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Get_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Get_nth_pset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Get_num_psets);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Get_pset_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Iflush_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_Set_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Session_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_atomicity);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_cancelled);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_elements);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_error);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_source);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_tag);
  Py_CLEAR(clear_module_state->__pyx_n_s_Set_view);
  Py_CLEAR(clear_module_state->__pyx_n_s_Shared_query);
  Py_CLEAR(clear_module_state->__pyx_n_s_Shift);
  Py_CLEAR(clear_module_state->__pyx_n_s_Shrink);
  Py_CLEAR(clear_module_state->__pyx_n_s_Spawn);
  Py_CLEAR(clear_module_state->__pyx_n_s_Spawn_multiple);
  Py_CLEAR(clear_module_state->__pyx_n_s_Split);
  Py_CLEAR(clear_module_state->__pyx_n_s_Split_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ssend);
  Py_CLEAR(clear_module_state->__pyx_n_s_Ssend_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Start);
  Py_CLEAR(clear_module_state->__pyx_n_s_Startall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Get_count);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Get_elements);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Get_error);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Get_source);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Get_tag);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Is_cancelled);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Status_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Set_cancelled);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Set_elements);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Set_error);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Set_source);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_Set_tag);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status___getstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status___setstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Status_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Sub);
  Py_CLEAR(clear_module_state->__pyx_n_s_Sync);
  Py_CLEAR(clear_module_state->__pyx_n_s_TAG_UB);
  Py_CLEAR(clear_module_state->__pyx_n_s_THREAD_FUNNELED);
  Py_CLEAR(clear_module_state->__pyx_n_s_THREAD_MULTIPLE);
  Py_CLEAR(clear_module_state->__pyx_n_s_THREAD_SERIALIZED);
  Py_CLEAR(clear_module_state->__pyx_n_s_THREAD_SINGLE);
  Py_CLEAR(clear_module_state->__pyx_n_s_TWOINT);
  Py_CLEAR(clear_module_state->__pyx_n_s_TYPECLASS_COMPLEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_TYPECLASS_INTEGER);
  Py_CLEAR(clear_module_state->__pyx_n_s_TYPECLASS_REAL);
  Py_CLEAR(clear_module_state->__pyx_kp_s_TargetSpec_None);
  Py_CLEAR(clear_module_state->__pyx_n_s_Test);
  Py_CLEAR(clear_module_state->__pyx_n_s_Testall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Testany);
  Py_CLEAR(clear_module_state->__pyx_n_s_Testsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Ineighbor_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Ineighbor_allgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Ineighbor_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Ineighbor_alltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Ineighbor_alltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_allgather_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_allgatherv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_allgatherv_ini);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_alltoall_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallv);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallv_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallw);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallw_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_neighbor_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_Topocomm_neighbor_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Translate_ranks);
  Py_CLEAR(clear_module_state->__pyx_n_s_TypeError);
  Py_CLEAR(clear_module_state->__pyx_n_s_UINT16_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_UINT32_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_UINT64_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_UINT8_T);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNDEFINED);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNEQUAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNIVERSE_SIZE);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNSIGNED);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNSIGNED_CHAR);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNSIGNED_INT);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNSIGNED_LONG);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNSIGNED_LONG_LONG);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNSIGNED_SHORT);
  Py_CLEAR(clear_module_state->__pyx_n_s_UNWEIGHTED);
  Py_CLEAR(clear_module_state->__pyx_n_s_Union);
  Py_CLEAR(clear_module_state->__pyx_n_s_Unlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_Unlock_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Unpack);
  Py_CLEAR(clear_module_state->__pyx_n_s_Unpack_external);
  Py_CLEAR(clear_module_state->__pyx_n_s_Unpublish_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_UserWarning);
  Py_CLEAR(clear_module_state->__pyx_n_s_V);
  Py_CLEAR(clear_module_state->__pyx_n_u_V);
  Py_CLEAR(clear_module_state->__pyx_n_s_VALUE_INDEX);
  Py_CLEAR(clear_module_state->__pyx_n_s_VECTOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_VERSION);
  Py_CLEAR(clear_module_state->__pyx_n_s_ValueError);
  Py_CLEAR(clear_module_state->__pyx_n_s_WCHAR);
  Py_CLEAR(clear_module_state->__pyx_n_s_WEIGHTS_EMPTY);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_BASE);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_CREATE_FLAVOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_DISP_UNIT);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_FLAVOR);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_FLAVOR_ALLOCATE);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_FLAVOR_CREATE);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_FLAVOR_DYNAMIC);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_FLAVOR_SHARED);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_MODEL);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_NULL);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_SEPARATE);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_SIZE);
  Py_CLEAR(clear_module_state->__pyx_n_s_WIN_UNIFIED);
  Py_CLEAR(clear_module_state->__pyx_n_s_WTIME_IS_GLOBAL);
  Py_CLEAR(clear_module_state->__pyx_n_s_Wait);
  Py_CLEAR(clear_module_state->__pyx_n_s_Waitall);
  Py_CLEAR(clear_module_state->__pyx_n_s_Waitany);
  Py_CLEAR(clear_module_state->__pyx_n_s_Waitsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Accumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Allocate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Allocate_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Attach);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Call_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Compare_and_swap);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Complete);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Create);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Create_dynamic);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Create_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Create_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Delete_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Detach);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Fence);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Fetch_and_op);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Flush);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Flush_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Flush_local);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Flush_local_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Free_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Get);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Get_accumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Get_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Get_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Get_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Get_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Get_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Lock);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Lock_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Post);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Put);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Raccumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Rget);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Rget_accumulate);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Rput);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Set_attr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Set_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Set_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Set_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Shared_query);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Start);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Sync);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Test);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Unlock);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Unlock_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_Wait);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win___reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_Win_tomemory);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_at);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_at_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_at_all_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_at_all_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_ordered);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_ordered_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_ordered_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_Write_shared);
  Py_CLEAR(clear_module_state->__pyx_n_s_Wtick);
  Py_CLEAR(clear_module_state->__pyx_n_s_Wtime);
  Py_CLEAR(clear_module_state->__pyx_kp_u__17);
  Py_CLEAR(clear_module_state->__pyx_kp_u__2);
  Py_CLEAR(clear_module_state->__pyx_n_s__205);
  Py_CLEAR(clear_module_state->__pyx_kp_u__3);
  Py_CLEAR(clear_module_state->__pyx_kp_u__30);
  Py_CLEAR(clear_module_state->__pyx_kp_u__57);
  Py_CLEAR(clear_module_state->__pyx_n_s__809);
  Py_CLEAR(clear_module_state->__pyx_n_s_a);
  Py_CLEAR(clear_module_state->__pyx_n_s_abort);
  Py_CLEAR(clear_module_state->__pyx_n_s_addr);
  Py_CLEAR(clear_module_state->__pyx_n_s_addr1);
  Py_CLEAR(clear_module_state->__pyx_n_s_addr2);
  Py_CLEAR(clear_module_state->__pyx_n_s_address);
  Py_CLEAR(clear_module_state->__pyx_n_s_addresses);
  Py_CLEAR(clear_module_state->__pyx_n_s_addressof);
  Py_CLEAR(clear_module_state->__pyx_n_s_align);
  Py_CLEAR(clear_module_state->__pyx_n_s_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_allocate);
  Py_CLEAR(clear_module_state->__pyx_n_s_allocate_lock);
  Py_CLEAR(clear_module_state->__pyx_n_s_allreduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_amode);
  Py_CLEAR(clear_module_state->__pyx_kp_u_and_counts);
  Py_CLEAR(clear_module_state->__pyx_kp_u_and_receive_count);
  Py_CLEAR(clear_module_state->__pyx_kp_u_and_sum_counts);
  Py_CLEAR(clear_module_state->__pyx_n_s_append);
  Py_CLEAR(clear_module_state->__pyx_n_s_arg);
  Py_CLEAR(clear_module_state->__pyx_n_s_argc);
  Py_CLEAR(clear_module_state->__pyx_n_s_args);
  Py_CLEAR(clear_module_state->__pyx_n_s_argv);
  Py_CLEAR(clear_module_state->__pyx_n_s_argvs);
  Py_CLEAR(clear_module_state->__pyx_n_s_array_of_partitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_assertion);
  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
  Py_CLEAR(clear_module_state->__pyx_n_s_attrval);
  Py_CLEAR(clear_module_state->__pyx_n_s_barrier);
  Py_CLEAR(clear_module_state->__pyx_n_s_base);
  Py_CLEAR(clear_module_state->__pyx_n_s_baseptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_bcast);
  Py_CLEAR(clear_module_state->__pyx_kp_s_bcast_p2p);
  Py_CLEAR(clear_module_state->__pyx_n_s_blocklength);
  Py_CLEAR(clear_module_state->__pyx_n_s_blocklengths);
  Py_CLEAR(clear_module_state->__pyx_n_s_bool);
  Py_CLEAR(clear_module_state->__pyx_n_s_bsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_buf);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_allocate);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_callback);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_cast);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_fromaddress);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_frombuffer);
  Py_CLEAR(clear_module_state->__pyx_kp_s_buffer_is_not_CPU_accessible);
  Py_CLEAR(clear_module_state->__pyx_kp_s_buffer_is_read_only);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_release);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_tobytes);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_toreadonly);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffers);
  Py_CLEAR(clear_module_state->__pyx_n_s_buflen);
  Py_CLEAR(clear_module_state->__pyx_n_s_bytes);
  Py_CLEAR(clear_module_state->__pyx_n_s_c);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_num_to_ack);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_call);
  Py_CLEAR(clear_module_state->__pyx_n_s_cancel);
  Py_CLEAR(clear_module_state->__pyx_n_s_cancel_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_cancelled);
  Py_CLEAR(clear_module_state->__pyx_kp_s_cannot_call_user_defined_operati);
  Py_CLEAR(clear_module_state->__pyx_kp_s_cannot_create_instance);
  Py_CLEAR(clear_module_state->__pyx_kp_s_cannot_create_too_many_user_defi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_cannot_create_too_many_user_defi_2);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_map);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_map_code);
  Py_CLEAR(clear_module_state->__pyx_kp_s_cannot_map_to_character_code_or);
  Py_CLEAR(clear_module_state->__pyx_kp_s_cannot_pickle_user_defined_reduc);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cannot_serialize);
  Py_CLEAR(clear_module_state->__pyx_n_s_cast);
  Py_CLEAR(clear_module_state->__pyx_n_s_cdatarep);
  Py_CLEAR(clear_module_state->__pyx_n_s_cerrhdl);
  Py_CLEAR(clear_module_state->__pyx_n_s_cetype);
  Py_CLEAR(clear_module_state->__pyx_n_s_cfilename);
  Py_CLEAR(clear_module_state->__pyx_n_s_cftype);
  Py_CLEAR(clear_module_state->__pyx_n_s_cinfo);
  Py_CLEAR(clear_module_state->__pyx_n_s_ckey);
  Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem);
  Py_CLEAR(clear_module_state->__pyx_n_s_clear);
  Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
  Py_CLEAR(clear_module_state->__pyx_n_s_cls);
  Py_CLEAR(clear_module_state->__pyx_n_s_cmd);
  Py_CLEAR(clear_module_state->__pyx_n_s_cmds);
  Py_CLEAR(clear_module_state->__pyx_n_s_cmessage);
  Py_CLEAR(clear_module_state->__pyx_n_s_cname);
  Py_CLEAR(clear_module_state->__pyx_n_s_code);
  Py_CLEAR(clear_module_state->__pyx_n_s_color);
  Py_CLEAR(clear_module_state->__pyx_n_s_combiner);
  Py_CLEAR(clear_module_state->__pyx_n_s_comm);
  Py_CLEAR(clear_module_state->__pyx_n_s_comm_lock);
  Py_CLEAR(clear_module_state->__pyx_n_s_comm_lock_table);
  Py_CLEAR(clear_module_state->__pyx_n_s_command);
  Py_CLEAR(clear_module_state->__pyx_kp_s_commctx_inter);
  Py_CLEAR(clear_module_state->__pyx_n_s_commctx_inter_2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_commctx_intra);
  Py_CLEAR(clear_module_state->__pyx_n_s_commctx_intra_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_commute);
  Py_CLEAR(clear_module_state->__pyx_n_s_compare);
  Py_CLEAR(clear_module_state->__pyx_kp_u_compare_expecting_a_single_eleme);
  Py_CLEAR(clear_module_state->__pyx_n_s_complete);
  Py_CLEAR(clear_module_state->__pyx_n_s_coords);
  Py_CLEAR(clear_module_state->__pyx_n_s_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_copy_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_copy_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_copyreg);
  Py_CLEAR(clear_module_state->__pyx_n_s_count);
  Py_CLEAR(clear_module_state->__pyx_n_s_counts);
  Py_CLEAR(clear_module_state->__pyx_n_s_cportname);
  Py_CLEAR(clear_module_state->__pyx_n_s_csrvcname);
  Py_CLEAR(clear_module_state->__pyx_n_s_cstring);
  Py_CLEAR(clear_module_state->__pyx_n_s_cstringtag);
  Py_CLEAR(clear_module_state->__pyx_n_s_cuda_array_interface);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cuda_array_interface___buffer);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cuda_array_interface___buffer_2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_cuda_array_interface___cannot);
  Py_CLEAR(clear_module_state->__pyx_kp_u_cuda_array_interface___typestr);
  Py_CLEAR(clear_module_state->__pyx_n_s_cvalue);
  Py_CLEAR(clear_module_state->__pyx_n_s_d);
  Py_CLEAR(clear_module_state->__pyx_n_s_dargs);
  Py_CLEAR(clear_module_state->__pyx_n_s_data);
  Py_CLEAR(clear_module_state->__pyx_n_s_datarep);
  Py_CLEAR(clear_module_state->__pyx_n_s_datatype);
  Py_CLEAR(clear_module_state->__pyx_n_s_datatype_create);
  Py_CLEAR(clear_module_state->__pyx_n_s_datatype_decode);
  Py_CLEAR(clear_module_state->__pyx_n_s_datatypes);
  Py_CLEAR(clear_module_state->__pyx_n_s_decode);
  Py_CLEAR(clear_module_state->__pyx_n_s_default);
  Py_CLEAR(clear_module_state->__pyx_n_s_degrees);
  Py_CLEAR(clear_module_state->__pyx_n_s_del);
  Py_CLEAR(clear_module_state->__pyx_n_s_delete_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_descr);
  Py_CLEAR(clear_module_state->__pyx_n_s_dest);
  Py_CLEAR(clear_module_state->__pyx_n_s_destinations);
  Py_CLEAR(clear_module_state->__pyx_n_s_destweights);
  Py_CLEAR(clear_module_state->__pyx_n_s_dict);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dict_Hashable_Lock);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dict_str_Any);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dict_str_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dict_str_int);
  Py_CLEAR(clear_module_state->__pyx_n_s_dim);
  Py_CLEAR(clear_module_state->__pyx_n_s_dims);
  Py_CLEAR(clear_module_state->__pyx_n_s_direction);
  Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
  Py_CLEAR(clear_module_state->__pyx_n_s_disp);
  Py_CLEAR(clear_module_state->__pyx_n_s_disp_unit);
  Py_CLEAR(clear_module_state->__pyx_n_s_displacements);
  Py_CLEAR(clear_module_state->__pyx_n_s_distribs);
  Py_CLEAR(clear_module_state->__pyx_n_s_dlpack);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_buffer_is_not_contiguous);
  Py_CLEAR(clear_module_state->__pyx_n_s_dlpack_device);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_invalid_capsule_object);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_missing_support);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_number_of_dimensions_is_n);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_shape_is_NULL);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_shape_item_is_negative);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_strides_item_is_negative);
  Py_CLEAR(clear_module_state->__pyx_kp_s_dlpack_unexpected_version);
  Py_CLEAR(clear_module_state->__pyx_n_s_doc);
  Py_CLEAR(clear_module_state->__pyx_n_s_dst);
  Py_CLEAR(clear_module_state->__pyx_n_s_dtype);
  Py_CLEAR(clear_module_state->__pyx_n_s_dummy_thread);
  Py_CLEAR(clear_module_state->__pyx_n_s_dumps);
  Py_CLEAR(clear_module_state->__pyx_n_s_dumps_oob);
  Py_CLEAR(clear_module_state->__pyx_n_s_dupcomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_dw);
  Py_CLEAR(clear_module_state->__pyx_n_s_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_elements);
  Py_CLEAR(clear_module_state->__pyx_kp_s_empty_weights_but_nonzero_degree);
  Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
  Py_CLEAR(clear_module_state->__pyx_n_s_enter);
  Py_CLEAR(clear_module_state->__pyx_n_s_errcodes);
  Py_CLEAR(clear_module_state->__pyx_n_s_errhandler);
  Py_CLEAR(clear_module_state->__pyx_n_s_errhandler_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_error);
  Py_CLEAR(clear_module_state->__pyx_kp_u_error_code);
  Py_CLEAR(clear_module_state->__pyx_n_s_errorclass);
  Py_CLEAR(clear_module_state->__pyx_n_s_errorcode);
  Py_CLEAR(clear_module_state->__pyx_n_s_etype);
  Py_CLEAR(clear_module_state->__pyx_n_s_ex);
  Py_CLEAR(clear_module_state->__pyx_n_s_exception);
  Py_CLEAR(clear_module_state->__pyx_n_s_exit);
  Py_CLEAR(clear_module_state->__pyx_kp_u_expecting);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_a_Cartesian_communicat);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_a_distributed_graph_co);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_a_general_graph_commun);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_a_sequence_of_strings);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_a_topology_communicato);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_an_MPI_instance);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_an_MPI_type_or_instanc);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_an_intercommunicator);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_an_intracommunicator);
  Py_CLEAR(clear_module_state->__pyx_kp_u_expecting_buffer_with_format);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_non_NULL_address);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_non_negative_buffer_le);
  Py_CLEAR(clear_module_state->__pyx_kp_s_expecting_non_negative_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_exscan);
  Py_CLEAR(clear_module_state->__pyx_n_s_extent);
  Py_CLEAR(clear_module_state->__pyx_n_s_extent_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_f2py);
  Py_CLEAR(clear_module_state->__pyx_n_s_f_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_fatal);
  Py_CLEAR(clear_module_state->__pyx_n_s_fd);
  Py_CLEAR(clear_module_state->__pyx_n_s_file);
  Py_CLEAR(clear_module_state->__pyx_n_s_filename);
  Py_CLEAR(clear_module_state->__pyx_n_s_filetype);
  Py_CLEAR(clear_module_state->__pyx_n_s_flag);
  Py_CLEAR(clear_module_state->__pyx_kp_s_flag_expecting_int_buffer_of_len);
  Py_CLEAR(clear_module_state->__pyx_n_s_flag_len);
  Py_CLEAR(clear_module_state->__pyx_n_s_flag_ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_flags);
  Py_CLEAR(clear_module_state->__pyx_n_s_float);
  Py_CLEAR(clear_module_state->__pyx_n_s_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_fn_c);
  Py_CLEAR(clear_module_state->__pyx_n_s_fn_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_format);
  Py_CLEAR(clear_module_state->__pyx_kp_u_format_string);
  Py_CLEAR(clear_module_state->__pyx_n_s_free);
  Py_CLEAR(clear_module_state->__pyx_n_s_free_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_fromaddress);
  Py_CLEAR(clear_module_state->__pyx_n_s_frombuffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_fromcode);
  Py_CLEAR(clear_module_state->__pyx_n_s_fromhandle);
  Py_CLEAR(clear_module_state->__pyx_n_s_ftype);
  Py_CLEAR(clear_module_state->__pyx_n_s_function);
  Py_CLEAR(clear_module_state->__pyx_n_s_funneled);
  Py_CLEAR(clear_module_state->__pyx_n_s_gather);
  Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
  Py_CLEAR(clear_module_state->__pyx_n_s_get);
  Py_CLEAR(clear_module_state->__pyx_n_s_get_buffer_callback_locals_buffe);
  Py_CLEAR(clear_module_state->__pyx_n_s_get_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_get_status_all);
  Py_CLEAR(clear_module_state->__pyx_n_s_get_status_any);
  Py_CLEAR(clear_module_state->__pyx_n_s_get_status_some);
  Py_CLEAR(clear_module_state->__pyx_n_s_get_vendor);
  Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
  Py_CLEAR(clear_module_state->__pyx_kp_u_got);
  Py_CLEAR(clear_module_state->__pyx_n_s_grequest);
  Py_CLEAR(clear_module_state->__pyx_n_s_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_group1);
  Py_CLEAR(clear_module_state->__pyx_n_s_group2);
  Py_CLEAR(clear_module_state->__pyx_n_s_gsizes);
  Py_CLEAR(clear_module_state->__pyx_n_s_handle);
  Py_CLEAR(clear_module_state->__pyx_n_s_handleof);
  Py_CLEAR(clear_module_state->__pyx_n_s_high);
  Py_CLEAR(clear_module_state->__pyx_n_s_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_iblen);
  Py_CLEAR(clear_module_state->__pyx_n_s_ibptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ibsend);
  Py_CLEAR(clear_module_state->__pyx_n_s_icoords);
  Py_CLEAR(clear_module_state->__pyx_n_s_icount);
  Py_CLEAR(clear_module_state->__pyx_n_s_idargs);
  Py_CLEAR(clear_module_state->__pyx_n_s_idegree);
  Py_CLEAR(clear_module_state->__pyx_n_s_idest);
  Py_CLEAR(clear_module_state->__pyx_n_s_idestweight);
  Py_CLEAR(clear_module_state->__pyx_n_s_idims);
  Py_CLEAR(clear_module_state->__pyx_n_s_idisp);
  Py_CLEAR(clear_module_state->__pyx_n_s_idistribs);
  Py_CLEAR(clear_module_state->__pyx_n_s_iedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_ierr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ierrcodes);
  Py_CLEAR(clear_module_state->__pyx_n_s_igsizes);
  Py_CLEAR(clear_module_state->__pyx_n_s_iindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_imaxprocs);
  Py_CLEAR(clear_module_state->__pyx_n_s_import);
  Py_CLEAR(clear_module_state->__pyx_n_s_improbe);
  Py_CLEAR(clear_module_state->__pyx_n_s_inbuf);
  Py_CLEAR(clear_module_state->__pyx_n_s_indegree);
  Py_CLEAR(clear_module_state->__pyx_n_s_index);
  Py_CLEAR(clear_module_state->__pyx_kp_s_index_must_be_integer_or_slice);
  Py_CLEAR(clear_module_state->__pyx_kp_s_index_out_of_range);
  Py_CLEAR(clear_module_state->__pyx_n_s_indices);
  Py_CLEAR(clear_module_state->__pyx_n_s_ineighbors);
  Py_CLEAR(clear_module_state->__pyx_n_s_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_infos);
  Py_CLEAR(clear_module_state->__pyx_n_s_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_inoutbuf);
  Py_CLEAR(clear_module_state->__pyx_n_s_inoutedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_insert);
  Py_CLEAR(clear_module_state->__pyx_kp_u_instance);
  Py_CLEAR(clear_module_state->__pyx_n_s_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_int_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_int_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_int_Sequence_int);
  Py_CLEAR(clear_module_state->__pyx_n_s_integers);
  Py_CLEAR(clear_module_state->__pyx_n_s_iperiods);
  Py_CLEAR(clear_module_state->__pyx_n_s_iprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_ipsizes);
  Py_CLEAR(clear_module_state->__pyx_n_s_iranks);
  Py_CLEAR(clear_module_state->__pyx_n_s_iranks1);
  Py_CLEAR(clear_module_state->__pyx_n_s_iranks2);
  Py_CLEAR(clear_module_state->__pyx_n_s_irecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_iremdims);
  Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
  Py_CLEAR(clear_module_state->__pyx_kp_u_is_not_a_multiple_of_datatype_e);
  Py_CLEAR(clear_module_state->__pyx_kp_u_is_not_a_multiple_of_required_n);
  Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_isend);
  Py_CLEAR(clear_module_state->__pyx_n_s_isizes);
  Py_CLEAR(clear_module_state->__pyx_n_s_isource);
  Py_CLEAR(clear_module_state->__pyx_n_s_isourceweight);
  Py_CLEAR(clear_module_state->__pyx_n_s_issend);
  Py_CLEAR(clear_module_state->__pyx_n_s_istarts);
  Py_CLEAR(clear_module_state->__pyx_n_s_isubsizes);
  Py_CLEAR(clear_module_state->__pyx_n_s_items);
  Py_CLEAR(clear_module_state->__pyx_kp_u_items_got);
  Py_CLEAR(clear_module_state->__pyx_kp_u_itemsize);
  Py_CLEAR(clear_module_state->__pyx_n_s_iweight);
  Py_CLEAR(clear_module_state->__pyx_n_s_j);
  Py_CLEAR(clear_module_state->__pyx_n_s_join);
  Py_CLEAR(clear_module_state->__pyx_n_s_k);
  Py_CLEAR(clear_module_state->__pyx_n_s_key);
  Py_CLEAR(clear_module_state->__pyx_n_s_keys);
  Py_CLEAR(clear_module_state->__pyx_n_s_keyval);
  Py_CLEAR(clear_module_state->__pyx_n_s_keyval_registry);
  Py_CLEAR(clear_module_state->__pyx_n_s_keyval_save);
  Py_CLEAR(clear_module_state->__pyx_n_s_kwargs);
  Py_CLEAR(clear_module_state->__pyx_n_s_kwds);
  Py_CLEAR(clear_module_state->__pyx_kp_u_lb);
  Py_CLEAR(clear_module_state->__pyx_n_s_lb_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_length);
  Py_CLEAR(clear_module_state->__pyx_kp_s_length_count_does_not_fit_in_MPI);
  Py_CLEAR(clear_module_state->__pyx_kp_s_length_size_larger_than_INT_MAX);
  Py_CLEAR(clear_module_state->__pyx_n_s_level);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_Any);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_Prequest);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_Status_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_int_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_int_tuple_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_list_int_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_str);
  Py_CLEAR(clear_module_state->__pyx_kp_s_list_tuple_str_str);
  Py_CLEAR(clear_module_state->__pyx_n_s_loads);
  Py_CLEAR(clear_module_state->__pyx_n_s_loads_oob);
  Py_CLEAR(clear_module_state->__pyx_n_s_local_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_local_leader);
  Py_CLEAR(clear_module_state->__pyx_n_s_localcomm);
  Py_CLEAR(clear_module_state->__pyx_n_s_location);
  Py_CLEAR(clear_module_state->__pyx_n_s_lock_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_low_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_lower);
  Py_CLEAR(clear_module_state->__pyx_n_s_m);
  Py_CLEAR(clear_module_state->__pyx_n_s_main);
  Py_CLEAR(clear_module_state->__pyx_n_s_major);
  Py_CLEAR(clear_module_state->__pyx_n_s_mark);
  Py_CLEAR(clear_module_state->__pyx_n_s_mask);
  Py_CLEAR(clear_module_state->__pyx_n_s_max_version);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxindegree);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxoutdegree);
  Py_CLEAR(clear_module_state->__pyx_n_s_maxprocs);
  Py_CLEAR(clear_module_state->__pyx_n_s_mem);
  Py_CLEAR(clear_module_state->__pyx_n_s_memory);
  Py_CLEAR(clear_module_state->__pyx_kp_s_memory_allocation_size_too_large);
  Py_CLEAR(clear_module_state->__pyx_kp_s_memory_allocation_with_negative);
  Py_CLEAR(clear_module_state->__pyx_n_s_memoryview);
  Py_CLEAR(clear_module_state->__pyx_n_s_message);
  Py_CLEAR(clear_module_state->__pyx_kp_s_message_BOTTOM_requires_counts);
  Py_CLEAR(clear_module_state->__pyx_kp_s_message_BOTTOM_requires_displs);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_buffer_is_None_but_count);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_cannot_handle_displaceme);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_cannot_handle_displaceme_2);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_cannot_infer_count_buffe);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_cannot_infer_count_datat);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_cannot_infer_count_datat_2);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_cannot_infer_count_numbe);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_displacement);
  Py_CLEAR(clear_module_state->__pyx_kp_s_message_expecting_2_to_4_items);
  Py_CLEAR(clear_module_state->__pyx_kp_s_message_expecting_buffer_or_list);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_negative_count);
  Py_CLEAR(clear_module_state->__pyx_kp_u_message_negative_displacement);
  Py_CLEAR(clear_module_state->__pyx_n_s_micro);
  Py_CLEAR(clear_module_state->__pyx_n_s_minor);
  Py_CLEAR(clear_module_state->__pyx_kp_u_mismatch_in_origin_and_compare_M);
  Py_CLEAR(clear_module_state->__pyx_kp_u_mismatch_in_origin_and_result_MP);
  Py_CLEAR(clear_module_state->__pyx_kp_u_mismatch_in_receive_count);
  Py_CLEAR(clear_module_state->__pyx_kp_u_mismatch_in_send_and_receive_MPI);
  Py_CLEAR(clear_module_state->__pyx_kp_u_mismatch_in_send_count);
  Py_CLEAR(clear_module_state->__pyx_kp_s_missing_CUDA_array_interface);
  Py_CLEAR(clear_module_state->__pyx_n_s_module);
  Py_CLEAR(clear_module_state->__pyx_n_s_mpi4py_MPI);
  Py_CLEAR(clear_module_state->__pyx_n_s_mprobe);
  Py_CLEAR(clear_module_state->__pyx_n_s_msg);
  Py_CLEAR(clear_module_state->__pyx_n_s_multiple);
  Py_CLEAR(clear_module_state->__pyx_n_s_n);
  Py_CLEAR(clear_module_state->__pyx_n_s_na);
  Py_CLEAR(clear_module_state->__pyx_n_s_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_name_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_native);
  Py_CLEAR(clear_module_state->__pyx_n_s_nbytes);
  Py_CLEAR(clear_module_state->__pyx_n_s_nc);
  Py_CLEAR(clear_module_state->__pyx_n_s_nd);
  Py_CLEAR(clear_module_state->__pyx_n_s_ndim);
  Py_CLEAR(clear_module_state->__pyx_n_s_ndims);
  Py_CLEAR(clear_module_state->__pyx_n_s_ne);
  Py_CLEAR(clear_module_state->__pyx_n_s_nedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_neighbor_allgather);
  Py_CLEAR(clear_module_state->__pyx_n_s_neighbor_alltoall);
  Py_CLEAR(clear_module_state->__pyx_n_s_neighbors);
  Py_CLEAR(clear_module_state->__pyx_n_s_newobj);
  Py_CLEAR(clear_module_state->__pyx_n_s_ni);
  Py_CLEAR(clear_module_state->__pyx_n_s_nindex);
  Py_CLEAR(clear_module_state->__pyx_n_s_nkeys);
  Py_CLEAR(clear_module_state->__pyx_n_s_nlen);
  Py_CLEAR(clear_module_state->__pyx_n_s_nneighbors);
  Py_CLEAR(clear_module_state->__pyx_n_s_nnodes);
  Py_CLEAR(clear_module_state->__pyx_n_s_no);
  Py_CLEAR(clear_module_state->__pyx_n_s_nopython);
  Py_CLEAR(clear_module_state->__pyx_n_s_np);
  Py_CLEAR(clear_module_state->__pyx_n_s_num_acked);
  Py_CLEAR(clear_module_state->__pyx_n_s_num_psets);
  Py_CLEAR(clear_module_state->__pyx_n_s_num_to_ack);
  Py_CLEAR(clear_module_state->__pyx_n_s_nv);
  Py_CLEAR(clear_module_state->__pyx_n_s_ob);
  Py_CLEAR(clear_module_state->__pyx_n_s_obj);
  Py_CLEAR(clear_module_state->__pyx_n_s_oblen);
  Py_CLEAR(clear_module_state->__pyx_n_s_obptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ocount);
  Py_CLEAR(clear_module_state->__pyx_n_s_offset);
  Py_CLEAR(clear_module_state->__pyx_n_s_op);
  Py_CLEAR(clear_module_state->__pyx_n_s_order);
  Py_CLEAR(clear_module_state->__pyx_kp_s_org_mpi4py);
  Py_CLEAR(clear_module_state->__pyx_n_s_origin);
  Py_CLEAR(clear_module_state->__pyx_kp_u_origin_expecting_a_single_elemen);
  Py_CLEAR(clear_module_state->__pyx_kp_u_out_of_bounds_number_of_datatyp);
  Py_CLEAR(clear_module_state->__pyx_n_s_outbuf);
  Py_CLEAR(clear_module_state->__pyx_n_s_outdegree);
  Py_CLEAR(clear_module_state->__pyx_n_s_p);
  Py_CLEAR(clear_module_state->__pyx_n_s_params);
  Py_CLEAR(clear_module_state->__pyx_n_s_partition);
  Py_CLEAR(clear_module_state->__pyx_n_s_partition_high);
  Py_CLEAR(clear_module_state->__pyx_n_s_partition_low);
  Py_CLEAR(clear_module_state->__pyx_n_s_partitions);
  Py_CLEAR(clear_module_state->__pyx_n_s_peer_comm);
  Py_CLEAR(clear_module_state->__pyx_n_s_periods);
  Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
  Py_CLEAR(clear_module_state->__pyx_n_s_pickle5);
  Py_CLEAR(clear_module_state->__pyx_n_s_pop);
  Py_CLEAR(clear_module_state->__pyx_n_s_popitem);
  Py_CLEAR(clear_module_state->__pyx_n_s_port_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_position);
  Py_CLEAR(clear_module_state->__pyx_n_s_probe);
  Py_CLEAR(clear_module_state->__pyx_n_s_protocol);
  Py_CLEAR(clear_module_state->__pyx_n_s_provided);
  Py_CLEAR(clear_module_state->__pyx_n_s_pset_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_psizes);
  Py_CLEAR(clear_module_state->__pyx_n_s_ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ptype);
  Py_CLEAR(clear_module_state->__pyx_n_s_py2f);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
  Py_CLEAR(clear_module_state->__pyx_n_s_q);
  Py_CLEAR(clear_module_state->__pyx_n_s_query_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_r);
  Py_CLEAR(clear_module_state->__pyx_n_s_range);
  Py_CLEAR(clear_module_state->__pyx_n_s_ranges);
  Py_CLEAR(clear_module_state->__pyx_n_s_rank);
  Py_CLEAR(clear_module_state->__pyx_n_s_ranks);
  Py_CLEAR(clear_module_state->__pyx_n_s_ranks2);
  Py_CLEAR(clear_module_state->__pyx_n_s_rc);
  Py_CLEAR(clear_module_state->__pyx_n_s_rd);
  Py_CLEAR(clear_module_state->__pyx_n_s_read_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_readonly);
  Py_CLEAR(clear_module_state->__pyx_n_s_recv);
  Py_CLEAR(clear_module_state->__pyx_n_s_recvbuf);
  Py_CLEAR(clear_module_state->__pyx_n_s_recvcounts);
  Py_CLEAR(clear_module_state->__pyx_n_s_recvtag);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_release);
  Py_CLEAR(clear_module_state->__pyx_n_s_remain_dims);
  Py_CLEAR(clear_module_state->__pyx_n_s_remote_group);
  Py_CLEAR(clear_module_state->__pyx_n_s_remote_leader);
  Py_CLEAR(clear_module_state->__pyx_n_s_reorder);
  Py_CLEAR(clear_module_state->__pyx_n_s_request);
  Py_CLEAR(clear_module_state->__pyx_n_s_requests);
  Py_CLEAR(clear_module_state->__pyx_n_s_required);
  Py_CLEAR(clear_module_state->__pyx_n_s_result);
  Py_CLEAR(clear_module_state->__pyx_kp_u_result_expecting_a_single_elemen);
  Py_CLEAR(clear_module_state->__pyx_n_s_resultlen);
  Py_CLEAR(clear_module_state->__pyx_n_s_return);
  Py_CLEAR(clear_module_state->__pyx_n_s_rmsg);
  Py_CLEAR(clear_module_state->__pyx_n_s_root);
  Py_CLEAR(clear_module_state->__pyx_n_s_rs);
  Py_CLEAR(clear_module_state->__pyx_n_s_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_scan);
  Py_CLEAR(clear_module_state->__pyx_n_s_scatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_self);
  Py_CLEAR(clear_module_state->__pyx_n_s_send);
  Py_CLEAR(clear_module_state->__pyx_n_s_sendbuf);
  Py_CLEAR(clear_module_state->__pyx_n_s_sendobj);
  Py_CLEAR(clear_module_state->__pyx_n_s_sendrecv);
  Py_CLEAR(clear_module_state->__pyx_n_s_sendtag);
  Py_CLEAR(clear_module_state->__pyx_n_s_serialized);
  Py_CLEAR(clear_module_state->__pyx_n_s_service_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_session);
  Py_CLEAR(clear_module_state->__pyx_n_s_set_abort_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_shape);
  Py_CLEAR(clear_module_state->__pyx_n_s_single);
  Py_CLEAR(clear_module_state->__pyx_kp_u_size);
  Py_CLEAR(clear_module_state->__pyx_n_s_size_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_sizeof);
  Py_CLEAR(clear_module_state->__pyx_n_s_sizes);
  Py_CLEAR(clear_module_state->__pyx_kp_s_slice_length_does_not_match_buff);
  Py_CLEAR(clear_module_state->__pyx_kp_s_slice_with_step_not_supported);
  Py_CLEAR(clear_module_state->__pyx_n_s_smsg);
  Py_CLEAR(clear_module_state->__pyx_n_s_source);
  Py_CLEAR(clear_module_state->__pyx_n_s_sources);
  Py_CLEAR(clear_module_state->__pyx_n_s_sourceweights);
  Py_CLEAR(clear_module_state->__pyx_n_s_split_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_src);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_File_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Group_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Info_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Message_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Op_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Request_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Session_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Status_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Win_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_atimport_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_bufaimpl_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi);
  Py_CLEAR(clear_module_state->__pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi);
  Py_CLEAR(clear_module_state->__pyx_n_s_ssend);
  Py_CLEAR(clear_module_state->__pyx_n_s_starts);
  Py_CLEAR(clear_module_state->__pyx_n_s_state);
  Py_CLEAR(clear_module_state->__pyx_n_s_staticmethod);
  Py_CLEAR(clear_module_state->__pyx_n_s_status);
  Py_CLEAR(clear_module_state->__pyx_n_s_statuses);
  Py_CLEAR(clear_module_state->__pyx_n_s_statusp);
  Py_CLEAR(clear_module_state->__pyx_n_s_str);
  Py_CLEAR(clear_module_state->__pyx_kp_s_str_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_str_tuple_Any);
  Py_CLEAR(clear_module_state->__pyx_n_s_stream);
  Py_CLEAR(clear_module_state->__pyx_n_s_stride);
  Py_CLEAR(clear_module_state->__pyx_n_s_strides);
  Py_CLEAR(clear_module_state->__pyx_kp_u_strides_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_string);
  Py_CLEAR(clear_module_state->__pyx_n_s_stringtag);
  Py_CLEAR(clear_module_state->__pyx_n_s_subsizes);
  Py_CLEAR(clear_module_state->__pyx_n_s_subversion);
  Py_CLEAR(clear_module_state->__pyx_n_s_sw);
  Py_CLEAR(clear_module_state->__pyx_n_s_t);
  Py_CLEAR(clear_module_state->__pyx_n_s_tag);
  Py_CLEAR(clear_module_state->__pyx_n_s_target);
  Py_CLEAR(clear_module_state->__pyx_n_s_target_disp);
  Py_CLEAR(clear_module_state->__pyx_kp_s_target_expecting_3_items_at_most);
  Py_CLEAR(clear_module_state->__pyx_kp_s_target_expecting_integral_or_lis);
  Py_CLEAR(clear_module_state->__pyx_n_s_target_rank);
  Py_CLEAR(clear_module_state->__pyx_n_s_tc);
  Py_CLEAR(clear_module_state->__pyx_n_s_test);
  Py_CLEAR(clear_module_state->__pyx_n_s_testall);
  Py_CLEAR(clear_module_state->__pyx_n_s_testany);
  Py_CLEAR(clear_module_state->__pyx_n_s_testsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_thread);
  Py_CLEAR(clear_module_state->__pyx_n_s_threshold);
  Py_CLEAR(clear_module_state->__pyx_kp_u_to_MPI_datatype);
  Py_CLEAR(clear_module_state->__pyx_n_s_tobytes);
  Py_CLEAR(clear_module_state->__pyx_n_s_tocode);
  Py_CLEAR(clear_module_state->__pyx_n_s_tomemory);
  Py_CLEAR(clear_module_state->__pyx_n_s_topo);
  Py_CLEAR(clear_module_state->__pyx_n_s_toreadonly);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_Any_tuple_Any_dict_str_Any);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_Comm_Request);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_Datatype_str_dict_str_Any);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_Intercomm_int_Intracomm_bo);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_Intracomm_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_Self_Request);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_bool_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_bool_list_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_buffer_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_bytes_list_buffer);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_int_Any);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_int_Datatype_Datatype_str);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_int_bool);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_int_bool_Any_None);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_int_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_int_int_int_int_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_list_int_None_list_Any_Non);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_list_int_list_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_list_int_list_int_list_int);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_list_int_list_int_list_int_2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_list_int_list_int_tuple_li);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_str_str);
  Py_CLEAR(clear_module_state->__pyx_kp_s_tuple_str_tuple_int_int_int);
  Py_CLEAR(clear_module_state->__pyx_n_s_typealign);
  Py_CLEAR(clear_module_state->__pyx_n_s_typeclass);
  Py_CLEAR(clear_module_state->__pyx_n_s_typecode);
  Py_CLEAR(clear_module_state->__pyx_n_s_typedict);
  Py_CLEAR(clear_module_state->__pyx_n_s_typedict_c);
  Py_CLEAR(clear_module_state->__pyx_n_s_typedict_f);
  Py_CLEAR(clear_module_state->__pyx_n_s_typestr);
  Py_CLEAR(clear_module_state->__pyx_kp_u_ub);
  Py_CLEAR(clear_module_state->__pyx_kp_u_unknown_combiner_value);
  Py_CLEAR(clear_module_state->__pyx_kp_u_unorderable_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_unused);
  Py_CLEAR(clear_module_state->__pyx_n_s_unused1);
  Py_CLEAR(clear_module_state->__pyx_n_s_unused2);
  Py_CLEAR(clear_module_state->__pyx_n_s_unused3);
  Py_CLEAR(clear_module_state->__pyx_n_s_unused4);
  Py_CLEAR(clear_module_state->__pyx_n_s_unused5);
  Py_CLEAR(clear_module_state->__pyx_n_s_update);
  Py_CLEAR(clear_module_state->__pyx_n_s_upper);
  Py_CLEAR(clear_module_state->__pyx_n_s_val);
  Py_CLEAR(clear_module_state->__pyx_n_s_value);
  Py_CLEAR(clear_module_state->__pyx_n_s_values);
  Py_CLEAR(clear_module_state->__pyx_n_s_version);
  Py_CLEAR(clear_module_state->__pyx_n_s_wait);
  Py_CLEAR(clear_module_state->__pyx_n_s_waitall);
  Py_CLEAR(clear_module_state->__pyx_n_s_waitany);
  Py_CLEAR(clear_module_state->__pyx_n_s_waitsome);
  Py_CLEAR(clear_module_state->__pyx_n_s_weighted);
  Py_CLEAR(clear_module_state->__pyx_n_s_weights);
  Py_CLEAR(clear_module_state->__pyx_n_s_whence);
  Py_CLEAR(clear_module_state->__pyx_n_s_win);
  Py_CLEAR(clear_module_state->__pyx_kp_u_with_non_native_byte_order);
  Py_CLEAR(clear_module_state->__pyx_kp_u_with_unrecognized_byte_order);
  Py_CLEAR(clear_module_state->__pyx_n_s_wr);
  Py_CLEAR(clear_module_state->__pyx_n_s_write_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_x);
  Py_CLEAR(clear_module_state->__pyx_n_s_xs);
  Py_CLEAR(clear_module_state->__pyx_n_s_y);
  Py_CLEAR(clear_module_state->__pyx_n_s_yes);
  Py_CLEAR(clear_module_state->__pyx_int_0);
  Py_CLEAR(clear_module_state->__pyx_int_1);
  Py_CLEAR(clear_module_state->__pyx_int_2);
  Py_CLEAR(clear_module_state->__pyx_int_32768);
  Py_CLEAR(clear_module_state->__pyx_int_262144);
  Py_CLEAR(clear_module_state->__pyx_int_neg_1);
  Py_CLEAR(clear_module_state->__pyx_k__68);
  Py_CLEAR(clear_module_state->__pyx_k__77);
  Py_CLEAR(clear_module_state->__pyx_k__78);
  Py_CLEAR(clear_module_state->__pyx_k__79);
  Py_CLEAR(clear_module_state->__pyx_k__80);
  Py_CLEAR(clear_module_state->__pyx_k__104);
  Py_CLEAR(clear_module_state->__pyx_k__105);
  Py_CLEAR(clear_module_state->__pyx_k__108);
  Py_CLEAR(clear_module_state->__pyx_k__109);
  Py_CLEAR(clear_module_state->__pyx_k__110);
  Py_CLEAR(clear_module_state->__pyx_k__111);
  Py_CLEAR(clear_module_state->__pyx_k__112);
  Py_CLEAR(clear_module_state->__pyx_k__113);
  Py_CLEAR(clear_module_state->__pyx_k__114);
  Py_CLEAR(clear_module_state->__pyx_k__115);
  Py_CLEAR(clear_module_state->__pyx_k__116);
  Py_CLEAR(clear_module_state->__pyx_k__117);
  Py_CLEAR(clear_module_state->__pyx_k__118);
  Py_CLEAR(clear_module_state->__pyx_k__119);
  Py_CLEAR(clear_module_state->__pyx_k__120);
  Py_CLEAR(clear_module_state->__pyx_k__121);
  Py_CLEAR(clear_module_state->__pyx_k__122);
  Py_CLEAR(clear_module_state->__pyx_k__123);
  Py_CLEAR(clear_module_state->__pyx_k__124);
  Py_CLEAR(clear_module_state->__pyx_k__125);
  Py_CLEAR(clear_module_state->__pyx_k__126);
  Py_CLEAR(clear_module_state->__pyx_k__127);
  Py_CLEAR(clear_module_state->__pyx_k__128);
  Py_CLEAR(clear_module_state->__pyx_k__129);
  Py_CLEAR(clear_module_state->__pyx_k__130);
  Py_CLEAR(clear_module_state->__pyx_k__131);
  Py_CLEAR(clear_module_state->__pyx_k__132);
  Py_CLEAR(clear_module_state->__pyx_k__133);
  Py_CLEAR(clear_module_state->__pyx_k__134);
  Py_CLEAR(clear_module_state->__pyx_k__149);
  Py_CLEAR(clear_module_state->__pyx_k__150);
  Py_CLEAR(clear_module_state->__pyx_k__152);
  Py_CLEAR(clear_module_state->__pyx_k__153);
  Py_CLEAR(clear_module_state->__pyx_k__154);
  Py_CLEAR(clear_module_state->__pyx_k__155);
  Py_CLEAR(clear_module_state->__pyx_k__156);
  Py_CLEAR(clear_module_state->__pyx_k__157);
  Py_CLEAR(clear_module_state->__pyx_k__158);
  Py_CLEAR(clear_module_state->__pyx_k__159);
  Py_CLEAR(clear_module_state->__pyx_k__160);
  Py_CLEAR(clear_module_state->__pyx_k__161);
  Py_CLEAR(clear_module_state->__pyx_k__162);
  Py_CLEAR(clear_module_state->__pyx_k__163);
  Py_CLEAR(clear_module_state->__pyx_k__164);
  Py_CLEAR(clear_module_state->__pyx_k__165);
  Py_CLEAR(clear_module_state->__pyx_k__167);
  Py_CLEAR(clear_module_state->__pyx_k__168);
  Py_CLEAR(clear_module_state->__pyx_k__169);
  Py_CLEAR(clear_module_state->__pyx_k__172);
  Py_CLEAR(clear_module_state->__pyx_k__173);
  Py_CLEAR(clear_module_state->__pyx_k__174);
  Py_CLEAR(clear_module_state->__pyx_k__175);
  Py_CLEAR(clear_module_state->__pyx_k__176);
  Py_CLEAR(clear_module_state->__pyx_k__181);
  Py_CLEAR(clear_module_state->__pyx_k__182);
  Py_CLEAR(clear_module_state->__pyx_k__183);
  Py_CLEAR(clear_module_state->__pyx_k__184);
  Py_CLEAR(clear_module_state->__pyx_k__185);
  Py_CLEAR(clear_module_state->__pyx_k__186);
  Py_CLEAR(clear_module_state->__pyx_k__187);
  Py_CLEAR(clear_module_state->__pyx_k__188);
  Py_CLEAR(clear_module_state->__pyx_k__189);
  Py_CLEAR(clear_module_state->__pyx_k__190);
  Py_CLEAR(clear_module_state->__pyx_k__191);
  Py_CLEAR(clear_module_state->__pyx_k__192);
  Py_CLEAR(clear_module_state->__pyx_k__193);
  Py_CLEAR(clear_module_state->__pyx_k__194);
  Py_CLEAR(clear_module_state->__pyx_k__196);
  Py_CLEAR(clear_module_state->__pyx_k__198);
  Py_CLEAR(clear_module_state->__pyx_k__199);
  Py_CLEAR(clear_module_state->__pyx_k__200);
  Py_CLEAR(clear_module_state->__pyx_tuple__4);
  Py_CLEAR(clear_module_state->__pyx_tuple__5);
  Py_CLEAR(clear_module_state->__pyx_tuple__6);
  Py_CLEAR(clear_module_state->__pyx_tuple__7);
  Py_CLEAR(clear_module_state->__pyx_tuple__8);
  Py_CLEAR(clear_module_state->__pyx_tuple__9);
  Py_CLEAR(clear_module_state->__pyx_tuple__10);
  Py_CLEAR(clear_module_state->__pyx_tuple__11);
  Py_CLEAR(clear_module_state->__pyx_tuple__12);
  Py_CLEAR(clear_module_state->__pyx_tuple__13);
  Py_CLEAR(clear_module_state->__pyx_tuple__14);
  Py_CLEAR(clear_module_state->__pyx_tuple__15);
  Py_CLEAR(clear_module_state->__pyx_tuple__16);
  Py_CLEAR(clear_module_state->__pyx_tuple__18);
  Py_CLEAR(clear_module_state->__pyx_tuple__19);
  Py_CLEAR(clear_module_state->__pyx_tuple__20);
  Py_CLEAR(clear_module_state->__pyx_tuple__21);
  Py_CLEAR(clear_module_state->__pyx_tuple__22);
  Py_CLEAR(clear_module_state->__pyx_tuple__23);
  Py_CLEAR(clear_module_state->__pyx_tuple__24);
  Py_CLEAR(clear_module_state->__pyx_tuple__25);
  Py_CLEAR(clear_module_state->__pyx_tuple__26);
  Py_CLEAR(clear_module_state->__pyx_tuple__27);
  Py_CLEAR(clear_module_state->__pyx_tuple__28);
  Py_CLEAR(clear_module_state->__pyx_tuple__29);
  Py_CLEAR(clear_module_state->__pyx_tuple__31);
  Py_CLEAR(clear_module_state->__pyx_tuple__32);
  Py_CLEAR(clear_module_state->__pyx_tuple__33);
  Py_CLEAR(clear_module_state->__pyx_tuple__34);
  Py_CLEAR(clear_module_state->__pyx_tuple__35);
  Py_CLEAR(clear_module_state->__pyx_tuple__36);
  Py_CLEAR(clear_module_state->__pyx_tuple__37);
  Py_CLEAR(clear_module_state->__pyx_tuple__38);
  Py_CLEAR(clear_module_state->__pyx_tuple__39);
  Py_CLEAR(clear_module_state->__pyx_tuple__40);
  Py_CLEAR(clear_module_state->__pyx_tuple__41);
  Py_CLEAR(clear_module_state->__pyx_tuple__42);
  Py_CLEAR(clear_module_state->__pyx_tuple__43);
  Py_CLEAR(clear_module_state->__pyx_tuple__44);
  Py_CLEAR(clear_module_state->__pyx_tuple__45);
  Py_CLEAR(clear_module_state->__pyx_tuple__46);
  Py_CLEAR(clear_module_state->__pyx_tuple__47);
  Py_CLEAR(clear_module_state->__pyx_tuple__48);
  Py_CLEAR(clear_module_state->__pyx_tuple__49);
  Py_CLEAR(clear_module_state->__pyx_tuple__50);
  Py_CLEAR(clear_module_state->__pyx_tuple__51);
  Py_CLEAR(clear_module_state->__pyx_tuple__52);
  Py_CLEAR(clear_module_state->__pyx_tuple__53);
  Py_CLEAR(clear_module_state->__pyx_tuple__54);
  Py_CLEAR(clear_module_state->__pyx_tuple__55);
  Py_CLEAR(clear_module_state->__pyx_tuple__56);
  Py_CLEAR(clear_module_state->__pyx_tuple__58);
  Py_CLEAR(clear_module_state->__pyx_tuple__59);
  Py_CLEAR(clear_module_state->__pyx_tuple__60);
  Py_CLEAR(clear_module_state->__pyx_tuple__61);
  Py_CLEAR(clear_module_state->__pyx_tuple__62);
  Py_CLEAR(clear_module_state->__pyx_tuple__64);
  Py_CLEAR(clear_module_state->__pyx_tuple__67);
  Py_CLEAR(clear_module_state->__pyx_tuple__81);
  Py_CLEAR(clear_module_state->__pyx_slice__166);
  Py_CLEAR(clear_module_state->__pyx_slice__171);
  Py_CLEAR(clear_module_state->__pyx_tuple__151);
  Py_CLEAR(clear_module_state->__pyx_tuple__170);
  Py_CLEAR(clear_module_state->__pyx_tuple__177);
  Py_CLEAR(clear_module_state->__pyx_tuple__178);
  Py_CLEAR(clear_module_state->__pyx_tuple__179);
  Py_CLEAR(clear_module_state->__pyx_tuple__180);
  Py_CLEAR(clear_module_state->__pyx_tuple__203);
  Py_CLEAR(clear_module_state->__pyx_tuple__204);
  Py_CLEAR(clear_module_state->__pyx_tuple__206);
  Py_CLEAR(clear_module_state->__pyx_tuple__208);
  Py_CLEAR(clear_module_state->__pyx_tuple__210);
  Py_CLEAR(clear_module_state->__pyx_tuple__211);
  Py_CLEAR(clear_module_state->__pyx_tuple__213);
  Py_CLEAR(clear_module_state->__pyx_tuple__215);
  Py_CLEAR(clear_module_state->__pyx_tuple__217);
  Py_CLEAR(clear_module_state->__pyx_tuple__218);
  Py_CLEAR(clear_module_state->__pyx_tuple__220);
  Py_CLEAR(clear_module_state->__pyx_tuple__221);
  Py_CLEAR(clear_module_state->__pyx_tuple__223);
  Py_CLEAR(clear_module_state->__pyx_tuple__226);
  Py_CLEAR(clear_module_state->__pyx_tuple__228);
  Py_CLEAR(clear_module_state->__pyx_tuple__232);
  Py_CLEAR(clear_module_state->__pyx_tuple__234);
  Py_CLEAR(clear_module_state->__pyx_tuple__237);
  Py_CLEAR(clear_module_state->__pyx_tuple__239);
  Py_CLEAR(clear_module_state->__pyx_tuple__241);
  Py_CLEAR(clear_module_state->__pyx_tuple__243);
  Py_CLEAR(clear_module_state->__pyx_tuple__245);
  Py_CLEAR(clear_module_state->__pyx_tuple__247);
  Py_CLEAR(clear_module_state->__pyx_tuple__250);
  Py_CLEAR(clear_module_state->__pyx_tuple__252);
  Py_CLEAR(clear_module_state->__pyx_tuple__254);
  Py_CLEAR(clear_module_state->__pyx_tuple__257);
  Py_CLEAR(clear_module_state->__pyx_tuple__259);
  Py_CLEAR(clear_module_state->__pyx_tuple__261);
  Py_CLEAR(clear_module_state->__pyx_tuple__264);
  Py_CLEAR(clear_module_state->__pyx_tuple__267);
  Py_CLEAR(clear_module_state->__pyx_tuple__269);
  Py_CLEAR(clear_module_state->__pyx_tuple__271);
  Py_CLEAR(clear_module_state->__pyx_tuple__273);
  Py_CLEAR(clear_module_state->__pyx_tuple__275);
  Py_CLEAR(clear_module_state->__pyx_tuple__278);
  Py_CLEAR(clear_module_state->__pyx_tuple__281);
  Py_CLEAR(clear_module_state->__pyx_tuple__284);
  Py_CLEAR(clear_module_state->__pyx_tuple__286);
  Py_CLEAR(clear_module_state->__pyx_tuple__288);
  Py_CLEAR(clear_module_state->__pyx_tuple__290);
  Py_CLEAR(clear_module_state->__pyx_tuple__292);
  Py_CLEAR(clear_module_state->__pyx_tuple__294);
  Py_CLEAR(clear_module_state->__pyx_tuple__297);
  Py_CLEAR(clear_module_state->__pyx_tuple__300);
  Py_CLEAR(clear_module_state->__pyx_tuple__302);
  Py_CLEAR(clear_module_state->__pyx_tuple__305);
  Py_CLEAR(clear_module_state->__pyx_tuple__307);
  Py_CLEAR(clear_module_state->__pyx_tuple__310);
  Py_CLEAR(clear_module_state->__pyx_tuple__312);
  Py_CLEAR(clear_module_state->__pyx_tuple__314);
  Py_CLEAR(clear_module_state->__pyx_tuple__316);
  Py_CLEAR(clear_module_state->__pyx_tuple__318);
  Py_CLEAR(clear_module_state->__pyx_tuple__320);
  Py_CLEAR(clear_module_state->__pyx_tuple__322);
  Py_CLEAR(clear_module_state->__pyx_tuple__324);
  Py_CLEAR(clear_module_state->__pyx_tuple__326);
  Py_CLEAR(clear_module_state->__pyx_tuple__328);
  Py_CLEAR(clear_module_state->__pyx_tuple__330);
  Py_CLEAR(clear_module_state->__pyx_tuple__331);
  Py_CLEAR(clear_module_state->__pyx_tuple__333);
  Py_CLEAR(clear_module_state->__pyx_tuple__335);
  Py_CLEAR(clear_module_state->__pyx_tuple__338);
  Py_CLEAR(clear_module_state->__pyx_tuple__340);
  Py_CLEAR(clear_module_state->__pyx_tuple__342);
  Py_CLEAR(clear_module_state->__pyx_tuple__344);
  Py_CLEAR(clear_module_state->__pyx_tuple__346);
  Py_CLEAR(clear_module_state->__pyx_tuple__348);
  Py_CLEAR(clear_module_state->__pyx_tuple__351);
  Py_CLEAR(clear_module_state->__pyx_tuple__354);
  Py_CLEAR(clear_module_state->__pyx_tuple__357);
  Py_CLEAR(clear_module_state->__pyx_tuple__360);
  Py_CLEAR(clear_module_state->__pyx_tuple__363);
  Py_CLEAR(clear_module_state->__pyx_tuple__365);
  Py_CLEAR(clear_module_state->__pyx_tuple__367);
  Py_CLEAR(clear_module_state->__pyx_tuple__369);
  Py_CLEAR(clear_module_state->__pyx_tuple__372);
  Py_CLEAR(clear_module_state->__pyx_tuple__374);
  Py_CLEAR(clear_module_state->__pyx_tuple__379);
  Py_CLEAR(clear_module_state->__pyx_tuple__381);
  Py_CLEAR(clear_module_state->__pyx_tuple__384);
  Py_CLEAR(clear_module_state->__pyx_tuple__386);
  Py_CLEAR(clear_module_state->__pyx_tuple__389);
  Py_CLEAR(clear_module_state->__pyx_tuple__391);
  Py_CLEAR(clear_module_state->__pyx_tuple__394);
  Py_CLEAR(clear_module_state->__pyx_tuple__402);
  Py_CLEAR(clear_module_state->__pyx_tuple__404);
  Py_CLEAR(clear_module_state->__pyx_tuple__407);
  Py_CLEAR(clear_module_state->__pyx_tuple__409);
  Py_CLEAR(clear_module_state->__pyx_tuple__411);
  Py_CLEAR(clear_module_state->__pyx_tuple__413);
  Py_CLEAR(clear_module_state->__pyx_tuple__415);
  Py_CLEAR(clear_module_state->__pyx_tuple__417);
  Py_CLEAR(clear_module_state->__pyx_tuple__424);
  Py_CLEAR(clear_module_state->__pyx_tuple__426);
  Py_CLEAR(clear_module_state->__pyx_tuple__428);
  Py_CLEAR(clear_module_state->__pyx_tuple__430);
  Py_CLEAR(clear_module_state->__pyx_tuple__432);
  Py_CLEAR(clear_module_state->__pyx_tuple__434);
  Py_CLEAR(clear_module_state->__pyx_tuple__436);
  Py_CLEAR(clear_module_state->__pyx_tuple__437);
  Py_CLEAR(clear_module_state->__pyx_tuple__443);
  Py_CLEAR(clear_module_state->__pyx_tuple__445);
  Py_CLEAR(clear_module_state->__pyx_tuple__447);
  Py_CLEAR(clear_module_state->__pyx_tuple__449);
  Py_CLEAR(clear_module_state->__pyx_tuple__451);
  Py_CLEAR(clear_module_state->__pyx_tuple__453);
  Py_CLEAR(clear_module_state->__pyx_tuple__455);
  Py_CLEAR(clear_module_state->__pyx_tuple__457);
  Py_CLEAR(clear_module_state->__pyx_tuple__464);
  Py_CLEAR(clear_module_state->__pyx_tuple__468);
  Py_CLEAR(clear_module_state->__pyx_tuple__476);
  Py_CLEAR(clear_module_state->__pyx_tuple__478);
  Py_CLEAR(clear_module_state->__pyx_tuple__480);
  Py_CLEAR(clear_module_state->__pyx_tuple__481);
  Py_CLEAR(clear_module_state->__pyx_tuple__483);
  Py_CLEAR(clear_module_state->__pyx_tuple__485);
  Py_CLEAR(clear_module_state->__pyx_tuple__489);
  Py_CLEAR(clear_module_state->__pyx_tuple__492);
  Py_CLEAR(clear_module_state->__pyx_tuple__495);
  Py_CLEAR(clear_module_state->__pyx_tuple__503);
  Py_CLEAR(clear_module_state->__pyx_tuple__505);
  Py_CLEAR(clear_module_state->__pyx_tuple__508);
  Py_CLEAR(clear_module_state->__pyx_tuple__510);
  Py_CLEAR(clear_module_state->__pyx_tuple__512);
  Py_CLEAR(clear_module_state->__pyx_tuple__514);
  Py_CLEAR(clear_module_state->__pyx_tuple__516);
  Py_CLEAR(clear_module_state->__pyx_tuple__518);
  Py_CLEAR(clear_module_state->__pyx_tuple__522);
  Py_CLEAR(clear_module_state->__pyx_tuple__524);
  Py_CLEAR(clear_module_state->__pyx_tuple__526);
  Py_CLEAR(clear_module_state->__pyx_tuple__528);
  Py_CLEAR(clear_module_state->__pyx_tuple__530);
  Py_CLEAR(clear_module_state->__pyx_tuple__532);
  Py_CLEAR(clear_module_state->__pyx_tuple__534);
  Py_CLEAR(clear_module_state->__pyx_tuple__537);
  Py_CLEAR(clear_module_state->__pyx_tuple__548);
  Py_CLEAR(clear_module_state->__pyx_tuple__551);
  Py_CLEAR(clear_module_state->__pyx_tuple__553);
  Py_CLEAR(clear_module_state->__pyx_tuple__556);
  Py_CLEAR(clear_module_state->__pyx_tuple__558);
  Py_CLEAR(clear_module_state->__pyx_tuple__560);
  Py_CLEAR(clear_module_state->__pyx_tuple__562);
  Py_CLEAR(clear_module_state->__pyx_tuple__565);
  Py_CLEAR(clear_module_state->__pyx_tuple__567);
  Py_CLEAR(clear_module_state->__pyx_tuple__569);
  Py_CLEAR(clear_module_state->__pyx_tuple__581);
  Py_CLEAR(clear_module_state->__pyx_tuple__583);
  Py_CLEAR(clear_module_state->__pyx_tuple__585);
  Py_CLEAR(clear_module_state->__pyx_tuple__587);
  Py_CLEAR(clear_module_state->__pyx_tuple__589);
  Py_CLEAR(clear_module_state->__pyx_tuple__591);
  Py_CLEAR(clear_module_state->__pyx_tuple__593);
  Py_CLEAR(clear_module_state->__pyx_tuple__595);
  Py_CLEAR(clear_module_state->__pyx_tuple__597);
  Py_CLEAR(clear_module_state->__pyx_tuple__598);
  Py_CLEAR(clear_module_state->__pyx_tuple__604);
  Py_CLEAR(clear_module_state->__pyx_tuple__607);
  Py_CLEAR(clear_module_state->__pyx_tuple__609);
  Py_CLEAR(clear_module_state->__pyx_tuple__611);
  Py_CLEAR(clear_module_state->__pyx_tuple__619);
  Py_CLEAR(clear_module_state->__pyx_tuple__621);
  Py_CLEAR(clear_module_state->__pyx_tuple__622);
  Py_CLEAR(clear_module_state->__pyx_tuple__624);
  Py_CLEAR(clear_module_state->__pyx_tuple__626);
  Py_CLEAR(clear_module_state->__pyx_tuple__628);
  Py_CLEAR(clear_module_state->__pyx_tuple__630);
  Py_CLEAR(clear_module_state->__pyx_tuple__632);
  Py_CLEAR(clear_module_state->__pyx_tuple__634);
  Py_CLEAR(clear_module_state->__pyx_tuple__636);
  Py_CLEAR(clear_module_state->__pyx_tuple__638);
  Py_CLEAR(clear_module_state->__pyx_tuple__640);
  Py_CLEAR(clear_module_state->__pyx_tuple__642);
  Py_CLEAR(clear_module_state->__pyx_tuple__646);
  Py_CLEAR(clear_module_state->__pyx_tuple__648);
  Py_CLEAR(clear_module_state->__pyx_tuple__660);
  Py_CLEAR(clear_module_state->__pyx_tuple__662);
  Py_CLEAR(clear_module_state->__pyx_tuple__667);
  Py_CLEAR(clear_module_state->__pyx_tuple__673);
  Py_CLEAR(clear_module_state->__pyx_tuple__675);
  Py_CLEAR(clear_module_state->__pyx_tuple__678);
  Py_CLEAR(clear_module_state->__pyx_tuple__681);
  Py_CLEAR(clear_module_state->__pyx_tuple__683);
  Py_CLEAR(clear_module_state->__pyx_tuple__688);
  Py_CLEAR(clear_module_state->__pyx_tuple__694);
  Py_CLEAR(clear_module_state->__pyx_tuple__696);
  Py_CLEAR(clear_module_state->__pyx_tuple__699);
  Py_CLEAR(clear_module_state->__pyx_tuple__701);
  Py_CLEAR(clear_module_state->__pyx_tuple__703);
  Py_CLEAR(clear_module_state->__pyx_tuple__705);
  Py_CLEAR(clear_module_state->__pyx_tuple__710);
  Py_CLEAR(clear_module_state->__pyx_tuple__716);
  Py_CLEAR(clear_module_state->__pyx_tuple__718);
  Py_CLEAR(clear_module_state->__pyx_tuple__721);
  Py_CLEAR(clear_module_state->__pyx_tuple__725);
  Py_CLEAR(clear_module_state->__pyx_tuple__727);
  Py_CLEAR(clear_module_state->__pyx_tuple__730);
  Py_CLEAR(clear_module_state->__pyx_tuple__746);
  Py_CLEAR(clear_module_state->__pyx_tuple__750);
  Py_CLEAR(clear_module_state->__pyx_tuple__752);
  Py_CLEAR(clear_module_state->__pyx_tuple__754);
  Py_CLEAR(clear_module_state->__pyx_tuple__758);
  Py_CLEAR(clear_module_state->__pyx_tuple__760);
  Py_CLEAR(clear_module_state->__pyx_tuple__763);
  Py_CLEAR(clear_module_state->__pyx_tuple__765);
  Py_CLEAR(clear_module_state->__pyx_tuple__768);
  Py_CLEAR(clear_module_state->__pyx_tuple__770);
  Py_CLEAR(clear_module_state->__pyx_tuple__773);
  Py_CLEAR(clear_module_state->__pyx_tuple__776);
  Py_CLEAR(clear_module_state->__pyx_tuple__778);
  Py_CLEAR(clear_module_state->__pyx_tuple__780);
  Py_CLEAR(clear_module_state->__pyx_tuple__782);
  Py_CLEAR(clear_module_state->__pyx_tuple__784);
  Py_CLEAR(clear_module_state->__pyx_tuple__786);
  Py_CLEAR(clear_module_state->__pyx_tuple__787);
  Py_CLEAR(clear_module_state->__pyx_tuple__789);
  Py_CLEAR(clear_module_state->__pyx_tuple__791);
  Py_CLEAR(clear_module_state->__pyx_tuple__793);
  Py_CLEAR(clear_module_state->__pyx_tuple__795);
  Py_CLEAR(clear_module_state->__pyx_tuple__797);
  Py_CLEAR(clear_module_state->__pyx_tuple__807);
  Py_CLEAR(clear_module_state->__pyx_tuple__810);
  Py_CLEAR(clear_module_state->__pyx_tuple__812);
  Py_CLEAR(clear_module_state->__pyx_tuple__832);
  Py_CLEAR(clear_module_state->__pyx_tuple__834);
  Py_CLEAR(clear_module_state->__pyx_tuple__836);
  Py_CLEAR(clear_module_state->__pyx_tuple__838);
  Py_CLEAR(clear_module_state->__pyx_tuple__840);
  Py_CLEAR(clear_module_state->__pyx_tuple__842);
  Py_CLEAR(clear_module_state->__pyx_tuple__844);
  Py_CLEAR(clear_module_state->__pyx_tuple__846);
  Py_CLEAR(clear_module_state->__pyx_tuple__848);
  Py_CLEAR(clear_module_state->__pyx_tuple__850);
  Py_CLEAR(clear_module_state->__pyx_tuple__852);
  Py_CLEAR(clear_module_state->__pyx_tuple__854);
  Py_CLEAR(clear_module_state->__pyx_tuple__856);
  Py_CLEAR(clear_module_state->__pyx_tuple__858);
  Py_CLEAR(clear_module_state->__pyx_tuple__862);
  Py_CLEAR(clear_module_state->__pyx_tuple__864);
  Py_CLEAR(clear_module_state->__pyx_tuple__866);
  Py_CLEAR(clear_module_state->__pyx_tuple__869);
  Py_CLEAR(clear_module_state->__pyx_tuple__871);
  Py_CLEAR(clear_module_state->__pyx_tuple__873);
  Py_CLEAR(clear_module_state->__pyx_tuple__875);
  Py_CLEAR(clear_module_state->__pyx_tuple__878);
  Py_CLEAR(clear_module_state->__pyx_tuple__883);
  Py_CLEAR(clear_module_state->__pyx_tuple__885);
  Py_CLEAR(clear_module_state->__pyx_tuple__888);
  Py_CLEAR(clear_module_state->__pyx_tuple__890);
  Py_CLEAR(clear_module_state->__pyx_tuple__892);
  Py_CLEAR(clear_module_state->__pyx_tuple__894);
  Py_CLEAR(clear_module_state->__pyx_tuple__906);
  Py_CLEAR(clear_module_state->__pyx_tuple__909);
  Py_CLEAR(clear_module_state->__pyx_tuple__911);
  Py_CLEAR(clear_module_state->__pyx_tuple__913);
  Py_CLEAR(clear_module_state->__pyx_tuple__915);
  Py_CLEAR(clear_module_state->__pyx_tuple__917);
  Py_CLEAR(clear_module_state->__pyx_tuple__920);
  Py_CLEAR(clear_module_state->__pyx_tuple__922);
  Py_CLEAR(clear_module_state->__pyx_tuple__924);
  Py_CLEAR(clear_module_state->__pyx_tuple__926);
  Py_CLEAR(clear_module_state->__pyx_tuple__932);
  Py_CLEAR(clear_module_state->__pyx_tuple__953);
  Py_CLEAR(clear_module_state->__pyx_tuple__956);
  Py_CLEAR(clear_module_state->__pyx_tuple__961);
  Py_CLEAR(clear_module_state->__pyx_tuple__966);
  Py_CLEAR(clear_module_state->__pyx_tuple__968);
  Py_CLEAR(clear_module_state->__pyx_tuple__970);
  Py_CLEAR(clear_module_state->__pyx_tuple__975);
  Py_CLEAR(clear_module_state->__pyx_tuple__980);
  Py_CLEAR(clear_module_state->__pyx_tuple__985);
  Py_CLEAR(clear_module_state->__pyx_tuple__990);
  Py_CLEAR(clear_module_state->__pyx_tuple__992);
  Py_CLEAR(clear_module_state->__pyx_tuple__994);
  Py_CLEAR(clear_module_state->__pyx_codeobj__63);
  Py_CLEAR(clear_module_state->__pyx_tuple__1004);
  Py_CLEAR(clear_module_state->__pyx_tuple__1009);
  Py_CLEAR(clear_module_state->__pyx_tuple__1018);
  Py_CLEAR(clear_module_state->__pyx_tuple__1029);
  Py_CLEAR(clear_module_state->__pyx_tuple__1031);
  Py_CLEAR(clear_module_state->__pyx_tuple__1033);
  Py_CLEAR(clear_module_state->__pyx_tuple__1037);
  Py_CLEAR(clear_module_state->__pyx_tuple__1039);
  Py_CLEAR(clear_module_state->__pyx_tuple__1041);
  Py_CLEAR(clear_module_state->__pyx_tuple__1045);
  Py_CLEAR(clear_module_state->__pyx_tuple__1047);
  Py_CLEAR(clear_module_state->__pyx_tuple__1050);
  Py_CLEAR(clear_module_state->__pyx_tuple__1054);
  Py_CLEAR(clear_module_state->__pyx_tuple__1056);
  Py_CLEAR(clear_module_state->__pyx_tuple__1058);
  Py_CLEAR(clear_module_state->__pyx_tuple__1060);
  Py_CLEAR(clear_module_state->__pyx_tuple__1062);
  Py_CLEAR(clear_module_state->__pyx_tuple__1064);
  Py_CLEAR(clear_module_state->__pyx_tuple__1066);
  Py_CLEAR(clear_module_state->__pyx_tuple__1068);
  Py_CLEAR(clear_module_state->__pyx_codeobj__207);
  Py_CLEAR(clear_module_state->__pyx_codeobj__209);
  Py_CLEAR(clear_module_state->__pyx_codeobj__212);
  Py_CLEAR(clear_module_state->__pyx_codeobj__214);
  Py_CLEAR(clear_module_state->__pyx_codeobj__216);
  Py_CLEAR(clear_module_state->__pyx_codeobj__219);
  Py_CLEAR(clear_module_state->__pyx_codeobj__222);
  Py_CLEAR(clear_module_state->__pyx_codeobj__224);
  Py_CLEAR(clear_module_state->__pyx_codeobj__225);
  Py_CLEAR(clear_module_state->__pyx_codeobj__227);
  Py_CLEAR(clear_module_state->__pyx_codeobj__229);
  Py_CLEAR(clear_module_state->__pyx_codeobj__230);
  Py_CLEAR(clear_module_state->__pyx_codeobj__231);
  Py_CLEAR(clear_module_state->__pyx_codeobj__233);
  Py_CLEAR(clear_module_state->__pyx_codeobj__235);
  Py_CLEAR(clear_module_state->__pyx_codeobj__236);
  Py_CLEAR(clear_module_state->__pyx_codeobj__238);
  Py_CLEAR(clear_module_state->__pyx_codeobj__240);
  Py_CLEAR(clear_module_state->__pyx_codeobj__242);
  Py_CLEAR(clear_module_state->__pyx_codeobj__244);
  Py_CLEAR(clear_module_state->__pyx_codeobj__246);
  Py_CLEAR(clear_module_state->__pyx_codeobj__248);
  Py_CLEAR(clear_module_state->__pyx_codeobj__249);
  Py_CLEAR(clear_module_state->__pyx_codeobj__251);
  Py_CLEAR(clear_module_state->__pyx_codeobj__253);
  Py_CLEAR(clear_module_state->__pyx_codeobj__255);
  Py_CLEAR(clear_module_state->__pyx_codeobj__256);
  Py_CLEAR(clear_module_state->__pyx_codeobj__258);
  Py_CLEAR(clear_module_state->__pyx_codeobj__260);
  Py_CLEAR(clear_module_state->__pyx_codeobj__262);
  Py_CLEAR(clear_module_state->__pyx_codeobj__263);
  Py_CLEAR(clear_module_state->__pyx_codeobj__265);
  Py_CLEAR(clear_module_state->__pyx_codeobj__266);
  Py_CLEAR(clear_module_state->__pyx_codeobj__268);
  Py_CLEAR(clear_module_state->__pyx_codeobj__270);
  Py_CLEAR(clear_module_state->__pyx_codeobj__272);
  Py_CLEAR(clear_module_state->__pyx_codeobj__274);
  Py_CLEAR(clear_module_state->__pyx_codeobj__276);
  Py_CLEAR(clear_module_state->__pyx_codeobj__277);
  Py_CLEAR(clear_module_state->__pyx_codeobj__279);
  Py_CLEAR(clear_module_state->__pyx_codeobj__280);
  Py_CLEAR(clear_module_state->__pyx_codeobj__282);
  Py_CLEAR(clear_module_state->__pyx_codeobj__283);
  Py_CLEAR(clear_module_state->__pyx_codeobj__285);
  Py_CLEAR(clear_module_state->__pyx_codeobj__287);
  Py_CLEAR(clear_module_state->__pyx_codeobj__289);
  Py_CLEAR(clear_module_state->__pyx_codeobj__291);
  Py_CLEAR(clear_module_state->__pyx_codeobj__293);
  Py_CLEAR(clear_module_state->__pyx_codeobj__295);
  Py_CLEAR(clear_module_state->__pyx_codeobj__296);
  Py_CLEAR(clear_module_state->__pyx_codeobj__298);
  Py_CLEAR(clear_module_state->__pyx_codeobj__299);
  Py_CLEAR(clear_module_state->__pyx_codeobj__301);
  Py_CLEAR(clear_module_state->__pyx_codeobj__303);
  Py_CLEAR(clear_module_state->__pyx_codeobj__304);
  Py_CLEAR(clear_module_state->__pyx_codeobj__306);
  Py_CLEAR(clear_module_state->__pyx_codeobj__308);
  Py_CLEAR(clear_module_state->__pyx_codeobj__309);
  Py_CLEAR(clear_module_state->__pyx_codeobj__311);
  Py_CLEAR(clear_module_state->__pyx_codeobj__313);
  Py_CLEAR(clear_module_state->__pyx_codeobj__315);
  Py_CLEAR(clear_module_state->__pyx_codeobj__317);
  Py_CLEAR(clear_module_state->__pyx_codeobj__319);
  Py_CLEAR(clear_module_state->__pyx_codeobj__321);
  Py_CLEAR(clear_module_state->__pyx_codeobj__323);
  Py_CLEAR(clear_module_state->__pyx_codeobj__325);
  Py_CLEAR(clear_module_state->__pyx_codeobj__327);
  Py_CLEAR(clear_module_state->__pyx_codeobj__329);
  Py_CLEAR(clear_module_state->__pyx_codeobj__332);
  Py_CLEAR(clear_module_state->__pyx_codeobj__334);
  Py_CLEAR(clear_module_state->__pyx_codeobj__336);
  Py_CLEAR(clear_module_state->__pyx_codeobj__337);
  Py_CLEAR(clear_module_state->__pyx_codeobj__339);
  Py_CLEAR(clear_module_state->__pyx_codeobj__341);
  Py_CLEAR(clear_module_state->__pyx_codeobj__343);
  Py_CLEAR(clear_module_state->__pyx_codeobj__345);
  Py_CLEAR(clear_module_state->__pyx_codeobj__347);
  Py_CLEAR(clear_module_state->__pyx_codeobj__349);
  Py_CLEAR(clear_module_state->__pyx_codeobj__350);
  Py_CLEAR(clear_module_state->__pyx_codeobj__352);
  Py_CLEAR(clear_module_state->__pyx_codeobj__353);
  Py_CLEAR(clear_module_state->__pyx_codeobj__355);
  Py_CLEAR(clear_module_state->__pyx_codeobj__356);
  Py_CLEAR(clear_module_state->__pyx_codeobj__358);
  Py_CLEAR(clear_module_state->__pyx_codeobj__359);
  Py_CLEAR(clear_module_state->__pyx_codeobj__361);
  Py_CLEAR(clear_module_state->__pyx_codeobj__362);
  Py_CLEAR(clear_module_state->__pyx_codeobj__364);
  Py_CLEAR(clear_module_state->__pyx_codeobj__366);
  Py_CLEAR(clear_module_state->__pyx_codeobj__368);
  Py_CLEAR(clear_module_state->__pyx_codeobj__370);
  Py_CLEAR(clear_module_state->__pyx_codeobj__371);
  Py_CLEAR(clear_module_state->__pyx_codeobj__373);
  Py_CLEAR(clear_module_state->__pyx_codeobj__375);
  Py_CLEAR(clear_module_state->__pyx_codeobj__376);
  Py_CLEAR(clear_module_state->__pyx_codeobj__377);
  Py_CLEAR(clear_module_state->__pyx_codeobj__378);
  Py_CLEAR(clear_module_state->__pyx_codeobj__380);
  Py_CLEAR(clear_module_state->__pyx_codeobj__382);
  Py_CLEAR(clear_module_state->__pyx_codeobj__383);
  Py_CLEAR(clear_module_state->__pyx_codeobj__385);
  Py_CLEAR(clear_module_state->__pyx_codeobj__387);
  Py_CLEAR(clear_module_state->__pyx_codeobj__388);
  Py_CLEAR(clear_module_state->__pyx_codeobj__390);
  Py_CLEAR(clear_module_state->__pyx_codeobj__392);
  Py_CLEAR(clear_module_state->__pyx_codeobj__393);
  Py_CLEAR(clear_module_state->__pyx_codeobj__395);
  Py_CLEAR(clear_module_state->__pyx_codeobj__396);
  Py_CLEAR(clear_module_state->__pyx_codeobj__397);
  Py_CLEAR(clear_module_state->__pyx_codeobj__398);
  Py_CLEAR(clear_module_state->__pyx_codeobj__399);
  Py_CLEAR(clear_module_state->__pyx_codeobj__400);
  Py_CLEAR(clear_module_state->__pyx_codeobj__401);
  Py_CLEAR(clear_module_state->__pyx_codeobj__403);
  Py_CLEAR(clear_module_state->__pyx_codeobj__405);
  Py_CLEAR(clear_module_state->__pyx_codeobj__406);
  Py_CLEAR(clear_module_state->__pyx_codeobj__408);
  Py_CLEAR(clear_module_state->__pyx_codeobj__410);
  Py_CLEAR(clear_module_state->__pyx_codeobj__412);
  Py_CLEAR(clear_module_state->__pyx_codeobj__414);
  Py_CLEAR(clear_module_state->__pyx_codeobj__416);
  Py_CLEAR(clear_module_state->__pyx_codeobj__418);
  Py_CLEAR(clear_module_state->__pyx_codeobj__419);
  Py_CLEAR(clear_module_state->__pyx_codeobj__420);
  Py_CLEAR(clear_module_state->__pyx_codeobj__421);
  Py_CLEAR(clear_module_state->__pyx_codeobj__422);
  Py_CLEAR(clear_module_state->__pyx_codeobj__423);
  Py_CLEAR(clear_module_state->__pyx_codeobj__425);
  Py_CLEAR(clear_module_state->__pyx_codeobj__427);
  Py_CLEAR(clear_module_state->__pyx_codeobj__429);
  Py_CLEAR(clear_module_state->__pyx_codeobj__431);
  Py_CLEAR(clear_module_state->__pyx_codeobj__433);
  Py_CLEAR(clear_module_state->__pyx_codeobj__435);
  Py_CLEAR(clear_module_state->__pyx_codeobj__438);
  Py_CLEAR(clear_module_state->__pyx_codeobj__439);
  Py_CLEAR(clear_module_state->__pyx_codeobj__440);
  Py_CLEAR(clear_module_state->__pyx_codeobj__441);
  Py_CLEAR(clear_module_state->__pyx_codeobj__442);
  Py_CLEAR(clear_module_state->__pyx_codeobj__444);
  Py_CLEAR(clear_module_state->__pyx_codeobj__446);
  Py_CLEAR(clear_module_state->__pyx_codeobj__448);
  Py_CLEAR(clear_module_state->__pyx_codeobj__450);
  Py_CLEAR(clear_module_state->__pyx_codeobj__452);
  Py_CLEAR(clear_module_state->__pyx_codeobj__454);
  Py_CLEAR(clear_module_state->__pyx_codeobj__456);
  Py_CLEAR(clear_module_state->__pyx_codeobj__458);
  Py_CLEAR(clear_module_state->__pyx_codeobj__459);
  Py_CLEAR(clear_module_state->__pyx_codeobj__460);
  Py_CLEAR(clear_module_state->__pyx_codeobj__461);
  Py_CLEAR(clear_module_state->__pyx_codeobj__462);
  Py_CLEAR(clear_module_state->__pyx_codeobj__463);
  Py_CLEAR(clear_module_state->__pyx_codeobj__465);
  Py_CLEAR(clear_module_state->__pyx_codeobj__466);
  Py_CLEAR(clear_module_state->__pyx_codeobj__467);
  Py_CLEAR(clear_module_state->__pyx_codeobj__469);
  Py_CLEAR(clear_module_state->__pyx_codeobj__470);
  Py_CLEAR(clear_module_state->__pyx_codeobj__471);
  Py_CLEAR(clear_module_state->__pyx_codeobj__472);
  Py_CLEAR(clear_module_state->__pyx_codeobj__473);
  Py_CLEAR(clear_module_state->__pyx_codeobj__474);
  Py_CLEAR(clear_module_state->__pyx_codeobj__475);
  Py_CLEAR(clear_module_state->__pyx_codeobj__477);
  Py_CLEAR(clear_module_state->__pyx_codeobj__479);
  Py_CLEAR(clear_module_state->__pyx_codeobj__482);
  Py_CLEAR(clear_module_state->__pyx_codeobj__484);
  Py_CLEAR(clear_module_state->__pyx_codeobj__486);
  Py_CLEAR(clear_module_state->__pyx_codeobj__487);
  Py_CLEAR(clear_module_state->__pyx_codeobj__488);
  Py_CLEAR(clear_module_state->__pyx_codeobj__490);
  Py_CLEAR(clear_module_state->__pyx_codeobj__491);
  Py_CLEAR(clear_module_state->__pyx_codeobj__493);
  Py_CLEAR(clear_module_state->__pyx_codeobj__494);
  Py_CLEAR(clear_module_state->__pyx_codeobj__496);
  Py_CLEAR(clear_module_state->__pyx_codeobj__497);
  Py_CLEAR(clear_module_state->__pyx_codeobj__498);
  Py_CLEAR(clear_module_state->__pyx_codeobj__499);
  Py_CLEAR(clear_module_state->__pyx_codeobj__500);
  Py_CLEAR(clear_module_state->__pyx_codeobj__501);
  Py_CLEAR(clear_module_state->__pyx_codeobj__502);
  Py_CLEAR(clear_module_state->__pyx_codeobj__504);
  Py_CLEAR(clear_module_state->__pyx_codeobj__506);
  Py_CLEAR(clear_module_state->__pyx_codeobj__507);
  Py_CLEAR(clear_module_state->__pyx_codeobj__509);
  Py_CLEAR(clear_module_state->__pyx_codeobj__511);
  Py_CLEAR(clear_module_state->__pyx_codeobj__513);
  Py_CLEAR(clear_module_state->__pyx_codeobj__515);
  Py_CLEAR(clear_module_state->__pyx_codeobj__517);
  Py_CLEAR(clear_module_state->__pyx_codeobj__519);
  Py_CLEAR(clear_module_state->__pyx_codeobj__520);
  Py_CLEAR(clear_module_state->__pyx_codeobj__521);
  Py_CLEAR(clear_module_state->__pyx_codeobj__523);
  Py_CLEAR(clear_module_state->__pyx_codeobj__525);
  Py_CLEAR(clear_module_state->__pyx_codeobj__527);
  Py_CLEAR(clear_module_state->__pyx_codeobj__529);
  Py_CLEAR(clear_module_state->__pyx_codeobj__531);
  Py_CLEAR(clear_module_state->__pyx_codeobj__533);
  Py_CLEAR(clear_module_state->__pyx_codeobj__535);
  Py_CLEAR(clear_module_state->__pyx_codeobj__536);
  Py_CLEAR(clear_module_state->__pyx_codeobj__538);
  Py_CLEAR(clear_module_state->__pyx_codeobj__539);
  Py_CLEAR(clear_module_state->__pyx_codeobj__540);
  Py_CLEAR(clear_module_state->__pyx_codeobj__541);
  Py_CLEAR(clear_module_state->__pyx_codeobj__542);
  Py_CLEAR(clear_module_state->__pyx_codeobj__543);
  Py_CLEAR(clear_module_state->__pyx_codeobj__544);
  Py_CLEAR(clear_module_state->__pyx_codeobj__545);
  Py_CLEAR(clear_module_state->__pyx_codeobj__546);
  Py_CLEAR(clear_module_state->__pyx_codeobj__547);
  Py_CLEAR(clear_module_state->__pyx_codeobj__549);
  Py_CLEAR(clear_module_state->__pyx_codeobj__550);
  Py_CLEAR(clear_module_state->__pyx_codeobj__552);
  Py_CLEAR(clear_module_state->__pyx_codeobj__554);
  Py_CLEAR(clear_module_state->__pyx_codeobj__555);
  Py_CLEAR(clear_module_state->__pyx_codeobj__557);
  Py_CLEAR(clear_module_state->__pyx_codeobj__559);
  Py_CLEAR(clear_module_state->__pyx_codeobj__561);
  Py_CLEAR(clear_module_state->__pyx_codeobj__563);
  Py_CLEAR(clear_module_state->__pyx_codeobj__564);
  Py_CLEAR(clear_module_state->__pyx_codeobj__566);
  Py_CLEAR(clear_module_state->__pyx_codeobj__568);
  Py_CLEAR(clear_module_state->__pyx_codeobj__570);
  Py_CLEAR(clear_module_state->__pyx_codeobj__571);
  Py_CLEAR(clear_module_state->__pyx_codeobj__572);
  Py_CLEAR(clear_module_state->__pyx_codeobj__573);
  Py_CLEAR(clear_module_state->__pyx_codeobj__574);
  Py_CLEAR(clear_module_state->__pyx_codeobj__575);
  Py_CLEAR(clear_module_state->__pyx_codeobj__576);
  Py_CLEAR(clear_module_state->__pyx_codeobj__577);
  Py_CLEAR(clear_module_state->__pyx_codeobj__578);
  Py_CLEAR(clear_module_state->__pyx_codeobj__579);
  Py_CLEAR(clear_module_state->__pyx_codeobj__580);
  Py_CLEAR(clear_module_state->__pyx_codeobj__582);
  Py_CLEAR(clear_module_state->__pyx_codeobj__584);
  Py_CLEAR(clear_module_state->__pyx_codeobj__586);
  Py_CLEAR(clear_module_state->__pyx_codeobj__588);
  Py_CLEAR(clear_module_state->__pyx_codeobj__590);
  Py_CLEAR(clear_module_state->__pyx_codeobj__592);
  Py_CLEAR(clear_module_state->__pyx_codeobj__594);
  Py_CLEAR(clear_module_state->__pyx_codeobj__596);
  Py_CLEAR(clear_module_state->__pyx_codeobj__599);
  Py_CLEAR(clear_module_state->__pyx_codeobj__600);
  Py_CLEAR(clear_module_state->__pyx_codeobj__601);
  Py_CLEAR(clear_module_state->__pyx_codeobj__602);
  Py_CLEAR(clear_module_state->__pyx_codeobj__603);
  Py_CLEAR(clear_module_state->__pyx_codeobj__605);
  Py_CLEAR(clear_module_state->__pyx_codeobj__606);
  Py_CLEAR(clear_module_state->__pyx_codeobj__608);
  Py_CLEAR(clear_module_state->__pyx_codeobj__610);
  Py_CLEAR(clear_module_state->__pyx_codeobj__612);
  Py_CLEAR(clear_module_state->__pyx_codeobj__613);
  Py_CLEAR(clear_module_state->__pyx_codeobj__614);
  Py_CLEAR(clear_module_state->__pyx_codeobj__615);
  Py_CLEAR(clear_module_state->__pyx_codeobj__616);
  Py_CLEAR(clear_module_state->__pyx_codeobj__617);
  Py_CLEAR(clear_module_state->__pyx_codeobj__618);
  Py_CLEAR(clear_module_state->__pyx_codeobj__620);
  Py_CLEAR(clear_module_state->__pyx_codeobj__623);
  Py_CLEAR(clear_module_state->__pyx_codeobj__625);
  Py_CLEAR(clear_module_state->__pyx_codeobj__627);
  Py_CLEAR(clear_module_state->__pyx_codeobj__629);
  Py_CLEAR(clear_module_state->__pyx_codeobj__631);
  Py_CLEAR(clear_module_state->__pyx_codeobj__633);
  Py_CLEAR(clear_module_state->__pyx_codeobj__635);
  Py_CLEAR(clear_module_state->__pyx_codeobj__637);
  Py_CLEAR(clear_module_state->__pyx_codeobj__639);
  Py_CLEAR(clear_module_state->__pyx_codeobj__641);
  Py_CLEAR(clear_module_state->__pyx_codeobj__643);
  Py_CLEAR(clear_module_state->__pyx_codeobj__644);
  Py_CLEAR(clear_module_state->__pyx_codeobj__645);
  Py_CLEAR(clear_module_state->__pyx_codeobj__647);
  Py_CLEAR(clear_module_state->__pyx_codeobj__649);
  Py_CLEAR(clear_module_state->__pyx_codeobj__650);
  Py_CLEAR(clear_module_state->__pyx_codeobj__651);
  Py_CLEAR(clear_module_state->__pyx_codeobj__652);
  Py_CLEAR(clear_module_state->__pyx_codeobj__653);
  Py_CLEAR(clear_module_state->__pyx_codeobj__654);
  Py_CLEAR(clear_module_state->__pyx_codeobj__655);
  Py_CLEAR(clear_module_state->__pyx_codeobj__656);
  Py_CLEAR(clear_module_state->__pyx_codeobj__657);
  Py_CLEAR(clear_module_state->__pyx_codeobj__658);
  Py_CLEAR(clear_module_state->__pyx_codeobj__659);
  Py_CLEAR(clear_module_state->__pyx_codeobj__661);
  Py_CLEAR(clear_module_state->__pyx_codeobj__663);
  Py_CLEAR(clear_module_state->__pyx_codeobj__664);
  Py_CLEAR(clear_module_state->__pyx_codeobj__665);
  Py_CLEAR(clear_module_state->__pyx_codeobj__666);
  Py_CLEAR(clear_module_state->__pyx_codeobj__668);
  Py_CLEAR(clear_module_state->__pyx_codeobj__669);
  Py_CLEAR(clear_module_state->__pyx_codeobj__670);
  Py_CLEAR(clear_module_state->__pyx_codeobj__671);
  Py_CLEAR(clear_module_state->__pyx_codeobj__672);
  Py_CLEAR(clear_module_state->__pyx_codeobj__674);
  Py_CLEAR(clear_module_state->__pyx_codeobj__676);
  Py_CLEAR(clear_module_state->__pyx_codeobj__677);
  Py_CLEAR(clear_module_state->__pyx_codeobj__679);
  Py_CLEAR(clear_module_state->__pyx_codeobj__680);
  Py_CLEAR(clear_module_state->__pyx_codeobj__682);
  Py_CLEAR(clear_module_state->__pyx_codeobj__684);
  Py_CLEAR(clear_module_state->__pyx_codeobj__685);
  Py_CLEAR(clear_module_state->__pyx_codeobj__686);
  Py_CLEAR(clear_module_state->__pyx_codeobj__687);
  Py_CLEAR(clear_module_state->__pyx_codeobj__689);
  Py_CLEAR(clear_module_state->__pyx_codeobj__690);
  Py_CLEAR(clear_module_state->__pyx_codeobj__691);
  Py_CLEAR(clear_module_state->__pyx_codeobj__692);
  Py_CLEAR(clear_module_state->__pyx_codeobj__693);
  Py_CLEAR(clear_module_state->__pyx_codeobj__695);
  Py_CLEAR(clear_module_state->__pyx_codeobj__697);
  Py_CLEAR(clear_module_state->__pyx_codeobj__698);
  Py_CLEAR(clear_module_state->__pyx_codeobj__700);
  Py_CLEAR(clear_module_state->__pyx_codeobj__702);
  Py_CLEAR(clear_module_state->__pyx_codeobj__704);
  Py_CLEAR(clear_module_state->__pyx_codeobj__706);
  Py_CLEAR(clear_module_state->__pyx_codeobj__707);
  Py_CLEAR(clear_module_state->__pyx_codeobj__708);
  Py_CLEAR(clear_module_state->__pyx_codeobj__709);
  Py_CLEAR(clear_module_state->__pyx_codeobj__711);
  Py_CLEAR(clear_module_state->__pyx_codeobj__712);
  Py_CLEAR(clear_module_state->__pyx_codeobj__713);
  Py_CLEAR(clear_module_state->__pyx_codeobj__714);
  Py_CLEAR(clear_module_state->__pyx_codeobj__715);
  Py_CLEAR(clear_module_state->__pyx_codeobj__717);
  Py_CLEAR(clear_module_state->__pyx_codeobj__719);
  Py_CLEAR(clear_module_state->__pyx_codeobj__720);
  Py_CLEAR(clear_module_state->__pyx_codeobj__722);
  Py_CLEAR(clear_module_state->__pyx_codeobj__723);
  Py_CLEAR(clear_module_state->__pyx_codeobj__724);
  Py_CLEAR(clear_module_state->__pyx_codeobj__726);
  Py_CLEAR(clear_module_state->__pyx_codeobj__728);
  Py_CLEAR(clear_module_state->__pyx_codeobj__729);
  Py_CLEAR(clear_module_state->__pyx_codeobj__731);
  Py_CLEAR(clear_module_state->__pyx_codeobj__732);
  Py_CLEAR(clear_module_state->__pyx_codeobj__733);
  Py_CLEAR(clear_module_state->__pyx_codeobj__734);
  Py_CLEAR(clear_module_state->__pyx_codeobj__735);
  Py_CLEAR(clear_module_state->__pyx_codeobj__736);
  Py_CLEAR(clear_module_state->__pyx_codeobj__737);
  Py_CLEAR(clear_module_state->__pyx_codeobj__738);
  Py_CLEAR(clear_module_state->__pyx_codeobj__739);
  Py_CLEAR(clear_module_state->__pyx_codeobj__740);
  Py_CLEAR(clear_module_state->__pyx_codeobj__741);
  Py_CLEAR(clear_module_state->__pyx_codeobj__742);
  Py_CLEAR(clear_module_state->__pyx_codeobj__743);
  Py_CLEAR(clear_module_state->__pyx_codeobj__744);
  Py_CLEAR(clear_module_state->__pyx_codeobj__745);
  Py_CLEAR(clear_module_state->__pyx_codeobj__747);
  Py_CLEAR(clear_module_state->__pyx_codeobj__748);
  Py_CLEAR(clear_module_state->__pyx_codeobj__749);
  Py_CLEAR(clear_module_state->__pyx_codeobj__751);
  Py_CLEAR(clear_module_state->__pyx_codeobj__753);
  Py_CLEAR(clear_module_state->__pyx_codeobj__755);
  Py_CLEAR(clear_module_state->__pyx_codeobj__756);
  Py_CLEAR(clear_module_state->__pyx_codeobj__757);
  Py_CLEAR(clear_module_state->__pyx_codeobj__759);
  Py_CLEAR(clear_module_state->__pyx_codeobj__761);
  Py_CLEAR(clear_module_state->__pyx_codeobj__762);
  Py_CLEAR(clear_module_state->__pyx_codeobj__764);
  Py_CLEAR(clear_module_state->__pyx_codeobj__766);
  Py_CLEAR(clear_module_state->__pyx_codeobj__767);
  Py_CLEAR(clear_module_state->__pyx_codeobj__769);
  Py_CLEAR(clear_module_state->__pyx_codeobj__771);
  Py_CLEAR(clear_module_state->__pyx_codeobj__772);
  Py_CLEAR(clear_module_state->__pyx_codeobj__774);
  Py_CLEAR(clear_module_state->__pyx_codeobj__775);
  Py_CLEAR(clear_module_state->__pyx_codeobj__777);
  Py_CLEAR(clear_module_state->__pyx_codeobj__779);
  Py_CLEAR(clear_module_state->__pyx_codeobj__781);
  Py_CLEAR(clear_module_state->__pyx_codeobj__783);
  Py_CLEAR(clear_module_state->__pyx_codeobj__785);
  Py_CLEAR(clear_module_state->__pyx_codeobj__788);
  Py_CLEAR(clear_module_state->__pyx_codeobj__790);
  Py_CLEAR(clear_module_state->__pyx_codeobj__792);
  Py_CLEAR(clear_module_state->__pyx_codeobj__794);
  Py_CLEAR(clear_module_state->__pyx_codeobj__796);
  Py_CLEAR(clear_module_state->__pyx_codeobj__798);
  Py_CLEAR(clear_module_state->__pyx_codeobj__799);
  Py_CLEAR(clear_module_state->__pyx_codeobj__800);
  Py_CLEAR(clear_module_state->__pyx_codeobj__801);
  Py_CLEAR(clear_module_state->__pyx_codeobj__802);
  Py_CLEAR(clear_module_state->__pyx_codeobj__803);
  Py_CLEAR(clear_module_state->__pyx_codeobj__804);
  Py_CLEAR(clear_module_state->__pyx_codeobj__805);
  Py_CLEAR(clear_module_state->__pyx_codeobj__806);
  Py_CLEAR(clear_module_state->__pyx_codeobj__808);
  Py_CLEAR(clear_module_state->__pyx_codeobj__811);
  Py_CLEAR(clear_module_state->__pyx_codeobj__813);
  Py_CLEAR(clear_module_state->__pyx_codeobj__814);
  Py_CLEAR(clear_module_state->__pyx_codeobj__815);
  Py_CLEAR(clear_module_state->__pyx_codeobj__816);
  Py_CLEAR(clear_module_state->__pyx_codeobj__817);
  Py_CLEAR(clear_module_state->__pyx_codeobj__818);
  Py_CLEAR(clear_module_state->__pyx_codeobj__819);
  Py_CLEAR(clear_module_state->__pyx_codeobj__820);
  Py_CLEAR(clear_module_state->__pyx_codeobj__821);
  Py_CLEAR(clear_module_state->__pyx_codeobj__822);
  Py_CLEAR(clear_module_state->__pyx_codeobj__823);
  Py_CLEAR(clear_module_state->__pyx_codeobj__824);
  Py_CLEAR(clear_module_state->__pyx_codeobj__825);
  Py_CLEAR(clear_module_state->__pyx_codeobj__826);
  Py_CLEAR(clear_module_state->__pyx_codeobj__827);
  Py_CLEAR(clear_module_state->__pyx_codeobj__828);
  Py_CLEAR(clear_module_state->__pyx_codeobj__829);
  Py_CLEAR(clear_module_state->__pyx_codeobj__830);
  Py_CLEAR(clear_module_state->__pyx_codeobj__831);
  Py_CLEAR(clear_module_state->__pyx_codeobj__833);
  Py_CLEAR(clear_module_state->__pyx_codeobj__835);
  Py_CLEAR(clear_module_state->__pyx_codeobj__837);
  Py_CLEAR(clear_module_state->__pyx_codeobj__839);
  Py_CLEAR(clear_module_state->__pyx_codeobj__841);
  Py_CLEAR(clear_module_state->__pyx_codeobj__843);
  Py_CLEAR(clear_module_state->__pyx_codeobj__845);
  Py_CLEAR(clear_module_state->__pyx_codeobj__847);
  Py_CLEAR(clear_module_state->__pyx_codeobj__849);
  Py_CLEAR(clear_module_state->__pyx_codeobj__851);
  Py_CLEAR(clear_module_state->__pyx_codeobj__853);
  Py_CLEAR(clear_module_state->__pyx_codeobj__855);
  Py_CLEAR(clear_module_state->__pyx_codeobj__857);
  Py_CLEAR(clear_module_state->__pyx_codeobj__859);
  Py_CLEAR(clear_module_state->__pyx_codeobj__860);
  Py_CLEAR(clear_module_state->__pyx_codeobj__861);
  Py_CLEAR(clear_module_state->__pyx_codeobj__863);
  Py_CLEAR(clear_module_state->__pyx_codeobj__865);
  Py_CLEAR(clear_module_state->__pyx_codeobj__867);
  Py_CLEAR(clear_module_state->__pyx_codeobj__868);
  Py_CLEAR(clear_module_state->__pyx_codeobj__870);
  Py_CLEAR(clear_module_state->__pyx_codeobj__872);
  Py_CLEAR(clear_module_state->__pyx_codeobj__874);
  Py_CLEAR(clear_module_state->__pyx_codeobj__876);
  Py_CLEAR(clear_module_state->__pyx_codeobj__877);
  Py_CLEAR(clear_module_state->__pyx_codeobj__879);
  Py_CLEAR(clear_module_state->__pyx_codeobj__880);
  Py_CLEAR(clear_module_state->__pyx_codeobj__881);
  Py_CLEAR(clear_module_state->__pyx_codeobj__882);
  Py_CLEAR(clear_module_state->__pyx_codeobj__884);
  Py_CLEAR(clear_module_state->__pyx_codeobj__886);
  Py_CLEAR(clear_module_state->__pyx_codeobj__887);
  Py_CLEAR(clear_module_state->__pyx_codeobj__889);
  Py_CLEAR(clear_module_state->__pyx_codeobj__891);
  Py_CLEAR(clear_module_state->__pyx_codeobj__893);
  Py_CLEAR(clear_module_state->__pyx_codeobj__895);
  Py_CLEAR(clear_module_state->__pyx_codeobj__896);
  Py_CLEAR(clear_module_state->__pyx_codeobj__897);
  Py_CLEAR(clear_module_state->__pyx_codeobj__898);
  Py_CLEAR(clear_module_state->__pyx_codeobj__899);
  Py_CLEAR(clear_module_state->__pyx_codeobj__900);
  Py_CLEAR(clear_module_state->__pyx_codeobj__901);
  Py_CLEAR(clear_module_state->__pyx_codeobj__902);
  Py_CLEAR(clear_module_state->__pyx_codeobj__903);
  Py_CLEAR(clear_module_state->__pyx_codeobj__904);
  Py_CLEAR(clear_module_state->__pyx_codeobj__905);
  Py_CLEAR(clear_module_state->__pyx_codeobj__907);
  Py_CLEAR(clear_module_state->__pyx_codeobj__908);
  Py_CLEAR(clear_module_state->__pyx_codeobj__910);
  Py_CLEAR(clear_module_state->__pyx_codeobj__912);
  Py_CLEAR(clear_module_state->__pyx_codeobj__914);
  Py_CLEAR(clear_module_state->__pyx_codeobj__916);
  Py_CLEAR(clear_module_state->__pyx_codeobj__918);
  Py_CLEAR(clear_module_state->__pyx_codeobj__919);
  Py_CLEAR(clear_module_state->__pyx_codeobj__921);
  Py_CLEAR(clear_module_state->__pyx_codeobj__923);
  Py_CLEAR(clear_module_state->__pyx_codeobj__925);
  Py_CLEAR(clear_module_state->__pyx_codeobj__927);
  Py_CLEAR(clear_module_state->__pyx_codeobj__928);
  Py_CLEAR(clear_module_state->__pyx_codeobj__929);
  Py_CLEAR(clear_module_state->__pyx_codeobj__930);
  Py_CLEAR(clear_module_state->__pyx_codeobj__931);
  Py_CLEAR(clear_module_state->__pyx_codeobj__933);
  Py_CLEAR(clear_module_state->__pyx_codeobj__934);
  Py_CLEAR(clear_module_state->__pyx_codeobj__935);
  Py_CLEAR(clear_module_state->__pyx_codeobj__936);
  Py_CLEAR(clear_module_state->__pyx_codeobj__937);
  Py_CLEAR(clear_module_state->__pyx_codeobj__938);
  Py_CLEAR(clear_module_state->__pyx_codeobj__939);
  Py_CLEAR(clear_module_state->__pyx_codeobj__940);
  Py_CLEAR(clear_module_state->__pyx_codeobj__941);
  Py_CLEAR(clear_module_state->__pyx_codeobj__942);
  Py_CLEAR(clear_module_state->__pyx_codeobj__943);
  Py_CLEAR(clear_module_state->__pyx_codeobj__944);
  Py_CLEAR(clear_module_state->__pyx_codeobj__945);
  Py_CLEAR(clear_module_state->__pyx_codeobj__946);
  Py_CLEAR(clear_module_state->__pyx_codeobj__947);
  Py_CLEAR(clear_module_state->__pyx_codeobj__948);
  Py_CLEAR(clear_module_state->__pyx_codeobj__949);
  Py_CLEAR(clear_module_state->__pyx_codeobj__950);
  Py_CLEAR(clear_module_state->__pyx_codeobj__951);
  Py_CLEAR(clear_module_state->__pyx_codeobj__952);
  Py_CLEAR(clear_module_state->__pyx_codeobj__954);
  Py_CLEAR(clear_module_state->__pyx_codeobj__955);
  Py_CLEAR(clear_module_state->__pyx_codeobj__957);
  Py_CLEAR(clear_module_state->__pyx_codeobj__958);
  Py_CLEAR(clear_module_state->__pyx_codeobj__959);
  Py_CLEAR(clear_module_state->__pyx_codeobj__960);
  Py_CLEAR(clear_module_state->__pyx_codeobj__962);
  Py_CLEAR(clear_module_state->__pyx_codeobj__963);
  Py_CLEAR(clear_module_state->__pyx_codeobj__964);
  Py_CLEAR(clear_module_state->__pyx_codeobj__965);
  Py_CLEAR(clear_module_state->__pyx_codeobj__967);
  Py_CLEAR(clear_module_state->__pyx_codeobj__969);
  Py_CLEAR(clear_module_state->__pyx_codeobj__971);
  Py_CLEAR(clear_module_state->__pyx_codeobj__972);
  Py_CLEAR(clear_module_state->__pyx_codeobj__973);
  Py_CLEAR(clear_module_state->__pyx_codeobj__974);
  Py_CLEAR(clear_module_state->__pyx_codeobj__976);
  Py_CLEAR(clear_module_state->__pyx_codeobj__977);
  Py_CLEAR(clear_module_state->__pyx_codeobj__978);
  Py_CLEAR(clear_module_state->__pyx_codeobj__979);
  Py_CLEAR(clear_module_state->__pyx_codeobj__981);
  Py_CLEAR(clear_module_state->__pyx_codeobj__982);
  Py_CLEAR(clear_module_state->__pyx_codeobj__983);
  Py_CLEAR(clear_module_state->__pyx_codeobj__984);
  Py_CLEAR(clear_module_state->__pyx_codeobj__986);
  Py_CLEAR(clear_module_state->__pyx_codeobj__987);
  Py_CLEAR(clear_module_state->__pyx_codeobj__988);
  Py_CLEAR(clear_module_state->__pyx_codeobj__989);
  Py_CLEAR(clear_module_state->__pyx_codeobj__991);
  Py_CLEAR(clear_module_state->__pyx_codeobj__993);
  Py_CLEAR(clear_module_state->__pyx_codeobj__995);
  Py_CLEAR(clear_module_state->__pyx_codeobj__996);
  Py_CLEAR(clear_module_state->__pyx_codeobj__997);
  Py_CLEAR(clear_module_state->__pyx_codeobj__998);
  Py_CLEAR(clear_module_state->__pyx_codeobj__999);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1000);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1001);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1002);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1003);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1005);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1006);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1007);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1008);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1010);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1011);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1012);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1013);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1014);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1015);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1016);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1017);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1019);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1020);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1021);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1022);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1023);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1024);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1025);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1026);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1027);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1028);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1030);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1032);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1034);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1035);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1036);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1038);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1040);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1042);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1043);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1044);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1046);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1048);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1049);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1051);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1052);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1053);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1055);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1057);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1059);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1061);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1063);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1065);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1067);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1069);
  Py_CLEAR(clear_module_state->__pyx_codeobj__1070);
  return 0;
}
#endif
/* #### Code section: module_state_traverse ### */
#if CYTHON_USE_MODULE_STATE
static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
  __pyx_mstate *traverse_module_state = __pyx_mstate(m);
  if (!traverse_module_state) return 0;
  Py_VISIT(traverse_module_state->__pyx_d);
  Py_VISIT(traverse_module_state->__pyx_b);
  Py_VISIT(traverse_module_state->__pyx_cython_runtime);
  Py_VISIT(traverse_module_state->__pyx_empty_tuple);
  Py_VISIT(traverse_module_state->__pyx_empty_bytes);
  Py_VISIT(traverse_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
  #endif
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Datatype);
  Py_VISIT(traverse_module_state->PyMPIDatatype_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Status);
  Py_VISIT(traverse_module_state->PyMPIStatus_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Request);
  Py_VISIT(traverse_module_state->PyMPIRequest_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Prequest);
  Py_VISIT(traverse_module_state->PyMPIPrequest_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Grequest);
  Py_VISIT(traverse_module_state->PyMPIGrequest_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Message);
  Py_VISIT(traverse_module_state->PyMPIMessage_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Op);
  Py_VISIT(traverse_module_state->PyMPIOp_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Group);
  Py_VISIT(traverse_module_state->PyMPIGroup_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Info);
  Py_VISIT(traverse_module_state->PyMPIInfo_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Errhandler);
  Py_VISIT(traverse_module_state->PyMPIErrhandler_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Session);
  Py_VISIT(traverse_module_state->PyMPISession_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Comm);
  Py_VISIT(traverse_module_state->PyMPIComm_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Intracomm);
  Py_VISIT(traverse_module_state->PyMPIIntracomm_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Topocomm);
  Py_VISIT(traverse_module_state->PyMPITopocomm_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Cartcomm);
  Py_VISIT(traverse_module_state->PyMPICartcomm_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Graphcomm);
  Py_VISIT(traverse_module_state->PyMPIGraphcomm_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);
  Py_VISIT(traverse_module_state->PyMPIDistgraphcomm_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Intercomm);
  Py_VISIT(traverse_module_state->PyMPIIntercomm_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Win);
  Py_VISIT(traverse_module_state->PyMPIWin_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_File);
  Py_VISIT(traverse_module_state->PyMPIFile_Type);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__PyMem);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__PyMem);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_buffer);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI_buffer);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_keyval);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_keyval);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_rs);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_rs);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_greq);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_greq);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI_BufferAutomaticType);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_datarep);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_datarep);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_BottomType);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI_BottomType);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_InPlaceType);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI_InPlaceType);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_message);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_message);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_msg_p2p);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_cco);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_msg_cco);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_msg_ccow);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_rma);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_msg_rma);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_msg_io);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_msg_io);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Pickle);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI_Pickle);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_req_buf);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_req_buf);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI__p_req_obj);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI__p_req_obj);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_RuntimeError);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI_Exception);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI_Exception);
  Py_VISIT(traverse_module_state->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback);
  Py_VISIT(traverse_module_state->__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback);
  Py_VISIT(traverse_module_state->__pyx_n_s_);
  Py_VISIT(traverse_module_state->__pyx_kp_b_);
  Py_VISIT(traverse_module_state->__pyx_n_s_AINT);
  Py_VISIT(traverse_module_state->__pyx_n_s_ANY_SOURCE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ANY_TAG);
  Py_VISIT(traverse_module_state->__pyx_n_s_APPNUM);
  Py_VISIT(traverse_module_state->__pyx_n_s_Abort);
  Py_VISIT(traverse_module_state->__pyx_n_s_Accept);
  Py_VISIT(traverse_module_state->__pyx_n_s_Accumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ack_failed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Add_error_class);
  Py_VISIT(traverse_module_state->__pyx_n_s_Add_error_code);
  Py_VISIT(traverse_module_state->__pyx_n_s_Add_error_string);
  Py_VISIT(traverse_module_state->__pyx_n_s_Agree);
  Py_VISIT(traverse_module_state->__pyx_n_s_Aint_add);
  Py_VISIT(traverse_module_state->__pyx_n_s_Aint_diff);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allgather_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allgatherv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Alloc_mem);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allocate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allocate_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allreduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Allreduce_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Alltoall_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Alltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Alltoallv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Alltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Alltoallw_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Any);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Any_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Attach);
  Py_VISIT(traverse_module_state->__pyx_n_s_Attach_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError);
  Py_VISIT(traverse_module_state->__pyx_n_s_BAND);
  Py_VISIT(traverse_module_state->__pyx_n_s_BOOL);
  Py_VISIT(traverse_module_state->__pyx_n_s_BOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_BOTTOM);
  Py_VISIT(traverse_module_state->__pyx_n_s_BSEND_OVERHEAD);
  Py_VISIT(traverse_module_state->__pyx_n_s_BUFFER_AUTOMATIC);
  Py_VISIT(traverse_module_state->__pyx_n_s_BXOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_BYTE);
  Py_VISIT(traverse_module_state->__pyx_n_s_Barrier);
  Py_VISIT(traverse_module_state->__pyx_n_s_Barrier_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_BaseException);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bcast);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bcast_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_BottomType);
  Py_VISIT(traverse_module_state->__pyx_n_s_BottomType___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bsend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_BufSpec);
  Py_VISIT(traverse_module_state->__pyx_n_s_BufSpecB);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpecB_InPlace);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpecB_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_BufSpecV);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpecV_InPlace);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpecV_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_BufSpecW);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpecW_InPlace);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpec_BufSpecB);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpec_InPlace);
  Py_VISIT(traverse_module_state->__pyx_kp_s_BufSpec_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_BufferAutomaticType);
  Py_VISIT(traverse_module_state->__pyx_n_s_BufferAutomaticType___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_BufferError);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Buffer_Bottom);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Buffer_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_CART);
  Py_VISIT(traverse_module_state->__pyx_n_s_CHAR);
  Py_VISIT(traverse_module_state->__pyx_n_s_CHARACTER);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_CONTIGUOUS);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_DARRAY);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_DUP);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_F90_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_F90_INTEGER);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_F90_REAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_HINDEXED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_HINDEXED_BLOCK);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_HVECTOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_INDEXED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_INDEXED_BLOCK);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_NAMED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_RESIZED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_STRUCT);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_SUBARRAY);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_VALUE_INDEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMBINER_VECTOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMM_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMM_SELF);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMM_TYPE_HW_GUIDED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMM_TYPE_HW_UNGUIDED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMM_TYPE_RESOURCE_GUIDED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMM_TYPE_SHARED);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMM_WORLD);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMPLEX16);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMPLEX32);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMPLEX4);
  Py_VISIT(traverse_module_state->__pyx_n_s_COMPLEX8);
  Py_VISIT(traverse_module_state->__pyx_n_s_CONGRUENT);
  Py_VISIT(traverse_module_state->__pyx_n_s_CONTIGUOUS);
  Py_VISIT(traverse_module_state->__pyx_n_s_COUNT);
  Py_VISIT(traverse_module_state->__pyx_n_s_CXX_BOOL);
  Py_VISIT(traverse_module_state->__pyx_n_s_CXX_DOUBLE_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_CXX_FLOAT_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_CXX_LONG_DOUBLE_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_C_BOOL);
  Py_VISIT(traverse_module_state->__pyx_n_s_C_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_C_DOUBLE_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_C_FLOAT_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_C_LONG_DOUBLE_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Call_errhandler);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Buffer_Buffer_Datatype);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Buffer_Datatype_int_Buf);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Comm_int_Any_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Comm_int_Any_None_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Comm_int_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Datatype_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Datatype_int_Any_Any_No);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Datatype_int_Any_None_N);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_File_int_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_None_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Session_int_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Win_int_Any_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Win_int_Any_None_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callable_Win_int_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cancel);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cart_map);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cartcomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cartcomm_Get_cart_rank);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cartcomm_Get_coords);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cartcomm_Get_dim);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cartcomm_Get_topo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cartcomm_Shift);
  Py_VISIT(traverse_module_state->__pyx_n_s_Cartcomm_Sub);
  Py_VISIT(traverse_module_state->__pyx_n_s_Clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Close);
  Py_VISIT(traverse_module_state->__pyx_n_s_Close_port);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Abort);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ack_failed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Agree);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Allgather_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Allgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Allgatherv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Allreduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Allreduce_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Alltoall_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Alltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Alltoallv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Alltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Alltoallw_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Attach_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Barrier);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Barrier_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Bcast);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Bcast_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Bsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Bsend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Call_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Compare);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Create);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Create_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Create_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Delete_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Detach_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Disconnect);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Dup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Dup_with_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Flush_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Free_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Gather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Gather_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Gatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Gatherv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_failed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_parent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_rank);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Get_topology);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iagree);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iallgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iallgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iallreduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ialltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ialltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ialltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ibarrier);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ibcast);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ibsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Idup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Idup_with_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iflush_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Igather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Igatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Improbe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Irecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ireduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ireduce_scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ireduce_scatter_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Irsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Is_inter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Is_intra);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Is_revoked);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iscatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Iscatterv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Isend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Isendrecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Isendrecv_replace);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ishrink);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Issend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Join);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Mprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Precv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Probe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Psend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Recv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Recv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Reduce_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Reduce_scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Reduce_scatter_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Reduce_scatter_block_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Reduce_scatter_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Revoke);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Rsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Rsend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Scatter_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Scatterv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Scatterv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Send);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Send_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Sendrecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Sendrecv_replace);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Set_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Set_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Set_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Set_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Shrink);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Split);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Split_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ssend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_Ssend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_allreduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_barrier);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_bcast);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_bsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_gather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_ibsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_improbe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_iprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_irecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_isend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_issend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_mprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_probe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_recv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_send);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_sendrecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Comm_ssend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Commit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Compare);
  Py_VISIT(traverse_module_state->__pyx_n_s_Compare_and_swap);
  Py_VISIT(traverse_module_state->__pyx_n_s_Complete);
  Py_VISIT(traverse_module_state->__pyx_n_s_Compute_dims);
  Py_VISIT(traverse_module_state->__pyx_n_s_Connect);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create);
  Py_VISIT(traverse_module_state->__pyx_n_u_Create_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_cart);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_contiguous);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_darray);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_dist_graph);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_dist_graph_adjacent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_dup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_dynamic);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_env);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_f90_complex);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_f90_integer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_f90_real);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_from_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_from_groups);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_from_session_pset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_graph);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_hindexed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_hindexed_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_hvector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_indexed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_indexed_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_intercomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_resized);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_struct);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_subarray);
  Py_VISIT(traverse_module_state->__pyx_n_s_Create_vector);
  Py_VISIT(traverse_module_state->__pyx_n_s_DARRAY);
  Py_VISIT(traverse_module_state->__pyx_n_s_DATATYPE_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_DISPLACEMENT_CURRENT);
  Py_VISIT(traverse_module_state->__pyx_n_s_DISP_CUR);
  Py_VISIT(traverse_module_state->__pyx_n_s_DISTRIBUTE_BLOCK);
  Py_VISIT(traverse_module_state->__pyx_n_s_DISTRIBUTE_CYCLIC);
  Py_VISIT(traverse_module_state->__pyx_n_s_DISTRIBUTE_DFLT_DARG);
  Py_VISIT(traverse_module_state->__pyx_n_s_DISTRIBUTE_NONE);
  Py_VISIT(traverse_module_state->__pyx_n_s_DIST_GRAPH);
  Py_VISIT(traverse_module_state->__pyx_n_s_DOUBLE);
  Py_VISIT(traverse_module_state->__pyx_n_s_DOUBLE_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_DOUBLE_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_DOUBLE_PRECISION);
  Py_VISIT(traverse_module_state->__pyx_n_s_DUP);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Commit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_contiguous);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_darray);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_f90_complex);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_f90_integer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_f90_real);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_hindexed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_hindexed_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_hvector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_indexed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_indexed_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_resized);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_struct);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_subarray);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Create_vector);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Delete_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Dup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Free_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_contents);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_envelope);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_extent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_true_extent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Get_value_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Match_size);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Datatype_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Pack);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Pack_external);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Pack_external_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Pack_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Set_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Set_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Unpack);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_Unpack_external);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_decode);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_fromcode);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Datatype_tocode);
  Py_VISIT(traverse_module_state->__pyx_n_s_Delete);
  Py_VISIT(traverse_module_state->__pyx_n_s_Delete_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detach);
  Py_VISIT(traverse_module_state->__pyx_n_s_Detach_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Difference);
  Py_VISIT(traverse_module_state->__pyx_n_s_Disconnect);
  Py_VISIT(traverse_module_state->__pyx_n_s_Distgraphcomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Distgraphcomm_Get_dist_neighbors);
  Py_VISIT(traverse_module_state->__pyx_n_s_Distgraphcomm_Get_dist_neighbors_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dup_with_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERRHANDLER_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERRORS_ABORT);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERRORS_ARE_FATAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERRORS_RETURN);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_ACCESS);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_AMODE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_ARG);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_ASSERT);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_BAD_FILE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_BASE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_BUFFER);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_COMM);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_CONVERSION);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_COUNT);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_DIMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_DISP);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_DUP_DATAREP);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_ERRHANDLER);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_FILE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_FILE_EXISTS);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_FILE_IN_USE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_GROUP);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_INFO);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_INFO_KEY);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_INFO_NOKEY);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_INFO_VALUE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_INTERN);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_IN_STATUS);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_IO);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_KEYVAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_LASTCODE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_LOCKTYPE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_NAME);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_NOT_SAME);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_NO_MEM);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_NO_SPACE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_NO_SUCH_FILE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_OP);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_OTHER);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_PENDING);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_PORT);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_PROC_ABORTED);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_PROC_FAILED);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_PROC_FAILED_PENDING);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_QUOTA);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_RANK);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_READ_ONLY);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_REQUEST);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_REVOKED);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_RMA_ATTACH);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_RMA_CONFLICT);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_RMA_FLAVOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_RMA_RANGE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_RMA_SHARED);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_RMA_SYNC);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_ROOT);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_SERVICE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_SESSION);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_SIZE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_SPAWN);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_TAG);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_TOPOLOGY);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_TRUNCATE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_TYPE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_UNKNOWN);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_UNSUPPORTED_DATAREP);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_UNSUPPORTED_OPERATION);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_VALUE_TOO_LARGE);
  Py_VISIT(traverse_module_state->__pyx_n_s_ERR_WIN);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ellipsis);
  Py_VISIT(traverse_module_state->__pyx_n_s_Errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Errhandler_Free);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Errhandler_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Errhandler___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Errhandler_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Errhandler_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Errhandler_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Errhandler_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Exception);
  Py_VISIT(traverse_module_state->__pyx_n_s_Exception_Get_error_class);
  Py_VISIT(traverse_module_state->__pyx_n_s_Exception_Get_error_code);
  Py_VISIT(traverse_module_state->__pyx_n_s_Exception_Get_error_string);
  Py_VISIT(traverse_module_state->__pyx_n_s_Excl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Exscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Exscan_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_F90_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_F90_INTEGER);
  Py_VISIT(traverse_module_state->__pyx_n_s_F90_REAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_FILE_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_FLOAT);
  Py_VISIT(traverse_module_state->__pyx_n_s_FLOAT_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_BOOL);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_DOUBLE);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_DOUBLE_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_ERROR);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_FLOAT);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_FLOAT_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_SOURCE);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_STATUS_SIZE);
  Py_VISIT(traverse_module_state->__pyx_n_s_F_TAG);
  Py_VISIT(traverse_module_state->__pyx_n_s_Fence);
  Py_VISIT(traverse_module_state->__pyx_n_s_Fetch_and_op);
  Py_VISIT(traverse_module_state->__pyx_n_s_File);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Call_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Close);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Create_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Delete);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_amode);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_atomicity);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_byte_offset);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_position);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_position_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_type_extent);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Get_view);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iread);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iread_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iread_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iread_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iread_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iwrite);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iwrite_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iwrite_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iwrite_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Iwrite_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Open);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Preallocate);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_at_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_at_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_ordered);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_ordered_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_ordered_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Read_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Seek);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Seek_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Set_atomicity);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Set_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Set_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Set_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Set_view);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Sync);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_at_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_at_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_ordered);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_ordered_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_ordered_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_Write_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_File___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_File_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Finalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_Flush);
  Py_VISIT(traverse_module_state->__pyx_n_s_Flush_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Flush_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Flush_local);
  Py_VISIT(traverse_module_state->__pyx_n_s_Flush_local_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Free_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Free_mem);
  Py_VISIT(traverse_module_state->__pyx_n_s_GRAPH);
  Py_VISIT(traverse_module_state->__pyx_n_s_GROUP_EMPTY);
  Py_VISIT(traverse_module_state->__pyx_n_s_GROUP_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_Gather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Gather_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Gatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Gatherv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_accumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_address);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_amode);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_atomicity);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_byte_offset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_cart_rank);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_contents);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_coords);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_count);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_dim);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_dims);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_dist_neighbors);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_dist_neighbors_count);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_elements);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_envelope);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_error);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_error_class);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_error_code);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_error_string);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_extent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_failed);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_hw_resource_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_library_version);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_neighbors);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_neighbors_count);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_nkeys);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_nth_pset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_nthkey);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_num_psets);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_parent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_position);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_position_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_processor_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_pset_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_rank);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_remote_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_remote_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_source);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_status_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_status_any);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_status_some);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_tag);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_topo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_topology);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_true_extent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_type_extent);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_value_index);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_version);
  Py_VISIT(traverse_module_state->__pyx_n_s_Get_view);
  Py_VISIT(traverse_module_state->__pyx_n_s_Graph_map);
  Py_VISIT(traverse_module_state->__pyx_n_s_Graphcomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Graphcomm_Get_dims);
  Py_VISIT(traverse_module_state->__pyx_n_s_Graphcomm_Get_neighbors);
  Py_VISIT(traverse_module_state->__pyx_n_s_Graphcomm_Get_neighbors_count);
  Py_VISIT(traverse_module_state->__pyx_n_s_Graphcomm_Get_topo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Grequest);
  Py_VISIT(traverse_module_state->__pyx_n_s_Grequest_Complete);
  Py_VISIT(traverse_module_state->__pyx_n_s_Grequest_Start);
  Py_VISIT(traverse_module_state->__pyx_n_s_Grequest_complete);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Compare);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Create_from_session_pset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Difference);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Dup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Excl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Get_rank);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Get_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Incl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Intersection);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Group_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Range_excl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Range_incl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Translate_ranks);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_Union);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Group_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_HIGHEST_PROTOCOL);
  Py_VISIT(traverse_module_state->__pyx_n_s_HINDEXED);
  Py_VISIT(traverse_module_state->__pyx_n_s_HINDEXED_BLOCK);
  Py_VISIT(traverse_module_state->__pyx_n_s_HVECTOR);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Hashable_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_IDENT);
  Py_VISIT(traverse_module_state->__pyx_n_s_INDEXED);
  Py_VISIT(traverse_module_state->__pyx_n_s_INDEXED_BLOCK);
  Py_VISIT(traverse_module_state->__pyx_n_s_INFO_ENV);
  Py_VISIT(traverse_module_state->__pyx_n_s_INFO_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_INT16_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_INT32_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_INT64_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_INT8_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_INTEGER);
  Py_VISIT(traverse_module_state->__pyx_n_s_INTEGER1);
  Py_VISIT(traverse_module_state->__pyx_n_s_INTEGER16);
  Py_VISIT(traverse_module_state->__pyx_n_s_INTEGER2);
  Py_VISIT(traverse_module_state->__pyx_n_s_INTEGER4);
  Py_VISIT(traverse_module_state->__pyx_n_s_INTEGER8);
  Py_VISIT(traverse_module_state->__pyx_n_s_INT_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_IN_PLACE);
  Py_VISIT(traverse_module_state->__pyx_n_s_IO);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iagree);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iallgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iallgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iallreduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ialltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ialltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ialltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ibarrier);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ibcast);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ibsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Idup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Idup_with_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iexscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iflush_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Igather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Igatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_ImportError);
  Py_VISIT(traverse_module_state->__pyx_n_s_ImportWarning);
  Py_VISIT(traverse_module_state->__pyx_n_s_Improbe);
  Py_VISIT(traverse_module_state->__pyx_n_s_InPlaceType);
  Py_VISIT(traverse_module_state->__pyx_n_s_InPlaceType___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Incl);
  Py_VISIT(traverse_module_state->__pyx_n_s_IndexError);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ineighbor_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ineighbor_allgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ineighbor_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ineighbor_alltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ineighbor_alltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Create);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Create_env);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Delete);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Dup);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Get);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Get_nkeys);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Get_nthkey);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Info_Mapping_str_str_Iterable_tu);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Info_Mapping_str_str_Iterable_tu_2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Info_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_Set);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_clear);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_get);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_items);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_keys);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_pop);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_popitem);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_update);
  Py_VISIT(traverse_module_state->__pyx_n_s_Info_values);
  Py_VISIT(traverse_module_state->__pyx_n_s_Init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Init_thread);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intercomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intercomm_Create_from_groups);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intercomm_Get_remote_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intercomm_Get_remote_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intercomm_Merge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intersect);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intersection);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Accept);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Cart_map);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Connect);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Create_cart);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Create_dist_graph);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Create_dist_graph_adja);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Create_from_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Create_graph);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Create_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Create_intercomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Exscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Exscan_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Graph_map);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Iexscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Iscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Scan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Scan_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Spawn);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_Spawn_multiple);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_exscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Intracomm_scan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iread);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iread_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iread_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iread_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iread_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Irecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ireduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ireduce_scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ireduce_scatter_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Irsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_cancelled);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_commutative);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_finalized);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_initialized);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_inter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_intra);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_revoked);
  Py_VISIT(traverse_module_state->__pyx_n_s_Is_thread_main);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iscatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iscatterv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Isend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Isendrecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Isendrecv_replace);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ishrink);
  Py_VISIT(traverse_module_state->__pyx_n_s_Issend);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Iterable_Buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iwrite);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iwrite_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iwrite_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iwrite_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Iwrite_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Join);
  Py_VISIT(traverse_module_state->__pyx_n_s_KEYVAL_INVALID);
  Py_VISIT(traverse_module_state->__pyx_n_s_KeyError);
  Py_VISIT(traverse_module_state->__pyx_n_s_LAND);
  Py_VISIT(traverse_module_state->__pyx_n_s_LASTUSEDCODE);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOCK_EXCLUSIVE);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOCK_SHARED);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOGICAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOGICAL1);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOGICAL2);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOGICAL4);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOGICAL8);
  Py_VISIT(traverse_module_state->__pyx_n_s_LONG);
  Py_VISIT(traverse_module_state->__pyx_n_s_LONG_DOUBLE);
  Py_VISIT(traverse_module_state->__pyx_n_s_LONG_DOUBLE_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_LONG_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_LONG_LONG);
  Py_VISIT(traverse_module_state->__pyx_n_s_LOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_LXOR);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Literal_True);
  Py_VISIT(traverse_module_state->__pyx_n_s_Lock);
  Py_VISIT(traverse_module_state->__pyx_n_s_Lock_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Lookup_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAXLOC);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_DATAREP_STRING);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_ERROR_STRING);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_INFO_KEY);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_INFO_VAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_LIBRARY_VERSION_STRING);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_OBJECT_NAME);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_PORT_NAME);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_PROCESSOR_NAME);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_PSET_NAME_LEN);
  Py_VISIT(traverse_module_state->__pyx_n_s_MAX_STRINGTAG_LEN);
  Py_VISIT(traverse_module_state->__pyx_n_s_MESSAGE_NO_PROC);
  Py_VISIT(traverse_module_state->__pyx_n_s_MESSAGE_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_MIN);
  Py_VISIT(traverse_module_state->__pyx_n_s_MINLOC);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_APPEND);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_CREATE);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_DELETE_ON_CLOSE);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_EXCL);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_NOCHECK);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_NOPRECEDE);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_NOPUT);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_NOSTORE);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_NOSUCCEED);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_RDONLY);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_RDWR);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_SEQUENTIAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_UNIQUE_OPEN);
  Py_VISIT(traverse_module_state->__pyx_n_s_MODE_WRONLY);
  Py_VISIT(traverse_module_state->__pyx_n_b_MPI4PY_RC);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Comm);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Datatype);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Errhandler);
  Py_VISIT(traverse_module_state->__pyx_kp_u_MPI_Exception);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_File);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Group);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Info);
  Py_VISIT(traverse_module_state->__pyx_kp_u_MPI_Init_failed_error_code);
  Py_VISIT(traverse_module_state->__pyx_kp_u_MPI_Init_thread_failed_error_cod);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Message);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Op);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Request);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Session);
  Py_VISIT(traverse_module_state->__pyx_n_s_MPI_Win);
  Py_VISIT(traverse_module_state->__pyx_n_s_Match_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_MemoryError);
  Py_VISIT(traverse_module_state->__pyx_n_s_Merge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_Iprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_Irecv);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Message_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Message_Passing_Interface);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_Probe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_Recv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_iprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_irecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_probe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Message_recv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Mprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_NAMED);
  Py_VISIT(traverse_module_state->__pyx_n_s_NO_OP);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_allgather_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_allgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_allgatherv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_alltoall_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_alltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_alltoallv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_alltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Neighbor_alltoallw_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_NoReturn);
  Py_VISIT(traverse_module_state->__pyx_n_s_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_NotImplemented);
  Py_VISIT(traverse_module_state->__pyx_n_s_NotImplementedError);
  Py_VISIT(traverse_module_state->__pyx_n_s_OFFSET);
  Py_VISIT(traverse_module_state->__pyx_n_s_OP_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_ORDER_C);
  Py_VISIT(traverse_module_state->__pyx_n_s_ORDER_F);
  Py_VISIT(traverse_module_state->__pyx_n_s_ORDER_FORTRAN);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Object_is_not_writable);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Op_Callable_Any_Any_Any);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_Create);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_Is_commutative);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_Reduce_local);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Op_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Open);
  Py_VISIT(traverse_module_state->__pyx_n_s_Open_port);
  Py_VISIT(traverse_module_state->__pyx_n_s_OverflowError);
  Py_VISIT(traverse_module_state->__pyx_n_s_PACKED);
  Py_VISIT(traverse_module_state->__pyx_n_s_PROC_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_PROD);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pack);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pack_external);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pack_external_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pack_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Parrived);
  Py_VISIT(traverse_module_state->__pyx_kp_s_PathLike_AnyStr_str_bytes);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pcontrol);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pickle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pickle_dumps);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pickle_dumps_oob);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pickle_loads);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pickle_loads_oob);
  Py_VISIT(traverse_module_state->__pyx_n_s_Post);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pready);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pready_list);
  Py_VISIT(traverse_module_state->__pyx_n_s_Pready_range);
  Py_VISIT(traverse_module_state->__pyx_n_s_Preallocate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Precv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Prequest);
  Py_VISIT(traverse_module_state->__pyx_n_s_Prequest_Parrived);
  Py_VISIT(traverse_module_state->__pyx_n_s_Prequest_Pready);
  Py_VISIT(traverse_module_state->__pyx_n_s_Prequest_Pready_list);
  Py_VISIT(traverse_module_state->__pyx_n_s_Prequest_Pready_range);
  Py_VISIT(traverse_module_state->__pyx_n_s_Prequest_Start);
  Py_VISIT(traverse_module_state->__pyx_n_s_Prequest_Startall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Probe);
  Py_VISIT(traverse_module_state->__pyx_n_s_Psend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Publish_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Put);
  Py_VISIT(traverse_module_state->__pyx_n_s_Query_thread);
  Py_VISIT(traverse_module_state->__pyx_n_s_REAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_REAL16);
  Py_VISIT(traverse_module_state->__pyx_n_s_REAL2);
  Py_VISIT(traverse_module_state->__pyx_n_s_REAL4);
  Py_VISIT(traverse_module_state->__pyx_n_s_REAL8);
  Py_VISIT(traverse_module_state->__pyx_n_s_REPLACE);
  Py_VISIT(traverse_module_state->__pyx_n_s_REQUEST_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_RESIZED);
  Py_VISIT(traverse_module_state->__pyx_n_s_RLock);
  Py_VISIT(traverse_module_state->__pyx_n_s_ROOT);
  Py_VISIT(traverse_module_state->__pyx_n_s_Raccumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Range_excl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Range_incl);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_at_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_at_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_ordered);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_ordered_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_ordered_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_Read_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Recv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Recv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Reduce_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Reduce_local);
  Py_VISIT(traverse_module_state->__pyx_n_s_Reduce_scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Reduce_scatter_block);
  Py_VISIT(traverse_module_state->__pyx_n_s_Reduce_scatter_block_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Reduce_scatter_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Register_datarep);
  Py_VISIT(traverse_module_state->__pyx_n_s_Remove_error_class);
  Py_VISIT(traverse_module_state->__pyx_n_s_Remove_error_code);
  Py_VISIT(traverse_module_state->__pyx_n_s_Remove_error_string);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Cancel);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Get_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Get_status_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Get_status_any);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Get_status_some);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Test);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Testall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Testany);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Testsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Wait);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Waitall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Waitany);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_Waitsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_cancel);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_get_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_get_status_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_get_status_any);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_get_status_some);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_test);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_testall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_testany);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_testsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_wait);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_waitall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_waitany);
  Py_VISIT(traverse_module_state->__pyx_n_s_Request_waitsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_Resized);
  Py_VISIT(traverse_module_state->__pyx_n_s_Revoke);
  Py_VISIT(traverse_module_state->__pyx_n_s_Rget);
  Py_VISIT(traverse_module_state->__pyx_n_s_Rget_accumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Rput);
  Py_VISIT(traverse_module_state->__pyx_n_s_Rsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Rsend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_RuntimeWarning);
  Py_VISIT(traverse_module_state->__pyx_n_s_SEEK_CUR);
  Py_VISIT(traverse_module_state->__pyx_n_s_SEEK_END);
  Py_VISIT(traverse_module_state->__pyx_n_s_SEEK_SET);
  Py_VISIT(traverse_module_state->__pyx_n_s_SESSION_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_SHORT);
  Py_VISIT(traverse_module_state->__pyx_n_s_SHORT_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_SIGNED_CHAR);
  Py_VISIT(traverse_module_state->__pyx_n_s_SIGNED_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_SIGNED_LONG);
  Py_VISIT(traverse_module_state->__pyx_n_s_SIGNED_LONG_LONG);
  Py_VISIT(traverse_module_state->__pyx_n_s_SIGNED_SHORT);
  Py_VISIT(traverse_module_state->__pyx_n_s_SIMILAR);
  Py_VISIT(traverse_module_state->__pyx_n_s_SINT16_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_SINT32_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_SINT64_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_SINT8_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_STRUCT);
  Py_VISIT(traverse_module_state->__pyx_n_s_SUBARRAY);
  Py_VISIT(traverse_module_state->__pyx_n_s_SUBVERSION);
  Py_VISIT(traverse_module_state->__pyx_n_s_SUCCESS);
  Py_VISIT(traverse_module_state->__pyx_n_s_SUM);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scan);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scan_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatterv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatterv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Seek);
  Py_VISIT(traverse_module_state->__pyx_n_s_Seek_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Self);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Self_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Send);
  Py_VISIT(traverse_module_state->__pyx_n_s_Send_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Sendrecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Sendrecv_replace);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_Any);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_Datatype);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_Info_Info);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_Request);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_Sequence_str_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_bool);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_bool_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_int_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_str);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_str_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Sequence_tuple_int_int_int);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Attach_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Call_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Create_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Create_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Detach_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Finalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Flush_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Get_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Get_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Get_nth_pset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Get_num_psets);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Get_pset_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Iflush_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_Set_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Session_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_atomicity);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_cancelled);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_elements);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_error);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_source);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_tag);
  Py_VISIT(traverse_module_state->__pyx_n_s_Set_view);
  Py_VISIT(traverse_module_state->__pyx_n_s_Shared_query);
  Py_VISIT(traverse_module_state->__pyx_n_s_Shift);
  Py_VISIT(traverse_module_state->__pyx_n_s_Shrink);
  Py_VISIT(traverse_module_state->__pyx_n_s_Spawn);
  Py_VISIT(traverse_module_state->__pyx_n_s_Spawn_multiple);
  Py_VISIT(traverse_module_state->__pyx_n_s_Split);
  Py_VISIT(traverse_module_state->__pyx_n_s_Split_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ssend);
  Py_VISIT(traverse_module_state->__pyx_n_s_Ssend_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Start);
  Py_VISIT(traverse_module_state->__pyx_n_s_Startall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Get_count);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Get_elements);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Get_error);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Get_source);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Get_tag);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Is_cancelled);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Status_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Set_cancelled);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Set_elements);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Set_error);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Set_source);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_Set_tag);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status___getstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status___setstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Status_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Sub);
  Py_VISIT(traverse_module_state->__pyx_n_s_Sync);
  Py_VISIT(traverse_module_state->__pyx_n_s_TAG_UB);
  Py_VISIT(traverse_module_state->__pyx_n_s_THREAD_FUNNELED);
  Py_VISIT(traverse_module_state->__pyx_n_s_THREAD_MULTIPLE);
  Py_VISIT(traverse_module_state->__pyx_n_s_THREAD_SERIALIZED);
  Py_VISIT(traverse_module_state->__pyx_n_s_THREAD_SINGLE);
  Py_VISIT(traverse_module_state->__pyx_n_s_TWOINT);
  Py_VISIT(traverse_module_state->__pyx_n_s_TYPECLASS_COMPLEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_TYPECLASS_INTEGER);
  Py_VISIT(traverse_module_state->__pyx_n_s_TYPECLASS_REAL);
  Py_VISIT(traverse_module_state->__pyx_kp_s_TargetSpec_None);
  Py_VISIT(traverse_module_state->__pyx_n_s_Test);
  Py_VISIT(traverse_module_state->__pyx_n_s_Testall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Testany);
  Py_VISIT(traverse_module_state->__pyx_n_s_Testsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Ineighbor_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Ineighbor_allgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Ineighbor_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Ineighbor_alltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Ineighbor_alltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_allgather_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_allgatherv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_allgatherv_ini);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_alltoall_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallv);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallv_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallw);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_Neighbor_alltoallw_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_neighbor_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_Topocomm_neighbor_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Translate_ranks);
  Py_VISIT(traverse_module_state->__pyx_n_s_TypeError);
  Py_VISIT(traverse_module_state->__pyx_n_s_UINT16_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_UINT32_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_UINT64_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_UINT8_T);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNDEFINED);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNEQUAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNIVERSE_SIZE);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNSIGNED);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNSIGNED_CHAR);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNSIGNED_INT);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNSIGNED_LONG);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNSIGNED_LONG_LONG);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNSIGNED_SHORT);
  Py_VISIT(traverse_module_state->__pyx_n_s_UNWEIGHTED);
  Py_VISIT(traverse_module_state->__pyx_n_s_Union);
  Py_VISIT(traverse_module_state->__pyx_n_s_Unlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_Unlock_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Unpack);
  Py_VISIT(traverse_module_state->__pyx_n_s_Unpack_external);
  Py_VISIT(traverse_module_state->__pyx_n_s_Unpublish_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_UserWarning);
  Py_VISIT(traverse_module_state->__pyx_n_s_V);
  Py_VISIT(traverse_module_state->__pyx_n_u_V);
  Py_VISIT(traverse_module_state->__pyx_n_s_VALUE_INDEX);
  Py_VISIT(traverse_module_state->__pyx_n_s_VECTOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_VERSION);
  Py_VISIT(traverse_module_state->__pyx_n_s_ValueError);
  Py_VISIT(traverse_module_state->__pyx_n_s_WCHAR);
  Py_VISIT(traverse_module_state->__pyx_n_s_WEIGHTS_EMPTY);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_BASE);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_CREATE_FLAVOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_DISP_UNIT);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_FLAVOR);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_FLAVOR_ALLOCATE);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_FLAVOR_CREATE);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_FLAVOR_DYNAMIC);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_FLAVOR_SHARED);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_MODEL);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_NULL);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_SEPARATE);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_SIZE);
  Py_VISIT(traverse_module_state->__pyx_n_s_WIN_UNIFIED);
  Py_VISIT(traverse_module_state->__pyx_n_s_WTIME_IS_GLOBAL);
  Py_VISIT(traverse_module_state->__pyx_n_s_Wait);
  Py_VISIT(traverse_module_state->__pyx_n_s_Waitall);
  Py_VISIT(traverse_module_state->__pyx_n_s_Waitany);
  Py_VISIT(traverse_module_state->__pyx_n_s_Waitsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Accumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Allocate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Allocate_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Attach);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Call_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Compare_and_swap);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Complete);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Create);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Create_dynamic);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Create_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Create_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Delete_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Detach);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Fence);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Fetch_and_op);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Flush);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Flush_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Flush_local);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Flush_local_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Free_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Get);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Get_accumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Get_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Get_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Get_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Get_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Get_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Lock);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Lock_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Post);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Put);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Raccumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Rget);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Rget_accumulate);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Rput);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Set_attr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Set_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Set_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Set_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Shared_query);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Start);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Sync);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Test);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Unlock);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Unlock_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_Wait);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win___reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_Win_tomemory);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_at);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_at_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_at_all_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_at_all_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_ordered);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_ordered_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_ordered_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_Write_shared);
  Py_VISIT(traverse_module_state->__pyx_n_s_Wtick);
  Py_VISIT(traverse_module_state->__pyx_n_s_Wtime);
  Py_VISIT(traverse_module_state->__pyx_kp_u__17);
  Py_VISIT(traverse_module_state->__pyx_kp_u__2);
  Py_VISIT(traverse_module_state->__pyx_n_s__205);
  Py_VISIT(traverse_module_state->__pyx_kp_u__3);
  Py_VISIT(traverse_module_state->__pyx_kp_u__30);
  Py_VISIT(traverse_module_state->__pyx_kp_u__57);
  Py_VISIT(traverse_module_state->__pyx_n_s__809);
  Py_VISIT(traverse_module_state->__pyx_n_s_a);
  Py_VISIT(traverse_module_state->__pyx_n_s_abort);
  Py_VISIT(traverse_module_state->__pyx_n_s_addr);
  Py_VISIT(traverse_module_state->__pyx_n_s_addr1);
  Py_VISIT(traverse_module_state->__pyx_n_s_addr2);
  Py_VISIT(traverse_module_state->__pyx_n_s_address);
  Py_VISIT(traverse_module_state->__pyx_n_s_addresses);
  Py_VISIT(traverse_module_state->__pyx_n_s_addressof);
  Py_VISIT(traverse_module_state->__pyx_n_s_align);
  Py_VISIT(traverse_module_state->__pyx_n_s_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_allocate);
  Py_VISIT(traverse_module_state->__pyx_n_s_allocate_lock);
  Py_VISIT(traverse_module_state->__pyx_n_s_allreduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_amode);
  Py_VISIT(traverse_module_state->__pyx_kp_u_and_counts);
  Py_VISIT(traverse_module_state->__pyx_kp_u_and_receive_count);
  Py_VISIT(traverse_module_state->__pyx_kp_u_and_sum_counts);
  Py_VISIT(traverse_module_state->__pyx_n_s_append);
  Py_VISIT(traverse_module_state->__pyx_n_s_arg);
  Py_VISIT(traverse_module_state->__pyx_n_s_argc);
  Py_VISIT(traverse_module_state->__pyx_n_s_args);
  Py_VISIT(traverse_module_state->__pyx_n_s_argv);
  Py_VISIT(traverse_module_state->__pyx_n_s_argvs);
  Py_VISIT(traverse_module_state->__pyx_n_s_array_of_partitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_assertion);
  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
  Py_VISIT(traverse_module_state->__pyx_n_s_attrval);
  Py_VISIT(traverse_module_state->__pyx_n_s_barrier);
  Py_VISIT(traverse_module_state->__pyx_n_s_base);
  Py_VISIT(traverse_module_state->__pyx_n_s_baseptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_bcast);
  Py_VISIT(traverse_module_state->__pyx_kp_s_bcast_p2p);
  Py_VISIT(traverse_module_state->__pyx_n_s_blocklength);
  Py_VISIT(traverse_module_state->__pyx_n_s_blocklengths);
  Py_VISIT(traverse_module_state->__pyx_n_s_bool);
  Py_VISIT(traverse_module_state->__pyx_n_s_bsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_buf);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_allocate);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_callback);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_cast);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_fromaddress);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_frombuffer);
  Py_VISIT(traverse_module_state->__pyx_kp_s_buffer_is_not_CPU_accessible);
  Py_VISIT(traverse_module_state->__pyx_kp_s_buffer_is_read_only);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_release);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_tobytes);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_toreadonly);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffers);
  Py_VISIT(traverse_module_state->__pyx_n_s_buflen);
  Py_VISIT(traverse_module_state->__pyx_n_s_bytes);
  Py_VISIT(traverse_module_state->__pyx_n_s_c);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_num_to_ack);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_call);
  Py_VISIT(traverse_module_state->__pyx_n_s_cancel);
  Py_VISIT(traverse_module_state->__pyx_n_s_cancel_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_cancelled);
  Py_VISIT(traverse_module_state->__pyx_kp_s_cannot_call_user_defined_operati);
  Py_VISIT(traverse_module_state->__pyx_kp_s_cannot_create_instance);
  Py_VISIT(traverse_module_state->__pyx_kp_s_cannot_create_too_many_user_defi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_cannot_create_too_many_user_defi_2);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_map);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_map_code);
  Py_VISIT(traverse_module_state->__pyx_kp_s_cannot_map_to_character_code_or);
  Py_VISIT(traverse_module_state->__pyx_kp_s_cannot_pickle_user_defined_reduc);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cannot_serialize);
  Py_VISIT(traverse_module_state->__pyx_n_s_cast);
  Py_VISIT(traverse_module_state->__pyx_n_s_cdatarep);
  Py_VISIT(traverse_module_state->__pyx_n_s_cerrhdl);
  Py_VISIT(traverse_module_state->__pyx_n_s_cetype);
  Py_VISIT(traverse_module_state->__pyx_n_s_cfilename);
  Py_VISIT(traverse_module_state->__pyx_n_s_cftype);
  Py_VISIT(traverse_module_state->__pyx_n_s_cinfo);
  Py_VISIT(traverse_module_state->__pyx_n_s_ckey);
  Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem);
  Py_VISIT(traverse_module_state->__pyx_n_s_clear);
  Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
  Py_VISIT(traverse_module_state->__pyx_n_s_cls);
  Py_VISIT(traverse_module_state->__pyx_n_s_cmd);
  Py_VISIT(traverse_module_state->__pyx_n_s_cmds);
  Py_VISIT(traverse_module_state->__pyx_n_s_cmessage);
  Py_VISIT(traverse_module_state->__pyx_n_s_cname);
  Py_VISIT(traverse_module_state->__pyx_n_s_code);
  Py_VISIT(traverse_module_state->__pyx_n_s_color);
  Py_VISIT(traverse_module_state->__pyx_n_s_combiner);
  Py_VISIT(traverse_module_state->__pyx_n_s_comm);
  Py_VISIT(traverse_module_state->__pyx_n_s_comm_lock);
  Py_VISIT(traverse_module_state->__pyx_n_s_comm_lock_table);
  Py_VISIT(traverse_module_state->__pyx_n_s_command);
  Py_VISIT(traverse_module_state->__pyx_kp_s_commctx_inter);
  Py_VISIT(traverse_module_state->__pyx_n_s_commctx_inter_2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_commctx_intra);
  Py_VISIT(traverse_module_state->__pyx_n_s_commctx_intra_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_commute);
  Py_VISIT(traverse_module_state->__pyx_n_s_compare);
  Py_VISIT(traverse_module_state->__pyx_kp_u_compare_expecting_a_single_eleme);
  Py_VISIT(traverse_module_state->__pyx_n_s_complete);
  Py_VISIT(traverse_module_state->__pyx_n_s_coords);
  Py_VISIT(traverse_module_state->__pyx_n_s_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_copy_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_copy_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_copyreg);
  Py_VISIT(traverse_module_state->__pyx_n_s_count);
  Py_VISIT(traverse_module_state->__pyx_n_s_counts);
  Py_VISIT(traverse_module_state->__pyx_n_s_cportname);
  Py_VISIT(traverse_module_state->__pyx_n_s_csrvcname);
  Py_VISIT(traverse_module_state->__pyx_n_s_cstring);
  Py_VISIT(traverse_module_state->__pyx_n_s_cstringtag);
  Py_VISIT(traverse_module_state->__pyx_n_s_cuda_array_interface);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cuda_array_interface___buffer);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cuda_array_interface___buffer_2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_cuda_array_interface___cannot);
  Py_VISIT(traverse_module_state->__pyx_kp_u_cuda_array_interface___typestr);
  Py_VISIT(traverse_module_state->__pyx_n_s_cvalue);
  Py_VISIT(traverse_module_state->__pyx_n_s_d);
  Py_VISIT(traverse_module_state->__pyx_n_s_dargs);
  Py_VISIT(traverse_module_state->__pyx_n_s_data);
  Py_VISIT(traverse_module_state->__pyx_n_s_datarep);
  Py_VISIT(traverse_module_state->__pyx_n_s_datatype);
  Py_VISIT(traverse_module_state->__pyx_n_s_datatype_create);
  Py_VISIT(traverse_module_state->__pyx_n_s_datatype_decode);
  Py_VISIT(traverse_module_state->__pyx_n_s_datatypes);
  Py_VISIT(traverse_module_state->__pyx_n_s_decode);
  Py_VISIT(traverse_module_state->__pyx_n_s_default);
  Py_VISIT(traverse_module_state->__pyx_n_s_degrees);
  Py_VISIT(traverse_module_state->__pyx_n_s_del);
  Py_VISIT(traverse_module_state->__pyx_n_s_delete_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_descr);
  Py_VISIT(traverse_module_state->__pyx_n_s_dest);
  Py_VISIT(traverse_module_state->__pyx_n_s_destinations);
  Py_VISIT(traverse_module_state->__pyx_n_s_destweights);
  Py_VISIT(traverse_module_state->__pyx_n_s_dict);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dict_Hashable_Lock);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dict_str_Any);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dict_str_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dict_str_int);
  Py_VISIT(traverse_module_state->__pyx_n_s_dim);
  Py_VISIT(traverse_module_state->__pyx_n_s_dims);
  Py_VISIT(traverse_module_state->__pyx_n_s_direction);
  Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
  Py_VISIT(traverse_module_state->__pyx_n_s_disp);
  Py_VISIT(traverse_module_state->__pyx_n_s_disp_unit);
  Py_VISIT(traverse_module_state->__pyx_n_s_displacements);
  Py_VISIT(traverse_module_state->__pyx_n_s_distribs);
  Py_VISIT(traverse_module_state->__pyx_n_s_dlpack);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_buffer_is_not_contiguous);
  Py_VISIT(traverse_module_state->__pyx_n_s_dlpack_device);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_invalid_capsule_object);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_missing_support);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_number_of_dimensions_is_n);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_shape_is_NULL);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_shape_item_is_negative);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_strides_item_is_negative);
  Py_VISIT(traverse_module_state->__pyx_kp_s_dlpack_unexpected_version);
  Py_VISIT(traverse_module_state->__pyx_n_s_doc);
  Py_VISIT(traverse_module_state->__pyx_n_s_dst);
  Py_VISIT(traverse_module_state->__pyx_n_s_dtype);
  Py_VISIT(traverse_module_state->__pyx_n_s_dummy_thread);
  Py_VISIT(traverse_module_state->__pyx_n_s_dumps);
  Py_VISIT(traverse_module_state->__pyx_n_s_dumps_oob);
  Py_VISIT(traverse_module_state->__pyx_n_s_dupcomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_dw);
  Py_VISIT(traverse_module_state->__pyx_n_s_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_elements);
  Py_VISIT(traverse_module_state->__pyx_kp_s_empty_weights_but_nonzero_degree);
  Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
  Py_VISIT(traverse_module_state->__pyx_n_s_enter);
  Py_VISIT(traverse_module_state->__pyx_n_s_errcodes);
  Py_VISIT(traverse_module_state->__pyx_n_s_errhandler);
  Py_VISIT(traverse_module_state->__pyx_n_s_errhandler_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_error);
  Py_VISIT(traverse_module_state->__pyx_kp_u_error_code);
  Py_VISIT(traverse_module_state->__pyx_n_s_errorclass);
  Py_VISIT(traverse_module_state->__pyx_n_s_errorcode);
  Py_VISIT(traverse_module_state->__pyx_n_s_etype);
  Py_VISIT(traverse_module_state->__pyx_n_s_ex);
  Py_VISIT(traverse_module_state->__pyx_n_s_exception);
  Py_VISIT(traverse_module_state->__pyx_n_s_exit);
  Py_VISIT(traverse_module_state->__pyx_kp_u_expecting);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_a_Cartesian_communicat);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_a_distributed_graph_co);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_a_general_graph_commun);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_a_sequence_of_strings);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_a_topology_communicato);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_an_MPI_instance);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_an_MPI_type_or_instanc);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_an_intercommunicator);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_an_intracommunicator);
  Py_VISIT(traverse_module_state->__pyx_kp_u_expecting_buffer_with_format);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_non_NULL_address);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_non_negative_buffer_le);
  Py_VISIT(traverse_module_state->__pyx_kp_s_expecting_non_negative_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_exscan);
  Py_VISIT(traverse_module_state->__pyx_n_s_extent);
  Py_VISIT(traverse_module_state->__pyx_n_s_extent_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_f2py);
  Py_VISIT(traverse_module_state->__pyx_n_s_f_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_fatal);
  Py_VISIT(traverse_module_state->__pyx_n_s_fd);
  Py_VISIT(traverse_module_state->__pyx_n_s_file);
  Py_VISIT(traverse_module_state->__pyx_n_s_filename);
  Py_VISIT(traverse_module_state->__pyx_n_s_filetype);
  Py_VISIT(traverse_module_state->__pyx_n_s_flag);
  Py_VISIT(traverse_module_state->__pyx_kp_s_flag_expecting_int_buffer_of_len);
  Py_VISIT(traverse_module_state->__pyx_n_s_flag_len);
  Py_VISIT(traverse_module_state->__pyx_n_s_flag_ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_flags);
  Py_VISIT(traverse_module_state->__pyx_n_s_float);
  Py_VISIT(traverse_module_state->__pyx_n_s_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_fn_c);
  Py_VISIT(traverse_module_state->__pyx_n_s_fn_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_format);
  Py_VISIT(traverse_module_state->__pyx_kp_u_format_string);
  Py_VISIT(traverse_module_state->__pyx_n_s_free);
  Py_VISIT(traverse_module_state->__pyx_n_s_free_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_fromaddress);
  Py_VISIT(traverse_module_state->__pyx_n_s_frombuffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_fromcode);
  Py_VISIT(traverse_module_state->__pyx_n_s_fromhandle);
  Py_VISIT(traverse_module_state->__pyx_n_s_ftype);
  Py_VISIT(traverse_module_state->__pyx_n_s_function);
  Py_VISIT(traverse_module_state->__pyx_n_s_funneled);
  Py_VISIT(traverse_module_state->__pyx_n_s_gather);
  Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
  Py_VISIT(traverse_module_state->__pyx_n_s_get);
  Py_VISIT(traverse_module_state->__pyx_n_s_get_buffer_callback_locals_buffe);
  Py_VISIT(traverse_module_state->__pyx_n_s_get_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_get_status_all);
  Py_VISIT(traverse_module_state->__pyx_n_s_get_status_any);
  Py_VISIT(traverse_module_state->__pyx_n_s_get_status_some);
  Py_VISIT(traverse_module_state->__pyx_n_s_get_vendor);
  Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
  Py_VISIT(traverse_module_state->__pyx_kp_u_got);
  Py_VISIT(traverse_module_state->__pyx_n_s_grequest);
  Py_VISIT(traverse_module_state->__pyx_n_s_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_group1);
  Py_VISIT(traverse_module_state->__pyx_n_s_group2);
  Py_VISIT(traverse_module_state->__pyx_n_s_gsizes);
  Py_VISIT(traverse_module_state->__pyx_n_s_handle);
  Py_VISIT(traverse_module_state->__pyx_n_s_handleof);
  Py_VISIT(traverse_module_state->__pyx_n_s_high);
  Py_VISIT(traverse_module_state->__pyx_n_s_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_iblen);
  Py_VISIT(traverse_module_state->__pyx_n_s_ibptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ibsend);
  Py_VISIT(traverse_module_state->__pyx_n_s_icoords);
  Py_VISIT(traverse_module_state->__pyx_n_s_icount);
  Py_VISIT(traverse_module_state->__pyx_n_s_idargs);
  Py_VISIT(traverse_module_state->__pyx_n_s_idegree);
  Py_VISIT(traverse_module_state->__pyx_n_s_idest);
  Py_VISIT(traverse_module_state->__pyx_n_s_idestweight);
  Py_VISIT(traverse_module_state->__pyx_n_s_idims);
  Py_VISIT(traverse_module_state->__pyx_n_s_idisp);
  Py_VISIT(traverse_module_state->__pyx_n_s_idistribs);
  Py_VISIT(traverse_module_state->__pyx_n_s_iedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_ierr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ierrcodes);
  Py_VISIT(traverse_module_state->__pyx_n_s_igsizes);
  Py_VISIT(traverse_module_state->__pyx_n_s_iindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_imaxprocs);
  Py_VISIT(traverse_module_state->__pyx_n_s_import);
  Py_VISIT(traverse_module_state->__pyx_n_s_improbe);
  Py_VISIT(traverse_module_state->__pyx_n_s_inbuf);
  Py_VISIT(traverse_module_state->__pyx_n_s_indegree);
  Py_VISIT(traverse_module_state->__pyx_n_s_index);
  Py_VISIT(traverse_module_state->__pyx_kp_s_index_must_be_integer_or_slice);
  Py_VISIT(traverse_module_state->__pyx_kp_s_index_out_of_range);
  Py_VISIT(traverse_module_state->__pyx_n_s_indices);
  Py_VISIT(traverse_module_state->__pyx_n_s_ineighbors);
  Py_VISIT(traverse_module_state->__pyx_n_s_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_infos);
  Py_VISIT(traverse_module_state->__pyx_n_s_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_inoutbuf);
  Py_VISIT(traverse_module_state->__pyx_n_s_inoutedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_insert);
  Py_VISIT(traverse_module_state->__pyx_kp_u_instance);
  Py_VISIT(traverse_module_state->__pyx_n_s_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_int_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_int_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_int_Sequence_int);
  Py_VISIT(traverse_module_state->__pyx_n_s_integers);
  Py_VISIT(traverse_module_state->__pyx_n_s_iperiods);
  Py_VISIT(traverse_module_state->__pyx_n_s_iprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_ipsizes);
  Py_VISIT(traverse_module_state->__pyx_n_s_iranks);
  Py_VISIT(traverse_module_state->__pyx_n_s_iranks1);
  Py_VISIT(traverse_module_state->__pyx_n_s_iranks2);
  Py_VISIT(traverse_module_state->__pyx_n_s_irecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_iremdims);
  Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
  Py_VISIT(traverse_module_state->__pyx_kp_u_is_not_a_multiple_of_datatype_e);
  Py_VISIT(traverse_module_state->__pyx_kp_u_is_not_a_multiple_of_required_n);
  Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_isend);
  Py_VISIT(traverse_module_state->__pyx_n_s_isizes);
  Py_VISIT(traverse_module_state->__pyx_n_s_isource);
  Py_VISIT(traverse_module_state->__pyx_n_s_isourceweight);
  Py_VISIT(traverse_module_state->__pyx_n_s_issend);
  Py_VISIT(traverse_module_state->__pyx_n_s_istarts);
  Py_VISIT(traverse_module_state->__pyx_n_s_isubsizes);
  Py_VISIT(traverse_module_state->__pyx_n_s_items);
  Py_VISIT(traverse_module_state->__pyx_kp_u_items_got);
  Py_VISIT(traverse_module_state->__pyx_kp_u_itemsize);
  Py_VISIT(traverse_module_state->__pyx_n_s_iweight);
  Py_VISIT(traverse_module_state->__pyx_n_s_j);
  Py_VISIT(traverse_module_state->__pyx_n_s_join);
  Py_VISIT(traverse_module_state->__pyx_n_s_k);
  Py_VISIT(traverse_module_state->__pyx_n_s_key);
  Py_VISIT(traverse_module_state->__pyx_n_s_keys);
  Py_VISIT(traverse_module_state->__pyx_n_s_keyval);
  Py_VISIT(traverse_module_state->__pyx_n_s_keyval_registry);
  Py_VISIT(traverse_module_state->__pyx_n_s_keyval_save);
  Py_VISIT(traverse_module_state->__pyx_n_s_kwargs);
  Py_VISIT(traverse_module_state->__pyx_n_s_kwds);
  Py_VISIT(traverse_module_state->__pyx_kp_u_lb);
  Py_VISIT(traverse_module_state->__pyx_n_s_lb_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_length);
  Py_VISIT(traverse_module_state->__pyx_kp_s_length_count_does_not_fit_in_MPI);
  Py_VISIT(traverse_module_state->__pyx_kp_s_length_size_larger_than_INT_MAX);
  Py_VISIT(traverse_module_state->__pyx_n_s_level);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_Any);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_Prequest);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_Status_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_int_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_int_tuple_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_list_int_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_str);
  Py_VISIT(traverse_module_state->__pyx_kp_s_list_tuple_str_str);
  Py_VISIT(traverse_module_state->__pyx_n_s_loads);
  Py_VISIT(traverse_module_state->__pyx_n_s_loads_oob);
  Py_VISIT(traverse_module_state->__pyx_n_s_local_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_local_leader);
  Py_VISIT(traverse_module_state->__pyx_n_s_localcomm);
  Py_VISIT(traverse_module_state->__pyx_n_s_location);
  Py_VISIT(traverse_module_state->__pyx_n_s_lock_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_low_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_lower);
  Py_VISIT(traverse_module_state->__pyx_n_s_m);
  Py_VISIT(traverse_module_state->__pyx_n_s_main);
  Py_VISIT(traverse_module_state->__pyx_n_s_major);
  Py_VISIT(traverse_module_state->__pyx_n_s_mark);
  Py_VISIT(traverse_module_state->__pyx_n_s_mask);
  Py_VISIT(traverse_module_state->__pyx_n_s_max_version);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxindegree);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxoutdegree);
  Py_VISIT(traverse_module_state->__pyx_n_s_maxprocs);
  Py_VISIT(traverse_module_state->__pyx_n_s_mem);
  Py_VISIT(traverse_module_state->__pyx_n_s_memory);
  Py_VISIT(traverse_module_state->__pyx_kp_s_memory_allocation_size_too_large);
  Py_VISIT(traverse_module_state->__pyx_kp_s_memory_allocation_with_negative);
  Py_VISIT(traverse_module_state->__pyx_n_s_memoryview);
  Py_VISIT(traverse_module_state->__pyx_n_s_message);
  Py_VISIT(traverse_module_state->__pyx_kp_s_message_BOTTOM_requires_counts);
  Py_VISIT(traverse_module_state->__pyx_kp_s_message_BOTTOM_requires_displs);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_buffer_is_None_but_count);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_cannot_handle_displaceme);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_cannot_handle_displaceme_2);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_cannot_infer_count_buffe);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_cannot_infer_count_datat);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_cannot_infer_count_datat_2);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_cannot_infer_count_numbe);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_displacement);
  Py_VISIT(traverse_module_state->__pyx_kp_s_message_expecting_2_to_4_items);
  Py_VISIT(traverse_module_state->__pyx_kp_s_message_expecting_buffer_or_list);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_negative_count);
  Py_VISIT(traverse_module_state->__pyx_kp_u_message_negative_displacement);
  Py_VISIT(traverse_module_state->__pyx_n_s_micro);
  Py_VISIT(traverse_module_state->__pyx_n_s_minor);
  Py_VISIT(traverse_module_state->__pyx_kp_u_mismatch_in_origin_and_compare_M);
  Py_VISIT(traverse_module_state->__pyx_kp_u_mismatch_in_origin_and_result_MP);
  Py_VISIT(traverse_module_state->__pyx_kp_u_mismatch_in_receive_count);
  Py_VISIT(traverse_module_state->__pyx_kp_u_mismatch_in_send_and_receive_MPI);
  Py_VISIT(traverse_module_state->__pyx_kp_u_mismatch_in_send_count);
  Py_VISIT(traverse_module_state->__pyx_kp_s_missing_CUDA_array_interface);
  Py_VISIT(traverse_module_state->__pyx_n_s_module);
  Py_VISIT(traverse_module_state->__pyx_n_s_mpi4py_MPI);
  Py_VISIT(traverse_module_state->__pyx_n_s_mprobe);
  Py_VISIT(traverse_module_state->__pyx_n_s_msg);
  Py_VISIT(traverse_module_state->__pyx_n_s_multiple);
  Py_VISIT(traverse_module_state->__pyx_n_s_n);
  Py_VISIT(traverse_module_state->__pyx_n_s_na);
  Py_VISIT(traverse_module_state->__pyx_n_s_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_name_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_native);
  Py_VISIT(traverse_module_state->__pyx_n_s_nbytes);
  Py_VISIT(traverse_module_state->__pyx_n_s_nc);
  Py_VISIT(traverse_module_state->__pyx_n_s_nd);
  Py_VISIT(traverse_module_state->__pyx_n_s_ndim);
  Py_VISIT(traverse_module_state->__pyx_n_s_ndims);
  Py_VISIT(traverse_module_state->__pyx_n_s_ne);
  Py_VISIT(traverse_module_state->__pyx_n_s_nedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_neighbor_allgather);
  Py_VISIT(traverse_module_state->__pyx_n_s_neighbor_alltoall);
  Py_VISIT(traverse_module_state->__pyx_n_s_neighbors);
  Py_VISIT(traverse_module_state->__pyx_n_s_newobj);
  Py_VISIT(traverse_module_state->__pyx_n_s_ni);
  Py_VISIT(traverse_module_state->__pyx_n_s_nindex);
  Py_VISIT(traverse_module_state->__pyx_n_s_nkeys);
  Py_VISIT(traverse_module_state->__pyx_n_s_nlen);
  Py_VISIT(traverse_module_state->__pyx_n_s_nneighbors);
  Py_VISIT(traverse_module_state->__pyx_n_s_nnodes);
  Py_VISIT(traverse_module_state->__pyx_n_s_no);
  Py_VISIT(traverse_module_state->__pyx_n_s_nopython);
  Py_VISIT(traverse_module_state->__pyx_n_s_np);
  Py_VISIT(traverse_module_state->__pyx_n_s_num_acked);
  Py_VISIT(traverse_module_state->__pyx_n_s_num_psets);
  Py_VISIT(traverse_module_state->__pyx_n_s_num_to_ack);
  Py_VISIT(traverse_module_state->__pyx_n_s_nv);
  Py_VISIT(traverse_module_state->__pyx_n_s_ob);
  Py_VISIT(traverse_module_state->__pyx_n_s_obj);
  Py_VISIT(traverse_module_state->__pyx_n_s_oblen);
  Py_VISIT(traverse_module_state->__pyx_n_s_obptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ocount);
  Py_VISIT(traverse_module_state->__pyx_n_s_offset);
  Py_VISIT(traverse_module_state->__pyx_n_s_op);
  Py_VISIT(traverse_module_state->__pyx_n_s_order);
  Py_VISIT(traverse_module_state->__pyx_kp_s_org_mpi4py);
  Py_VISIT(traverse_module_state->__pyx_n_s_origin);
  Py_VISIT(traverse_module_state->__pyx_kp_u_origin_expecting_a_single_elemen);
  Py_VISIT(traverse_module_state->__pyx_kp_u_out_of_bounds_number_of_datatyp);
  Py_VISIT(traverse_module_state->__pyx_n_s_outbuf);
  Py_VISIT(traverse_module_state->__pyx_n_s_outdegree);
  Py_VISIT(traverse_module_state->__pyx_n_s_p);
  Py_VISIT(traverse_module_state->__pyx_n_s_params);
  Py_VISIT(traverse_module_state->__pyx_n_s_partition);
  Py_VISIT(traverse_module_state->__pyx_n_s_partition_high);
  Py_VISIT(traverse_module_state->__pyx_n_s_partition_low);
  Py_VISIT(traverse_module_state->__pyx_n_s_partitions);
  Py_VISIT(traverse_module_state->__pyx_n_s_peer_comm);
  Py_VISIT(traverse_module_state->__pyx_n_s_periods);
  Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
  Py_VISIT(traverse_module_state->__pyx_n_s_pickle5);
  Py_VISIT(traverse_module_state->__pyx_n_s_pop);
  Py_VISIT(traverse_module_state->__pyx_n_s_popitem);
  Py_VISIT(traverse_module_state->__pyx_n_s_port_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_position);
  Py_VISIT(traverse_module_state->__pyx_n_s_probe);
  Py_VISIT(traverse_module_state->__pyx_n_s_protocol);
  Py_VISIT(traverse_module_state->__pyx_n_s_provided);
  Py_VISIT(traverse_module_state->__pyx_n_s_pset_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_psizes);
  Py_VISIT(traverse_module_state->__pyx_n_s_ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ptype);
  Py_VISIT(traverse_module_state->__pyx_n_s_py2f);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
  Py_VISIT(traverse_module_state->__pyx_n_s_q);
  Py_VISIT(traverse_module_state->__pyx_n_s_query_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_r);
  Py_VISIT(traverse_module_state->__pyx_n_s_range);
  Py_VISIT(traverse_module_state->__pyx_n_s_ranges);
  Py_VISIT(traverse_module_state->__pyx_n_s_rank);
  Py_VISIT(traverse_module_state->__pyx_n_s_ranks);
  Py_VISIT(traverse_module_state->__pyx_n_s_ranks2);
  Py_VISIT(traverse_module_state->__pyx_n_s_rc);
  Py_VISIT(traverse_module_state->__pyx_n_s_rd);
  Py_VISIT(traverse_module_state->__pyx_n_s_read_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_readonly);
  Py_VISIT(traverse_module_state->__pyx_n_s_recv);
  Py_VISIT(traverse_module_state->__pyx_n_s_recvbuf);
  Py_VISIT(traverse_module_state->__pyx_n_s_recvcounts);
  Py_VISIT(traverse_module_state->__pyx_n_s_recvtag);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_release);
  Py_VISIT(traverse_module_state->__pyx_n_s_remain_dims);
  Py_VISIT(traverse_module_state->__pyx_n_s_remote_group);
  Py_VISIT(traverse_module_state->__pyx_n_s_remote_leader);
  Py_VISIT(traverse_module_state->__pyx_n_s_reorder);
  Py_VISIT(traverse_module_state->__pyx_n_s_request);
  Py_VISIT(traverse_module_state->__pyx_n_s_requests);
  Py_VISIT(traverse_module_state->__pyx_n_s_required);
  Py_VISIT(traverse_module_state->__pyx_n_s_result);
  Py_VISIT(traverse_module_state->__pyx_kp_u_result_expecting_a_single_elemen);
  Py_VISIT(traverse_module_state->__pyx_n_s_resultlen);
  Py_VISIT(traverse_module_state->__pyx_n_s_return);
  Py_VISIT(traverse_module_state->__pyx_n_s_rmsg);
  Py_VISIT(traverse_module_state->__pyx_n_s_root);
  Py_VISIT(traverse_module_state->__pyx_n_s_rs);
  Py_VISIT(traverse_module_state->__pyx_n_s_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_scan);
  Py_VISIT(traverse_module_state->__pyx_n_s_scatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_self);
  Py_VISIT(traverse_module_state->__pyx_n_s_send);
  Py_VISIT(traverse_module_state->__pyx_n_s_sendbuf);
  Py_VISIT(traverse_module_state->__pyx_n_s_sendobj);
  Py_VISIT(traverse_module_state->__pyx_n_s_sendrecv);
  Py_VISIT(traverse_module_state->__pyx_n_s_sendtag);
  Py_VISIT(traverse_module_state->__pyx_n_s_serialized);
  Py_VISIT(traverse_module_state->__pyx_n_s_service_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_session);
  Py_VISIT(traverse_module_state->__pyx_n_s_set_abort_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_shape);
  Py_VISIT(traverse_module_state->__pyx_n_s_single);
  Py_VISIT(traverse_module_state->__pyx_kp_u_size);
  Py_VISIT(traverse_module_state->__pyx_n_s_size_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_sizeof);
  Py_VISIT(traverse_module_state->__pyx_n_s_sizes);
  Py_VISIT(traverse_module_state->__pyx_kp_s_slice_length_does_not_match_buff);
  Py_VISIT(traverse_module_state->__pyx_kp_s_slice_with_step_not_supported);
  Py_VISIT(traverse_module_state->__pyx_n_s_smsg);
  Py_VISIT(traverse_module_state->__pyx_n_s_source);
  Py_VISIT(traverse_module_state->__pyx_n_s_sources);
  Py_VISIT(traverse_module_state->__pyx_n_s_sourceweights);
  Py_VISIT(traverse_module_state->__pyx_n_s_split_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_src);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_File_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Group_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Info_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Message_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Op_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Request_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Session_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Status_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_Win_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_atimport_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_bufaimpl_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi);
  Py_VISIT(traverse_module_state->__pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi);
  Py_VISIT(traverse_module_state->__pyx_n_s_ssend);
  Py_VISIT(traverse_module_state->__pyx_n_s_starts);
  Py_VISIT(traverse_module_state->__pyx_n_s_state);
  Py_VISIT(traverse_module_state->__pyx_n_s_staticmethod);
  Py_VISIT(traverse_module_state->__pyx_n_s_status);
  Py_VISIT(traverse_module_state->__pyx_n_s_statuses);
  Py_VISIT(traverse_module_state->__pyx_n_s_statusp);
  Py_VISIT(traverse_module_state->__pyx_n_s_str);
  Py_VISIT(traverse_module_state->__pyx_kp_s_str_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_str_tuple_Any);
  Py_VISIT(traverse_module_state->__pyx_n_s_stream);
  Py_VISIT(traverse_module_state->__pyx_n_s_stride);
  Py_VISIT(traverse_module_state->__pyx_n_s_strides);
  Py_VISIT(traverse_module_state->__pyx_kp_u_strides_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_string);
  Py_VISIT(traverse_module_state->__pyx_n_s_stringtag);
  Py_VISIT(traverse_module_state->__pyx_n_s_subsizes);
  Py_VISIT(traverse_module_state->__pyx_n_s_subversion);
  Py_VISIT(traverse_module_state->__pyx_n_s_sw);
  Py_VISIT(traverse_module_state->__pyx_n_s_t);
  Py_VISIT(traverse_module_state->__pyx_n_s_tag);
  Py_VISIT(traverse_module_state->__pyx_n_s_target);
  Py_VISIT(traverse_module_state->__pyx_n_s_target_disp);
  Py_VISIT(traverse_module_state->__pyx_kp_s_target_expecting_3_items_at_most);
  Py_VISIT(traverse_module_state->__pyx_kp_s_target_expecting_integral_or_lis);
  Py_VISIT(traverse_module_state->__pyx_n_s_target_rank);
  Py_VISIT(traverse_module_state->__pyx_n_s_tc);
  Py_VISIT(traverse_module_state->__pyx_n_s_test);
  Py_VISIT(traverse_module_state->__pyx_n_s_testall);
  Py_VISIT(traverse_module_state->__pyx_n_s_testany);
  Py_VISIT(traverse_module_state->__pyx_n_s_testsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_thread);
  Py_VISIT(traverse_module_state->__pyx_n_s_threshold);
  Py_VISIT(traverse_module_state->__pyx_kp_u_to_MPI_datatype);
  Py_VISIT(traverse_module_state->__pyx_n_s_tobytes);
  Py_VISIT(traverse_module_state->__pyx_n_s_tocode);
  Py_VISIT(traverse_module_state->__pyx_n_s_tomemory);
  Py_VISIT(traverse_module_state->__pyx_n_s_topo);
  Py_VISIT(traverse_module_state->__pyx_n_s_toreadonly);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_Any_tuple_Any_dict_str_Any);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_Comm_Request);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_Datatype_str_dict_str_Any);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_Intercomm_int_Intracomm_bo);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_Intracomm_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_Self_Request);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_bool_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_bool_list_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_buffer_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_bytes_list_buffer);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_int_Any);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_int_Datatype_Datatype_str);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_int_bool);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_int_bool_Any_None);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_int_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_int_int_int_int_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_list_int_None_list_Any_Non);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_list_int_list_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_list_int_list_int_list_int);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_list_int_list_int_list_int_2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_list_int_list_int_tuple_li);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_str_str);
  Py_VISIT(traverse_module_state->__pyx_kp_s_tuple_str_tuple_int_int_int);
  Py_VISIT(traverse_module_state->__pyx_n_s_typealign);
  Py_VISIT(traverse_module_state->__pyx_n_s_typeclass);
  Py_VISIT(traverse_module_state->__pyx_n_s_typecode);
  Py_VISIT(traverse_module_state->__pyx_n_s_typedict);
  Py_VISIT(traverse_module_state->__pyx_n_s_typedict_c);
  Py_VISIT(traverse_module_state->__pyx_n_s_typedict_f);
  Py_VISIT(traverse_module_state->__pyx_n_s_typestr);
  Py_VISIT(traverse_module_state->__pyx_kp_u_ub);
  Py_VISIT(traverse_module_state->__pyx_kp_u_unknown_combiner_value);
  Py_VISIT(traverse_module_state->__pyx_kp_u_unorderable_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_unused);
  Py_VISIT(traverse_module_state->__pyx_n_s_unused1);
  Py_VISIT(traverse_module_state->__pyx_n_s_unused2);
  Py_VISIT(traverse_module_state->__pyx_n_s_unused3);
  Py_VISIT(traverse_module_state->__pyx_n_s_unused4);
  Py_VISIT(traverse_module_state->__pyx_n_s_unused5);
  Py_VISIT(traverse_module_state->__pyx_n_s_update);
  Py_VISIT(traverse_module_state->__pyx_n_s_upper);
  Py_VISIT(traverse_module_state->__pyx_n_s_val);
  Py_VISIT(traverse_module_state->__pyx_n_s_value);
  Py_VISIT(traverse_module_state->__pyx_n_s_values);
  Py_VISIT(traverse_module_state->__pyx_n_s_version);
  Py_VISIT(traverse_module_state->__pyx_n_s_wait);
  Py_VISIT(traverse_module_state->__pyx_n_s_waitall);
  Py_VISIT(traverse_module_state->__pyx_n_s_waitany);
  Py_VISIT(traverse_module_state->__pyx_n_s_waitsome);
  Py_VISIT(traverse_module_state->__pyx_n_s_weighted);
  Py_VISIT(traverse_module_state->__pyx_n_s_weights);
  Py_VISIT(traverse_module_state->__pyx_n_s_whence);
  Py_VISIT(traverse_module_state->__pyx_n_s_win);
  Py_VISIT(traverse_module_state->__pyx_kp_u_with_non_native_byte_order);
  Py_VISIT(traverse_module_state->__pyx_kp_u_with_unrecognized_byte_order);
  Py_VISIT(traverse_module_state->__pyx_n_s_wr);
  Py_VISIT(traverse_module_state->__pyx_n_s_write_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_x);
  Py_VISIT(traverse_module_state->__pyx_n_s_xs);
  Py_VISIT(traverse_module_state->__pyx_n_s_y);
  Py_VISIT(traverse_module_state->__pyx_n_s_yes);
  Py_VISIT(traverse_module_state->__pyx_int_0);
  Py_VISIT(traverse_module_state->__pyx_int_1);
  Py_VISIT(traverse_module_state->__pyx_int_2);
  Py_VISIT(traverse_module_state->__pyx_int_32768);
  Py_VISIT(traverse_module_state->__pyx_int_262144);
  Py_VISIT(traverse_module_state->__pyx_int_neg_1);
  Py_VISIT(traverse_module_state->__pyx_k__68);
  Py_VISIT(traverse_module_state->__pyx_k__77);
  Py_VISIT(traverse_module_state->__pyx_k__78);
  Py_VISIT(traverse_module_state->__pyx_k__79);
  Py_VISIT(traverse_module_state->__pyx_k__80);
  Py_VISIT(traverse_module_state->__pyx_k__104);
  Py_VISIT(traverse_module_state->__pyx_k__105);
  Py_VISIT(traverse_module_state->__pyx_k__108);
  Py_VISIT(traverse_module_state->__pyx_k__109);
  Py_VISIT(traverse_module_state->__pyx_k__110);
  Py_VISIT(traverse_module_state->__pyx_k__111);
  Py_VISIT(traverse_module_state->__pyx_k__112);
  Py_VISIT(traverse_module_state->__pyx_k__113);
  Py_VISIT(traverse_module_state->__pyx_k__114);
  Py_VISIT(traverse_module_state->__pyx_k__115);
  Py_VISIT(traverse_module_state->__pyx_k__116);
  Py_VISIT(traverse_module_state->__pyx_k__117);
  Py_VISIT(traverse_module_state->__pyx_k__118);
  Py_VISIT(traverse_module_state->__pyx_k__119);
  Py_VISIT(traverse_module_state->__pyx_k__120);
  Py_VISIT(traverse_module_state->__pyx_k__121);
  Py_VISIT(traverse_module_state->__pyx_k__122);
  Py_VISIT(traverse_module_state->__pyx_k__123);
  Py_VISIT(traverse_module_state->__pyx_k__124);
  Py_VISIT(traverse_module_state->__pyx_k__125);
  Py_VISIT(traverse_module_state->__pyx_k__126);
  Py_VISIT(traverse_module_state->__pyx_k__127);
  Py_VISIT(traverse_module_state->__pyx_k__128);
  Py_VISIT(traverse_module_state->__pyx_k__129);
  Py_VISIT(traverse_module_state->__pyx_k__130);
  Py_VISIT(traverse_module_state->__pyx_k__131);
  Py_VISIT(traverse_module_state->__pyx_k__132);
  Py_VISIT(traverse_module_state->__pyx_k__133);
  Py_VISIT(traverse_module_state->__pyx_k__134);
  Py_VISIT(traverse_module_state->__pyx_k__149);
  Py_VISIT(traverse_module_state->__pyx_k__150);
  Py_VISIT(traverse_module_state->__pyx_k__152);
  Py_VISIT(traverse_module_state->__pyx_k__153);
  Py_VISIT(traverse_module_state->__pyx_k__154);
  Py_VISIT(traverse_module_state->__pyx_k__155);
  Py_VISIT(traverse_module_state->__pyx_k__156);
  Py_VISIT(traverse_module_state->__pyx_k__157);
  Py_VISIT(traverse_module_state->__pyx_k__158);
  Py_VISIT(traverse_module_state->__pyx_k__159);
  Py_VISIT(traverse_module_state->__pyx_k__160);
  Py_VISIT(traverse_module_state->__pyx_k__161);
  Py_VISIT(traverse_module_state->__pyx_k__162);
  Py_VISIT(traverse_module_state->__pyx_k__163);
  Py_VISIT(traverse_module_state->__pyx_k__164);
  Py_VISIT(traverse_module_state->__pyx_k__165);
  Py_VISIT(traverse_module_state->__pyx_k__167);
  Py_VISIT(traverse_module_state->__pyx_k__168);
  Py_VISIT(traverse_module_state->__pyx_k__169);
  Py_VISIT(traverse_module_state->__pyx_k__172);
  Py_VISIT(traverse_module_state->__pyx_k__173);
  Py_VISIT(traverse_module_state->__pyx_k__174);
  Py_VISIT(traverse_module_state->__pyx_k__175);
  Py_VISIT(traverse_module_state->__pyx_k__176);
  Py_VISIT(traverse_module_state->__pyx_k__181);
  Py_VISIT(traverse_module_state->__pyx_k__182);
  Py_VISIT(traverse_module_state->__pyx_k__183);
  Py_VISIT(traverse_module_state->__pyx_k__184);
  Py_VISIT(traverse_module_state->__pyx_k__185);
  Py_VISIT(traverse_module_state->__pyx_k__186);
  Py_VISIT(traverse_module_state->__pyx_k__187);
  Py_VISIT(traverse_module_state->__pyx_k__188);
  Py_VISIT(traverse_module_state->__pyx_k__189);
  Py_VISIT(traverse_module_state->__pyx_k__190);
  Py_VISIT(traverse_module_state->__pyx_k__191);
  Py_VISIT(traverse_module_state->__pyx_k__192);
  Py_VISIT(traverse_module_state->__pyx_k__193);
  Py_VISIT(traverse_module_state->__pyx_k__194);
  Py_VISIT(traverse_module_state->__pyx_k__196);
  Py_VISIT(traverse_module_state->__pyx_k__198);
  Py_VISIT(traverse_module_state->__pyx_k__199);
  Py_VISIT(traverse_module_state->__pyx_k__200);
  Py_VISIT(traverse_module_state->__pyx_tuple__4);
  Py_VISIT(traverse_module_state->__pyx_tuple__5);
  Py_VISIT(traverse_module_state->__pyx_tuple__6);
  Py_VISIT(traverse_module_state->__pyx_tuple__7);
  Py_VISIT(traverse_module_state->__pyx_tuple__8);
  Py_VISIT(traverse_module_state->__pyx_tuple__9);
  Py_VISIT(traverse_module_state->__pyx_tuple__10);
  Py_VISIT(traverse_module_state->__pyx_tuple__11);
  Py_VISIT(traverse_module_state->__pyx_tuple__12);
  Py_VISIT(traverse_module_state->__pyx_tuple__13);
  Py_VISIT(traverse_module_state->__pyx_tuple__14);
  Py_VISIT(traverse_module_state->__pyx_tuple__15);
  Py_VISIT(traverse_module_state->__pyx_tuple__16);
  Py_VISIT(traverse_module_state->__pyx_tuple__18);
  Py_VISIT(traverse_module_state->__pyx_tuple__19);
  Py_VISIT(traverse_module_state->__pyx_tuple__20);
  Py_VISIT(traverse_module_state->__pyx_tuple__21);
  Py_VISIT(traverse_module_state->__pyx_tuple__22);
  Py_VISIT(traverse_module_state->__pyx_tuple__23);
  Py_VISIT(traverse_module_state->__pyx_tuple__24);
  Py_VISIT(traverse_module_state->__pyx_tuple__25);
  Py_VISIT(traverse_module_state->__pyx_tuple__26);
  Py_VISIT(traverse_module_state->__pyx_tuple__27);
  Py_VISIT(traverse_module_state->__pyx_tuple__28);
  Py_VISIT(traverse_module_state->__pyx_tuple__29);
  Py_VISIT(traverse_module_state->__pyx_tuple__31);
  Py_VISIT(traverse_module_state->__pyx_tuple__32);
  Py_VISIT(traverse_module_state->__pyx_tuple__33);
  Py_VISIT(traverse_module_state->__pyx_tuple__34);
  Py_VISIT(traverse_module_state->__pyx_tuple__35);
  Py_VISIT(traverse_module_state->__pyx_tuple__36);
  Py_VISIT(traverse_module_state->__pyx_tuple__37);
  Py_VISIT(traverse_module_state->__pyx_tuple__38);
  Py_VISIT(traverse_module_state->__pyx_tuple__39);
  Py_VISIT(traverse_module_state->__pyx_tuple__40);
  Py_VISIT(traverse_module_state->__pyx_tuple__41);
  Py_VISIT(traverse_module_state->__pyx_tuple__42);
  Py_VISIT(traverse_module_state->__pyx_tuple__43);
  Py_VISIT(traverse_module_state->__pyx_tuple__44);
  Py_VISIT(traverse_module_state->__pyx_tuple__45);
  Py_VISIT(traverse_module_state->__pyx_tuple__46);
  Py_VISIT(traverse_module_state->__pyx_tuple__47);
  Py_VISIT(traverse_module_state->__pyx_tuple__48);
  Py_VISIT(traverse_module_state->__pyx_tuple__49);
  Py_VISIT(traverse_module_state->__pyx_tuple__50);
  Py_VISIT(traverse_module_state->__pyx_tuple__51);
  Py_VISIT(traverse_module_state->__pyx_tuple__52);
  Py_VISIT(traverse_module_state->__pyx_tuple__53);
  Py_VISIT(traverse_module_state->__pyx_tuple__54);
  Py_VISIT(traverse_module_state->__pyx_tuple__55);
  Py_VISIT(traverse_module_state->__pyx_tuple__56);
  Py_VISIT(traverse_module_state->__pyx_tuple__58);
  Py_VISIT(traverse_module_state->__pyx_tuple__59);
  Py_VISIT(traverse_module_state->__pyx_tuple__60);
  Py_VISIT(traverse_module_state->__pyx_tuple__61);
  Py_VISIT(traverse_module_state->__pyx_tuple__62);
  Py_VISIT(traverse_module_state->__pyx_tuple__64);
  Py_VISIT(traverse_module_state->__pyx_tuple__67);
  Py_VISIT(traverse_module_state->__pyx_tuple__81);
  Py_VISIT(traverse_module_state->__pyx_slice__166);
  Py_VISIT(traverse_module_state->__pyx_slice__171);
  Py_VISIT(traverse_module_state->__pyx_tuple__151);
  Py_VISIT(traverse_module_state->__pyx_tuple__170);
  Py_VISIT(traverse_module_state->__pyx_tuple__177);
  Py_VISIT(traverse_module_state->__pyx_tuple__178);
  Py_VISIT(traverse_module_state->__pyx_tuple__179);
  Py_VISIT(traverse_module_state->__pyx_tuple__180);
  Py_VISIT(traverse_module_state->__pyx_tuple__203);
  Py_VISIT(traverse_module_state->__pyx_tuple__204);
  Py_VISIT(traverse_module_state->__pyx_tuple__206);
  Py_VISIT(traverse_module_state->__pyx_tuple__208);
  Py_VISIT(traverse_module_state->__pyx_tuple__210);
  Py_VISIT(traverse_module_state->__pyx_tuple__211);
  Py_VISIT(traverse_module_state->__pyx_tuple__213);
  Py_VISIT(traverse_module_state->__pyx_tuple__215);
  Py_VISIT(traverse_module_state->__pyx_tuple__217);
  Py_VISIT(traverse_module_state->__pyx_tuple__218);
  Py_VISIT(traverse_module_state->__pyx_tuple__220);
  Py_VISIT(traverse_module_state->__pyx_tuple__221);
  Py_VISIT(traverse_module_state->__pyx_tuple__223);
  Py_VISIT(traverse_module_state->__pyx_tuple__226);
  Py_VISIT(traverse_module_state->__pyx_tuple__228);
  Py_VISIT(traverse_module_state->__pyx_tuple__232);
  Py_VISIT(traverse_module_state->__pyx_tuple__234);
  Py_VISIT(traverse_module_state->__pyx_tuple__237);
  Py_VISIT(traverse_module_state->__pyx_tuple__239);
  Py_VISIT(traverse_module_state->__pyx_tuple__241);
  Py_VISIT(traverse_module_state->__pyx_tuple__243);
  Py_VISIT(traverse_module_state->__pyx_tuple__245);
  Py_VISIT(traverse_module_state->__pyx_tuple__247);
  Py_VISIT(traverse_module_state->__pyx_tuple__250);
  Py_VISIT(traverse_module_state->__pyx_tuple__252);
  Py_VISIT(traverse_module_state->__pyx_tuple__254);
  Py_VISIT(traverse_module_state->__pyx_tuple__257);
  Py_VISIT(traverse_module_state->__pyx_tuple__259);
  Py_VISIT(traverse_module_state->__pyx_tuple__261);
  Py_VISIT(traverse_module_state->__pyx_tuple__264);
  Py_VISIT(traverse_module_state->__pyx_tuple__267);
  Py_VISIT(traverse_module_state->__pyx_tuple__269);
  Py_VISIT(traverse_module_state->__pyx_tuple__271);
  Py_VISIT(traverse_module_state->__pyx_tuple__273);
  Py_VISIT(traverse_module_state->__pyx_tuple__275);
  Py_VISIT(traverse_module_state->__pyx_tuple__278);
  Py_VISIT(traverse_module_state->__pyx_tuple__281);
  Py_VISIT(traverse_module_state->__pyx_tuple__284);
  Py_VISIT(traverse_module_state->__pyx_tuple__286);
  Py_VISIT(traverse_module_state->__pyx_tuple__288);
  Py_VISIT(traverse_module_state->__pyx_tuple__290);
  Py_VISIT(traverse_module_state->__pyx_tuple__292);
  Py_VISIT(traverse_module_state->__pyx_tuple__294);
  Py_VISIT(traverse_module_state->__pyx_tuple__297);
  Py_VISIT(traverse_module_state->__pyx_tuple__300);
  Py_VISIT(traverse_module_state->__pyx_tuple__302);
  Py_VISIT(traverse_module_state->__pyx_tuple__305);
  Py_VISIT(traverse_module_state->__pyx_tuple__307);
  Py_VISIT(traverse_module_state->__pyx_tuple__310);
  Py_VISIT(traverse_module_state->__pyx_tuple__312);
  Py_VISIT(traverse_module_state->__pyx_tuple__314);
  Py_VISIT(traverse_module_state->__pyx_tuple__316);
  Py_VISIT(traverse_module_state->__pyx_tuple__318);
  Py_VISIT(traverse_module_state->__pyx_tuple__320);
  Py_VISIT(traverse_module_state->__pyx_tuple__322);
  Py_VISIT(traverse_module_state->__pyx_tuple__324);
  Py_VISIT(traverse_module_state->__pyx_tuple__326);
  Py_VISIT(traverse_module_state->__pyx_tuple__328);
  Py_VISIT(traverse_module_state->__pyx_tuple__330);
  Py_VISIT(traverse_module_state->__pyx_tuple__331);
  Py_VISIT(traverse_module_state->__pyx_tuple__333);
  Py_VISIT(traverse_module_state->__pyx_tuple__335);
  Py_VISIT(traverse_module_state->__pyx_tuple__338);
  Py_VISIT(traverse_module_state->__pyx_tuple__340);
  Py_VISIT(traverse_module_state->__pyx_tuple__342);
  Py_VISIT(traverse_module_state->__pyx_tuple__344);
  Py_VISIT(traverse_module_state->__pyx_tuple__346);
  Py_VISIT(traverse_module_state->__pyx_tuple__348);
  Py_VISIT(traverse_module_state->__pyx_tuple__351);
  Py_VISIT(traverse_module_state->__pyx_tuple__354);
  Py_VISIT(traverse_module_state->__pyx_tuple__357);
  Py_VISIT(traverse_module_state->__pyx_tuple__360);
  Py_VISIT(traverse_module_state->__pyx_tuple__363);
  Py_VISIT(traverse_module_state->__pyx_tuple__365);
  Py_VISIT(traverse_module_state->__pyx_tuple__367);
  Py_VISIT(traverse_module_state->__pyx_tuple__369);
  Py_VISIT(traverse_module_state->__pyx_tuple__372);
  Py_VISIT(traverse_module_state->__pyx_tuple__374);
  Py_VISIT(traverse_module_state->__pyx_tuple__379);
  Py_VISIT(traverse_module_state->__pyx_tuple__381);
  Py_VISIT(traverse_module_state->__pyx_tuple__384);
  Py_VISIT(traverse_module_state->__pyx_tuple__386);
  Py_VISIT(traverse_module_state->__pyx_tuple__389);
  Py_VISIT(traverse_module_state->__pyx_tuple__391);
  Py_VISIT(traverse_module_state->__pyx_tuple__394);
  Py_VISIT(traverse_module_state->__pyx_tuple__402);
  Py_VISIT(traverse_module_state->__pyx_tuple__404);
  Py_VISIT(traverse_module_state->__pyx_tuple__407);
  Py_VISIT(traverse_module_state->__pyx_tuple__409);
  Py_VISIT(traverse_module_state->__pyx_tuple__411);
  Py_VISIT(traverse_module_state->__pyx_tuple__413);
  Py_VISIT(traverse_module_state->__pyx_tuple__415);
  Py_VISIT(traverse_module_state->__pyx_tuple__417);
  Py_VISIT(traverse_module_state->__pyx_tuple__424);
  Py_VISIT(traverse_module_state->__pyx_tuple__426);
  Py_VISIT(traverse_module_state->__pyx_tuple__428);
  Py_VISIT(traverse_module_state->__pyx_tuple__430);
  Py_VISIT(traverse_module_state->__pyx_tuple__432);
  Py_VISIT(traverse_module_state->__pyx_tuple__434);
  Py_VISIT(traverse_module_state->__pyx_tuple__436);
  Py_VISIT(traverse_module_state->__pyx_tuple__437);
  Py_VISIT(traverse_module_state->__pyx_tuple__443);
  Py_VISIT(traverse_module_state->__pyx_tuple__445);
  Py_VISIT(traverse_module_state->__pyx_tuple__447);
  Py_VISIT(traverse_module_state->__pyx_tuple__449);
  Py_VISIT(traverse_module_state->__pyx_tuple__451);
  Py_VISIT(traverse_module_state->__pyx_tuple__453);
  Py_VISIT(traverse_module_state->__pyx_tuple__455);
  Py_VISIT(traverse_module_state->__pyx_tuple__457);
  Py_VISIT(traverse_module_state->__pyx_tuple__464);
  Py_VISIT(traverse_module_state->__pyx_tuple__468);
  Py_VISIT(traverse_module_state->__pyx_tuple__476);
  Py_VISIT(traverse_module_state->__pyx_tuple__478);
  Py_VISIT(traverse_module_state->__pyx_tuple__480);
  Py_VISIT(traverse_module_state->__pyx_tuple__481);
  Py_VISIT(traverse_module_state->__pyx_tuple__483);
  Py_VISIT(traverse_module_state->__pyx_tuple__485);
  Py_VISIT(traverse_module_state->__pyx_tuple__489);
  Py_VISIT(traverse_module_state->__pyx_tuple__492);
  Py_VISIT(traverse_module_state->__pyx_tuple__495);
  Py_VISIT(traverse_module_state->__pyx_tuple__503);
  Py_VISIT(traverse_module_state->__pyx_tuple__505);
  Py_VISIT(traverse_module_state->__pyx_tuple__508);
  Py_VISIT(traverse_module_state->__pyx_tuple__510);
  Py_VISIT(traverse_module_state->__pyx_tuple__512);
  Py_VISIT(traverse_module_state->__pyx_tuple__514);
  Py_VISIT(traverse_module_state->__pyx_tuple__516);
  Py_VISIT(traverse_module_state->__pyx_tuple__518);
  Py_VISIT(traverse_module_state->__pyx_tuple__522);
  Py_VISIT(traverse_module_state->__pyx_tuple__524);
  Py_VISIT(traverse_module_state->__pyx_tuple__526);
  Py_VISIT(traverse_module_state->__pyx_tuple__528);
  Py_VISIT(traverse_module_state->__pyx_tuple__530);
  Py_VISIT(traverse_module_state->__pyx_tuple__532);
  Py_VISIT(traverse_module_state->__pyx_tuple__534);
  Py_VISIT(traverse_module_state->__pyx_tuple__537);
  Py_VISIT(traverse_module_state->__pyx_tuple__548);
  Py_VISIT(traverse_module_state->__pyx_tuple__551);
  Py_VISIT(traverse_module_state->__pyx_tuple__553);
  Py_VISIT(traverse_module_state->__pyx_tuple__556);
  Py_VISIT(traverse_module_state->__pyx_tuple__558);
  Py_VISIT(traverse_module_state->__pyx_tuple__560);
  Py_VISIT(traverse_module_state->__pyx_tuple__562);
  Py_VISIT(traverse_module_state->__pyx_tuple__565);
  Py_VISIT(traverse_module_state->__pyx_tuple__567);
  Py_VISIT(traverse_module_state->__pyx_tuple__569);
  Py_VISIT(traverse_module_state->__pyx_tuple__581);
  Py_VISIT(traverse_module_state->__pyx_tuple__583);
  Py_VISIT(traverse_module_state->__pyx_tuple__585);
  Py_VISIT(traverse_module_state->__pyx_tuple__587);
  Py_VISIT(traverse_module_state->__pyx_tuple__589);
  Py_VISIT(traverse_module_state->__pyx_tuple__591);
  Py_VISIT(traverse_module_state->__pyx_tuple__593);
  Py_VISIT(traverse_module_state->__pyx_tuple__595);
  Py_VISIT(traverse_module_state->__pyx_tuple__597);
  Py_VISIT(traverse_module_state->__pyx_tuple__598);
  Py_VISIT(traverse_module_state->__pyx_tuple__604);
  Py_VISIT(traverse_module_state->__pyx_tuple__607);
  Py_VISIT(traverse_module_state->__pyx_tuple__609);
  Py_VISIT(traverse_module_state->__pyx_tuple__611);
  Py_VISIT(traverse_module_state->__pyx_tuple__619);
  Py_VISIT(traverse_module_state->__pyx_tuple__621);
  Py_VISIT(traverse_module_state->__pyx_tuple__622);
  Py_VISIT(traverse_module_state->__pyx_tuple__624);
  Py_VISIT(traverse_module_state->__pyx_tuple__626);
  Py_VISIT(traverse_module_state->__pyx_tuple__628);
  Py_VISIT(traverse_module_state->__pyx_tuple__630);
  Py_VISIT(traverse_module_state->__pyx_tuple__632);
  Py_VISIT(traverse_module_state->__pyx_tuple__634);
  Py_VISIT(traverse_module_state->__pyx_tuple__636);
  Py_VISIT(traverse_module_state->__pyx_tuple__638);
  Py_VISIT(traverse_module_state->__pyx_tuple__640);
  Py_VISIT(traverse_module_state->__pyx_tuple__642);
  Py_VISIT(traverse_module_state->__pyx_tuple__646);
  Py_VISIT(traverse_module_state->__pyx_tuple__648);
  Py_VISIT(traverse_module_state->__pyx_tuple__660);
  Py_VISIT(traverse_module_state->__pyx_tuple__662);
  Py_VISIT(traverse_module_state->__pyx_tuple__667);
  Py_VISIT(traverse_module_state->__pyx_tuple__673);
  Py_VISIT(traverse_module_state->__pyx_tuple__675);
  Py_VISIT(traverse_module_state->__pyx_tuple__678);
  Py_VISIT(traverse_module_state->__pyx_tuple__681);
  Py_VISIT(traverse_module_state->__pyx_tuple__683);
  Py_VISIT(traverse_module_state->__pyx_tuple__688);
  Py_VISIT(traverse_module_state->__pyx_tuple__694);
  Py_VISIT(traverse_module_state->__pyx_tuple__696);
  Py_VISIT(traverse_module_state->__pyx_tuple__699);
  Py_VISIT(traverse_module_state->__pyx_tuple__701);
  Py_VISIT(traverse_module_state->__pyx_tuple__703);
  Py_VISIT(traverse_module_state->__pyx_tuple__705);
  Py_VISIT(traverse_module_state->__pyx_tuple__710);
  Py_VISIT(traverse_module_state->__pyx_tuple__716);
  Py_VISIT(traverse_module_state->__pyx_tuple__718);
  Py_VISIT(traverse_module_state->__pyx_tuple__721);
  Py_VISIT(traverse_module_state->__pyx_tuple__725);
  Py_VISIT(traverse_module_state->__pyx_tuple__727);
  Py_VISIT(traverse_module_state->__pyx_tuple__730);
  Py_VISIT(traverse_module_state->__pyx_tuple__746);
  Py_VISIT(traverse_module_state->__pyx_tuple__750);
  Py_VISIT(traverse_module_state->__pyx_tuple__752);
  Py_VISIT(traverse_module_state->__pyx_tuple__754);
  Py_VISIT(traverse_module_state->__pyx_tuple__758);
  Py_VISIT(traverse_module_state->__pyx_tuple__760);
  Py_VISIT(traverse_module_state->__pyx_tuple__763);
  Py_VISIT(traverse_module_state->__pyx_tuple__765);
  Py_VISIT(traverse_module_state->__pyx_tuple__768);
  Py_VISIT(traverse_module_state->__pyx_tuple__770);
  Py_VISIT(traverse_module_state->__pyx_tuple__773);
  Py_VISIT(traverse_module_state->__pyx_tuple__776);
  Py_VISIT(traverse_module_state->__pyx_tuple__778);
  Py_VISIT(traverse_module_state->__pyx_tuple__780);
  Py_VISIT(traverse_module_state->__pyx_tuple__782);
  Py_VISIT(traverse_module_state->__pyx_tuple__784);
  Py_VISIT(traverse_module_state->__pyx_tuple__786);
  Py_VISIT(traverse_module_state->__pyx_tuple__787);
  Py_VISIT(traverse_module_state->__pyx_tuple__789);
  Py_VISIT(traverse_module_state->__pyx_tuple__791);
  Py_VISIT(traverse_module_state->__pyx_tuple__793);
  Py_VISIT(traverse_module_state->__pyx_tuple__795);
  Py_VISIT(traverse_module_state->__pyx_tuple__797);
  Py_VISIT(traverse_module_state->__pyx_tuple__807);
  Py_VISIT(traverse_module_state->__pyx_tuple__810);
  Py_VISIT(traverse_module_state->__pyx_tuple__812);
  Py_VISIT(traverse_module_state->__pyx_tuple__832);
  Py_VISIT(traverse_module_state->__pyx_tuple__834);
  Py_VISIT(traverse_module_state->__pyx_tuple__836);
  Py_VISIT(traverse_module_state->__pyx_tuple__838);
  Py_VISIT(traverse_module_state->__pyx_tuple__840);
  Py_VISIT(traverse_module_state->__pyx_tuple__842);
  Py_VISIT(traverse_module_state->__pyx_tuple__844);
  Py_VISIT(traverse_module_state->__pyx_tuple__846);
  Py_VISIT(traverse_module_state->__pyx_tuple__848);
  Py_VISIT(traverse_module_state->__pyx_tuple__850);
  Py_VISIT(traverse_module_state->__pyx_tuple__852);
  Py_VISIT(traverse_module_state->__pyx_tuple__854);
  Py_VISIT(traverse_module_state->__pyx_tuple__856);
  Py_VISIT(traverse_module_state->__pyx_tuple__858);
  Py_VISIT(traverse_module_state->__pyx_tuple__862);
  Py_VISIT(traverse_module_state->__pyx_tuple__864);
  Py_VISIT(traverse_module_state->__pyx_tuple__866);
  Py_VISIT(traverse_module_state->__pyx_tuple__869);
  Py_VISIT(traverse_module_state->__pyx_tuple__871);
  Py_VISIT(traverse_module_state->__pyx_tuple__873);
  Py_VISIT(traverse_module_state->__pyx_tuple__875);
  Py_VISIT(traverse_module_state->__pyx_tuple__878);
  Py_VISIT(traverse_module_state->__pyx_tuple__883);
  Py_VISIT(traverse_module_state->__pyx_tuple__885);
  Py_VISIT(traverse_module_state->__pyx_tuple__888);
  Py_VISIT(traverse_module_state->__pyx_tuple__890);
  Py_VISIT(traverse_module_state->__pyx_tuple__892);
  Py_VISIT(traverse_module_state->__pyx_tuple__894);
  Py_VISIT(traverse_module_state->__pyx_tuple__906);
  Py_VISIT(traverse_module_state->__pyx_tuple__909);
  Py_VISIT(traverse_module_state->__pyx_tuple__911);
  Py_VISIT(traverse_module_state->__pyx_tuple__913);
  Py_VISIT(traverse_module_state->__pyx_tuple__915);
  Py_VISIT(traverse_module_state->__pyx_tuple__917);
  Py_VISIT(traverse_module_state->__pyx_tuple__920);
  Py_VISIT(traverse_module_state->__pyx_tuple__922);
  Py_VISIT(traverse_module_state->__pyx_tuple__924);
  Py_VISIT(traverse_module_state->__pyx_tuple__926);
  Py_VISIT(traverse_module_state->__pyx_tuple__932);
  Py_VISIT(traverse_module_state->__pyx_tuple__953);
  Py_VISIT(traverse_module_state->__pyx_tuple__956);
  Py_VISIT(traverse_module_state->__pyx_tuple__961);
  Py_VISIT(traverse_module_state->__pyx_tuple__966);
  Py_VISIT(traverse_module_state->__pyx_tuple__968);
  Py_VISIT(traverse_module_state->__pyx_tuple__970);
  Py_VISIT(traverse_module_state->__pyx_tuple__975);
  Py_VISIT(traverse_module_state->__pyx_tuple__980);
  Py_VISIT(traverse_module_state->__pyx_tuple__985);
  Py_VISIT(traverse_module_state->__pyx_tuple__990);
  Py_VISIT(traverse_module_state->__pyx_tuple__992);
  Py_VISIT(traverse_module_state->__pyx_tuple__994);
  Py_VISIT(traverse_module_state->__pyx_codeobj__63);
  Py_VISIT(traverse_module_state->__pyx_tuple__1004);
  Py_VISIT(traverse_module_state->__pyx_tuple__1009);
  Py_VISIT(traverse_module_state->__pyx_tuple__1018);
  Py_VISIT(traverse_module_state->__pyx_tuple__1029);
  Py_VISIT(traverse_module_state->__pyx_tuple__1031);
  Py_VISIT(traverse_module_state->__pyx_tuple__1033);
  Py_VISIT(traverse_module_state->__pyx_tuple__1037);
  Py_VISIT(traverse_module_state->__pyx_tuple__1039);
  Py_VISIT(traverse_module_state->__pyx_tuple__1041);
  Py_VISIT(traverse_module_state->__pyx_tuple__1045);
  Py_VISIT(traverse_module_state->__pyx_tuple__1047);
  Py_VISIT(traverse_module_state->__pyx_tuple__1050);
  Py_VISIT(traverse_module_state->__pyx_tuple__1054);
  Py_VISIT(traverse_module_state->__pyx_tuple__1056);
  Py_VISIT(traverse_module_state->__pyx_tuple__1058);
  Py_VISIT(traverse_module_state->__pyx_tuple__1060);
  Py_VISIT(traverse_module_state->__pyx_tuple__1062);
  Py_VISIT(traverse_module_state->__pyx_tuple__1064);
  Py_VISIT(traverse_module_state->__pyx_tuple__1066);
  Py_VISIT(traverse_module_state->__pyx_tuple__1068);
  Py_VISIT(traverse_module_state->__pyx_codeobj__207);
  Py_VISIT(traverse_module_state->__pyx_codeobj__209);
  Py_VISIT(traverse_module_state->__pyx_codeobj__212);
  Py_VISIT(traverse_module_state->__pyx_codeobj__214);
  Py_VISIT(traverse_module_state->__pyx_codeobj__216);
  Py_VISIT(traverse_module_state->__pyx_codeobj__219);
  Py_VISIT(traverse_module_state->__pyx_codeobj__222);
  Py_VISIT(traverse_module_state->__pyx_codeobj__224);
  Py_VISIT(traverse_module_state->__pyx_codeobj__225);
  Py_VISIT(traverse_module_state->__pyx_codeobj__227);
  Py_VISIT(traverse_module_state->__pyx_codeobj__229);
  Py_VISIT(traverse_module_state->__pyx_codeobj__230);
  Py_VISIT(traverse_module_state->__pyx_codeobj__231);
  Py_VISIT(traverse_module_state->__pyx_codeobj__233);
  Py_VISIT(traverse_module_state->__pyx_codeobj__235);
  Py_VISIT(traverse_module_state->__pyx_codeobj__236);
  Py_VISIT(traverse_module_state->__pyx_codeobj__238);
  Py_VISIT(traverse_module_state->__pyx_codeobj__240);
  Py_VISIT(traverse_module_state->__pyx_codeobj__242);
  Py_VISIT(traverse_module_state->__pyx_codeobj__244);
  Py_VISIT(traverse_module_state->__pyx_codeobj__246);
  Py_VISIT(traverse_module_state->__pyx_codeobj__248);
  Py_VISIT(traverse_module_state->__pyx_codeobj__249);
  Py_VISIT(traverse_module_state->__pyx_codeobj__251);
  Py_VISIT(traverse_module_state->__pyx_codeobj__253);
  Py_VISIT(traverse_module_state->__pyx_codeobj__255);
  Py_VISIT(traverse_module_state->__pyx_codeobj__256);
  Py_VISIT(traverse_module_state->__pyx_codeobj__258);
  Py_VISIT(traverse_module_state->__pyx_codeobj__260);
  Py_VISIT(traverse_module_state->__pyx_codeobj__262);
  Py_VISIT(traverse_module_state->__pyx_codeobj__263);
  Py_VISIT(traverse_module_state->__pyx_codeobj__265);
  Py_VISIT(traverse_module_state->__pyx_codeobj__266);
  Py_VISIT(traverse_module_state->__pyx_codeobj__268);
  Py_VISIT(traverse_module_state->__pyx_codeobj__270);
  Py_VISIT(traverse_module_state->__pyx_codeobj__272);
  Py_VISIT(traverse_module_state->__pyx_codeobj__274);
  Py_VISIT(traverse_module_state->__pyx_codeobj__276);
  Py_VISIT(traverse_module_state->__pyx_codeobj__277);
  Py_VISIT(traverse_module_state->__pyx_codeobj__279);
  Py_VISIT(traverse_module_state->__pyx_codeobj__280);
  Py_VISIT(traverse_module_state->__pyx_codeobj__282);
  Py_VISIT(traverse_module_state->__pyx_codeobj__283);
  Py_VISIT(traverse_module_state->__pyx_codeobj__285);
  Py_VISIT(traverse_module_state->__pyx_codeobj__287);
  Py_VISIT(traverse_module_state->__pyx_codeobj__289);
  Py_VISIT(traverse_module_state->__pyx_codeobj__291);
  Py_VISIT(traverse_module_state->__pyx_codeobj__293);
  Py_VISIT(traverse_module_state->__pyx_codeobj__295);
  Py_VISIT(traverse_module_state->__pyx_codeobj__296);
  Py_VISIT(traverse_module_state->__pyx_codeobj__298);
  Py_VISIT(traverse_module_state->__pyx_codeobj__299);
  Py_VISIT(traverse_module_state->__pyx_codeobj__301);
  Py_VISIT(traverse_module_state->__pyx_codeobj__303);
  Py_VISIT(traverse_module_state->__pyx_codeobj__304);
  Py_VISIT(traverse_module_state->__pyx_codeobj__306);
  Py_VISIT(traverse_module_state->__pyx_codeobj__308);
  Py_VISIT(traverse_module_state->__pyx_codeobj__309);
  Py_VISIT(traverse_module_state->__pyx_codeobj__311);
  Py_VISIT(traverse_module_state->__pyx_codeobj__313);
  Py_VISIT(traverse_module_state->__pyx_codeobj__315);
  Py_VISIT(traverse_module_state->__pyx_codeobj__317);
  Py_VISIT(traverse_module_state->__pyx_codeobj__319);
  Py_VISIT(traverse_module_state->__pyx_codeobj__321);
  Py_VISIT(traverse_module_state->__pyx_codeobj__323);
  Py_VISIT(traverse_module_state->__pyx_codeobj__325);
  Py_VISIT(traverse_module_state->__pyx_codeobj__327);
  Py_VISIT(traverse_module_state->__pyx_codeobj__329);
  Py_VISIT(traverse_module_state->__pyx_codeobj__332);
  Py_VISIT(traverse_module_state->__pyx_codeobj__334);
  Py_VISIT(traverse_module_state->__pyx_codeobj__336);
  Py_VISIT(traverse_module_state->__pyx_codeobj__337);
  Py_VISIT(traverse_module_state->__pyx_codeobj__339);
  Py_VISIT(traverse_module_state->__pyx_codeobj__341);
  Py_VISIT(traverse_module_state->__pyx_codeobj__343);
  Py_VISIT(traverse_module_state->__pyx_codeobj__345);
  Py_VISIT(traverse_module_state->__pyx_codeobj__347);
  Py_VISIT(traverse_module_state->__pyx_codeobj__349);
  Py_VISIT(traverse_module_state->__pyx_codeobj__350);
  Py_VISIT(traverse_module_state->__pyx_codeobj__352);
  Py_VISIT(traverse_module_state->__pyx_codeobj__353);
  Py_VISIT(traverse_module_state->__pyx_codeobj__355);
  Py_VISIT(traverse_module_state->__pyx_codeobj__356);
  Py_VISIT(traverse_module_state->__pyx_codeobj__358);
  Py_VISIT(traverse_module_state->__pyx_codeobj__359);
  Py_VISIT(traverse_module_state->__pyx_codeobj__361);
  Py_VISIT(traverse_module_state->__pyx_codeobj__362);
  Py_VISIT(traverse_module_state->__pyx_codeobj__364);
  Py_VISIT(traverse_module_state->__pyx_codeobj__366);
  Py_VISIT(traverse_module_state->__pyx_codeobj__368);
  Py_VISIT(traverse_module_state->__pyx_codeobj__370);
  Py_VISIT(traverse_module_state->__pyx_codeobj__371);
  Py_VISIT(traverse_module_state->__pyx_codeobj__373);
  Py_VISIT(traverse_module_state->__pyx_codeobj__375);
  Py_VISIT(traverse_module_state->__pyx_codeobj__376);
  Py_VISIT(traverse_module_state->__pyx_codeobj__377);
  Py_VISIT(traverse_module_state->__pyx_codeobj__378);
  Py_VISIT(traverse_module_state->__pyx_codeobj__380);
  Py_VISIT(traverse_module_state->__pyx_codeobj__382);
  Py_VISIT(traverse_module_state->__pyx_codeobj__383);
  Py_VISIT(traverse_module_state->__pyx_codeobj__385);
  Py_VISIT(traverse_module_state->__pyx_codeobj__387);
  Py_VISIT(traverse_module_state->__pyx_codeobj__388);
  Py_VISIT(traverse_module_state->__pyx_codeobj__390);
  Py_VISIT(traverse_module_state->__pyx_codeobj__392);
  Py_VISIT(traverse_module_state->__pyx_codeobj__393);
  Py_VISIT(traverse_module_state->__pyx_codeobj__395);
  Py_VISIT(traverse_module_state->__pyx_codeobj__396);
  Py_VISIT(traverse_module_state->__pyx_codeobj__397);
  Py_VISIT(traverse_module_state->__pyx_codeobj__398);
  Py_VISIT(traverse_module_state->__pyx_codeobj__399);
  Py_VISIT(traverse_module_state->__pyx_codeobj__400);
  Py_VISIT(traverse_module_state->__pyx_codeobj__401);
  Py_VISIT(traverse_module_state->__pyx_codeobj__403);
  Py_VISIT(traverse_module_state->__pyx_codeobj__405);
  Py_VISIT(traverse_module_state->__pyx_codeobj__406);
  Py_VISIT(traverse_module_state->__pyx_codeobj__408);
  Py_VISIT(traverse_module_state->__pyx_codeobj__410);
  Py_VISIT(traverse_module_state->__pyx_codeobj__412);
  Py_VISIT(traverse_module_state->__pyx_codeobj__414);
  Py_VISIT(traverse_module_state->__pyx_codeobj__416);
  Py_VISIT(traverse_module_state->__pyx_codeobj__418);
  Py_VISIT(traverse_module_state->__pyx_codeobj__419);
  Py_VISIT(traverse_module_state->__pyx_codeobj__420);
  Py_VISIT(traverse_module_state->__pyx_codeobj__421);
  Py_VISIT(traverse_module_state->__pyx_codeobj__422);
  Py_VISIT(traverse_module_state->__pyx_codeobj__423);
  Py_VISIT(traverse_module_state->__pyx_codeobj__425);
  Py_VISIT(traverse_module_state->__pyx_codeobj__427);
  Py_VISIT(traverse_module_state->__pyx_codeobj__429);
  Py_VISIT(traverse_module_state->__pyx_codeobj__431);
  Py_VISIT(traverse_module_state->__pyx_codeobj__433);
  Py_VISIT(traverse_module_state->__pyx_codeobj__435);
  Py_VISIT(traverse_module_state->__pyx_codeobj__438);
  Py_VISIT(traverse_module_state->__pyx_codeobj__439);
  Py_VISIT(traverse_module_state->__pyx_codeobj__440);
  Py_VISIT(traverse_module_state->__pyx_codeobj__441);
  Py_VISIT(traverse_module_state->__pyx_codeobj__442);
  Py_VISIT(traverse_module_state->__pyx_codeobj__444);
  Py_VISIT(traverse_module_state->__pyx_codeobj__446);
  Py_VISIT(traverse_module_state->__pyx_codeobj__448);
  Py_VISIT(traverse_module_state->__pyx_codeobj__450);
  Py_VISIT(traverse_module_state->__pyx_codeobj__452);
  Py_VISIT(traverse_module_state->__pyx_codeobj__454);
  Py_VISIT(traverse_module_state->__pyx_codeobj__456);
  Py_VISIT(traverse_module_state->__pyx_codeobj__458);
  Py_VISIT(traverse_module_state->__pyx_codeobj__459);
  Py_VISIT(traverse_module_state->__pyx_codeobj__460);
  Py_VISIT(traverse_module_state->__pyx_codeobj__461);
  Py_VISIT(traverse_module_state->__pyx_codeobj__462);
  Py_VISIT(traverse_module_state->__pyx_codeobj__463);
  Py_VISIT(traverse_module_state->__pyx_codeobj__465);
  Py_VISIT(traverse_module_state->__pyx_codeobj__466);
  Py_VISIT(traverse_module_state->__pyx_codeobj__467);
  Py_VISIT(traverse_module_state->__pyx_codeobj__469);
  Py_VISIT(traverse_module_state->__pyx_codeobj__470);
  Py_VISIT(traverse_module_state->__pyx_codeobj__471);
  Py_VISIT(traverse_module_state->__pyx_codeobj__472);
  Py_VISIT(traverse_module_state->__pyx_codeobj__473);
  Py_VISIT(traverse_module_state->__pyx_codeobj__474);
  Py_VISIT(traverse_module_state->__pyx_codeobj__475);
  Py_VISIT(traverse_module_state->__pyx_codeobj__477);
  Py_VISIT(traverse_module_state->__pyx_codeobj__479);
  Py_VISIT(traverse_module_state->__pyx_codeobj__482);
  Py_VISIT(traverse_module_state->__pyx_codeobj__484);
  Py_VISIT(traverse_module_state->__pyx_codeobj__486);
  Py_VISIT(traverse_module_state->__pyx_codeobj__487);
  Py_VISIT(traverse_module_state->__pyx_codeobj__488);
  Py_VISIT(traverse_module_state->__pyx_codeobj__490);
  Py_VISIT(traverse_module_state->__pyx_codeobj__491);
  Py_VISIT(traverse_module_state->__pyx_codeobj__493);
  Py_VISIT(traverse_module_state->__pyx_codeobj__494);
  Py_VISIT(traverse_module_state->__pyx_codeobj__496);
  Py_VISIT(traverse_module_state->__pyx_codeobj__497);
  Py_VISIT(traverse_module_state->__pyx_codeobj__498);
  Py_VISIT(traverse_module_state->__pyx_codeobj__499);
  Py_VISIT(traverse_module_state->__pyx_codeobj__500);
  Py_VISIT(traverse_module_state->__pyx_codeobj__501);
  Py_VISIT(traverse_module_state->__pyx_codeobj__502);
  Py_VISIT(traverse_module_state->__pyx_codeobj__504);
  Py_VISIT(traverse_module_state->__pyx_codeobj__506);
  Py_VISIT(traverse_module_state->__pyx_codeobj__507);
  Py_VISIT(traverse_module_state->__pyx_codeobj__509);
  Py_VISIT(traverse_module_state->__pyx_codeobj__511);
  Py_VISIT(traverse_module_state->__pyx_codeobj__513);
  Py_VISIT(traverse_module_state->__pyx_codeobj__515);
  Py_VISIT(traverse_module_state->__pyx_codeobj__517);
  Py_VISIT(traverse_module_state->__pyx_codeobj__519);
  Py_VISIT(traverse_module_state->__pyx_codeobj__520);
  Py_VISIT(traverse_module_state->__pyx_codeobj__521);
  Py_VISIT(traverse_module_state->__pyx_codeobj__523);
  Py_VISIT(traverse_module_state->__pyx_codeobj__525);
  Py_VISIT(traverse_module_state->__pyx_codeobj__527);
  Py_VISIT(traverse_module_state->__pyx_codeobj__529);
  Py_VISIT(traverse_module_state->__pyx_codeobj__531);
  Py_VISIT(traverse_module_state->__pyx_codeobj__533);
  Py_VISIT(traverse_module_state->__pyx_codeobj__535);
  Py_VISIT(traverse_module_state->__pyx_codeobj__536);
  Py_VISIT(traverse_module_state->__pyx_codeobj__538);
  Py_VISIT(traverse_module_state->__pyx_codeobj__539);
  Py_VISIT(traverse_module_state->__pyx_codeobj__540);
  Py_VISIT(traverse_module_state->__pyx_codeobj__541);
  Py_VISIT(traverse_module_state->__pyx_codeobj__542);
  Py_VISIT(traverse_module_state->__pyx_codeobj__543);
  Py_VISIT(traverse_module_state->__pyx_codeobj__544);
  Py_VISIT(traverse_module_state->__pyx_codeobj__545);
  Py_VISIT(traverse_module_state->__pyx_codeobj__546);
  Py_VISIT(traverse_module_state->__pyx_codeobj__547);
  Py_VISIT(traverse_module_state->__pyx_codeobj__549);
  Py_VISIT(traverse_module_state->__pyx_codeobj__550);
  Py_VISIT(traverse_module_state->__pyx_codeobj__552);
  Py_VISIT(traverse_module_state->__pyx_codeobj__554);
  Py_VISIT(traverse_module_state->__pyx_codeobj__555);
  Py_VISIT(traverse_module_state->__pyx_codeobj__557);
  Py_VISIT(traverse_module_state->__pyx_codeobj__559);
  Py_VISIT(traverse_module_state->__pyx_codeobj__561);
  Py_VISIT(traverse_module_state->__pyx_codeobj__563);
  Py_VISIT(traverse_module_state->__pyx_codeobj__564);
  Py_VISIT(traverse_module_state->__pyx_codeobj__566);
  Py_VISIT(traverse_module_state->__pyx_codeobj__568);
  Py_VISIT(traverse_module_state->__pyx_codeobj__570);
  Py_VISIT(traverse_module_state->__pyx_codeobj__571);
  Py_VISIT(traverse_module_state->__pyx_codeobj__572);
  Py_VISIT(traverse_module_state->__pyx_codeobj__573);
  Py_VISIT(traverse_module_state->__pyx_codeobj__574);
  Py_VISIT(traverse_module_state->__pyx_codeobj__575);
  Py_VISIT(traverse_module_state->__pyx_codeobj__576);
  Py_VISIT(traverse_module_state->__pyx_codeobj__577);
  Py_VISIT(traverse_module_state->__pyx_codeobj__578);
  Py_VISIT(traverse_module_state->__pyx_codeobj__579);
  Py_VISIT(traverse_module_state->__pyx_codeobj__580);
  Py_VISIT(traverse_module_state->__pyx_codeobj__582);
  Py_VISIT(traverse_module_state->__pyx_codeobj__584);
  Py_VISIT(traverse_module_state->__pyx_codeobj__586);
  Py_VISIT(traverse_module_state->__pyx_codeobj__588);
  Py_VISIT(traverse_module_state->__pyx_codeobj__590);
  Py_VISIT(traverse_module_state->__pyx_codeobj__592);
  Py_VISIT(traverse_module_state->__pyx_codeobj__594);
  Py_VISIT(traverse_module_state->__pyx_codeobj__596);
  Py_VISIT(traverse_module_state->__pyx_codeobj__599);
  Py_VISIT(traverse_module_state->__pyx_codeobj__600);
  Py_VISIT(traverse_module_state->__pyx_codeobj__601);
  Py_VISIT(traverse_module_state->__pyx_codeobj__602);
  Py_VISIT(traverse_module_state->__pyx_codeobj__603);
  Py_VISIT(traverse_module_state->__pyx_codeobj__605);
  Py_VISIT(traverse_module_state->__pyx_codeobj__606);
  Py_VISIT(traverse_module_state->__pyx_codeobj__608);
  Py_VISIT(traverse_module_state->__pyx_codeobj__610);
  Py_VISIT(traverse_module_state->__pyx_codeobj__612);
  Py_VISIT(traverse_module_state->__pyx_codeobj__613);
  Py_VISIT(traverse_module_state->__pyx_codeobj__614);
  Py_VISIT(traverse_module_state->__pyx_codeobj__615);
  Py_VISIT(traverse_module_state->__pyx_codeobj__616);
  Py_VISIT(traverse_module_state->__pyx_codeobj__617);
  Py_VISIT(traverse_module_state->__pyx_codeobj__618);
  Py_VISIT(traverse_module_state->__pyx_codeobj__620);
  Py_VISIT(traverse_module_state->__pyx_codeobj__623);
  Py_VISIT(traverse_module_state->__pyx_codeobj__625);
  Py_VISIT(traverse_module_state->__pyx_codeobj__627);
  Py_VISIT(traverse_module_state->__pyx_codeobj__629);
  Py_VISIT(traverse_module_state->__pyx_codeobj__631);
  Py_VISIT(traverse_module_state->__pyx_codeobj__633);
  Py_VISIT(traverse_module_state->__pyx_codeobj__635);
  Py_VISIT(traverse_module_state->__pyx_codeobj__637);
  Py_VISIT(traverse_module_state->__pyx_codeobj__639);
  Py_VISIT(traverse_module_state->__pyx_codeobj__641);
  Py_VISIT(traverse_module_state->__pyx_codeobj__643);
  Py_VISIT(traverse_module_state->__pyx_codeobj__644);
  Py_VISIT(traverse_module_state->__pyx_codeobj__645);
  Py_VISIT(traverse_module_state->__pyx_codeobj__647);
  Py_VISIT(traverse_module_state->__pyx_codeobj__649);
  Py_VISIT(traverse_module_state->__pyx_codeobj__650);
  Py_VISIT(traverse_module_state->__pyx_codeobj__651);
  Py_VISIT(traverse_module_state->__pyx_codeobj__652);
  Py_VISIT(traverse_module_state->__pyx_codeobj__653);
  Py_VISIT(traverse_module_state->__pyx_codeobj__654);
  Py_VISIT(traverse_module_state->__pyx_codeobj__655);
  Py_VISIT(traverse_module_state->__pyx_codeobj__656);
  Py_VISIT(traverse_module_state->__pyx_codeobj__657);
  Py_VISIT(traverse_module_state->__pyx_codeobj__658);
  Py_VISIT(traverse_module_state->__pyx_codeobj__659);
  Py_VISIT(traverse_module_state->__pyx_codeobj__661);
  Py_VISIT(traverse_module_state->__pyx_codeobj__663);
  Py_VISIT(traverse_module_state->__pyx_codeobj__664);
  Py_VISIT(traverse_module_state->__pyx_codeobj__665);
  Py_VISIT(traverse_module_state->__pyx_codeobj__666);
  Py_VISIT(traverse_module_state->__pyx_codeobj__668);
  Py_VISIT(traverse_module_state->__pyx_codeobj__669);
  Py_VISIT(traverse_module_state->__pyx_codeobj__670);
  Py_VISIT(traverse_module_state->__pyx_codeobj__671);
  Py_VISIT(traverse_module_state->__pyx_codeobj__672);
  Py_VISIT(traverse_module_state->__pyx_codeobj__674);
  Py_VISIT(traverse_module_state->__pyx_codeobj__676);
  Py_VISIT(traverse_module_state->__pyx_codeobj__677);
  Py_VISIT(traverse_module_state->__pyx_codeobj__679);
  Py_VISIT(traverse_module_state->__pyx_codeobj__680);
  Py_VISIT(traverse_module_state->__pyx_codeobj__682);
  Py_VISIT(traverse_module_state->__pyx_codeobj__684);
  Py_VISIT(traverse_module_state->__pyx_codeobj__685);
  Py_VISIT(traverse_module_state->__pyx_codeobj__686);
  Py_VISIT(traverse_module_state->__pyx_codeobj__687);
  Py_VISIT(traverse_module_state->__pyx_codeobj__689);
  Py_VISIT(traverse_module_state->__pyx_codeobj__690);
  Py_VISIT(traverse_module_state->__pyx_codeobj__691);
  Py_VISIT(traverse_module_state->__pyx_codeobj__692);
  Py_VISIT(traverse_module_state->__pyx_codeobj__693);
  Py_VISIT(traverse_module_state->__pyx_codeobj__695);
  Py_VISIT(traverse_module_state->__pyx_codeobj__697);
  Py_VISIT(traverse_module_state->__pyx_codeobj__698);
  Py_VISIT(traverse_module_state->__pyx_codeobj__700);
  Py_VISIT(traverse_module_state->__pyx_codeobj__702);
  Py_VISIT(traverse_module_state->__pyx_codeobj__704);
  Py_VISIT(traverse_module_state->__pyx_codeobj__706);
  Py_VISIT(traverse_module_state->__pyx_codeobj__707);
  Py_VISIT(traverse_module_state->__pyx_codeobj__708);
  Py_VISIT(traverse_module_state->__pyx_codeobj__709);
  Py_VISIT(traverse_module_state->__pyx_codeobj__711);
  Py_VISIT(traverse_module_state->__pyx_codeobj__712);
  Py_VISIT(traverse_module_state->__pyx_codeobj__713);
  Py_VISIT(traverse_module_state->__pyx_codeobj__714);
  Py_VISIT(traverse_module_state->__pyx_codeobj__715);
  Py_VISIT(traverse_module_state->__pyx_codeobj__717);
  Py_VISIT(traverse_module_state->__pyx_codeobj__719);
  Py_VISIT(traverse_module_state->__pyx_codeobj__720);
  Py_VISIT(traverse_module_state->__pyx_codeobj__722);
  Py_VISIT(traverse_module_state->__pyx_codeobj__723);
  Py_VISIT(traverse_module_state->__pyx_codeobj__724);
  Py_VISIT(traverse_module_state->__pyx_codeobj__726);
  Py_VISIT(traverse_module_state->__pyx_codeobj__728);
  Py_VISIT(traverse_module_state->__pyx_codeobj__729);
  Py_VISIT(traverse_module_state->__pyx_codeobj__731);
  Py_VISIT(traverse_module_state->__pyx_codeobj__732);
  Py_VISIT(traverse_module_state->__pyx_codeobj__733);
  Py_VISIT(traverse_module_state->__pyx_codeobj__734);
  Py_VISIT(traverse_module_state->__pyx_codeobj__735);
  Py_VISIT(traverse_module_state->__pyx_codeobj__736);
  Py_VISIT(traverse_module_state->__pyx_codeobj__737);
  Py_VISIT(traverse_module_state->__pyx_codeobj__738);
  Py_VISIT(traverse_module_state->__pyx_codeobj__739);
  Py_VISIT(traverse_module_state->__pyx_codeobj__740);
  Py_VISIT(traverse_module_state->__pyx_codeobj__741);
  Py_VISIT(traverse_module_state->__pyx_codeobj__742);
  Py_VISIT(traverse_module_state->__pyx_codeobj__743);
  Py_VISIT(traverse_module_state->__pyx_codeobj__744);
  Py_VISIT(traverse_module_state->__pyx_codeobj__745);
  Py_VISIT(traverse_module_state->__pyx_codeobj__747);
  Py_VISIT(traverse_module_state->__pyx_codeobj__748);
  Py_VISIT(traverse_module_state->__pyx_codeobj__749);
  Py_VISIT(traverse_module_state->__pyx_codeobj__751);
  Py_VISIT(traverse_module_state->__pyx_codeobj__753);
  Py_VISIT(traverse_module_state->__pyx_codeobj__755);
  Py_VISIT(traverse_module_state->__pyx_codeobj__756);
  Py_VISIT(traverse_module_state->__pyx_codeobj__757);
  Py_VISIT(traverse_module_state->__pyx_codeobj__759);
  Py_VISIT(traverse_module_state->__pyx_codeobj__761);
  Py_VISIT(traverse_module_state->__pyx_codeobj__762);
  Py_VISIT(traverse_module_state->__pyx_codeobj__764);
  Py_VISIT(traverse_module_state->__pyx_codeobj__766);
  Py_VISIT(traverse_module_state->__pyx_codeobj__767);
  Py_VISIT(traverse_module_state->__pyx_codeobj__769);
  Py_VISIT(traverse_module_state->__pyx_codeobj__771);
  Py_VISIT(traverse_module_state->__pyx_codeobj__772);
  Py_VISIT(traverse_module_state->__pyx_codeobj__774);
  Py_VISIT(traverse_module_state->__pyx_codeobj__775);
  Py_VISIT(traverse_module_state->__pyx_codeobj__777);
  Py_VISIT(traverse_module_state->__pyx_codeobj__779);
  Py_VISIT(traverse_module_state->__pyx_codeobj__781);
  Py_VISIT(traverse_module_state->__pyx_codeobj__783);
  Py_VISIT(traverse_module_state->__pyx_codeobj__785);
  Py_VISIT(traverse_module_state->__pyx_codeobj__788);
  Py_VISIT(traverse_module_state->__pyx_codeobj__790);
  Py_VISIT(traverse_module_state->__pyx_codeobj__792);
  Py_VISIT(traverse_module_state->__pyx_codeobj__794);
  Py_VISIT(traverse_module_state->__pyx_codeobj__796);
  Py_VISIT(traverse_module_state->__pyx_codeobj__798);
  Py_VISIT(traverse_module_state->__pyx_codeobj__799);
  Py_VISIT(traverse_module_state->__pyx_codeobj__800);
  Py_VISIT(traverse_module_state->__pyx_codeobj__801);
  Py_VISIT(traverse_module_state->__pyx_codeobj__802);
  Py_VISIT(traverse_module_state->__pyx_codeobj__803);
  Py_VISIT(traverse_module_state->__pyx_codeobj__804);
  Py_VISIT(traverse_module_state->__pyx_codeobj__805);
  Py_VISIT(traverse_module_state->__pyx_codeobj__806);
  Py_VISIT(traverse_module_state->__pyx_codeobj__808);
  Py_VISIT(traverse_module_state->__pyx_codeobj__811);
  Py_VISIT(traverse_module_state->__pyx_codeobj__813);
  Py_VISIT(traverse_module_state->__pyx_codeobj__814);
  Py_VISIT(traverse_module_state->__pyx_codeobj__815);
  Py_VISIT(traverse_module_state->__pyx_codeobj__816);
  Py_VISIT(traverse_module_state->__pyx_codeobj__817);
  Py_VISIT(traverse_module_state->__pyx_codeobj__818);
  Py_VISIT(traverse_module_state->__pyx_codeobj__819);
  Py_VISIT(traverse_module_state->__pyx_codeobj__820);
  Py_VISIT(traverse_module_state->__pyx_codeobj__821);
  Py_VISIT(traverse_module_state->__pyx_codeobj__822);
  Py_VISIT(traverse_module_state->__pyx_codeobj__823);
  Py_VISIT(traverse_module_state->__pyx_codeobj__824);
  Py_VISIT(traverse_module_state->__pyx_codeobj__825);
  Py_VISIT(traverse_module_state->__pyx_codeobj__826);
  Py_VISIT(traverse_module_state->__pyx_codeobj__827);
  Py_VISIT(traverse_module_state->__pyx_codeobj__828);
  Py_VISIT(traverse_module_state->__pyx_codeobj__829);
  Py_VISIT(traverse_module_state->__pyx_codeobj__830);
  Py_VISIT(traverse_module_state->__pyx_codeobj__831);
  Py_VISIT(traverse_module_state->__pyx_codeobj__833);
  Py_VISIT(traverse_module_state->__pyx_codeobj__835);
  Py_VISIT(traverse_module_state->__pyx_codeobj__837);
  Py_VISIT(traverse_module_state->__pyx_codeobj__839);
  Py_VISIT(traverse_module_state->__pyx_codeobj__841);
  Py_VISIT(traverse_module_state->__pyx_codeobj__843);
  Py_VISIT(traverse_module_state->__pyx_codeobj__845);
  Py_VISIT(traverse_module_state->__pyx_codeobj__847);
  Py_VISIT(traverse_module_state->__pyx_codeobj__849);
  Py_VISIT(traverse_module_state->__pyx_codeobj__851);
  Py_VISIT(traverse_module_state->__pyx_codeobj__853);
  Py_VISIT(traverse_module_state->__pyx_codeobj__855);
  Py_VISIT(traverse_module_state->__pyx_codeobj__857);
  Py_VISIT(traverse_module_state->__pyx_codeobj__859);
  Py_VISIT(traverse_module_state->__pyx_codeobj__860);
  Py_VISIT(traverse_module_state->__pyx_codeobj__861);
  Py_VISIT(traverse_module_state->__pyx_codeobj__863);
  Py_VISIT(traverse_module_state->__pyx_codeobj__865);
  Py_VISIT(traverse_module_state->__pyx_codeobj__867);
  Py_VISIT(traverse_module_state->__pyx_codeobj__868);
  Py_VISIT(traverse_module_state->__pyx_codeobj__870);
  Py_VISIT(traverse_module_state->__pyx_codeobj__872);
  Py_VISIT(traverse_module_state->__pyx_codeobj__874);
  Py_VISIT(traverse_module_state->__pyx_codeobj__876);
  Py_VISIT(traverse_module_state->__pyx_codeobj__877);
  Py_VISIT(traverse_module_state->__pyx_codeobj__879);
  Py_VISIT(traverse_module_state->__pyx_codeobj__880);
  Py_VISIT(traverse_module_state->__pyx_codeobj__881);
  Py_VISIT(traverse_module_state->__pyx_codeobj__882);
  Py_VISIT(traverse_module_state->__pyx_codeobj__884);
  Py_VISIT(traverse_module_state->__pyx_codeobj__886);
  Py_VISIT(traverse_module_state->__pyx_codeobj__887);
  Py_VISIT(traverse_module_state->__pyx_codeobj__889);
  Py_VISIT(traverse_module_state->__pyx_codeobj__891);
  Py_VISIT(traverse_module_state->__pyx_codeobj__893);
  Py_VISIT(traverse_module_state->__pyx_codeobj__895);
  Py_VISIT(traverse_module_state->__pyx_codeobj__896);
  Py_VISIT(traverse_module_state->__pyx_codeobj__897);
  Py_VISIT(traverse_module_state->__pyx_codeobj__898);
  Py_VISIT(traverse_module_state->__pyx_codeobj__899);
  Py_VISIT(traverse_module_state->__pyx_codeobj__900);
  Py_VISIT(traverse_module_state->__pyx_codeobj__901);
  Py_VISIT(traverse_module_state->__pyx_codeobj__902);
  Py_VISIT(traverse_module_state->__pyx_codeobj__903);
  Py_VISIT(traverse_module_state->__pyx_codeobj__904);
  Py_VISIT(traverse_module_state->__pyx_codeobj__905);
  Py_VISIT(traverse_module_state->__pyx_codeobj__907);
  Py_VISIT(traverse_module_state->__pyx_codeobj__908);
  Py_VISIT(traverse_module_state->__pyx_codeobj__910);
  Py_VISIT(traverse_module_state->__pyx_codeobj__912);
  Py_VISIT(traverse_module_state->__pyx_codeobj__914);
  Py_VISIT(traverse_module_state->__pyx_codeobj__916);
  Py_VISIT(traverse_module_state->__pyx_codeobj__918);
  Py_VISIT(traverse_module_state->__pyx_codeobj__919);
  Py_VISIT(traverse_module_state->__pyx_codeobj__921);
  Py_VISIT(traverse_module_state->__pyx_codeobj__923);
  Py_VISIT(traverse_module_state->__pyx_codeobj__925);
  Py_VISIT(traverse_module_state->__pyx_codeobj__927);
  Py_VISIT(traverse_module_state->__pyx_codeobj__928);
  Py_VISIT(traverse_module_state->__pyx_codeobj__929);
  Py_VISIT(traverse_module_state->__pyx_codeobj__930);
  Py_VISIT(traverse_module_state->__pyx_codeobj__931);
  Py_VISIT(traverse_module_state->__pyx_codeobj__933);
  Py_VISIT(traverse_module_state->__pyx_codeobj__934);
  Py_VISIT(traverse_module_state->__pyx_codeobj__935);
  Py_VISIT(traverse_module_state->__pyx_codeobj__936);
  Py_VISIT(traverse_module_state->__pyx_codeobj__937);
  Py_VISIT(traverse_module_state->__pyx_codeobj__938);
  Py_VISIT(traverse_module_state->__pyx_codeobj__939);
  Py_VISIT(traverse_module_state->__pyx_codeobj__940);
  Py_VISIT(traverse_module_state->__pyx_codeobj__941);
  Py_VISIT(traverse_module_state->__pyx_codeobj__942);
  Py_VISIT(traverse_module_state->__pyx_codeobj__943);
  Py_VISIT(traverse_module_state->__pyx_codeobj__944);
  Py_VISIT(traverse_module_state->__pyx_codeobj__945);
  Py_VISIT(traverse_module_state->__pyx_codeobj__946);
  Py_VISIT(traverse_module_state->__pyx_codeobj__947);
  Py_VISIT(traverse_module_state->__pyx_codeobj__948);
  Py_VISIT(traverse_module_state->__pyx_codeobj__949);
  Py_VISIT(traverse_module_state->__pyx_codeobj__950);
  Py_VISIT(traverse_module_state->__pyx_codeobj__951);
  Py_VISIT(traverse_module_state->__pyx_codeobj__952);
  Py_VISIT(traverse_module_state->__pyx_codeobj__954);
  Py_VISIT(traverse_module_state->__pyx_codeobj__955);
  Py_VISIT(traverse_module_state->__pyx_codeobj__957);
  Py_VISIT(traverse_module_state->__pyx_codeobj__958);
  Py_VISIT(traverse_module_state->__pyx_codeobj__959);
  Py_VISIT(traverse_module_state->__pyx_codeobj__960);
  Py_VISIT(traverse_module_state->__pyx_codeobj__962);
  Py_VISIT(traverse_module_state->__pyx_codeobj__963);
  Py_VISIT(traverse_module_state->__pyx_codeobj__964);
  Py_VISIT(traverse_module_state->__pyx_codeobj__965);
  Py_VISIT(traverse_module_state->__pyx_codeobj__967);
  Py_VISIT(traverse_module_state->__pyx_codeobj__969);
  Py_VISIT(traverse_module_state->__pyx_codeobj__971);
  Py_VISIT(traverse_module_state->__pyx_codeobj__972);
  Py_VISIT(traverse_module_state->__pyx_codeobj__973);
  Py_VISIT(traverse_module_state->__pyx_codeobj__974);
  Py_VISIT(traverse_module_state->__pyx_codeobj__976);
  Py_VISIT(traverse_module_state->__pyx_codeobj__977);
  Py_VISIT(traverse_module_state->__pyx_codeobj__978);
  Py_VISIT(traverse_module_state->__pyx_codeobj__979);
  Py_VISIT(traverse_module_state->__pyx_codeobj__981);
  Py_VISIT(traverse_module_state->__pyx_codeobj__982);
  Py_VISIT(traverse_module_state->__pyx_codeobj__983);
  Py_VISIT(traverse_module_state->__pyx_codeobj__984);
  Py_VISIT(traverse_module_state->__pyx_codeobj__986);
  Py_VISIT(traverse_module_state->__pyx_codeobj__987);
  Py_VISIT(traverse_module_state->__pyx_codeobj__988);
  Py_VISIT(traverse_module_state->__pyx_codeobj__989);
  Py_VISIT(traverse_module_state->__pyx_codeobj__991);
  Py_VISIT(traverse_module_state->__pyx_codeobj__993);
  Py_VISIT(traverse_module_state->__pyx_codeobj__995);
  Py_VISIT(traverse_module_state->__pyx_codeobj__996);
  Py_VISIT(traverse_module_state->__pyx_codeobj__997);
  Py_VISIT(traverse_module_state->__pyx_codeobj__998);
  Py_VISIT(traverse_module_state->__pyx_codeobj__999);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1000);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1001);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1002);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1003);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1005);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1006);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1007);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1008);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1010);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1011);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1012);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1013);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1014);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1015);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1016);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1017);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1019);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1020);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1021);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1022);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1023);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1024);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1025);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1026);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1027);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1028);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1030);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1032);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1034);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1035);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1036);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1038);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1040);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1042);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1043);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1044);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1046);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1048);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1049);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1051);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1052);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1053);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1055);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1057);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1059);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1061);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1063);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1065);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1067);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1069);
  Py_VISIT(traverse_module_state->__pyx_codeobj__1070);
  return 0;
}
#endif
/* #### Code section: module_state_defines ### */
#define __pyx_d __pyx_mstate_global->__pyx_d
#define __pyx_b __pyx_mstate_global->__pyx_b
#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
#ifdef __Pyx_CyFunction_USED
#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
#endif
#ifdef __Pyx_FusedFunction_USED
#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
#endif
#ifdef __Pyx_Generator_USED
#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
#endif
#ifdef __Pyx_IterableCoroutine_USED
#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
#endif
#ifdef __Pyx_Coroutine_USED
#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
#endif
#ifdef __Pyx_Coroutine_USED
#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#define PyMPIDatatype_Type __pyx_mstate_global->PyMPIDatatype_Type
#define PyMPIStatus_Type __pyx_mstate_global->PyMPIStatus_Type
#define PyMPIRequest_Type __pyx_mstate_global->PyMPIRequest_Type
#define PyMPIPrequest_Type __pyx_mstate_global->PyMPIPrequest_Type
#define PyMPIGrequest_Type __pyx_mstate_global->PyMPIGrequest_Type
#define PyMPIMessage_Type __pyx_mstate_global->PyMPIMessage_Type
#define PyMPIOp_Type __pyx_mstate_global->PyMPIOp_Type
#define PyMPIGroup_Type __pyx_mstate_global->PyMPIGroup_Type
#define PyMPIInfo_Type __pyx_mstate_global->PyMPIInfo_Type
#define PyMPIErrhandler_Type __pyx_mstate_global->PyMPIErrhandler_Type
#define PyMPISession_Type __pyx_mstate_global->PyMPISession_Type
#define PyMPIComm_Type __pyx_mstate_global->PyMPIComm_Type
#define PyMPIIntracomm_Type __pyx_mstate_global->PyMPIIntracomm_Type
#define PyMPITopocomm_Type __pyx_mstate_global->PyMPITopocomm_Type
#define PyMPICartcomm_Type __pyx_mstate_global->PyMPICartcomm_Type
#define PyMPIGraphcomm_Type __pyx_mstate_global->PyMPIGraphcomm_Type
#define PyMPIDistgraphcomm_Type __pyx_mstate_global->PyMPIDistgraphcomm_Type
#define PyMPIIntercomm_Type __pyx_mstate_global->PyMPIIntercomm_Type
#define PyMPIWin_Type __pyx_mstate_global->PyMPIWin_Type
#define PyMPIFile_Type __pyx_mstate_global->PyMPIFile_Type
#define __pyx_type_6mpi4py_3MPI__PyMem __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__PyMem
#define __pyx_type_6mpi4py_3MPI_buffer __pyx_mstate_global->__pyx_type_6mpi4py_3MPI_buffer
#define __pyx_type_6mpi4py_3MPI__p_keyval __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_keyval
#define __pyx_type_6mpi4py_3MPI__p_rs __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_rs
#define __pyx_type_6mpi4py_3MPI__p_greq __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_greq
#define __pyx_type_6mpi4py_3MPI_BufferAutomaticType __pyx_mstate_global->__pyx_type_6mpi4py_3MPI_BufferAutomaticType
#define __pyx_type_6mpi4py_3MPI__p_datarep __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_datarep
#define __pyx_type_6mpi4py_3MPI_BottomType __pyx_mstate_global->__pyx_type_6mpi4py_3MPI_BottomType
#define __pyx_type_6mpi4py_3MPI_InPlaceType __pyx_mstate_global->__pyx_type_6mpi4py_3MPI_InPlaceType
#define __pyx_type_6mpi4py_3MPI__p_message __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_message
#define __pyx_type_6mpi4py_3MPI__p_msg_p2p __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_msg_p2p
#define __pyx_type_6mpi4py_3MPI__p_msg_cco __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_msg_cco
#define __pyx_type_6mpi4py_3MPI__p_msg_ccow __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_msg_ccow
#define __pyx_type_6mpi4py_3MPI__p_msg_rma __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_msg_rma
#define __pyx_type_6mpi4py_3MPI__p_msg_io __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_msg_io
#define __pyx_type_6mpi4py_3MPI_Pickle __pyx_mstate_global->__pyx_type_6mpi4py_3MPI_Pickle
#define __pyx_type_6mpi4py_3MPI__p_req_buf __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_req_buf
#define __pyx_type_6mpi4py_3MPI__p_req_obj __pyx_mstate_global->__pyx_type_6mpi4py_3MPI__p_req_obj
#define __pyx_type_6mpi4py_3MPI_Exception __pyx_mstate_global->__pyx_type_6mpi4py_3MPI_Exception
#define __pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback __pyx_mstate_global->__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback
#endif
#define __pyx_ptype_6mpi4py_3MPI_Datatype __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Datatype
#define __pyx_ptype_6mpi4py_3MPI_Status __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Status
#define __pyx_ptype_6mpi4py_3MPI_Request __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Request
#define __pyx_ptype_6mpi4py_3MPI_Prequest __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Prequest
#define __pyx_ptype_6mpi4py_3MPI_Grequest __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Grequest
#define __pyx_ptype_6mpi4py_3MPI_Message __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Message
#define __pyx_ptype_6mpi4py_3MPI_Op __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Op
#define __pyx_ptype_6mpi4py_3MPI_Group __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Group
#define __pyx_ptype_6mpi4py_3MPI_Info __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Info
#define __pyx_ptype_6mpi4py_3MPI_Errhandler __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Errhandler
#define __pyx_ptype_6mpi4py_3MPI_Session __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Session
#define __pyx_ptype_6mpi4py_3MPI_Comm __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Comm
#define __pyx_ptype_6mpi4py_3MPI_Intracomm __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intracomm
#define __pyx_ptype_6mpi4py_3MPI_Topocomm __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Topocomm
#define __pyx_ptype_6mpi4py_3MPI_Cartcomm __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Cartcomm
#define __pyx_ptype_6mpi4py_3MPI_Graphcomm __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Graphcomm
#define __pyx_ptype_6mpi4py_3MPI_Distgraphcomm __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Distgraphcomm
#define __pyx_ptype_6mpi4py_3MPI_Intercomm __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Intercomm
#define __pyx_ptype_6mpi4py_3MPI_Win __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Win
#define __pyx_ptype_6mpi4py_3MPI_File __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_File
#define __pyx_ptype_6mpi4py_3MPI__PyMem __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__PyMem
#define __pyx_ptype_6mpi4py_3MPI_buffer __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_buffer
#define __pyx_ptype_6mpi4py_3MPI__p_keyval __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_keyval
#define __pyx_ptype_6mpi4py_3MPI__p_rs __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_rs
#define __pyx_ptype_6mpi4py_3MPI__p_greq __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_greq
#define __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType
#define __pyx_ptype_6mpi4py_3MPI__p_datarep __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_datarep
#define __pyx_ptype_6mpi4py_3MPI_BottomType __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_BottomType
#define __pyx_ptype_6mpi4py_3MPI_InPlaceType __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_InPlaceType
#define __pyx_ptype_6mpi4py_3MPI__p_message __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_message
#define __pyx_ptype_6mpi4py_3MPI__p_msg_p2p __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_p2p
#define __pyx_ptype_6mpi4py_3MPI__p_msg_cco __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_cco
#define __pyx_ptype_6mpi4py_3MPI__p_msg_ccow __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_ccow
#define __pyx_ptype_6mpi4py_3MPI__p_msg_rma __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_rma
#define __pyx_ptype_6mpi4py_3MPI__p_msg_io __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_msg_io
#define __pyx_ptype_6mpi4py_3MPI_Pickle __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Pickle
#define __pyx_ptype_6mpi4py_3MPI__p_req_buf __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_req_buf
#define __pyx_ptype_6mpi4py_3MPI__p_req_obj __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI__p_req_obj
#define __pyx_ptype_6mpi4py_3MPI_RuntimeError __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_RuntimeError
#define __pyx_ptype_6mpi4py_3MPI_Exception __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI_Exception
#define __pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback __pyx_mstate_global->__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback
#define __pyx_n_s_ __pyx_mstate_global->__pyx_n_s_
#define __pyx_kp_b_ __pyx_mstate_global->__pyx_kp_b_
#define __pyx_n_s_AINT __pyx_mstate_global->__pyx_n_s_AINT
#define __pyx_n_s_ANY_SOURCE __pyx_mstate_global->__pyx_n_s_ANY_SOURCE
#define __pyx_n_s_ANY_TAG __pyx_mstate_global->__pyx_n_s_ANY_TAG
#define __pyx_n_s_APPNUM __pyx_mstate_global->__pyx_n_s_APPNUM
#define __pyx_n_s_Abort __pyx_mstate_global->__pyx_n_s_Abort
#define __pyx_n_s_Accept __pyx_mstate_global->__pyx_n_s_Accept
#define __pyx_n_s_Accumulate __pyx_mstate_global->__pyx_n_s_Accumulate
#define __pyx_n_s_Ack_failed __pyx_mstate_global->__pyx_n_s_Ack_failed
#define __pyx_n_s_Add_error_class __pyx_mstate_global->__pyx_n_s_Add_error_class
#define __pyx_n_s_Add_error_code __pyx_mstate_global->__pyx_n_s_Add_error_code
#define __pyx_n_s_Add_error_string __pyx_mstate_global->__pyx_n_s_Add_error_string
#define __pyx_n_s_Agree __pyx_mstate_global->__pyx_n_s_Agree
#define __pyx_n_s_Aint_add __pyx_mstate_global->__pyx_n_s_Aint_add
#define __pyx_n_s_Aint_diff __pyx_mstate_global->__pyx_n_s_Aint_diff
#define __pyx_n_s_Allgather __pyx_mstate_global->__pyx_n_s_Allgather
#define __pyx_n_s_Allgather_init __pyx_mstate_global->__pyx_n_s_Allgather_init
#define __pyx_n_s_Allgatherv __pyx_mstate_global->__pyx_n_s_Allgatherv
#define __pyx_n_s_Allgatherv_init __pyx_mstate_global->__pyx_n_s_Allgatherv_init
#define __pyx_n_s_Alloc_mem __pyx_mstate_global->__pyx_n_s_Alloc_mem
#define __pyx_n_s_Allocate __pyx_mstate_global->__pyx_n_s_Allocate
#define __pyx_n_s_Allocate_shared __pyx_mstate_global->__pyx_n_s_Allocate_shared
#define __pyx_n_s_Allreduce __pyx_mstate_global->__pyx_n_s_Allreduce
#define __pyx_n_s_Allreduce_init __pyx_mstate_global->__pyx_n_s_Allreduce_init
#define __pyx_n_s_Alltoall __pyx_mstate_global->__pyx_n_s_Alltoall
#define __pyx_n_s_Alltoall_init __pyx_mstate_global->__pyx_n_s_Alltoall_init
#define __pyx_n_s_Alltoallv __pyx_mstate_global->__pyx_n_s_Alltoallv
#define __pyx_n_s_Alltoallv_init __pyx_mstate_global->__pyx_n_s_Alltoallv_init
#define __pyx_n_s_Alltoallw __pyx_mstate_global->__pyx_n_s_Alltoallw
#define __pyx_n_s_Alltoallw_init __pyx_mstate_global->__pyx_n_s_Alltoallw_init
#define __pyx_n_s_Any __pyx_mstate_global->__pyx_n_s_Any
#define __pyx_kp_s_Any_None __pyx_mstate_global->__pyx_kp_s_Any_None
#define __pyx_n_s_Attach __pyx_mstate_global->__pyx_n_s_Attach
#define __pyx_n_s_Attach_buffer __pyx_mstate_global->__pyx_n_s_Attach_buffer
#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError
#define __pyx_n_s_BAND __pyx_mstate_global->__pyx_n_s_BAND
#define __pyx_n_s_BOOL __pyx_mstate_global->__pyx_n_s_BOOL
#define __pyx_n_s_BOR __pyx_mstate_global->__pyx_n_s_BOR
#define __pyx_n_s_BOTTOM __pyx_mstate_global->__pyx_n_s_BOTTOM
#define __pyx_n_s_BSEND_OVERHEAD __pyx_mstate_global->__pyx_n_s_BSEND_OVERHEAD
#define __pyx_n_s_BUFFER_AUTOMATIC __pyx_mstate_global->__pyx_n_s_BUFFER_AUTOMATIC
#define __pyx_n_s_BXOR __pyx_mstate_global->__pyx_n_s_BXOR
#define __pyx_n_s_BYTE __pyx_mstate_global->__pyx_n_s_BYTE
#define __pyx_n_s_Barrier __pyx_mstate_global->__pyx_n_s_Barrier
#define __pyx_n_s_Barrier_init __pyx_mstate_global->__pyx_n_s_Barrier_init
#define __pyx_n_s_BaseException __pyx_mstate_global->__pyx_n_s_BaseException
#define __pyx_n_s_Bcast __pyx_mstate_global->__pyx_n_s_Bcast
#define __pyx_n_s_Bcast_init __pyx_mstate_global->__pyx_n_s_Bcast_init
#define __pyx_n_s_BottomType __pyx_mstate_global->__pyx_n_s_BottomType
#define __pyx_n_s_BottomType___reduce __pyx_mstate_global->__pyx_n_s_BottomType___reduce
#define __pyx_n_s_Bsend __pyx_mstate_global->__pyx_n_s_Bsend
#define __pyx_n_s_Bsend_init __pyx_mstate_global->__pyx_n_s_Bsend_init
#define __pyx_n_s_BufSpec __pyx_mstate_global->__pyx_n_s_BufSpec
#define __pyx_n_s_BufSpecB __pyx_mstate_global->__pyx_n_s_BufSpecB
#define __pyx_kp_s_BufSpecB_InPlace __pyx_mstate_global->__pyx_kp_s_BufSpecB_InPlace
#define __pyx_kp_s_BufSpecB_None __pyx_mstate_global->__pyx_kp_s_BufSpecB_None
#define __pyx_n_s_BufSpecV __pyx_mstate_global->__pyx_n_s_BufSpecV
#define __pyx_kp_s_BufSpecV_InPlace __pyx_mstate_global->__pyx_kp_s_BufSpecV_InPlace
#define __pyx_kp_s_BufSpecV_None __pyx_mstate_global->__pyx_kp_s_BufSpecV_None
#define __pyx_n_s_BufSpecW __pyx_mstate_global->__pyx_n_s_BufSpecW
#define __pyx_kp_s_BufSpecW_InPlace __pyx_mstate_global->__pyx_kp_s_BufSpecW_InPlace
#define __pyx_kp_s_BufSpec_BufSpecB __pyx_mstate_global->__pyx_kp_s_BufSpec_BufSpecB
#define __pyx_kp_s_BufSpec_InPlace __pyx_mstate_global->__pyx_kp_s_BufSpec_InPlace
#define __pyx_kp_s_BufSpec_None __pyx_mstate_global->__pyx_kp_s_BufSpec_None
#define __pyx_n_s_Buffer __pyx_mstate_global->__pyx_n_s_Buffer
#define __pyx_n_s_BufferAutomaticType __pyx_mstate_global->__pyx_n_s_BufferAutomaticType
#define __pyx_n_s_BufferAutomaticType___reduce __pyx_mstate_global->__pyx_n_s_BufferAutomaticType___reduce
#define __pyx_n_s_BufferError __pyx_mstate_global->__pyx_n_s_BufferError
#define __pyx_kp_s_Buffer_Bottom __pyx_mstate_global->__pyx_kp_s_Buffer_Bottom
#define __pyx_kp_s_Buffer_None __pyx_mstate_global->__pyx_kp_s_Buffer_None
#define __pyx_n_s_CART __pyx_mstate_global->__pyx_n_s_CART
#define __pyx_n_s_CHAR __pyx_mstate_global->__pyx_n_s_CHAR
#define __pyx_n_s_CHARACTER __pyx_mstate_global->__pyx_n_s_CHARACTER
#define __pyx_n_s_COMBINER_CONTIGUOUS __pyx_mstate_global->__pyx_n_s_COMBINER_CONTIGUOUS
#define __pyx_n_s_COMBINER_DARRAY __pyx_mstate_global->__pyx_n_s_COMBINER_DARRAY
#define __pyx_n_s_COMBINER_DUP __pyx_mstate_global->__pyx_n_s_COMBINER_DUP
#define __pyx_n_s_COMBINER_F90_COMPLEX __pyx_mstate_global->__pyx_n_s_COMBINER_F90_COMPLEX
#define __pyx_n_s_COMBINER_F90_INTEGER __pyx_mstate_global->__pyx_n_s_COMBINER_F90_INTEGER
#define __pyx_n_s_COMBINER_F90_REAL __pyx_mstate_global->__pyx_n_s_COMBINER_F90_REAL
#define __pyx_n_s_COMBINER_HINDEXED __pyx_mstate_global->__pyx_n_s_COMBINER_HINDEXED
#define __pyx_n_s_COMBINER_HINDEXED_BLOCK __pyx_mstate_global->__pyx_n_s_COMBINER_HINDEXED_BLOCK
#define __pyx_n_s_COMBINER_HVECTOR __pyx_mstate_global->__pyx_n_s_COMBINER_HVECTOR
#define __pyx_n_s_COMBINER_INDEXED __pyx_mstate_global->__pyx_n_s_COMBINER_INDEXED
#define __pyx_n_s_COMBINER_INDEXED_BLOCK __pyx_mstate_global->__pyx_n_s_COMBINER_INDEXED_BLOCK
#define __pyx_n_s_COMBINER_NAMED __pyx_mstate_global->__pyx_n_s_COMBINER_NAMED
#define __pyx_n_s_COMBINER_RESIZED __pyx_mstate_global->__pyx_n_s_COMBINER_RESIZED
#define __pyx_n_s_COMBINER_STRUCT __pyx_mstate_global->__pyx_n_s_COMBINER_STRUCT
#define __pyx_n_s_COMBINER_SUBARRAY __pyx_mstate_global->__pyx_n_s_COMBINER_SUBARRAY
#define __pyx_n_s_COMBINER_VALUE_INDEX __pyx_mstate_global->__pyx_n_s_COMBINER_VALUE_INDEX
#define __pyx_n_s_COMBINER_VECTOR __pyx_mstate_global->__pyx_n_s_COMBINER_VECTOR
#define __pyx_n_s_COMM_NULL __pyx_mstate_global->__pyx_n_s_COMM_NULL
#define __pyx_n_s_COMM_SELF __pyx_mstate_global->__pyx_n_s_COMM_SELF
#define __pyx_n_s_COMM_TYPE_HW_GUIDED __pyx_mstate_global->__pyx_n_s_COMM_TYPE_HW_GUIDED
#define __pyx_n_s_COMM_TYPE_HW_UNGUIDED __pyx_mstate_global->__pyx_n_s_COMM_TYPE_HW_UNGUIDED
#define __pyx_n_s_COMM_TYPE_RESOURCE_GUIDED __pyx_mstate_global->__pyx_n_s_COMM_TYPE_RESOURCE_GUIDED
#define __pyx_n_s_COMM_TYPE_SHARED __pyx_mstate_global->__pyx_n_s_COMM_TYPE_SHARED
#define __pyx_n_s_COMM_WORLD __pyx_mstate_global->__pyx_n_s_COMM_WORLD
#define __pyx_n_s_COMPLEX __pyx_mstate_global->__pyx_n_s_COMPLEX
#define __pyx_n_s_COMPLEX16 __pyx_mstate_global->__pyx_n_s_COMPLEX16
#define __pyx_n_s_COMPLEX32 __pyx_mstate_global->__pyx_n_s_COMPLEX32
#define __pyx_n_s_COMPLEX4 __pyx_mstate_global->__pyx_n_s_COMPLEX4
#define __pyx_n_s_COMPLEX8 __pyx_mstate_global->__pyx_n_s_COMPLEX8
#define __pyx_n_s_CONGRUENT __pyx_mstate_global->__pyx_n_s_CONGRUENT
#define __pyx_n_s_CONTIGUOUS __pyx_mstate_global->__pyx_n_s_CONTIGUOUS
#define __pyx_n_s_COUNT __pyx_mstate_global->__pyx_n_s_COUNT
#define __pyx_n_s_CXX_BOOL __pyx_mstate_global->__pyx_n_s_CXX_BOOL
#define __pyx_n_s_CXX_DOUBLE_COMPLEX __pyx_mstate_global->__pyx_n_s_CXX_DOUBLE_COMPLEX
#define __pyx_n_s_CXX_FLOAT_COMPLEX __pyx_mstate_global->__pyx_n_s_CXX_FLOAT_COMPLEX
#define __pyx_n_s_CXX_LONG_DOUBLE_COMPLEX __pyx_mstate_global->__pyx_n_s_CXX_LONG_DOUBLE_COMPLEX
#define __pyx_n_s_C_BOOL __pyx_mstate_global->__pyx_n_s_C_BOOL
#define __pyx_n_s_C_COMPLEX __pyx_mstate_global->__pyx_n_s_C_COMPLEX
#define __pyx_n_s_C_DOUBLE_COMPLEX __pyx_mstate_global->__pyx_n_s_C_DOUBLE_COMPLEX
#define __pyx_n_s_C_FLOAT_COMPLEX __pyx_mstate_global->__pyx_n_s_C_FLOAT_COMPLEX
#define __pyx_n_s_C_LONG_DOUBLE_COMPLEX __pyx_mstate_global->__pyx_n_s_C_LONG_DOUBLE_COMPLEX
#define __pyx_n_s_Call_errhandler __pyx_mstate_global->__pyx_n_s_Call_errhandler
#define __pyx_kp_s_Callable_Buffer_Buffer_Datatype __pyx_mstate_global->__pyx_kp_s_Callable_Buffer_Buffer_Datatype
#define __pyx_kp_s_Callable_Buffer_Datatype_int_Buf __pyx_mstate_global->__pyx_kp_s_Callable_Buffer_Datatype_int_Buf
#define __pyx_kp_s_Callable_Comm_int_Any_Any_None __pyx_mstate_global->__pyx_kp_s_Callable_Comm_int_Any_Any_None
#define __pyx_kp_s_Callable_Comm_int_Any_None_None __pyx_mstate_global->__pyx_kp_s_Callable_Comm_int_Any_None_None
#define __pyx_kp_s_Callable_Comm_int_None __pyx_mstate_global->__pyx_kp_s_Callable_Comm_int_None
#define __pyx_kp_s_Callable_Datatype_int __pyx_mstate_global->__pyx_kp_s_Callable_Datatype_int
#define __pyx_kp_s_Callable_Datatype_int_Any_Any_No __pyx_mstate_global->__pyx_kp_s_Callable_Datatype_int_Any_Any_No
#define __pyx_kp_s_Callable_Datatype_int_Any_None_N __pyx_mstate_global->__pyx_kp_s_Callable_Datatype_int_Any_None_N
#define __pyx_kp_s_Callable_File_int_None __pyx_mstate_global->__pyx_kp_s_Callable_File_int_None
#define __pyx_kp_s_Callable_None_None __pyx_mstate_global->__pyx_kp_s_Callable_None_None
#define __pyx_kp_s_Callable_Session_int_None __pyx_mstate_global->__pyx_kp_s_Callable_Session_int_None
#define __pyx_kp_s_Callable_Win_int_Any_Any_None __pyx_mstate_global->__pyx_kp_s_Callable_Win_int_Any_Any_None
#define __pyx_kp_s_Callable_Win_int_Any_None_None __pyx_mstate_global->__pyx_kp_s_Callable_Win_int_Any_None_None
#define __pyx_kp_s_Callable_Win_int_None __pyx_mstate_global->__pyx_kp_s_Callable_Win_int_None
#define __pyx_n_s_Cancel __pyx_mstate_global->__pyx_n_s_Cancel
#define __pyx_n_s_Cart_map __pyx_mstate_global->__pyx_n_s_Cart_map
#define __pyx_n_s_Cartcomm __pyx_mstate_global->__pyx_n_s_Cartcomm
#define __pyx_n_s_Cartcomm_Get_cart_rank __pyx_mstate_global->__pyx_n_s_Cartcomm_Get_cart_rank
#define __pyx_n_s_Cartcomm_Get_coords __pyx_mstate_global->__pyx_n_s_Cartcomm_Get_coords
#define __pyx_n_s_Cartcomm_Get_dim __pyx_mstate_global->__pyx_n_s_Cartcomm_Get_dim
#define __pyx_n_s_Cartcomm_Get_topo __pyx_mstate_global->__pyx_n_s_Cartcomm_Get_topo
#define __pyx_n_s_Cartcomm_Shift __pyx_mstate_global->__pyx_n_s_Cartcomm_Shift
#define __pyx_n_s_Cartcomm_Sub __pyx_mstate_global->__pyx_n_s_Cartcomm_Sub
#define __pyx_n_s_Clone __pyx_mstate_global->__pyx_n_s_Clone
#define __pyx_n_s_Close __pyx_mstate_global->__pyx_n_s_Close
#define __pyx_n_s_Close_port __pyx_mstate_global->__pyx_n_s_Close_port
#define __pyx_n_s_Comm __pyx_mstate_global->__pyx_n_s_Comm
#define __pyx_n_s_Comm_Abort __pyx_mstate_global->__pyx_n_s_Comm_Abort
#define __pyx_n_s_Comm_Ack_failed __pyx_mstate_global->__pyx_n_s_Comm_Ack_failed
#define __pyx_n_s_Comm_Agree __pyx_mstate_global->__pyx_n_s_Comm_Agree
#define __pyx_n_s_Comm_Allgather __pyx_mstate_global->__pyx_n_s_Comm_Allgather
#define __pyx_n_s_Comm_Allgather_init __pyx_mstate_global->__pyx_n_s_Comm_Allgather_init
#define __pyx_n_s_Comm_Allgatherv __pyx_mstate_global->__pyx_n_s_Comm_Allgatherv
#define __pyx_n_s_Comm_Allgatherv_init __pyx_mstate_global->__pyx_n_s_Comm_Allgatherv_init
#define __pyx_n_s_Comm_Allreduce __pyx_mstate_global->__pyx_n_s_Comm_Allreduce
#define __pyx_n_s_Comm_Allreduce_init __pyx_mstate_global->__pyx_n_s_Comm_Allreduce_init
#define __pyx_n_s_Comm_Alltoall __pyx_mstate_global->__pyx_n_s_Comm_Alltoall
#define __pyx_n_s_Comm_Alltoall_init __pyx_mstate_global->__pyx_n_s_Comm_Alltoall_init
#define __pyx_n_s_Comm_Alltoallv __pyx_mstate_global->__pyx_n_s_Comm_Alltoallv
#define __pyx_n_s_Comm_Alltoallv_init __pyx_mstate_global->__pyx_n_s_Comm_Alltoallv_init
#define __pyx_n_s_Comm_Alltoallw __pyx_mstate_global->__pyx_n_s_Comm_Alltoallw
#define __pyx_n_s_Comm_Alltoallw_init __pyx_mstate_global->__pyx_n_s_Comm_Alltoallw_init
#define __pyx_n_s_Comm_Attach_buffer __pyx_mstate_global->__pyx_n_s_Comm_Attach_buffer
#define __pyx_n_s_Comm_Barrier __pyx_mstate_global->__pyx_n_s_Comm_Barrier
#define __pyx_n_s_Comm_Barrier_init __pyx_mstate_global->__pyx_n_s_Comm_Barrier_init
#define __pyx_n_s_Comm_Bcast __pyx_mstate_global->__pyx_n_s_Comm_Bcast
#define __pyx_n_s_Comm_Bcast_init __pyx_mstate_global->__pyx_n_s_Comm_Bcast_init
#define __pyx_n_s_Comm_Bsend __pyx_mstate_global->__pyx_n_s_Comm_Bsend
#define __pyx_n_s_Comm_Bsend_init __pyx_mstate_global->__pyx_n_s_Comm_Bsend_init
#define __pyx_n_s_Comm_Call_errhandler __pyx_mstate_global->__pyx_n_s_Comm_Call_errhandler
#define __pyx_n_s_Comm_Clone __pyx_mstate_global->__pyx_n_s_Comm_Clone
#define __pyx_n_s_Comm_Compare __pyx_mstate_global->__pyx_n_s_Comm_Compare
#define __pyx_n_s_Comm_Create __pyx_mstate_global->__pyx_n_s_Comm_Create
#define __pyx_n_s_Comm_Create_errhandler __pyx_mstate_global->__pyx_n_s_Comm_Create_errhandler
#define __pyx_n_s_Comm_Create_keyval __pyx_mstate_global->__pyx_n_s_Comm_Create_keyval
#define __pyx_n_s_Comm_Delete_attr __pyx_mstate_global->__pyx_n_s_Comm_Delete_attr
#define __pyx_n_s_Comm_Detach_buffer __pyx_mstate_global->__pyx_n_s_Comm_Detach_buffer
#define __pyx_n_s_Comm_Disconnect __pyx_mstate_global->__pyx_n_s_Comm_Disconnect
#define __pyx_n_s_Comm_Dup __pyx_mstate_global->__pyx_n_s_Comm_Dup
#define __pyx_n_s_Comm_Dup_with_info __pyx_mstate_global->__pyx_n_s_Comm_Dup_with_info
#define __pyx_n_s_Comm_Flush_buffer __pyx_mstate_global->__pyx_n_s_Comm_Flush_buffer
#define __pyx_n_s_Comm_Free __pyx_mstate_global->__pyx_n_s_Comm_Free
#define __pyx_n_s_Comm_Free_keyval __pyx_mstate_global->__pyx_n_s_Comm_Free_keyval
#define __pyx_n_s_Comm_Gather __pyx_mstate_global->__pyx_n_s_Comm_Gather
#define __pyx_n_s_Comm_Gather_init __pyx_mstate_global->__pyx_n_s_Comm_Gather_init
#define __pyx_n_s_Comm_Gatherv __pyx_mstate_global->__pyx_n_s_Comm_Gatherv
#define __pyx_n_s_Comm_Gatherv_init __pyx_mstate_global->__pyx_n_s_Comm_Gatherv_init
#define __pyx_n_s_Comm_Get_attr __pyx_mstate_global->__pyx_n_s_Comm_Get_attr
#define __pyx_n_s_Comm_Get_errhandler __pyx_mstate_global->__pyx_n_s_Comm_Get_errhandler
#define __pyx_n_s_Comm_Get_failed __pyx_mstate_global->__pyx_n_s_Comm_Get_failed
#define __pyx_n_s_Comm_Get_group __pyx_mstate_global->__pyx_n_s_Comm_Get_group
#define __pyx_n_s_Comm_Get_info __pyx_mstate_global->__pyx_n_s_Comm_Get_info
#define __pyx_n_s_Comm_Get_name __pyx_mstate_global->__pyx_n_s_Comm_Get_name
#define __pyx_n_s_Comm_Get_parent __pyx_mstate_global->__pyx_n_s_Comm_Get_parent
#define __pyx_n_s_Comm_Get_rank __pyx_mstate_global->__pyx_n_s_Comm_Get_rank
#define __pyx_n_s_Comm_Get_size __pyx_mstate_global->__pyx_n_s_Comm_Get_size
#define __pyx_n_s_Comm_Get_topology __pyx_mstate_global->__pyx_n_s_Comm_Get_topology
#define __pyx_n_s_Comm_Iagree __pyx_mstate_global->__pyx_n_s_Comm_Iagree
#define __pyx_n_s_Comm_Iallgather __pyx_mstate_global->__pyx_n_s_Comm_Iallgather
#define __pyx_n_s_Comm_Iallgatherv __pyx_mstate_global->__pyx_n_s_Comm_Iallgatherv
#define __pyx_n_s_Comm_Iallreduce __pyx_mstate_global->__pyx_n_s_Comm_Iallreduce
#define __pyx_n_s_Comm_Ialltoall __pyx_mstate_global->__pyx_n_s_Comm_Ialltoall
#define __pyx_n_s_Comm_Ialltoallv __pyx_mstate_global->__pyx_n_s_Comm_Ialltoallv
#define __pyx_n_s_Comm_Ialltoallw __pyx_mstate_global->__pyx_n_s_Comm_Ialltoallw
#define __pyx_n_s_Comm_Ibarrier __pyx_mstate_global->__pyx_n_s_Comm_Ibarrier
#define __pyx_n_s_Comm_Ibcast __pyx_mstate_global->__pyx_n_s_Comm_Ibcast
#define __pyx_n_s_Comm_Ibsend __pyx_mstate_global->__pyx_n_s_Comm_Ibsend
#define __pyx_n_s_Comm_Idup __pyx_mstate_global->__pyx_n_s_Comm_Idup
#define __pyx_n_s_Comm_Idup_with_info __pyx_mstate_global->__pyx_n_s_Comm_Idup_with_info
#define __pyx_n_s_Comm_Iflush_buffer __pyx_mstate_global->__pyx_n_s_Comm_Iflush_buffer
#define __pyx_n_s_Comm_Igather __pyx_mstate_global->__pyx_n_s_Comm_Igather
#define __pyx_n_s_Comm_Igatherv __pyx_mstate_global->__pyx_n_s_Comm_Igatherv
#define __pyx_n_s_Comm_Improbe __pyx_mstate_global->__pyx_n_s_Comm_Improbe
#define __pyx_n_s_Comm_Iprobe __pyx_mstate_global->__pyx_n_s_Comm_Iprobe
#define __pyx_n_s_Comm_Irecv __pyx_mstate_global->__pyx_n_s_Comm_Irecv
#define __pyx_n_s_Comm_Ireduce __pyx_mstate_global->__pyx_n_s_Comm_Ireduce
#define __pyx_n_s_Comm_Ireduce_scatter __pyx_mstate_global->__pyx_n_s_Comm_Ireduce_scatter
#define __pyx_n_s_Comm_Ireduce_scatter_block __pyx_mstate_global->__pyx_n_s_Comm_Ireduce_scatter_block
#define __pyx_n_s_Comm_Irsend __pyx_mstate_global->__pyx_n_s_Comm_Irsend
#define __pyx_n_s_Comm_Is_inter __pyx_mstate_global->__pyx_n_s_Comm_Is_inter
#define __pyx_n_s_Comm_Is_intra __pyx_mstate_global->__pyx_n_s_Comm_Is_intra
#define __pyx_n_s_Comm_Is_revoked __pyx_mstate_global->__pyx_n_s_Comm_Is_revoked
#define __pyx_n_s_Comm_Iscatter __pyx_mstate_global->__pyx_n_s_Comm_Iscatter
#define __pyx_n_s_Comm_Iscatterv __pyx_mstate_global->__pyx_n_s_Comm_Iscatterv
#define __pyx_n_s_Comm_Isend __pyx_mstate_global->__pyx_n_s_Comm_Isend
#define __pyx_n_s_Comm_Isendrecv __pyx_mstate_global->__pyx_n_s_Comm_Isendrecv
#define __pyx_n_s_Comm_Isendrecv_replace __pyx_mstate_global->__pyx_n_s_Comm_Isendrecv_replace
#define __pyx_n_s_Comm_Ishrink __pyx_mstate_global->__pyx_n_s_Comm_Ishrink
#define __pyx_n_s_Comm_Issend __pyx_mstate_global->__pyx_n_s_Comm_Issend
#define __pyx_n_s_Comm_Join __pyx_mstate_global->__pyx_n_s_Comm_Join
#define __pyx_n_s_Comm_Mprobe __pyx_mstate_global->__pyx_n_s_Comm_Mprobe
#define __pyx_n_s_Comm_Precv_init __pyx_mstate_global->__pyx_n_s_Comm_Precv_init
#define __pyx_n_s_Comm_Probe __pyx_mstate_global->__pyx_n_s_Comm_Probe
#define __pyx_n_s_Comm_Psend_init __pyx_mstate_global->__pyx_n_s_Comm_Psend_init
#define __pyx_n_s_Comm_Recv __pyx_mstate_global->__pyx_n_s_Comm_Recv
#define __pyx_n_s_Comm_Recv_init __pyx_mstate_global->__pyx_n_s_Comm_Recv_init
#define __pyx_n_s_Comm_Reduce __pyx_mstate_global->__pyx_n_s_Comm_Reduce
#define __pyx_n_s_Comm_Reduce_init __pyx_mstate_global->__pyx_n_s_Comm_Reduce_init
#define __pyx_n_s_Comm_Reduce_scatter __pyx_mstate_global->__pyx_n_s_Comm_Reduce_scatter
#define __pyx_n_s_Comm_Reduce_scatter_block __pyx_mstate_global->__pyx_n_s_Comm_Reduce_scatter_block
#define __pyx_n_s_Comm_Reduce_scatter_block_init __pyx_mstate_global->__pyx_n_s_Comm_Reduce_scatter_block_init
#define __pyx_n_s_Comm_Reduce_scatter_init __pyx_mstate_global->__pyx_n_s_Comm_Reduce_scatter_init
#define __pyx_n_s_Comm_Revoke __pyx_mstate_global->__pyx_n_s_Comm_Revoke
#define __pyx_n_s_Comm_Rsend __pyx_mstate_global->__pyx_n_s_Comm_Rsend
#define __pyx_n_s_Comm_Rsend_init __pyx_mstate_global->__pyx_n_s_Comm_Rsend_init
#define __pyx_n_s_Comm_Scatter __pyx_mstate_global->__pyx_n_s_Comm_Scatter
#define __pyx_n_s_Comm_Scatter_init __pyx_mstate_global->__pyx_n_s_Comm_Scatter_init
#define __pyx_n_s_Comm_Scatterv __pyx_mstate_global->__pyx_n_s_Comm_Scatterv
#define __pyx_n_s_Comm_Scatterv_init __pyx_mstate_global->__pyx_n_s_Comm_Scatterv_init
#define __pyx_n_s_Comm_Send __pyx_mstate_global->__pyx_n_s_Comm_Send
#define __pyx_n_s_Comm_Send_init __pyx_mstate_global->__pyx_n_s_Comm_Send_init
#define __pyx_n_s_Comm_Sendrecv __pyx_mstate_global->__pyx_n_s_Comm_Sendrecv
#define __pyx_n_s_Comm_Sendrecv_replace __pyx_mstate_global->__pyx_n_s_Comm_Sendrecv_replace
#define __pyx_n_s_Comm_Set_attr __pyx_mstate_global->__pyx_n_s_Comm_Set_attr
#define __pyx_n_s_Comm_Set_errhandler __pyx_mstate_global->__pyx_n_s_Comm_Set_errhandler
#define __pyx_n_s_Comm_Set_info __pyx_mstate_global->__pyx_n_s_Comm_Set_info
#define __pyx_n_s_Comm_Set_name __pyx_mstate_global->__pyx_n_s_Comm_Set_name
#define __pyx_n_s_Comm_Shrink __pyx_mstate_global->__pyx_n_s_Comm_Shrink
#define __pyx_n_s_Comm_Split __pyx_mstate_global->__pyx_n_s_Comm_Split
#define __pyx_n_s_Comm_Split_type __pyx_mstate_global->__pyx_n_s_Comm_Split_type
#define __pyx_n_s_Comm_Ssend __pyx_mstate_global->__pyx_n_s_Comm_Ssend
#define __pyx_n_s_Comm_Ssend_init __pyx_mstate_global->__pyx_n_s_Comm_Ssend_init
#define __pyx_n_s_Comm___reduce __pyx_mstate_global->__pyx_n_s_Comm___reduce
#define __pyx_n_s_Comm_allgather __pyx_mstate_global->__pyx_n_s_Comm_allgather
#define __pyx_n_s_Comm_allreduce __pyx_mstate_global->__pyx_n_s_Comm_allreduce
#define __pyx_n_s_Comm_alltoall __pyx_mstate_global->__pyx_n_s_Comm_alltoall
#define __pyx_n_s_Comm_barrier __pyx_mstate_global->__pyx_n_s_Comm_barrier
#define __pyx_n_s_Comm_bcast __pyx_mstate_global->__pyx_n_s_Comm_bcast
#define __pyx_n_s_Comm_bsend __pyx_mstate_global->__pyx_n_s_Comm_bsend
#define __pyx_n_s_Comm_f2py __pyx_mstate_global->__pyx_n_s_Comm_f2py
#define __pyx_n_s_Comm_free __pyx_mstate_global->__pyx_n_s_Comm_free
#define __pyx_n_s_Comm_fromhandle __pyx_mstate_global->__pyx_n_s_Comm_fromhandle
#define __pyx_n_s_Comm_gather __pyx_mstate_global->__pyx_n_s_Comm_gather
#define __pyx_n_s_Comm_ibsend __pyx_mstate_global->__pyx_n_s_Comm_ibsend
#define __pyx_n_s_Comm_improbe __pyx_mstate_global->__pyx_n_s_Comm_improbe
#define __pyx_n_s_Comm_iprobe __pyx_mstate_global->__pyx_n_s_Comm_iprobe
#define __pyx_n_s_Comm_irecv __pyx_mstate_global->__pyx_n_s_Comm_irecv
#define __pyx_n_s_Comm_isend __pyx_mstate_global->__pyx_n_s_Comm_isend
#define __pyx_n_s_Comm_issend __pyx_mstate_global->__pyx_n_s_Comm_issend
#define __pyx_n_s_Comm_mprobe __pyx_mstate_global->__pyx_n_s_Comm_mprobe
#define __pyx_n_s_Comm_probe __pyx_mstate_global->__pyx_n_s_Comm_probe
#define __pyx_n_s_Comm_py2f __pyx_mstate_global->__pyx_n_s_Comm_py2f
#define __pyx_n_s_Comm_recv __pyx_mstate_global->__pyx_n_s_Comm_recv
#define __pyx_n_s_Comm_reduce __pyx_mstate_global->__pyx_n_s_Comm_reduce
#define __pyx_n_s_Comm_scatter __pyx_mstate_global->__pyx_n_s_Comm_scatter
#define __pyx_n_s_Comm_send __pyx_mstate_global->__pyx_n_s_Comm_send
#define __pyx_n_s_Comm_sendrecv __pyx_mstate_global->__pyx_n_s_Comm_sendrecv
#define __pyx_n_s_Comm_ssend __pyx_mstate_global->__pyx_n_s_Comm_ssend
#define __pyx_n_s_Commit __pyx_mstate_global->__pyx_n_s_Commit
#define __pyx_n_s_Compare __pyx_mstate_global->__pyx_n_s_Compare
#define __pyx_n_s_Compare_and_swap __pyx_mstate_global->__pyx_n_s_Compare_and_swap
#define __pyx_n_s_Complete __pyx_mstate_global->__pyx_n_s_Complete
#define __pyx_n_s_Compute_dims __pyx_mstate_global->__pyx_n_s_Compute_dims
#define __pyx_n_s_Connect __pyx_mstate_global->__pyx_n_s_Connect
#define __pyx_n_s_Create __pyx_mstate_global->__pyx_n_s_Create
#define __pyx_n_u_Create_2 __pyx_mstate_global->__pyx_n_u_Create_2
#define __pyx_n_s_Create_cart __pyx_mstate_global->__pyx_n_s_Create_cart
#define __pyx_n_s_Create_contiguous __pyx_mstate_global->__pyx_n_s_Create_contiguous
#define __pyx_n_s_Create_darray __pyx_mstate_global->__pyx_n_s_Create_darray
#define __pyx_n_s_Create_dist_graph __pyx_mstate_global->__pyx_n_s_Create_dist_graph
#define __pyx_n_s_Create_dist_graph_adjacent __pyx_mstate_global->__pyx_n_s_Create_dist_graph_adjacent
#define __pyx_n_s_Create_dup __pyx_mstate_global->__pyx_n_s_Create_dup
#define __pyx_n_s_Create_dynamic __pyx_mstate_global->__pyx_n_s_Create_dynamic
#define __pyx_n_s_Create_env __pyx_mstate_global->__pyx_n_s_Create_env
#define __pyx_n_s_Create_errhandler __pyx_mstate_global->__pyx_n_s_Create_errhandler
#define __pyx_n_s_Create_f90_complex __pyx_mstate_global->__pyx_n_s_Create_f90_complex
#define __pyx_n_s_Create_f90_integer __pyx_mstate_global->__pyx_n_s_Create_f90_integer
#define __pyx_n_s_Create_f90_real __pyx_mstate_global->__pyx_n_s_Create_f90_real
#define __pyx_n_s_Create_from_group __pyx_mstate_global->__pyx_n_s_Create_from_group
#define __pyx_n_s_Create_from_groups __pyx_mstate_global->__pyx_n_s_Create_from_groups
#define __pyx_n_s_Create_from_session_pset __pyx_mstate_global->__pyx_n_s_Create_from_session_pset
#define __pyx_n_s_Create_graph __pyx_mstate_global->__pyx_n_s_Create_graph
#define __pyx_n_s_Create_group __pyx_mstate_global->__pyx_n_s_Create_group
#define __pyx_n_s_Create_hindexed __pyx_mstate_global->__pyx_n_s_Create_hindexed
#define __pyx_n_s_Create_hindexed_block __pyx_mstate_global->__pyx_n_s_Create_hindexed_block
#define __pyx_n_s_Create_hvector __pyx_mstate_global->__pyx_n_s_Create_hvector
#define __pyx_n_s_Create_indexed __pyx_mstate_global->__pyx_n_s_Create_indexed
#define __pyx_n_s_Create_indexed_block __pyx_mstate_global->__pyx_n_s_Create_indexed_block
#define __pyx_n_s_Create_intercomm __pyx_mstate_global->__pyx_n_s_Create_intercomm
#define __pyx_n_s_Create_keyval __pyx_mstate_global->__pyx_n_s_Create_keyval
#define __pyx_n_s_Create_resized __pyx_mstate_global->__pyx_n_s_Create_resized
#define __pyx_n_s_Create_struct __pyx_mstate_global->__pyx_n_s_Create_struct
#define __pyx_n_s_Create_subarray __pyx_mstate_global->__pyx_n_s_Create_subarray
#define __pyx_n_s_Create_vector __pyx_mstate_global->__pyx_n_s_Create_vector
#define __pyx_n_s_DARRAY __pyx_mstate_global->__pyx_n_s_DARRAY
#define __pyx_n_s_DATATYPE_NULL __pyx_mstate_global->__pyx_n_s_DATATYPE_NULL
#define __pyx_n_s_DISPLACEMENT_CURRENT __pyx_mstate_global->__pyx_n_s_DISPLACEMENT_CURRENT
#define __pyx_n_s_DISP_CUR __pyx_mstate_global->__pyx_n_s_DISP_CUR
#define __pyx_n_s_DISTRIBUTE_BLOCK __pyx_mstate_global->__pyx_n_s_DISTRIBUTE_BLOCK
#define __pyx_n_s_DISTRIBUTE_CYCLIC __pyx_mstate_global->__pyx_n_s_DISTRIBUTE_CYCLIC
#define __pyx_n_s_DISTRIBUTE_DFLT_DARG __pyx_mstate_global->__pyx_n_s_DISTRIBUTE_DFLT_DARG
#define __pyx_n_s_DISTRIBUTE_NONE __pyx_mstate_global->__pyx_n_s_DISTRIBUTE_NONE
#define __pyx_n_s_DIST_GRAPH __pyx_mstate_global->__pyx_n_s_DIST_GRAPH
#define __pyx_n_s_DOUBLE __pyx_mstate_global->__pyx_n_s_DOUBLE
#define __pyx_n_s_DOUBLE_COMPLEX __pyx_mstate_global->__pyx_n_s_DOUBLE_COMPLEX
#define __pyx_n_s_DOUBLE_INT __pyx_mstate_global->__pyx_n_s_DOUBLE_INT
#define __pyx_n_s_DOUBLE_PRECISION __pyx_mstate_global->__pyx_n_s_DOUBLE_PRECISION
#define __pyx_n_s_DUP __pyx_mstate_global->__pyx_n_s_DUP
#define __pyx_n_s_Datatype __pyx_mstate_global->__pyx_n_s_Datatype
#define __pyx_n_s_Datatype_Commit __pyx_mstate_global->__pyx_n_s_Datatype_Commit
#define __pyx_n_s_Datatype_Create_contiguous __pyx_mstate_global->__pyx_n_s_Datatype_Create_contiguous
#define __pyx_n_s_Datatype_Create_darray __pyx_mstate_global->__pyx_n_s_Datatype_Create_darray
#define __pyx_n_s_Datatype_Create_f90_complex __pyx_mstate_global->__pyx_n_s_Datatype_Create_f90_complex
#define __pyx_n_s_Datatype_Create_f90_integer __pyx_mstate_global->__pyx_n_s_Datatype_Create_f90_integer
#define __pyx_n_s_Datatype_Create_f90_real __pyx_mstate_global->__pyx_n_s_Datatype_Create_f90_real
#define __pyx_n_s_Datatype_Create_hindexed __pyx_mstate_global->__pyx_n_s_Datatype_Create_hindexed
#define __pyx_n_s_Datatype_Create_hindexed_block __pyx_mstate_global->__pyx_n_s_Datatype_Create_hindexed_block
#define __pyx_n_s_Datatype_Create_hvector __pyx_mstate_global->__pyx_n_s_Datatype_Create_hvector
#define __pyx_n_s_Datatype_Create_indexed __pyx_mstate_global->__pyx_n_s_Datatype_Create_indexed
#define __pyx_n_s_Datatype_Create_indexed_block __pyx_mstate_global->__pyx_n_s_Datatype_Create_indexed_block
#define __pyx_n_s_Datatype_Create_keyval __pyx_mstate_global->__pyx_n_s_Datatype_Create_keyval
#define __pyx_n_s_Datatype_Create_resized __pyx_mstate_global->__pyx_n_s_Datatype_Create_resized
#define __pyx_n_s_Datatype_Create_struct __pyx_mstate_global->__pyx_n_s_Datatype_Create_struct
#define __pyx_n_s_Datatype_Create_subarray __pyx_mstate_global->__pyx_n_s_Datatype_Create_subarray
#define __pyx_n_s_Datatype_Create_vector __pyx_mstate_global->__pyx_n_s_Datatype_Create_vector
#define __pyx_n_s_Datatype_Delete_attr __pyx_mstate_global->__pyx_n_s_Datatype_Delete_attr
#define __pyx_n_s_Datatype_Dup __pyx_mstate_global->__pyx_n_s_Datatype_Dup
#define __pyx_n_s_Datatype_Free __pyx_mstate_global->__pyx_n_s_Datatype_Free
#define __pyx_n_s_Datatype_Free_keyval __pyx_mstate_global->__pyx_n_s_Datatype_Free_keyval
#define __pyx_n_s_Datatype_Get_attr __pyx_mstate_global->__pyx_n_s_Datatype_Get_attr
#define __pyx_n_s_Datatype_Get_contents __pyx_mstate_global->__pyx_n_s_Datatype_Get_contents
#define __pyx_n_s_Datatype_Get_envelope __pyx_mstate_global->__pyx_n_s_Datatype_Get_envelope
#define __pyx_n_s_Datatype_Get_extent __pyx_mstate_global->__pyx_n_s_Datatype_Get_extent
#define __pyx_n_s_Datatype_Get_name __pyx_mstate_global->__pyx_n_s_Datatype_Get_name
#define __pyx_n_s_Datatype_Get_size __pyx_mstate_global->__pyx_n_s_Datatype_Get_size
#define __pyx_n_s_Datatype_Get_true_extent __pyx_mstate_global->__pyx_n_s_Datatype_Get_true_extent
#define __pyx_n_s_Datatype_Get_value_index __pyx_mstate_global->__pyx_n_s_Datatype_Get_value_index
#define __pyx_n_s_Datatype_Match_size __pyx_mstate_global->__pyx_n_s_Datatype_Match_size
#define __pyx_kp_s_Datatype_None __pyx_mstate_global->__pyx_kp_s_Datatype_None
#define __pyx_n_s_Datatype_Pack __pyx_mstate_global->__pyx_n_s_Datatype_Pack
#define __pyx_n_s_Datatype_Pack_external __pyx_mstate_global->__pyx_n_s_Datatype_Pack_external
#define __pyx_n_s_Datatype_Pack_external_size __pyx_mstate_global->__pyx_n_s_Datatype_Pack_external_size
#define __pyx_n_s_Datatype_Pack_size __pyx_mstate_global->__pyx_n_s_Datatype_Pack_size
#define __pyx_n_s_Datatype_Set_attr __pyx_mstate_global->__pyx_n_s_Datatype_Set_attr
#define __pyx_n_s_Datatype_Set_name __pyx_mstate_global->__pyx_n_s_Datatype_Set_name
#define __pyx_n_s_Datatype_Unpack __pyx_mstate_global->__pyx_n_s_Datatype_Unpack
#define __pyx_n_s_Datatype_Unpack_external __pyx_mstate_global->__pyx_n_s_Datatype_Unpack_external
#define __pyx_n_s_Datatype___reduce __pyx_mstate_global->__pyx_n_s_Datatype___reduce
#define __pyx_n_s_Datatype_decode __pyx_mstate_global->__pyx_n_s_Datatype_decode
#define __pyx_n_s_Datatype_f2py __pyx_mstate_global->__pyx_n_s_Datatype_f2py
#define __pyx_n_s_Datatype_free __pyx_mstate_global->__pyx_n_s_Datatype_free
#define __pyx_n_s_Datatype_fromcode __pyx_mstate_global->__pyx_n_s_Datatype_fromcode
#define __pyx_n_s_Datatype_fromhandle __pyx_mstate_global->__pyx_n_s_Datatype_fromhandle
#define __pyx_n_s_Datatype_py2f __pyx_mstate_global->__pyx_n_s_Datatype_py2f
#define __pyx_n_s_Datatype_tocode __pyx_mstate_global->__pyx_n_s_Datatype_tocode
#define __pyx_n_s_Delete __pyx_mstate_global->__pyx_n_s_Delete
#define __pyx_n_s_Delete_attr __pyx_mstate_global->__pyx_n_s_Delete_attr
#define __pyx_n_s_Detach __pyx_mstate_global->__pyx_n_s_Detach
#define __pyx_n_s_Detach_buffer __pyx_mstate_global->__pyx_n_s_Detach_buffer
#define __pyx_n_s_Difference __pyx_mstate_global->__pyx_n_s_Difference
#define __pyx_n_s_Disconnect __pyx_mstate_global->__pyx_n_s_Disconnect
#define __pyx_n_s_Distgraphcomm __pyx_mstate_global->__pyx_n_s_Distgraphcomm
#define __pyx_n_s_Distgraphcomm_Get_dist_neighbors __pyx_mstate_global->__pyx_n_s_Distgraphcomm_Get_dist_neighbors
#define __pyx_n_s_Distgraphcomm_Get_dist_neighbors_2 __pyx_mstate_global->__pyx_n_s_Distgraphcomm_Get_dist_neighbors_2
#define __pyx_n_s_Dup __pyx_mstate_global->__pyx_n_s_Dup
#define __pyx_n_s_Dup_with_info __pyx_mstate_global->__pyx_n_s_Dup_with_info
#define __pyx_n_s_ERRHANDLER_NULL __pyx_mstate_global->__pyx_n_s_ERRHANDLER_NULL
#define __pyx_n_s_ERRORS_ABORT __pyx_mstate_global->__pyx_n_s_ERRORS_ABORT
#define __pyx_n_s_ERRORS_ARE_FATAL __pyx_mstate_global->__pyx_n_s_ERRORS_ARE_FATAL
#define __pyx_n_s_ERRORS_RETURN __pyx_mstate_global->__pyx_n_s_ERRORS_RETURN
#define __pyx_n_s_ERR_ACCESS __pyx_mstate_global->__pyx_n_s_ERR_ACCESS
#define __pyx_n_s_ERR_AMODE __pyx_mstate_global->__pyx_n_s_ERR_AMODE
#define __pyx_n_s_ERR_ARG __pyx_mstate_global->__pyx_n_s_ERR_ARG
#define __pyx_n_s_ERR_ASSERT __pyx_mstate_global->__pyx_n_s_ERR_ASSERT
#define __pyx_n_s_ERR_BAD_FILE __pyx_mstate_global->__pyx_n_s_ERR_BAD_FILE
#define __pyx_n_s_ERR_BASE __pyx_mstate_global->__pyx_n_s_ERR_BASE
#define __pyx_n_s_ERR_BUFFER __pyx_mstate_global->__pyx_n_s_ERR_BUFFER
#define __pyx_n_s_ERR_COMM __pyx_mstate_global->__pyx_n_s_ERR_COMM
#define __pyx_n_s_ERR_CONVERSION __pyx_mstate_global->__pyx_n_s_ERR_CONVERSION
#define __pyx_n_s_ERR_COUNT __pyx_mstate_global->__pyx_n_s_ERR_COUNT
#define __pyx_n_s_ERR_DIMS __pyx_mstate_global->__pyx_n_s_ERR_DIMS
#define __pyx_n_s_ERR_DISP __pyx_mstate_global->__pyx_n_s_ERR_DISP
#define __pyx_n_s_ERR_DUP_DATAREP __pyx_mstate_global->__pyx_n_s_ERR_DUP_DATAREP
#define __pyx_n_s_ERR_ERRHANDLER __pyx_mstate_global->__pyx_n_s_ERR_ERRHANDLER
#define __pyx_n_s_ERR_FILE __pyx_mstate_global->__pyx_n_s_ERR_FILE
#define __pyx_n_s_ERR_FILE_EXISTS __pyx_mstate_global->__pyx_n_s_ERR_FILE_EXISTS
#define __pyx_n_s_ERR_FILE_IN_USE __pyx_mstate_global->__pyx_n_s_ERR_FILE_IN_USE
#define __pyx_n_s_ERR_GROUP __pyx_mstate_global->__pyx_n_s_ERR_GROUP
#define __pyx_n_s_ERR_INFO __pyx_mstate_global->__pyx_n_s_ERR_INFO
#define __pyx_n_s_ERR_INFO_KEY __pyx_mstate_global->__pyx_n_s_ERR_INFO_KEY
#define __pyx_n_s_ERR_INFO_NOKEY __pyx_mstate_global->__pyx_n_s_ERR_INFO_NOKEY
#define __pyx_n_s_ERR_INFO_VALUE __pyx_mstate_global->__pyx_n_s_ERR_INFO_VALUE
#define __pyx_n_s_ERR_INTERN __pyx_mstate_global->__pyx_n_s_ERR_INTERN
#define __pyx_n_s_ERR_IN_STATUS __pyx_mstate_global->__pyx_n_s_ERR_IN_STATUS
#define __pyx_n_s_ERR_IO __pyx_mstate_global->__pyx_n_s_ERR_IO
#define __pyx_n_s_ERR_KEYVAL __pyx_mstate_global->__pyx_n_s_ERR_KEYVAL
#define __pyx_n_s_ERR_LASTCODE __pyx_mstate_global->__pyx_n_s_ERR_LASTCODE
#define __pyx_n_s_ERR_LOCKTYPE __pyx_mstate_global->__pyx_n_s_ERR_LOCKTYPE
#define __pyx_n_s_ERR_NAME __pyx_mstate_global->__pyx_n_s_ERR_NAME
#define __pyx_n_s_ERR_NOT_SAME __pyx_mstate_global->__pyx_n_s_ERR_NOT_SAME
#define __pyx_n_s_ERR_NO_MEM __pyx_mstate_global->__pyx_n_s_ERR_NO_MEM
#define __pyx_n_s_ERR_NO_SPACE __pyx_mstate_global->__pyx_n_s_ERR_NO_SPACE
#define __pyx_n_s_ERR_NO_SUCH_FILE __pyx_mstate_global->__pyx_n_s_ERR_NO_SUCH_FILE
#define __pyx_n_s_ERR_OP __pyx_mstate_global->__pyx_n_s_ERR_OP
#define __pyx_n_s_ERR_OTHER __pyx_mstate_global->__pyx_n_s_ERR_OTHER
#define __pyx_n_s_ERR_PENDING __pyx_mstate_global->__pyx_n_s_ERR_PENDING
#define __pyx_n_s_ERR_PORT __pyx_mstate_global->__pyx_n_s_ERR_PORT
#define __pyx_n_s_ERR_PROC_ABORTED __pyx_mstate_global->__pyx_n_s_ERR_PROC_ABORTED
#define __pyx_n_s_ERR_PROC_FAILED __pyx_mstate_global->__pyx_n_s_ERR_PROC_FAILED
#define __pyx_n_s_ERR_PROC_FAILED_PENDING __pyx_mstate_global->__pyx_n_s_ERR_PROC_FAILED_PENDING
#define __pyx_n_s_ERR_QUOTA __pyx_mstate_global->__pyx_n_s_ERR_QUOTA
#define __pyx_n_s_ERR_RANK __pyx_mstate_global->__pyx_n_s_ERR_RANK
#define __pyx_n_s_ERR_READ_ONLY __pyx_mstate_global->__pyx_n_s_ERR_READ_ONLY
#define __pyx_n_s_ERR_REQUEST __pyx_mstate_global->__pyx_n_s_ERR_REQUEST
#define __pyx_n_s_ERR_REVOKED __pyx_mstate_global->__pyx_n_s_ERR_REVOKED
#define __pyx_n_s_ERR_RMA_ATTACH __pyx_mstate_global->__pyx_n_s_ERR_RMA_ATTACH
#define __pyx_n_s_ERR_RMA_CONFLICT __pyx_mstate_global->__pyx_n_s_ERR_RMA_CONFLICT
#define __pyx_n_s_ERR_RMA_FLAVOR __pyx_mstate_global->__pyx_n_s_ERR_RMA_FLAVOR
#define __pyx_n_s_ERR_RMA_RANGE __pyx_mstate_global->__pyx_n_s_ERR_RMA_RANGE
#define __pyx_n_s_ERR_RMA_SHARED __pyx_mstate_global->__pyx_n_s_ERR_RMA_SHARED
#define __pyx_n_s_ERR_RMA_SYNC __pyx_mstate_global->__pyx_n_s_ERR_RMA_SYNC
#define __pyx_n_s_ERR_ROOT __pyx_mstate_global->__pyx_n_s_ERR_ROOT
#define __pyx_n_s_ERR_SERVICE __pyx_mstate_global->__pyx_n_s_ERR_SERVICE
#define __pyx_n_s_ERR_SESSION __pyx_mstate_global->__pyx_n_s_ERR_SESSION
#define __pyx_n_s_ERR_SIZE __pyx_mstate_global->__pyx_n_s_ERR_SIZE
#define __pyx_n_s_ERR_SPAWN __pyx_mstate_global->__pyx_n_s_ERR_SPAWN
#define __pyx_n_s_ERR_TAG __pyx_mstate_global->__pyx_n_s_ERR_TAG
#define __pyx_n_s_ERR_TOPOLOGY __pyx_mstate_global->__pyx_n_s_ERR_TOPOLOGY
#define __pyx_n_s_ERR_TRUNCATE __pyx_mstate_global->__pyx_n_s_ERR_TRUNCATE
#define __pyx_n_s_ERR_TYPE __pyx_mstate_global->__pyx_n_s_ERR_TYPE
#define __pyx_n_s_ERR_UNKNOWN __pyx_mstate_global->__pyx_n_s_ERR_UNKNOWN
#define __pyx_n_s_ERR_UNSUPPORTED_DATAREP __pyx_mstate_global->__pyx_n_s_ERR_UNSUPPORTED_DATAREP
#define __pyx_n_s_ERR_UNSUPPORTED_OPERATION __pyx_mstate_global->__pyx_n_s_ERR_UNSUPPORTED_OPERATION
#define __pyx_n_s_ERR_VALUE_TOO_LARGE __pyx_mstate_global->__pyx_n_s_ERR_VALUE_TOO_LARGE
#define __pyx_n_s_ERR_WIN __pyx_mstate_global->__pyx_n_s_ERR_WIN
#define __pyx_n_s_Ellipsis __pyx_mstate_global->__pyx_n_s_Ellipsis
#define __pyx_n_s_Errhandler __pyx_mstate_global->__pyx_n_s_Errhandler
#define __pyx_n_s_Errhandler_Free __pyx_mstate_global->__pyx_n_s_Errhandler_Free
#define __pyx_kp_s_Errhandler_None __pyx_mstate_global->__pyx_kp_s_Errhandler_None
#define __pyx_n_s_Errhandler___reduce __pyx_mstate_global->__pyx_n_s_Errhandler___reduce
#define __pyx_n_s_Errhandler_f2py __pyx_mstate_global->__pyx_n_s_Errhandler_f2py
#define __pyx_n_s_Errhandler_free __pyx_mstate_global->__pyx_n_s_Errhandler_free
#define __pyx_n_s_Errhandler_fromhandle __pyx_mstate_global->__pyx_n_s_Errhandler_fromhandle
#define __pyx_n_s_Errhandler_py2f __pyx_mstate_global->__pyx_n_s_Errhandler_py2f
#define __pyx_n_s_Exception __pyx_mstate_global->__pyx_n_s_Exception
#define __pyx_n_s_Exception_Get_error_class __pyx_mstate_global->__pyx_n_s_Exception_Get_error_class
#define __pyx_n_s_Exception_Get_error_code __pyx_mstate_global->__pyx_n_s_Exception_Get_error_code
#define __pyx_n_s_Exception_Get_error_string __pyx_mstate_global->__pyx_n_s_Exception_Get_error_string
#define __pyx_n_s_Excl __pyx_mstate_global->__pyx_n_s_Excl
#define __pyx_n_s_Exscan __pyx_mstate_global->__pyx_n_s_Exscan
#define __pyx_n_s_Exscan_init __pyx_mstate_global->__pyx_n_s_Exscan_init
#define __pyx_n_s_F90_COMPLEX __pyx_mstate_global->__pyx_n_s_F90_COMPLEX
#define __pyx_n_s_F90_INTEGER __pyx_mstate_global->__pyx_n_s_F90_INTEGER
#define __pyx_n_s_F90_REAL __pyx_mstate_global->__pyx_n_s_F90_REAL
#define __pyx_n_s_FILE_NULL __pyx_mstate_global->__pyx_n_s_FILE_NULL
#define __pyx_n_s_FLOAT __pyx_mstate_global->__pyx_n_s_FLOAT
#define __pyx_n_s_FLOAT_INT __pyx_mstate_global->__pyx_n_s_FLOAT_INT
#define __pyx_n_s_F_BOOL __pyx_mstate_global->__pyx_n_s_F_BOOL
#define __pyx_n_s_F_COMPLEX __pyx_mstate_global->__pyx_n_s_F_COMPLEX
#define __pyx_n_s_F_DOUBLE __pyx_mstate_global->__pyx_n_s_F_DOUBLE
#define __pyx_n_s_F_DOUBLE_COMPLEX __pyx_mstate_global->__pyx_n_s_F_DOUBLE_COMPLEX
#define __pyx_n_s_F_ERROR __pyx_mstate_global->__pyx_n_s_F_ERROR
#define __pyx_n_s_F_FLOAT __pyx_mstate_global->__pyx_n_s_F_FLOAT
#define __pyx_n_s_F_FLOAT_COMPLEX __pyx_mstate_global->__pyx_n_s_F_FLOAT_COMPLEX
#define __pyx_n_s_F_INT __pyx_mstate_global->__pyx_n_s_F_INT
#define __pyx_n_s_F_SOURCE __pyx_mstate_global->__pyx_n_s_F_SOURCE
#define __pyx_n_s_F_STATUS_SIZE __pyx_mstate_global->__pyx_n_s_F_STATUS_SIZE
#define __pyx_n_s_F_TAG __pyx_mstate_global->__pyx_n_s_F_TAG
#define __pyx_n_s_Fence __pyx_mstate_global->__pyx_n_s_Fence
#define __pyx_n_s_Fetch_and_op __pyx_mstate_global->__pyx_n_s_Fetch_and_op
#define __pyx_n_s_File __pyx_mstate_global->__pyx_n_s_File
#define __pyx_n_s_File_Call_errhandler __pyx_mstate_global->__pyx_n_s_File_Call_errhandler
#define __pyx_n_s_File_Close __pyx_mstate_global->__pyx_n_s_File_Close
#define __pyx_n_s_File_Create_errhandler __pyx_mstate_global->__pyx_n_s_File_Create_errhandler
#define __pyx_n_s_File_Delete __pyx_mstate_global->__pyx_n_s_File_Delete
#define __pyx_n_s_File_Get_amode __pyx_mstate_global->__pyx_n_s_File_Get_amode
#define __pyx_n_s_File_Get_atomicity __pyx_mstate_global->__pyx_n_s_File_Get_atomicity
#define __pyx_n_s_File_Get_byte_offset __pyx_mstate_global->__pyx_n_s_File_Get_byte_offset
#define __pyx_n_s_File_Get_errhandler __pyx_mstate_global->__pyx_n_s_File_Get_errhandler
#define __pyx_n_s_File_Get_group __pyx_mstate_global->__pyx_n_s_File_Get_group
#define __pyx_n_s_File_Get_info __pyx_mstate_global->__pyx_n_s_File_Get_info
#define __pyx_n_s_File_Get_position __pyx_mstate_global->__pyx_n_s_File_Get_position
#define __pyx_n_s_File_Get_position_shared __pyx_mstate_global->__pyx_n_s_File_Get_position_shared
#define __pyx_n_s_File_Get_size __pyx_mstate_global->__pyx_n_s_File_Get_size
#define __pyx_n_s_File_Get_type_extent __pyx_mstate_global->__pyx_n_s_File_Get_type_extent
#define __pyx_n_s_File_Get_view __pyx_mstate_global->__pyx_n_s_File_Get_view
#define __pyx_n_s_File_Iread __pyx_mstate_global->__pyx_n_s_File_Iread
#define __pyx_n_s_File_Iread_all __pyx_mstate_global->__pyx_n_s_File_Iread_all
#define __pyx_n_s_File_Iread_at __pyx_mstate_global->__pyx_n_s_File_Iread_at
#define __pyx_n_s_File_Iread_at_all __pyx_mstate_global->__pyx_n_s_File_Iread_at_all
#define __pyx_n_s_File_Iread_shared __pyx_mstate_global->__pyx_n_s_File_Iread_shared
#define __pyx_n_s_File_Iwrite __pyx_mstate_global->__pyx_n_s_File_Iwrite
#define __pyx_n_s_File_Iwrite_all __pyx_mstate_global->__pyx_n_s_File_Iwrite_all
#define __pyx_n_s_File_Iwrite_at __pyx_mstate_global->__pyx_n_s_File_Iwrite_at
#define __pyx_n_s_File_Iwrite_at_all __pyx_mstate_global->__pyx_n_s_File_Iwrite_at_all
#define __pyx_n_s_File_Iwrite_shared __pyx_mstate_global->__pyx_n_s_File_Iwrite_shared
#define __pyx_n_s_File_Open __pyx_mstate_global->__pyx_n_s_File_Open
#define __pyx_n_s_File_Preallocate __pyx_mstate_global->__pyx_n_s_File_Preallocate
#define __pyx_n_s_File_Read __pyx_mstate_global->__pyx_n_s_File_Read
#define __pyx_n_s_File_Read_all __pyx_mstate_global->__pyx_n_s_File_Read_all
#define __pyx_n_s_File_Read_all_begin __pyx_mstate_global->__pyx_n_s_File_Read_all_begin
#define __pyx_n_s_File_Read_all_end __pyx_mstate_global->__pyx_n_s_File_Read_all_end
#define __pyx_n_s_File_Read_at __pyx_mstate_global->__pyx_n_s_File_Read_at
#define __pyx_n_s_File_Read_at_all __pyx_mstate_global->__pyx_n_s_File_Read_at_all
#define __pyx_n_s_File_Read_at_all_begin __pyx_mstate_global->__pyx_n_s_File_Read_at_all_begin
#define __pyx_n_s_File_Read_at_all_end __pyx_mstate_global->__pyx_n_s_File_Read_at_all_end
#define __pyx_n_s_File_Read_ordered __pyx_mstate_global->__pyx_n_s_File_Read_ordered
#define __pyx_n_s_File_Read_ordered_begin __pyx_mstate_global->__pyx_n_s_File_Read_ordered_begin
#define __pyx_n_s_File_Read_ordered_end __pyx_mstate_global->__pyx_n_s_File_Read_ordered_end
#define __pyx_n_s_File_Read_shared __pyx_mstate_global->__pyx_n_s_File_Read_shared
#define __pyx_n_s_File_Seek __pyx_mstate_global->__pyx_n_s_File_Seek
#define __pyx_n_s_File_Seek_shared __pyx_mstate_global->__pyx_n_s_File_Seek_shared
#define __pyx_n_s_File_Set_atomicity __pyx_mstate_global->__pyx_n_s_File_Set_atomicity
#define __pyx_n_s_File_Set_errhandler __pyx_mstate_global->__pyx_n_s_File_Set_errhandler
#define __pyx_n_s_File_Set_info __pyx_mstate_global->__pyx_n_s_File_Set_info
#define __pyx_n_s_File_Set_size __pyx_mstate_global->__pyx_n_s_File_Set_size
#define __pyx_n_s_File_Set_view __pyx_mstate_global->__pyx_n_s_File_Set_view
#define __pyx_n_s_File_Sync __pyx_mstate_global->__pyx_n_s_File_Sync
#define __pyx_n_s_File_Write __pyx_mstate_global->__pyx_n_s_File_Write
#define __pyx_n_s_File_Write_all __pyx_mstate_global->__pyx_n_s_File_Write_all
#define __pyx_n_s_File_Write_all_begin __pyx_mstate_global->__pyx_n_s_File_Write_all_begin
#define __pyx_n_s_File_Write_all_end __pyx_mstate_global->__pyx_n_s_File_Write_all_end
#define __pyx_n_s_File_Write_at __pyx_mstate_global->__pyx_n_s_File_Write_at
#define __pyx_n_s_File_Write_at_all __pyx_mstate_global->__pyx_n_s_File_Write_at_all
#define __pyx_n_s_File_Write_at_all_begin __pyx_mstate_global->__pyx_n_s_File_Write_at_all_begin
#define __pyx_n_s_File_Write_at_all_end __pyx_mstate_global->__pyx_n_s_File_Write_at_all_end
#define __pyx_n_s_File_Write_ordered __pyx_mstate_global->__pyx_n_s_File_Write_ordered
#define __pyx_n_s_File_Write_ordered_begin __pyx_mstate_global->__pyx_n_s_File_Write_ordered_begin
#define __pyx_n_s_File_Write_ordered_end __pyx_mstate_global->__pyx_n_s_File_Write_ordered_end
#define __pyx_n_s_File_Write_shared __pyx_mstate_global->__pyx_n_s_File_Write_shared
#define __pyx_n_s_File___reduce __pyx_mstate_global->__pyx_n_s_File___reduce
#define __pyx_n_s_File_f2py __pyx_mstate_global->__pyx_n_s_File_f2py
#define __pyx_n_s_File_free __pyx_mstate_global->__pyx_n_s_File_free
#define __pyx_n_s_File_fromhandle __pyx_mstate_global->__pyx_n_s_File_fromhandle
#define __pyx_n_s_File_py2f __pyx_mstate_global->__pyx_n_s_File_py2f
#define __pyx_n_s_Finalize __pyx_mstate_global->__pyx_n_s_Finalize
#define __pyx_n_s_Flush __pyx_mstate_global->__pyx_n_s_Flush
#define __pyx_n_s_Flush_all __pyx_mstate_global->__pyx_n_s_Flush_all
#define __pyx_n_s_Flush_buffer __pyx_mstate_global->__pyx_n_s_Flush_buffer
#define __pyx_n_s_Flush_local __pyx_mstate_global->__pyx_n_s_Flush_local
#define __pyx_n_s_Flush_local_all __pyx_mstate_global->__pyx_n_s_Flush_local_all
#define __pyx_n_s_Free __pyx_mstate_global->__pyx_n_s_Free
#define __pyx_n_s_Free_keyval __pyx_mstate_global->__pyx_n_s_Free_keyval
#define __pyx_n_s_Free_mem __pyx_mstate_global->__pyx_n_s_Free_mem
#define __pyx_n_s_GRAPH __pyx_mstate_global->__pyx_n_s_GRAPH
#define __pyx_n_s_GROUP_EMPTY __pyx_mstate_global->__pyx_n_s_GROUP_EMPTY
#define __pyx_n_s_GROUP_NULL __pyx_mstate_global->__pyx_n_s_GROUP_NULL
#define __pyx_n_s_Gather __pyx_mstate_global->__pyx_n_s_Gather
#define __pyx_n_s_Gather_init __pyx_mstate_global->__pyx_n_s_Gather_init
#define __pyx_n_s_Gatherv __pyx_mstate_global->__pyx_n_s_Gatherv
#define __pyx_n_s_Gatherv_init __pyx_mstate_global->__pyx_n_s_Gatherv_init
#define __pyx_n_s_Get __pyx_mstate_global->__pyx_n_s_Get
#define __pyx_n_s_Get_accumulate __pyx_mstate_global->__pyx_n_s_Get_accumulate
#define __pyx_n_s_Get_address __pyx_mstate_global->__pyx_n_s_Get_address
#define __pyx_n_s_Get_amode __pyx_mstate_global->__pyx_n_s_Get_amode
#define __pyx_n_s_Get_atomicity __pyx_mstate_global->__pyx_n_s_Get_atomicity
#define __pyx_n_s_Get_attr __pyx_mstate_global->__pyx_n_s_Get_attr
#define __pyx_n_s_Get_byte_offset __pyx_mstate_global->__pyx_n_s_Get_byte_offset
#define __pyx_n_s_Get_cart_rank __pyx_mstate_global->__pyx_n_s_Get_cart_rank
#define __pyx_n_s_Get_contents __pyx_mstate_global->__pyx_n_s_Get_contents
#define __pyx_n_s_Get_coords __pyx_mstate_global->__pyx_n_s_Get_coords
#define __pyx_n_s_Get_count __pyx_mstate_global->__pyx_n_s_Get_count
#define __pyx_n_s_Get_dim __pyx_mstate_global->__pyx_n_s_Get_dim
#define __pyx_n_s_Get_dims __pyx_mstate_global->__pyx_n_s_Get_dims
#define __pyx_n_s_Get_dist_neighbors __pyx_mstate_global->__pyx_n_s_Get_dist_neighbors
#define __pyx_n_s_Get_dist_neighbors_count __pyx_mstate_global->__pyx_n_s_Get_dist_neighbors_count
#define __pyx_n_s_Get_elements __pyx_mstate_global->__pyx_n_s_Get_elements
#define __pyx_n_s_Get_envelope __pyx_mstate_global->__pyx_n_s_Get_envelope
#define __pyx_n_s_Get_errhandler __pyx_mstate_global->__pyx_n_s_Get_errhandler
#define __pyx_n_s_Get_error __pyx_mstate_global->__pyx_n_s_Get_error
#define __pyx_n_s_Get_error_class __pyx_mstate_global->__pyx_n_s_Get_error_class
#define __pyx_n_s_Get_error_code __pyx_mstate_global->__pyx_n_s_Get_error_code
#define __pyx_n_s_Get_error_string __pyx_mstate_global->__pyx_n_s_Get_error_string
#define __pyx_n_s_Get_extent __pyx_mstate_global->__pyx_n_s_Get_extent
#define __pyx_n_s_Get_failed __pyx_mstate_global->__pyx_n_s_Get_failed
#define __pyx_n_s_Get_group __pyx_mstate_global->__pyx_n_s_Get_group
#define __pyx_n_s_Get_hw_resource_info __pyx_mstate_global->__pyx_n_s_Get_hw_resource_info
#define __pyx_n_s_Get_info __pyx_mstate_global->__pyx_n_s_Get_info
#define __pyx_n_s_Get_library_version __pyx_mstate_global->__pyx_n_s_Get_library_version
#define __pyx_n_s_Get_name __pyx_mstate_global->__pyx_n_s_Get_name
#define __pyx_n_s_Get_neighbors __pyx_mstate_global->__pyx_n_s_Get_neighbors
#define __pyx_n_s_Get_neighbors_count __pyx_mstate_global->__pyx_n_s_Get_neighbors_count
#define __pyx_n_s_Get_nkeys __pyx_mstate_global->__pyx_n_s_Get_nkeys
#define __pyx_n_s_Get_nth_pset __pyx_mstate_global->__pyx_n_s_Get_nth_pset
#define __pyx_n_s_Get_nthkey __pyx_mstate_global->__pyx_n_s_Get_nthkey
#define __pyx_n_s_Get_num_psets __pyx_mstate_global->__pyx_n_s_Get_num_psets
#define __pyx_n_s_Get_parent __pyx_mstate_global->__pyx_n_s_Get_parent
#define __pyx_n_s_Get_position __pyx_mstate_global->__pyx_n_s_Get_position
#define __pyx_n_s_Get_position_shared __pyx_mstate_global->__pyx_n_s_Get_position_shared
#define __pyx_n_s_Get_processor_name __pyx_mstate_global->__pyx_n_s_Get_processor_name
#define __pyx_n_s_Get_pset_info __pyx_mstate_global->__pyx_n_s_Get_pset_info
#define __pyx_n_s_Get_rank __pyx_mstate_global->__pyx_n_s_Get_rank
#define __pyx_n_s_Get_remote_group __pyx_mstate_global->__pyx_n_s_Get_remote_group
#define __pyx_n_s_Get_remote_size __pyx_mstate_global->__pyx_n_s_Get_remote_size
#define __pyx_n_s_Get_size __pyx_mstate_global->__pyx_n_s_Get_size
#define __pyx_n_s_Get_source __pyx_mstate_global->__pyx_n_s_Get_source
#define __pyx_n_s_Get_status __pyx_mstate_global->__pyx_n_s_Get_status
#define __pyx_n_s_Get_status_all __pyx_mstate_global->__pyx_n_s_Get_status_all
#define __pyx_n_s_Get_status_any __pyx_mstate_global->__pyx_n_s_Get_status_any
#define __pyx_n_s_Get_status_some __pyx_mstate_global->__pyx_n_s_Get_status_some
#define __pyx_n_s_Get_tag __pyx_mstate_global->__pyx_n_s_Get_tag
#define __pyx_n_s_Get_topo __pyx_mstate_global->__pyx_n_s_Get_topo
#define __pyx_n_s_Get_topology __pyx_mstate_global->__pyx_n_s_Get_topology
#define __pyx_n_s_Get_true_extent __pyx_mstate_global->__pyx_n_s_Get_true_extent
#define __pyx_n_s_Get_type_extent __pyx_mstate_global->__pyx_n_s_Get_type_extent
#define __pyx_n_s_Get_value_index __pyx_mstate_global->__pyx_n_s_Get_value_index
#define __pyx_n_s_Get_version __pyx_mstate_global->__pyx_n_s_Get_version
#define __pyx_n_s_Get_view __pyx_mstate_global->__pyx_n_s_Get_view
#define __pyx_n_s_Graph_map __pyx_mstate_global->__pyx_n_s_Graph_map
#define __pyx_n_s_Graphcomm __pyx_mstate_global->__pyx_n_s_Graphcomm
#define __pyx_n_s_Graphcomm_Get_dims __pyx_mstate_global->__pyx_n_s_Graphcomm_Get_dims
#define __pyx_n_s_Graphcomm_Get_neighbors __pyx_mstate_global->__pyx_n_s_Graphcomm_Get_neighbors
#define __pyx_n_s_Graphcomm_Get_neighbors_count __pyx_mstate_global->__pyx_n_s_Graphcomm_Get_neighbors_count
#define __pyx_n_s_Graphcomm_Get_topo __pyx_mstate_global->__pyx_n_s_Graphcomm_Get_topo
#define __pyx_n_s_Grequest __pyx_mstate_global->__pyx_n_s_Grequest
#define __pyx_n_s_Grequest_Complete __pyx_mstate_global->__pyx_n_s_Grequest_Complete
#define __pyx_n_s_Grequest_Start __pyx_mstate_global->__pyx_n_s_Grequest_Start
#define __pyx_n_s_Grequest_complete __pyx_mstate_global->__pyx_n_s_Grequest_complete
#define __pyx_n_s_Group __pyx_mstate_global->__pyx_n_s_Group
#define __pyx_n_s_Group_Compare __pyx_mstate_global->__pyx_n_s_Group_Compare
#define __pyx_n_s_Group_Create_from_session_pset __pyx_mstate_global->__pyx_n_s_Group_Create_from_session_pset
#define __pyx_n_s_Group_Difference __pyx_mstate_global->__pyx_n_s_Group_Difference
#define __pyx_n_s_Group_Dup __pyx_mstate_global->__pyx_n_s_Group_Dup
#define __pyx_n_s_Group_Excl __pyx_mstate_global->__pyx_n_s_Group_Excl
#define __pyx_n_s_Group_Free __pyx_mstate_global->__pyx_n_s_Group_Free
#define __pyx_n_s_Group_Get_rank __pyx_mstate_global->__pyx_n_s_Group_Get_rank
#define __pyx_n_s_Group_Get_size __pyx_mstate_global->__pyx_n_s_Group_Get_size
#define __pyx_n_s_Group_Incl __pyx_mstate_global->__pyx_n_s_Group_Incl
#define __pyx_n_s_Group_Intersection __pyx_mstate_global->__pyx_n_s_Group_Intersection
#define __pyx_kp_s_Group_None __pyx_mstate_global->__pyx_kp_s_Group_None
#define __pyx_n_s_Group_Range_excl __pyx_mstate_global->__pyx_n_s_Group_Range_excl
#define __pyx_n_s_Group_Range_incl __pyx_mstate_global->__pyx_n_s_Group_Range_incl
#define __pyx_n_s_Group_Translate_ranks __pyx_mstate_global->__pyx_n_s_Group_Translate_ranks
#define __pyx_n_s_Group_Union __pyx_mstate_global->__pyx_n_s_Group_Union
#define __pyx_n_s_Group___reduce __pyx_mstate_global->__pyx_n_s_Group___reduce
#define __pyx_n_s_Group_f2py __pyx_mstate_global->__pyx_n_s_Group_f2py
#define __pyx_n_s_Group_free __pyx_mstate_global->__pyx_n_s_Group_free
#define __pyx_n_s_Group_fromhandle __pyx_mstate_global->__pyx_n_s_Group_fromhandle
#define __pyx_n_s_Group_py2f __pyx_mstate_global->__pyx_n_s_Group_py2f
#define __pyx_n_s_HIGHEST_PROTOCOL __pyx_mstate_global->__pyx_n_s_HIGHEST_PROTOCOL
#define __pyx_n_s_HINDEXED __pyx_mstate_global->__pyx_n_s_HINDEXED
#define __pyx_n_s_HINDEXED_BLOCK __pyx_mstate_global->__pyx_n_s_HINDEXED_BLOCK
#define __pyx_n_s_HVECTOR __pyx_mstate_global->__pyx_n_s_HVECTOR
#define __pyx_kp_s_Hashable_None __pyx_mstate_global->__pyx_kp_s_Hashable_None
#define __pyx_n_s_IDENT __pyx_mstate_global->__pyx_n_s_IDENT
#define __pyx_n_s_INDEXED __pyx_mstate_global->__pyx_n_s_INDEXED
#define __pyx_n_s_INDEXED_BLOCK __pyx_mstate_global->__pyx_n_s_INDEXED_BLOCK
#define __pyx_n_s_INFO_ENV __pyx_mstate_global->__pyx_n_s_INFO_ENV
#define __pyx_n_s_INFO_NULL __pyx_mstate_global->__pyx_n_s_INFO_NULL
#define __pyx_n_s_INT __pyx_mstate_global->__pyx_n_s_INT
#define __pyx_n_s_INT16_T __pyx_mstate_global->__pyx_n_s_INT16_T
#define __pyx_n_s_INT32_T __pyx_mstate_global->__pyx_n_s_INT32_T
#define __pyx_n_s_INT64_T __pyx_mstate_global->__pyx_n_s_INT64_T
#define __pyx_n_s_INT8_T __pyx_mstate_global->__pyx_n_s_INT8_T
#define __pyx_n_s_INTEGER __pyx_mstate_global->__pyx_n_s_INTEGER
#define __pyx_n_s_INTEGER1 __pyx_mstate_global->__pyx_n_s_INTEGER1
#define __pyx_n_s_INTEGER16 __pyx_mstate_global->__pyx_n_s_INTEGER16
#define __pyx_n_s_INTEGER2 __pyx_mstate_global->__pyx_n_s_INTEGER2
#define __pyx_n_s_INTEGER4 __pyx_mstate_global->__pyx_n_s_INTEGER4
#define __pyx_n_s_INTEGER8 __pyx_mstate_global->__pyx_n_s_INTEGER8
#define __pyx_n_s_INT_INT __pyx_mstate_global->__pyx_n_s_INT_INT
#define __pyx_n_s_IN_PLACE __pyx_mstate_global->__pyx_n_s_IN_PLACE
#define __pyx_n_s_IO __pyx_mstate_global->__pyx_n_s_IO
#define __pyx_n_s_Iagree __pyx_mstate_global->__pyx_n_s_Iagree
#define __pyx_n_s_Iallgather __pyx_mstate_global->__pyx_n_s_Iallgather
#define __pyx_n_s_Iallgatherv __pyx_mstate_global->__pyx_n_s_Iallgatherv
#define __pyx_n_s_Iallreduce __pyx_mstate_global->__pyx_n_s_Iallreduce
#define __pyx_n_s_Ialltoall __pyx_mstate_global->__pyx_n_s_Ialltoall
#define __pyx_n_s_Ialltoallv __pyx_mstate_global->__pyx_n_s_Ialltoallv
#define __pyx_n_s_Ialltoallw __pyx_mstate_global->__pyx_n_s_Ialltoallw
#define __pyx_n_s_Ibarrier __pyx_mstate_global->__pyx_n_s_Ibarrier
#define __pyx_n_s_Ibcast __pyx_mstate_global->__pyx_n_s_Ibcast
#define __pyx_n_s_Ibsend __pyx_mstate_global->__pyx_n_s_Ibsend
#define __pyx_n_s_Idup __pyx_mstate_global->__pyx_n_s_Idup
#define __pyx_n_s_Idup_with_info __pyx_mstate_global->__pyx_n_s_Idup_with_info
#define __pyx_n_s_Iexscan __pyx_mstate_global->__pyx_n_s_Iexscan
#define __pyx_n_s_Iflush_buffer __pyx_mstate_global->__pyx_n_s_Iflush_buffer
#define __pyx_n_s_Igather __pyx_mstate_global->__pyx_n_s_Igather
#define __pyx_n_s_Igatherv __pyx_mstate_global->__pyx_n_s_Igatherv
#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError
#define __pyx_n_s_ImportWarning __pyx_mstate_global->__pyx_n_s_ImportWarning
#define __pyx_n_s_Improbe __pyx_mstate_global->__pyx_n_s_Improbe
#define __pyx_n_s_InPlaceType __pyx_mstate_global->__pyx_n_s_InPlaceType
#define __pyx_n_s_InPlaceType___reduce __pyx_mstate_global->__pyx_n_s_InPlaceType___reduce
#define __pyx_n_s_Incl __pyx_mstate_global->__pyx_n_s_Incl
#define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError
#define __pyx_n_s_Ineighbor_allgather __pyx_mstate_global->__pyx_n_s_Ineighbor_allgather
#define __pyx_n_s_Ineighbor_allgatherv __pyx_mstate_global->__pyx_n_s_Ineighbor_allgatherv
#define __pyx_n_s_Ineighbor_alltoall __pyx_mstate_global->__pyx_n_s_Ineighbor_alltoall
#define __pyx_n_s_Ineighbor_alltoallv __pyx_mstate_global->__pyx_n_s_Ineighbor_alltoallv
#define __pyx_n_s_Ineighbor_alltoallw __pyx_mstate_global->__pyx_n_s_Ineighbor_alltoallw
#define __pyx_n_s_Info __pyx_mstate_global->__pyx_n_s_Info
#define __pyx_n_s_Info_Create __pyx_mstate_global->__pyx_n_s_Info_Create
#define __pyx_n_s_Info_Create_env __pyx_mstate_global->__pyx_n_s_Info_Create_env
#define __pyx_n_s_Info_Delete __pyx_mstate_global->__pyx_n_s_Info_Delete
#define __pyx_n_s_Info_Dup __pyx_mstate_global->__pyx_n_s_Info_Dup
#define __pyx_n_s_Info_Free __pyx_mstate_global->__pyx_n_s_Info_Free
#define __pyx_n_s_Info_Get __pyx_mstate_global->__pyx_n_s_Info_Get
#define __pyx_n_s_Info_Get_nkeys __pyx_mstate_global->__pyx_n_s_Info_Get_nkeys
#define __pyx_n_s_Info_Get_nthkey __pyx_mstate_global->__pyx_n_s_Info_Get_nthkey
#define __pyx_kp_s_Info_Mapping_str_str_Iterable_tu __pyx_mstate_global->__pyx_kp_s_Info_Mapping_str_str_Iterable_tu
#define __pyx_kp_s_Info_Mapping_str_str_Iterable_tu_2 __pyx_mstate_global->__pyx_kp_s_Info_Mapping_str_str_Iterable_tu_2
#define __pyx_kp_s_Info_None __pyx_mstate_global->__pyx_kp_s_Info_None
#define __pyx_n_s_Info_Set __pyx_mstate_global->__pyx_n_s_Info_Set
#define __pyx_n_s_Info___reduce __pyx_mstate_global->__pyx_n_s_Info___reduce
#define __pyx_n_s_Info_clear __pyx_mstate_global->__pyx_n_s_Info_clear
#define __pyx_n_s_Info_copy __pyx_mstate_global->__pyx_n_s_Info_copy
#define __pyx_n_s_Info_f2py __pyx_mstate_global->__pyx_n_s_Info_f2py
#define __pyx_n_s_Info_free __pyx_mstate_global->__pyx_n_s_Info_free
#define __pyx_n_s_Info_fromhandle __pyx_mstate_global->__pyx_n_s_Info_fromhandle
#define __pyx_n_s_Info_get __pyx_mstate_global->__pyx_n_s_Info_get
#define __pyx_n_s_Info_items __pyx_mstate_global->__pyx_n_s_Info_items
#define __pyx_n_s_Info_keys __pyx_mstate_global->__pyx_n_s_Info_keys
#define __pyx_n_s_Info_pop __pyx_mstate_global->__pyx_n_s_Info_pop
#define __pyx_n_s_Info_popitem __pyx_mstate_global->__pyx_n_s_Info_popitem
#define __pyx_n_s_Info_py2f __pyx_mstate_global->__pyx_n_s_Info_py2f
#define __pyx_n_s_Info_update __pyx_mstate_global->__pyx_n_s_Info_update
#define __pyx_n_s_Info_values __pyx_mstate_global->__pyx_n_s_Info_values
#define __pyx_n_s_Init __pyx_mstate_global->__pyx_n_s_Init
#define __pyx_n_s_Init_thread __pyx_mstate_global->__pyx_n_s_Init_thread
#define __pyx_n_s_Intercomm __pyx_mstate_global->__pyx_n_s_Intercomm
#define __pyx_n_s_Intercomm_Create_from_groups __pyx_mstate_global->__pyx_n_s_Intercomm_Create_from_groups
#define __pyx_n_s_Intercomm_Get_remote_group __pyx_mstate_global->__pyx_n_s_Intercomm_Get_remote_group
#define __pyx_n_s_Intercomm_Get_remote_size __pyx_mstate_global->__pyx_n_s_Intercomm_Get_remote_size
#define __pyx_n_s_Intercomm_Merge __pyx_mstate_global->__pyx_n_s_Intercomm_Merge
#define __pyx_n_s_Intersect __pyx_mstate_global->__pyx_n_s_Intersect
#define __pyx_n_s_Intersection __pyx_mstate_global->__pyx_n_s_Intersection
#define __pyx_n_s_Intracomm __pyx_mstate_global->__pyx_n_s_Intracomm
#define __pyx_n_s_Intracomm_Accept __pyx_mstate_global->__pyx_n_s_Intracomm_Accept
#define __pyx_n_s_Intracomm_Cart_map __pyx_mstate_global->__pyx_n_s_Intracomm_Cart_map
#define __pyx_n_s_Intracomm_Connect __pyx_mstate_global->__pyx_n_s_Intracomm_Connect
#define __pyx_n_s_Intracomm_Create_cart __pyx_mstate_global->__pyx_n_s_Intracomm_Create_cart
#define __pyx_n_s_Intracomm_Create_dist_graph __pyx_mstate_global->__pyx_n_s_Intracomm_Create_dist_graph
#define __pyx_n_s_Intracomm_Create_dist_graph_adja __pyx_mstate_global->__pyx_n_s_Intracomm_Create_dist_graph_adja
#define __pyx_n_s_Intracomm_Create_from_group __pyx_mstate_global->__pyx_n_s_Intracomm_Create_from_group
#define __pyx_n_s_Intracomm_Create_graph __pyx_mstate_global->__pyx_n_s_Intracomm_Create_graph
#define __pyx_n_s_Intracomm_Create_group __pyx_mstate_global->__pyx_n_s_Intracomm_Create_group
#define __pyx_n_s_Intracomm_Create_intercomm __pyx_mstate_global->__pyx_n_s_Intracomm_Create_intercomm
#define __pyx_n_s_Intracomm_Exscan __pyx_mstate_global->__pyx_n_s_Intracomm_Exscan
#define __pyx_n_s_Intracomm_Exscan_init __pyx_mstate_global->__pyx_n_s_Intracomm_Exscan_init
#define __pyx_n_s_Intracomm_Graph_map __pyx_mstate_global->__pyx_n_s_Intracomm_Graph_map
#define __pyx_n_s_Intracomm_Iexscan __pyx_mstate_global->__pyx_n_s_Intracomm_Iexscan
#define __pyx_n_s_Intracomm_Iscan __pyx_mstate_global->__pyx_n_s_Intracomm_Iscan
#define __pyx_n_s_Intracomm_Scan __pyx_mstate_global->__pyx_n_s_Intracomm_Scan
#define __pyx_n_s_Intracomm_Scan_init __pyx_mstate_global->__pyx_n_s_Intracomm_Scan_init
#define __pyx_n_s_Intracomm_Spawn __pyx_mstate_global->__pyx_n_s_Intracomm_Spawn
#define __pyx_n_s_Intracomm_Spawn_multiple __pyx_mstate_global->__pyx_n_s_Intracomm_Spawn_multiple
#define __pyx_n_s_Intracomm_exscan __pyx_mstate_global->__pyx_n_s_Intracomm_exscan
#define __pyx_n_s_Intracomm_scan __pyx_mstate_global->__pyx_n_s_Intracomm_scan
#define __pyx_n_s_Iprobe __pyx_mstate_global->__pyx_n_s_Iprobe
#define __pyx_n_s_Iread __pyx_mstate_global->__pyx_n_s_Iread
#define __pyx_n_s_Iread_all __pyx_mstate_global->__pyx_n_s_Iread_all
#define __pyx_n_s_Iread_at __pyx_mstate_global->__pyx_n_s_Iread_at
#define __pyx_n_s_Iread_at_all __pyx_mstate_global->__pyx_n_s_Iread_at_all
#define __pyx_n_s_Iread_shared __pyx_mstate_global->__pyx_n_s_Iread_shared
#define __pyx_n_s_Irecv __pyx_mstate_global->__pyx_n_s_Irecv
#define __pyx_n_s_Ireduce __pyx_mstate_global->__pyx_n_s_Ireduce
#define __pyx_n_s_Ireduce_scatter __pyx_mstate_global->__pyx_n_s_Ireduce_scatter
#define __pyx_n_s_Ireduce_scatter_block __pyx_mstate_global->__pyx_n_s_Ireduce_scatter_block
#define __pyx_n_s_Irsend __pyx_mstate_global->__pyx_n_s_Irsend
#define __pyx_n_s_Is_cancelled __pyx_mstate_global->__pyx_n_s_Is_cancelled
#define __pyx_n_s_Is_commutative __pyx_mstate_global->__pyx_n_s_Is_commutative
#define __pyx_n_s_Is_finalized __pyx_mstate_global->__pyx_n_s_Is_finalized
#define __pyx_n_s_Is_initialized __pyx_mstate_global->__pyx_n_s_Is_initialized
#define __pyx_n_s_Is_inter __pyx_mstate_global->__pyx_n_s_Is_inter
#define __pyx_n_s_Is_intra __pyx_mstate_global->__pyx_n_s_Is_intra
#define __pyx_n_s_Is_revoked __pyx_mstate_global->__pyx_n_s_Is_revoked
#define __pyx_n_s_Is_thread_main __pyx_mstate_global->__pyx_n_s_Is_thread_main
#define __pyx_n_s_Iscan __pyx_mstate_global->__pyx_n_s_Iscan
#define __pyx_n_s_Iscatter __pyx_mstate_global->__pyx_n_s_Iscatter
#define __pyx_n_s_Iscatterv __pyx_mstate_global->__pyx_n_s_Iscatterv
#define __pyx_n_s_Isend __pyx_mstate_global->__pyx_n_s_Isend
#define __pyx_n_s_Isendrecv __pyx_mstate_global->__pyx_n_s_Isendrecv
#define __pyx_n_s_Isendrecv_replace __pyx_mstate_global->__pyx_n_s_Isendrecv_replace
#define __pyx_n_s_Ishrink __pyx_mstate_global->__pyx_n_s_Ishrink
#define __pyx_n_s_Issend __pyx_mstate_global->__pyx_n_s_Issend
#define __pyx_kp_s_Iterable_Buffer __pyx_mstate_global->__pyx_kp_s_Iterable_Buffer
#define __pyx_n_s_Iwrite __pyx_mstate_global->__pyx_n_s_Iwrite
#define __pyx_n_s_Iwrite_all __pyx_mstate_global->__pyx_n_s_Iwrite_all
#define __pyx_n_s_Iwrite_at __pyx_mstate_global->__pyx_n_s_Iwrite_at
#define __pyx_n_s_Iwrite_at_all __pyx_mstate_global->__pyx_n_s_Iwrite_at_all
#define __pyx_n_s_Iwrite_shared __pyx_mstate_global->__pyx_n_s_Iwrite_shared
#define __pyx_n_s_Join __pyx_mstate_global->__pyx_n_s_Join
#define __pyx_n_s_KEYVAL_INVALID __pyx_mstate_global->__pyx_n_s_KEYVAL_INVALID
#define __pyx_n_s_KeyError __pyx_mstate_global->__pyx_n_s_KeyError
#define __pyx_n_s_LAND __pyx_mstate_global->__pyx_n_s_LAND
#define __pyx_n_s_LASTUSEDCODE __pyx_mstate_global->__pyx_n_s_LASTUSEDCODE
#define __pyx_n_s_LOCK_EXCLUSIVE __pyx_mstate_global->__pyx_n_s_LOCK_EXCLUSIVE
#define __pyx_n_s_LOCK_SHARED __pyx_mstate_global->__pyx_n_s_LOCK_SHARED
#define __pyx_n_s_LOGICAL __pyx_mstate_global->__pyx_n_s_LOGICAL
#define __pyx_n_s_LOGICAL1 __pyx_mstate_global->__pyx_n_s_LOGICAL1
#define __pyx_n_s_LOGICAL2 __pyx_mstate_global->__pyx_n_s_LOGICAL2
#define __pyx_n_s_LOGICAL4 __pyx_mstate_global->__pyx_n_s_LOGICAL4
#define __pyx_n_s_LOGICAL8 __pyx_mstate_global->__pyx_n_s_LOGICAL8
#define __pyx_n_s_LONG __pyx_mstate_global->__pyx_n_s_LONG
#define __pyx_n_s_LONG_DOUBLE __pyx_mstate_global->__pyx_n_s_LONG_DOUBLE
#define __pyx_n_s_LONG_DOUBLE_INT __pyx_mstate_global->__pyx_n_s_LONG_DOUBLE_INT
#define __pyx_n_s_LONG_INT __pyx_mstate_global->__pyx_n_s_LONG_INT
#define __pyx_n_s_LONG_LONG __pyx_mstate_global->__pyx_n_s_LONG_LONG
#define __pyx_n_s_LOR __pyx_mstate_global->__pyx_n_s_LOR
#define __pyx_n_s_LXOR __pyx_mstate_global->__pyx_n_s_LXOR
#define __pyx_kp_s_Literal_True __pyx_mstate_global->__pyx_kp_s_Literal_True
#define __pyx_n_s_Lock __pyx_mstate_global->__pyx_n_s_Lock
#define __pyx_n_s_Lock_all __pyx_mstate_global->__pyx_n_s_Lock_all
#define __pyx_n_s_Lookup_name __pyx_mstate_global->__pyx_n_s_Lookup_name
#define __pyx_n_s_MAX __pyx_mstate_global->__pyx_n_s_MAX
#define __pyx_n_s_MAXLOC __pyx_mstate_global->__pyx_n_s_MAXLOC
#define __pyx_n_s_MAX_DATAREP_STRING __pyx_mstate_global->__pyx_n_s_MAX_DATAREP_STRING
#define __pyx_n_s_MAX_ERROR_STRING __pyx_mstate_global->__pyx_n_s_MAX_ERROR_STRING
#define __pyx_n_s_MAX_INFO_KEY __pyx_mstate_global->__pyx_n_s_MAX_INFO_KEY
#define __pyx_n_s_MAX_INFO_VAL __pyx_mstate_global->__pyx_n_s_MAX_INFO_VAL
#define __pyx_n_s_MAX_LIBRARY_VERSION_STRING __pyx_mstate_global->__pyx_n_s_MAX_LIBRARY_VERSION_STRING
#define __pyx_n_s_MAX_OBJECT_NAME __pyx_mstate_global->__pyx_n_s_MAX_OBJECT_NAME
#define __pyx_n_s_MAX_PORT_NAME __pyx_mstate_global->__pyx_n_s_MAX_PORT_NAME
#define __pyx_n_s_MAX_PROCESSOR_NAME __pyx_mstate_global->__pyx_n_s_MAX_PROCESSOR_NAME
#define __pyx_n_s_MAX_PSET_NAME_LEN __pyx_mstate_global->__pyx_n_s_MAX_PSET_NAME_LEN
#define __pyx_n_s_MAX_STRINGTAG_LEN __pyx_mstate_global->__pyx_n_s_MAX_STRINGTAG_LEN
#define __pyx_n_s_MESSAGE_NO_PROC __pyx_mstate_global->__pyx_n_s_MESSAGE_NO_PROC
#define __pyx_n_s_MESSAGE_NULL __pyx_mstate_global->__pyx_n_s_MESSAGE_NULL
#define __pyx_n_s_MIN __pyx_mstate_global->__pyx_n_s_MIN
#define __pyx_n_s_MINLOC __pyx_mstate_global->__pyx_n_s_MINLOC
#define __pyx_n_s_MODE_APPEND __pyx_mstate_global->__pyx_n_s_MODE_APPEND
#define __pyx_n_s_MODE_CREATE __pyx_mstate_global->__pyx_n_s_MODE_CREATE
#define __pyx_n_s_MODE_DELETE_ON_CLOSE __pyx_mstate_global->__pyx_n_s_MODE_DELETE_ON_CLOSE
#define __pyx_n_s_MODE_EXCL __pyx_mstate_global->__pyx_n_s_MODE_EXCL
#define __pyx_n_s_MODE_NOCHECK __pyx_mstate_global->__pyx_n_s_MODE_NOCHECK
#define __pyx_n_s_MODE_NOPRECEDE __pyx_mstate_global->__pyx_n_s_MODE_NOPRECEDE
#define __pyx_n_s_MODE_NOPUT __pyx_mstate_global->__pyx_n_s_MODE_NOPUT
#define __pyx_n_s_MODE_NOSTORE __pyx_mstate_global->__pyx_n_s_MODE_NOSTORE
#define __pyx_n_s_MODE_NOSUCCEED __pyx_mstate_global->__pyx_n_s_MODE_NOSUCCEED
#define __pyx_n_s_MODE_RDONLY __pyx_mstate_global->__pyx_n_s_MODE_RDONLY
#define __pyx_n_s_MODE_RDWR __pyx_mstate_global->__pyx_n_s_MODE_RDWR
#define __pyx_n_s_MODE_SEQUENTIAL __pyx_mstate_global->__pyx_n_s_MODE_SEQUENTIAL
#define __pyx_n_s_MODE_UNIQUE_OPEN __pyx_mstate_global->__pyx_n_s_MODE_UNIQUE_OPEN
#define __pyx_n_s_MODE_WRONLY __pyx_mstate_global->__pyx_n_s_MODE_WRONLY
#define __pyx_n_b_MPI4PY_RC __pyx_mstate_global->__pyx_n_b_MPI4PY_RC
#define __pyx_n_s_MPI_Comm __pyx_mstate_global->__pyx_n_s_MPI_Comm
#define __pyx_n_s_MPI_Datatype __pyx_mstate_global->__pyx_n_s_MPI_Datatype
#define __pyx_n_s_MPI_Errhandler __pyx_mstate_global->__pyx_n_s_MPI_Errhandler
#define __pyx_kp_u_MPI_Exception __pyx_mstate_global->__pyx_kp_u_MPI_Exception
#define __pyx_n_s_MPI_File __pyx_mstate_global->__pyx_n_s_MPI_File
#define __pyx_n_s_MPI_Group __pyx_mstate_global->__pyx_n_s_MPI_Group
#define __pyx_n_s_MPI_Info __pyx_mstate_global->__pyx_n_s_MPI_Info
#define __pyx_kp_u_MPI_Init_failed_error_code __pyx_mstate_global->__pyx_kp_u_MPI_Init_failed_error_code
#define __pyx_kp_u_MPI_Init_thread_failed_error_cod __pyx_mstate_global->__pyx_kp_u_MPI_Init_thread_failed_error_cod
#define __pyx_n_s_MPI_Message __pyx_mstate_global->__pyx_n_s_MPI_Message
#define __pyx_n_s_MPI_Op __pyx_mstate_global->__pyx_n_s_MPI_Op
#define __pyx_n_s_MPI_Request __pyx_mstate_global->__pyx_n_s_MPI_Request
#define __pyx_n_s_MPI_Session __pyx_mstate_global->__pyx_n_s_MPI_Session
#define __pyx_n_s_MPI_Win __pyx_mstate_global->__pyx_n_s_MPI_Win
#define __pyx_n_s_Match_size __pyx_mstate_global->__pyx_n_s_Match_size
#define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError
#define __pyx_n_s_Merge __pyx_mstate_global->__pyx_n_s_Merge
#define __pyx_n_s_Message __pyx_mstate_global->__pyx_n_s_Message
#define __pyx_n_s_Message_Iprobe __pyx_mstate_global->__pyx_n_s_Message_Iprobe
#define __pyx_n_s_Message_Irecv __pyx_mstate_global->__pyx_n_s_Message_Irecv
#define __pyx_kp_s_Message_None __pyx_mstate_global->__pyx_kp_s_Message_None
#define __pyx_kp_s_Message_Passing_Interface __pyx_mstate_global->__pyx_kp_s_Message_Passing_Interface
#define __pyx_n_s_Message_Probe __pyx_mstate_global->__pyx_n_s_Message_Probe
#define __pyx_n_s_Message_Recv __pyx_mstate_global->__pyx_n_s_Message_Recv
#define __pyx_n_s_Message___reduce __pyx_mstate_global->__pyx_n_s_Message___reduce
#define __pyx_n_s_Message_f2py __pyx_mstate_global->__pyx_n_s_Message_f2py
#define __pyx_n_s_Message_free __pyx_mstate_global->__pyx_n_s_Message_free
#define __pyx_n_s_Message_fromhandle __pyx_mstate_global->__pyx_n_s_Message_fromhandle
#define __pyx_n_s_Message_iprobe __pyx_mstate_global->__pyx_n_s_Message_iprobe
#define __pyx_n_s_Message_irecv __pyx_mstate_global->__pyx_n_s_Message_irecv
#define __pyx_n_s_Message_probe __pyx_mstate_global->__pyx_n_s_Message_probe
#define __pyx_n_s_Message_py2f __pyx_mstate_global->__pyx_n_s_Message_py2f
#define __pyx_n_s_Message_recv __pyx_mstate_global->__pyx_n_s_Message_recv
#define __pyx_n_s_Mprobe __pyx_mstate_global->__pyx_n_s_Mprobe
#define __pyx_n_s_NAMED __pyx_mstate_global->__pyx_n_s_NAMED
#define __pyx_n_s_NO_OP __pyx_mstate_global->__pyx_n_s_NO_OP
#define __pyx_n_s_Neighbor_allgather __pyx_mstate_global->__pyx_n_s_Neighbor_allgather
#define __pyx_n_s_Neighbor_allgather_init __pyx_mstate_global->__pyx_n_s_Neighbor_allgather_init
#define __pyx_n_s_Neighbor_allgatherv __pyx_mstate_global->__pyx_n_s_Neighbor_allgatherv
#define __pyx_n_s_Neighbor_allgatherv_init __pyx_mstate_global->__pyx_n_s_Neighbor_allgatherv_init
#define __pyx_n_s_Neighbor_alltoall __pyx_mstate_global->__pyx_n_s_Neighbor_alltoall
#define __pyx_n_s_Neighbor_alltoall_init __pyx_mstate_global->__pyx_n_s_Neighbor_alltoall_init
#define __pyx_n_s_Neighbor_alltoallv __pyx_mstate_global->__pyx_n_s_Neighbor_alltoallv
#define __pyx_n_s_Neighbor_alltoallv_init __pyx_mstate_global->__pyx_n_s_Neighbor_alltoallv_init
#define __pyx_n_s_Neighbor_alltoallw __pyx_mstate_global->__pyx_n_s_Neighbor_alltoallw
#define __pyx_n_s_Neighbor_alltoallw_init __pyx_mstate_global->__pyx_n_s_Neighbor_alltoallw_init
#define __pyx_n_s_NoReturn __pyx_mstate_global->__pyx_n_s_NoReturn
#define __pyx_n_s_None __pyx_mstate_global->__pyx_n_s_None
#define __pyx_n_s_NotImplemented __pyx_mstate_global->__pyx_n_s_NotImplemented
#define __pyx_n_s_NotImplementedError __pyx_mstate_global->__pyx_n_s_NotImplementedError
#define __pyx_n_s_OFFSET __pyx_mstate_global->__pyx_n_s_OFFSET
#define __pyx_n_s_OP_NULL __pyx_mstate_global->__pyx_n_s_OP_NULL
#define __pyx_n_s_ORDER_C __pyx_mstate_global->__pyx_n_s_ORDER_C
#define __pyx_n_s_ORDER_F __pyx_mstate_global->__pyx_n_s_ORDER_F
#define __pyx_n_s_ORDER_FORTRAN __pyx_mstate_global->__pyx_n_s_ORDER_FORTRAN
#define __pyx_kp_s_Object_is_not_writable __pyx_mstate_global->__pyx_kp_s_Object_is_not_writable
#define __pyx_n_s_Op __pyx_mstate_global->__pyx_n_s_Op
#define __pyx_kp_s_Op_Callable_Any_Any_Any __pyx_mstate_global->__pyx_kp_s_Op_Callable_Any_Any_Any
#define __pyx_n_s_Op_Create __pyx_mstate_global->__pyx_n_s_Op_Create
#define __pyx_n_s_Op_Free __pyx_mstate_global->__pyx_n_s_Op_Free
#define __pyx_n_s_Op_Is_commutative __pyx_mstate_global->__pyx_n_s_Op_Is_commutative
#define __pyx_n_s_Op_Reduce_local __pyx_mstate_global->__pyx_n_s_Op_Reduce_local
#define __pyx_n_s_Op___reduce __pyx_mstate_global->__pyx_n_s_Op___reduce
#define __pyx_n_s_Op_f2py __pyx_mstate_global->__pyx_n_s_Op_f2py
#define __pyx_n_s_Op_free __pyx_mstate_global->__pyx_n_s_Op_free
#define __pyx_n_s_Op_fromhandle __pyx_mstate_global->__pyx_n_s_Op_fromhandle
#define __pyx_n_s_Op_py2f __pyx_mstate_global->__pyx_n_s_Op_py2f
#define __pyx_n_s_Open __pyx_mstate_global->__pyx_n_s_Open
#define __pyx_n_s_Open_port __pyx_mstate_global->__pyx_n_s_Open_port
#define __pyx_n_s_OverflowError __pyx_mstate_global->__pyx_n_s_OverflowError
#define __pyx_n_s_PACKED __pyx_mstate_global->__pyx_n_s_PACKED
#define __pyx_n_s_PROC_NULL __pyx_mstate_global->__pyx_n_s_PROC_NULL
#define __pyx_n_s_PROD __pyx_mstate_global->__pyx_n_s_PROD
#define __pyx_n_s_Pack __pyx_mstate_global->__pyx_n_s_Pack
#define __pyx_n_s_Pack_external __pyx_mstate_global->__pyx_n_s_Pack_external
#define __pyx_n_s_Pack_external_size __pyx_mstate_global->__pyx_n_s_Pack_external_size
#define __pyx_n_s_Pack_size __pyx_mstate_global->__pyx_n_s_Pack_size
#define __pyx_n_s_Parrived __pyx_mstate_global->__pyx_n_s_Parrived
#define __pyx_kp_s_PathLike_AnyStr_str_bytes __pyx_mstate_global->__pyx_kp_s_PathLike_AnyStr_str_bytes
#define __pyx_n_s_Pcontrol __pyx_mstate_global->__pyx_n_s_Pcontrol
#define __pyx_n_s_Pickle __pyx_mstate_global->__pyx_n_s_Pickle
#define __pyx_n_s_Pickle_dumps __pyx_mstate_global->__pyx_n_s_Pickle_dumps
#define __pyx_n_s_Pickle_dumps_oob __pyx_mstate_global->__pyx_n_s_Pickle_dumps_oob
#define __pyx_n_s_Pickle_loads __pyx_mstate_global->__pyx_n_s_Pickle_loads
#define __pyx_n_s_Pickle_loads_oob __pyx_mstate_global->__pyx_n_s_Pickle_loads_oob
#define __pyx_n_s_Post __pyx_mstate_global->__pyx_n_s_Post
#define __pyx_n_s_Pready __pyx_mstate_global->__pyx_n_s_Pready
#define __pyx_n_s_Pready_list __pyx_mstate_global->__pyx_n_s_Pready_list
#define __pyx_n_s_Pready_range __pyx_mstate_global->__pyx_n_s_Pready_range
#define __pyx_n_s_Preallocate __pyx_mstate_global->__pyx_n_s_Preallocate
#define __pyx_n_s_Precv_init __pyx_mstate_global->__pyx_n_s_Precv_init
#define __pyx_n_s_Prequest __pyx_mstate_global->__pyx_n_s_Prequest
#define __pyx_n_s_Prequest_Parrived __pyx_mstate_global->__pyx_n_s_Prequest_Parrived
#define __pyx_n_s_Prequest_Pready __pyx_mstate_global->__pyx_n_s_Prequest_Pready
#define __pyx_n_s_Prequest_Pready_list __pyx_mstate_global->__pyx_n_s_Prequest_Pready_list
#define __pyx_n_s_Prequest_Pready_range __pyx_mstate_global->__pyx_n_s_Prequest_Pready_range
#define __pyx_n_s_Prequest_Start __pyx_mstate_global->__pyx_n_s_Prequest_Start
#define __pyx_n_s_Prequest_Startall __pyx_mstate_global->__pyx_n_s_Prequest_Startall
#define __pyx_n_s_Probe __pyx_mstate_global->__pyx_n_s_Probe
#define __pyx_n_s_Psend_init __pyx_mstate_global->__pyx_n_s_Psend_init
#define __pyx_n_s_Publish_name __pyx_mstate_global->__pyx_n_s_Publish_name
#define __pyx_n_s_Put __pyx_mstate_global->__pyx_n_s_Put
#define __pyx_n_s_Query_thread __pyx_mstate_global->__pyx_n_s_Query_thread
#define __pyx_n_s_REAL __pyx_mstate_global->__pyx_n_s_REAL
#define __pyx_n_s_REAL16 __pyx_mstate_global->__pyx_n_s_REAL16
#define __pyx_n_s_REAL2 __pyx_mstate_global->__pyx_n_s_REAL2
#define __pyx_n_s_REAL4 __pyx_mstate_global->__pyx_n_s_REAL4
#define __pyx_n_s_REAL8 __pyx_mstate_global->__pyx_n_s_REAL8
#define __pyx_n_s_REPLACE __pyx_mstate_global->__pyx_n_s_REPLACE
#define __pyx_n_s_REQUEST_NULL __pyx_mstate_global->__pyx_n_s_REQUEST_NULL
#define __pyx_n_s_RESIZED __pyx_mstate_global->__pyx_n_s_RESIZED
#define __pyx_n_s_RLock __pyx_mstate_global->__pyx_n_s_RLock
#define __pyx_n_s_ROOT __pyx_mstate_global->__pyx_n_s_ROOT
#define __pyx_n_s_Raccumulate __pyx_mstate_global->__pyx_n_s_Raccumulate
#define __pyx_n_s_Range_excl __pyx_mstate_global->__pyx_n_s_Range_excl
#define __pyx_n_s_Range_incl __pyx_mstate_global->__pyx_n_s_Range_incl
#define __pyx_n_s_Read __pyx_mstate_global->__pyx_n_s_Read
#define __pyx_n_s_Read_all __pyx_mstate_global->__pyx_n_s_Read_all
#define __pyx_n_s_Read_all_begin __pyx_mstate_global->__pyx_n_s_Read_all_begin
#define __pyx_n_s_Read_all_end __pyx_mstate_global->__pyx_n_s_Read_all_end
#define __pyx_n_s_Read_at __pyx_mstate_global->__pyx_n_s_Read_at
#define __pyx_n_s_Read_at_all __pyx_mstate_global->__pyx_n_s_Read_at_all
#define __pyx_n_s_Read_at_all_begin __pyx_mstate_global->__pyx_n_s_Read_at_all_begin
#define __pyx_n_s_Read_at_all_end __pyx_mstate_global->__pyx_n_s_Read_at_all_end
#define __pyx_n_s_Read_ordered __pyx_mstate_global->__pyx_n_s_Read_ordered
#define __pyx_n_s_Read_ordered_begin __pyx_mstate_global->__pyx_n_s_Read_ordered_begin
#define __pyx_n_s_Read_ordered_end __pyx_mstate_global->__pyx_n_s_Read_ordered_end
#define __pyx_n_s_Read_shared __pyx_mstate_global->__pyx_n_s_Read_shared
#define __pyx_n_s_Recv __pyx_mstate_global->__pyx_n_s_Recv
#define __pyx_n_s_Recv_init __pyx_mstate_global->__pyx_n_s_Recv_init
#define __pyx_n_s_Reduce __pyx_mstate_global->__pyx_n_s_Reduce
#define __pyx_n_s_Reduce_init __pyx_mstate_global->__pyx_n_s_Reduce_init
#define __pyx_n_s_Reduce_local __pyx_mstate_global->__pyx_n_s_Reduce_local
#define __pyx_n_s_Reduce_scatter __pyx_mstate_global->__pyx_n_s_Reduce_scatter
#define __pyx_n_s_Reduce_scatter_block __pyx_mstate_global->__pyx_n_s_Reduce_scatter_block
#define __pyx_n_s_Reduce_scatter_block_init __pyx_mstate_global->__pyx_n_s_Reduce_scatter_block_init
#define __pyx_n_s_Reduce_scatter_init __pyx_mstate_global->__pyx_n_s_Reduce_scatter_init
#define __pyx_n_s_Register_datarep __pyx_mstate_global->__pyx_n_s_Register_datarep
#define __pyx_n_s_Remove_error_class __pyx_mstate_global->__pyx_n_s_Remove_error_class
#define __pyx_n_s_Remove_error_code __pyx_mstate_global->__pyx_n_s_Remove_error_code
#define __pyx_n_s_Remove_error_string __pyx_mstate_global->__pyx_n_s_Remove_error_string
#define __pyx_n_s_Request __pyx_mstate_global->__pyx_n_s_Request
#define __pyx_n_s_Request_Cancel __pyx_mstate_global->__pyx_n_s_Request_Cancel
#define __pyx_n_s_Request_Free __pyx_mstate_global->__pyx_n_s_Request_Free
#define __pyx_n_s_Request_Get_status __pyx_mstate_global->__pyx_n_s_Request_Get_status
#define __pyx_n_s_Request_Get_status_all __pyx_mstate_global->__pyx_n_s_Request_Get_status_all
#define __pyx_n_s_Request_Get_status_any __pyx_mstate_global->__pyx_n_s_Request_Get_status_any
#define __pyx_n_s_Request_Get_status_some __pyx_mstate_global->__pyx_n_s_Request_Get_status_some
#define __pyx_n_s_Request_Test __pyx_mstate_global->__pyx_n_s_Request_Test
#define __pyx_n_s_Request_Testall __pyx_mstate_global->__pyx_n_s_Request_Testall
#define __pyx_n_s_Request_Testany __pyx_mstate_global->__pyx_n_s_Request_Testany
#define __pyx_n_s_Request_Testsome __pyx_mstate_global->__pyx_n_s_Request_Testsome
#define __pyx_n_s_Request_Wait __pyx_mstate_global->__pyx_n_s_Request_Wait
#define __pyx_n_s_Request_Waitall __pyx_mstate_global->__pyx_n_s_Request_Waitall
#define __pyx_n_s_Request_Waitany __pyx_mstate_global->__pyx_n_s_Request_Waitany
#define __pyx_n_s_Request_Waitsome __pyx_mstate_global->__pyx_n_s_Request_Waitsome
#define __pyx_n_s_Request___reduce __pyx_mstate_global->__pyx_n_s_Request___reduce
#define __pyx_n_s_Request_cancel __pyx_mstate_global->__pyx_n_s_Request_cancel
#define __pyx_n_s_Request_f2py __pyx_mstate_global->__pyx_n_s_Request_f2py
#define __pyx_n_s_Request_free __pyx_mstate_global->__pyx_n_s_Request_free
#define __pyx_n_s_Request_fromhandle __pyx_mstate_global->__pyx_n_s_Request_fromhandle
#define __pyx_n_s_Request_get_status __pyx_mstate_global->__pyx_n_s_Request_get_status
#define __pyx_n_s_Request_get_status_all __pyx_mstate_global->__pyx_n_s_Request_get_status_all
#define __pyx_n_s_Request_get_status_any __pyx_mstate_global->__pyx_n_s_Request_get_status_any
#define __pyx_n_s_Request_get_status_some __pyx_mstate_global->__pyx_n_s_Request_get_status_some
#define __pyx_n_s_Request_py2f __pyx_mstate_global->__pyx_n_s_Request_py2f
#define __pyx_n_s_Request_test __pyx_mstate_global->__pyx_n_s_Request_test
#define __pyx_n_s_Request_testall __pyx_mstate_global->__pyx_n_s_Request_testall
#define __pyx_n_s_Request_testany __pyx_mstate_global->__pyx_n_s_Request_testany
#define __pyx_n_s_Request_testsome __pyx_mstate_global->__pyx_n_s_Request_testsome
#define __pyx_n_s_Request_wait __pyx_mstate_global->__pyx_n_s_Request_wait
#define __pyx_n_s_Request_waitall __pyx_mstate_global->__pyx_n_s_Request_waitall
#define __pyx_n_s_Request_waitany __pyx_mstate_global->__pyx_n_s_Request_waitany
#define __pyx_n_s_Request_waitsome __pyx_mstate_global->__pyx_n_s_Request_waitsome
#define __pyx_n_s_Resized __pyx_mstate_global->__pyx_n_s_Resized
#define __pyx_n_s_Revoke __pyx_mstate_global->__pyx_n_s_Revoke
#define __pyx_n_s_Rget __pyx_mstate_global->__pyx_n_s_Rget
#define __pyx_n_s_Rget_accumulate __pyx_mstate_global->__pyx_n_s_Rget_accumulate
#define __pyx_n_s_Rput __pyx_mstate_global->__pyx_n_s_Rput
#define __pyx_n_s_Rsend __pyx_mstate_global->__pyx_n_s_Rsend
#define __pyx_n_s_Rsend_init __pyx_mstate_global->__pyx_n_s_Rsend_init
#define __pyx_n_s_RuntimeWarning __pyx_mstate_global->__pyx_n_s_RuntimeWarning
#define __pyx_n_s_SEEK_CUR __pyx_mstate_global->__pyx_n_s_SEEK_CUR
#define __pyx_n_s_SEEK_END __pyx_mstate_global->__pyx_n_s_SEEK_END
#define __pyx_n_s_SEEK_SET __pyx_mstate_global->__pyx_n_s_SEEK_SET
#define __pyx_n_s_SESSION_NULL __pyx_mstate_global->__pyx_n_s_SESSION_NULL
#define __pyx_n_s_SHORT __pyx_mstate_global->__pyx_n_s_SHORT
#define __pyx_n_s_SHORT_INT __pyx_mstate_global->__pyx_n_s_SHORT_INT
#define __pyx_n_s_SIGNED_CHAR __pyx_mstate_global->__pyx_n_s_SIGNED_CHAR
#define __pyx_n_s_SIGNED_INT __pyx_mstate_global->__pyx_n_s_SIGNED_INT
#define __pyx_n_s_SIGNED_LONG __pyx_mstate_global->__pyx_n_s_SIGNED_LONG
#define __pyx_n_s_SIGNED_LONG_LONG __pyx_mstate_global->__pyx_n_s_SIGNED_LONG_LONG
#define __pyx_n_s_SIGNED_SHORT __pyx_mstate_global->__pyx_n_s_SIGNED_SHORT
#define __pyx_n_s_SIMILAR __pyx_mstate_global->__pyx_n_s_SIMILAR
#define __pyx_n_s_SINT16_T __pyx_mstate_global->__pyx_n_s_SINT16_T
#define __pyx_n_s_SINT32_T __pyx_mstate_global->__pyx_n_s_SINT32_T
#define __pyx_n_s_SINT64_T __pyx_mstate_global->__pyx_n_s_SINT64_T
#define __pyx_n_s_SINT8_T __pyx_mstate_global->__pyx_n_s_SINT8_T
#define __pyx_n_s_STRUCT __pyx_mstate_global->__pyx_n_s_STRUCT
#define __pyx_n_s_SUBARRAY __pyx_mstate_global->__pyx_n_s_SUBARRAY
#define __pyx_n_s_SUBVERSION __pyx_mstate_global->__pyx_n_s_SUBVERSION
#define __pyx_n_s_SUCCESS __pyx_mstate_global->__pyx_n_s_SUCCESS
#define __pyx_n_s_SUM __pyx_mstate_global->__pyx_n_s_SUM
#define __pyx_n_s_Scan __pyx_mstate_global->__pyx_n_s_Scan
#define __pyx_n_s_Scan_init __pyx_mstate_global->__pyx_n_s_Scan_init
#define __pyx_n_s_Scatter __pyx_mstate_global->__pyx_n_s_Scatter
#define __pyx_n_s_Scatter_init __pyx_mstate_global->__pyx_n_s_Scatter_init
#define __pyx_n_s_Scatterv __pyx_mstate_global->__pyx_n_s_Scatterv
#define __pyx_n_s_Scatterv_init __pyx_mstate_global->__pyx_n_s_Scatterv_init
#define __pyx_n_s_Seek __pyx_mstate_global->__pyx_n_s_Seek
#define __pyx_n_s_Seek_shared __pyx_mstate_global->__pyx_n_s_Seek_shared
#define __pyx_n_s_Self __pyx_mstate_global->__pyx_n_s_Self
#define __pyx_kp_s_Self_None __pyx_mstate_global->__pyx_kp_s_Self_None
#define __pyx_n_s_Send __pyx_mstate_global->__pyx_n_s_Send
#define __pyx_n_s_Send_init __pyx_mstate_global->__pyx_n_s_Send_init
#define __pyx_n_s_Sendrecv __pyx_mstate_global->__pyx_n_s_Sendrecv
#define __pyx_n_s_Sendrecv_replace __pyx_mstate_global->__pyx_n_s_Sendrecv_replace
#define __pyx_kp_s_Sequence_Any __pyx_mstate_global->__pyx_kp_s_Sequence_Any
#define __pyx_kp_s_Sequence_Any_None __pyx_mstate_global->__pyx_kp_s_Sequence_Any_None
#define __pyx_kp_s_Sequence_Datatype __pyx_mstate_global->__pyx_kp_s_Sequence_Datatype
#define __pyx_kp_s_Sequence_Info_Info __pyx_mstate_global->__pyx_kp_s_Sequence_Info_Info
#define __pyx_kp_s_Sequence_Request __pyx_mstate_global->__pyx_kp_s_Sequence_Request
#define __pyx_kp_s_Sequence_Sequence_str_None __pyx_mstate_global->__pyx_kp_s_Sequence_Sequence_str_None
#define __pyx_kp_s_Sequence_bool __pyx_mstate_global->__pyx_kp_s_Sequence_bool
#define __pyx_kp_s_Sequence_bool_None __pyx_mstate_global->__pyx_kp_s_Sequence_bool_None
#define __pyx_kp_s_Sequence_int __pyx_mstate_global->__pyx_kp_s_Sequence_int
#define __pyx_kp_s_Sequence_int_None __pyx_mstate_global->__pyx_kp_s_Sequence_int_None
#define __pyx_kp_s_Sequence_str __pyx_mstate_global->__pyx_kp_s_Sequence_str
#define __pyx_kp_s_Sequence_str_None __pyx_mstate_global->__pyx_kp_s_Sequence_str_None
#define __pyx_kp_s_Sequence_tuple_int_int_int __pyx_mstate_global->__pyx_kp_s_Sequence_tuple_int_int_int
#define __pyx_n_s_Session __pyx_mstate_global->__pyx_n_s_Session
#define __pyx_n_s_Session_Attach_buffer __pyx_mstate_global->__pyx_n_s_Session_Attach_buffer
#define __pyx_n_s_Session_Call_errhandler __pyx_mstate_global->__pyx_n_s_Session_Call_errhandler
#define __pyx_n_s_Session_Create_errhandler __pyx_mstate_global->__pyx_n_s_Session_Create_errhandler
#define __pyx_n_s_Session_Create_group __pyx_mstate_global->__pyx_n_s_Session_Create_group
#define __pyx_n_s_Session_Detach_buffer __pyx_mstate_global->__pyx_n_s_Session_Detach_buffer
#define __pyx_n_s_Session_Finalize __pyx_mstate_global->__pyx_n_s_Session_Finalize
#define __pyx_n_s_Session_Flush_buffer __pyx_mstate_global->__pyx_n_s_Session_Flush_buffer
#define __pyx_n_s_Session_Get_errhandler __pyx_mstate_global->__pyx_n_s_Session_Get_errhandler
#define __pyx_n_s_Session_Get_info __pyx_mstate_global->__pyx_n_s_Session_Get_info
#define __pyx_n_s_Session_Get_nth_pset __pyx_mstate_global->__pyx_n_s_Session_Get_nth_pset
#define __pyx_n_s_Session_Get_num_psets __pyx_mstate_global->__pyx_n_s_Session_Get_num_psets
#define __pyx_n_s_Session_Get_pset_info __pyx_mstate_global->__pyx_n_s_Session_Get_pset_info
#define __pyx_n_s_Session_Iflush_buffer __pyx_mstate_global->__pyx_n_s_Session_Iflush_buffer
#define __pyx_n_s_Session_Init __pyx_mstate_global->__pyx_n_s_Session_Init
#define __pyx_n_s_Session_Set_errhandler __pyx_mstate_global->__pyx_n_s_Session_Set_errhandler
#define __pyx_n_s_Session___reduce __pyx_mstate_global->__pyx_n_s_Session___reduce
#define __pyx_n_s_Session_f2py __pyx_mstate_global->__pyx_n_s_Session_f2py
#define __pyx_n_s_Session_free __pyx_mstate_global->__pyx_n_s_Session_free
#define __pyx_n_s_Session_fromhandle __pyx_mstate_global->__pyx_n_s_Session_fromhandle
#define __pyx_n_s_Session_py2f __pyx_mstate_global->__pyx_n_s_Session_py2f
#define __pyx_n_s_Set __pyx_mstate_global->__pyx_n_s_Set
#define __pyx_n_s_Set_atomicity __pyx_mstate_global->__pyx_n_s_Set_atomicity
#define __pyx_n_s_Set_attr __pyx_mstate_global->__pyx_n_s_Set_attr
#define __pyx_n_s_Set_cancelled __pyx_mstate_global->__pyx_n_s_Set_cancelled
#define __pyx_n_s_Set_elements __pyx_mstate_global->__pyx_n_s_Set_elements
#define __pyx_n_s_Set_errhandler __pyx_mstate_global->__pyx_n_s_Set_errhandler
#define __pyx_n_s_Set_error __pyx_mstate_global->__pyx_n_s_Set_error
#define __pyx_n_s_Set_info __pyx_mstate_global->__pyx_n_s_Set_info
#define __pyx_n_s_Set_name __pyx_mstate_global->__pyx_n_s_Set_name
#define __pyx_n_s_Set_size __pyx_mstate_global->__pyx_n_s_Set_size
#define __pyx_n_s_Set_source __pyx_mstate_global->__pyx_n_s_Set_source
#define __pyx_n_s_Set_tag __pyx_mstate_global->__pyx_n_s_Set_tag
#define __pyx_n_s_Set_view __pyx_mstate_global->__pyx_n_s_Set_view
#define __pyx_n_s_Shared_query __pyx_mstate_global->__pyx_n_s_Shared_query
#define __pyx_n_s_Shift __pyx_mstate_global->__pyx_n_s_Shift
#define __pyx_n_s_Shrink __pyx_mstate_global->__pyx_n_s_Shrink
#define __pyx_n_s_Spawn __pyx_mstate_global->__pyx_n_s_Spawn
#define __pyx_n_s_Spawn_multiple __pyx_mstate_global->__pyx_n_s_Spawn_multiple
#define __pyx_n_s_Split __pyx_mstate_global->__pyx_n_s_Split
#define __pyx_n_s_Split_type __pyx_mstate_global->__pyx_n_s_Split_type
#define __pyx_n_s_Ssend __pyx_mstate_global->__pyx_n_s_Ssend
#define __pyx_n_s_Ssend_init __pyx_mstate_global->__pyx_n_s_Ssend_init
#define __pyx_n_s_Start __pyx_mstate_global->__pyx_n_s_Start
#define __pyx_n_s_Startall __pyx_mstate_global->__pyx_n_s_Startall
#define __pyx_n_s_Status __pyx_mstate_global->__pyx_n_s_Status
#define __pyx_n_s_Status_Get_count __pyx_mstate_global->__pyx_n_s_Status_Get_count
#define __pyx_n_s_Status_Get_elements __pyx_mstate_global->__pyx_n_s_Status_Get_elements
#define __pyx_n_s_Status_Get_error __pyx_mstate_global->__pyx_n_s_Status_Get_error
#define __pyx_n_s_Status_Get_source __pyx_mstate_global->__pyx_n_s_Status_Get_source
#define __pyx_n_s_Status_Get_tag __pyx_mstate_global->__pyx_n_s_Status_Get_tag
#define __pyx_n_s_Status_Is_cancelled __pyx_mstate_global->__pyx_n_s_Status_Is_cancelled
#define __pyx_kp_s_Status_None __pyx_mstate_global->__pyx_kp_s_Status_None
#define __pyx_n_s_Status_Set_cancelled __pyx_mstate_global->__pyx_n_s_Status_Set_cancelled
#define __pyx_n_s_Status_Set_elements __pyx_mstate_global->__pyx_n_s_Status_Set_elements
#define __pyx_n_s_Status_Set_error __pyx_mstate_global->__pyx_n_s_Status_Set_error
#define __pyx_n_s_Status_Set_source __pyx_mstate_global->__pyx_n_s_Status_Set_source
#define __pyx_n_s_Status_Set_tag __pyx_mstate_global->__pyx_n_s_Status_Set_tag
#define __pyx_n_s_Status___getstate __pyx_mstate_global->__pyx_n_s_Status___getstate
#define __pyx_n_s_Status___reduce __pyx_mstate_global->__pyx_n_s_Status___reduce
#define __pyx_n_s_Status___setstate __pyx_mstate_global->__pyx_n_s_Status___setstate
#define __pyx_n_s_Status_f2py __pyx_mstate_global->__pyx_n_s_Status_f2py
#define __pyx_n_s_Status_py2f __pyx_mstate_global->__pyx_n_s_Status_py2f
#define __pyx_n_s_Sub __pyx_mstate_global->__pyx_n_s_Sub
#define __pyx_n_s_Sync __pyx_mstate_global->__pyx_n_s_Sync
#define __pyx_n_s_TAG_UB __pyx_mstate_global->__pyx_n_s_TAG_UB
#define __pyx_n_s_THREAD_FUNNELED __pyx_mstate_global->__pyx_n_s_THREAD_FUNNELED
#define __pyx_n_s_THREAD_MULTIPLE __pyx_mstate_global->__pyx_n_s_THREAD_MULTIPLE
#define __pyx_n_s_THREAD_SERIALIZED __pyx_mstate_global->__pyx_n_s_THREAD_SERIALIZED
#define __pyx_n_s_THREAD_SINGLE __pyx_mstate_global->__pyx_n_s_THREAD_SINGLE
#define __pyx_n_s_TWOINT __pyx_mstate_global->__pyx_n_s_TWOINT
#define __pyx_n_s_TYPECLASS_COMPLEX __pyx_mstate_global->__pyx_n_s_TYPECLASS_COMPLEX
#define __pyx_n_s_TYPECLASS_INTEGER __pyx_mstate_global->__pyx_n_s_TYPECLASS_INTEGER
#define __pyx_n_s_TYPECLASS_REAL __pyx_mstate_global->__pyx_n_s_TYPECLASS_REAL
#define __pyx_kp_s_TargetSpec_None __pyx_mstate_global->__pyx_kp_s_TargetSpec_None
#define __pyx_n_s_Test __pyx_mstate_global->__pyx_n_s_Test
#define __pyx_n_s_Testall __pyx_mstate_global->__pyx_n_s_Testall
#define __pyx_n_s_Testany __pyx_mstate_global->__pyx_n_s_Testany
#define __pyx_n_s_Testsome __pyx_mstate_global->__pyx_n_s_Testsome
#define __pyx_n_s_Topocomm __pyx_mstate_global->__pyx_n_s_Topocomm
#define __pyx_n_s_Topocomm_Ineighbor_allgather __pyx_mstate_global->__pyx_n_s_Topocomm_Ineighbor_allgather
#define __pyx_n_s_Topocomm_Ineighbor_allgatherv __pyx_mstate_global->__pyx_n_s_Topocomm_Ineighbor_allgatherv
#define __pyx_n_s_Topocomm_Ineighbor_alltoall __pyx_mstate_global->__pyx_n_s_Topocomm_Ineighbor_alltoall
#define __pyx_n_s_Topocomm_Ineighbor_alltoallv __pyx_mstate_global->__pyx_n_s_Topocomm_Ineighbor_alltoallv
#define __pyx_n_s_Topocomm_Ineighbor_alltoallw __pyx_mstate_global->__pyx_n_s_Topocomm_Ineighbor_alltoallw
#define __pyx_n_s_Topocomm_Neighbor_allgather __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_allgather
#define __pyx_n_s_Topocomm_Neighbor_allgather_init __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_allgather_init
#define __pyx_n_s_Topocomm_Neighbor_allgatherv __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_allgatherv
#define __pyx_n_s_Topocomm_Neighbor_allgatherv_ini __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_allgatherv_ini
#define __pyx_n_s_Topocomm_Neighbor_alltoall __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_alltoall
#define __pyx_n_s_Topocomm_Neighbor_alltoall_init __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_alltoall_init
#define __pyx_n_s_Topocomm_Neighbor_alltoallv __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_alltoallv
#define __pyx_n_s_Topocomm_Neighbor_alltoallv_init __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_alltoallv_init
#define __pyx_n_s_Topocomm_Neighbor_alltoallw __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_alltoallw
#define __pyx_n_s_Topocomm_Neighbor_alltoallw_init __pyx_mstate_global->__pyx_n_s_Topocomm_Neighbor_alltoallw_init
#define __pyx_n_s_Topocomm_neighbor_allgather __pyx_mstate_global->__pyx_n_s_Topocomm_neighbor_allgather
#define __pyx_n_s_Topocomm_neighbor_alltoall __pyx_mstate_global->__pyx_n_s_Topocomm_neighbor_alltoall
#define __pyx_n_s_Translate_ranks __pyx_mstate_global->__pyx_n_s_Translate_ranks
#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
#define __pyx_n_s_UINT16_T __pyx_mstate_global->__pyx_n_s_UINT16_T
#define __pyx_n_s_UINT32_T __pyx_mstate_global->__pyx_n_s_UINT32_T
#define __pyx_n_s_UINT64_T __pyx_mstate_global->__pyx_n_s_UINT64_T
#define __pyx_n_s_UINT8_T __pyx_mstate_global->__pyx_n_s_UINT8_T
#define __pyx_n_s_UNDEFINED __pyx_mstate_global->__pyx_n_s_UNDEFINED
#define __pyx_n_s_UNEQUAL __pyx_mstate_global->__pyx_n_s_UNEQUAL
#define __pyx_n_s_UNIVERSE_SIZE __pyx_mstate_global->__pyx_n_s_UNIVERSE_SIZE
#define __pyx_n_s_UNSIGNED __pyx_mstate_global->__pyx_n_s_UNSIGNED
#define __pyx_n_s_UNSIGNED_CHAR __pyx_mstate_global->__pyx_n_s_UNSIGNED_CHAR
#define __pyx_n_s_UNSIGNED_INT __pyx_mstate_global->__pyx_n_s_UNSIGNED_INT
#define __pyx_n_s_UNSIGNED_LONG __pyx_mstate_global->__pyx_n_s_UNSIGNED_LONG
#define __pyx_n_s_UNSIGNED_LONG_LONG __pyx_mstate_global->__pyx_n_s_UNSIGNED_LONG_LONG
#define __pyx_n_s_UNSIGNED_SHORT __pyx_mstate_global->__pyx_n_s_UNSIGNED_SHORT
#define __pyx_n_s_UNWEIGHTED __pyx_mstate_global->__pyx_n_s_UNWEIGHTED
#define __pyx_n_s_Union __pyx_mstate_global->__pyx_n_s_Union
#define __pyx_n_s_Unlock __pyx_mstate_global->__pyx_n_s_Unlock
#define __pyx_n_s_Unlock_all __pyx_mstate_global->__pyx_n_s_Unlock_all
#define __pyx_n_s_Unpack __pyx_mstate_global->__pyx_n_s_Unpack
#define __pyx_n_s_Unpack_external __pyx_mstate_global->__pyx_n_s_Unpack_external
#define __pyx_n_s_Unpublish_name __pyx_mstate_global->__pyx_n_s_Unpublish_name
#define __pyx_n_s_UserWarning __pyx_mstate_global->__pyx_n_s_UserWarning
#define __pyx_n_s_V __pyx_mstate_global->__pyx_n_s_V
#define __pyx_n_u_V __pyx_mstate_global->__pyx_n_u_V
#define __pyx_n_s_VALUE_INDEX __pyx_mstate_global->__pyx_n_s_VALUE_INDEX
#define __pyx_n_s_VECTOR __pyx_mstate_global->__pyx_n_s_VECTOR
#define __pyx_n_s_VERSION __pyx_mstate_global->__pyx_n_s_VERSION
#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
#define __pyx_n_s_WCHAR __pyx_mstate_global->__pyx_n_s_WCHAR
#define __pyx_n_s_WEIGHTS_EMPTY __pyx_mstate_global->__pyx_n_s_WEIGHTS_EMPTY
#define __pyx_n_s_WIN_BASE __pyx_mstate_global->__pyx_n_s_WIN_BASE
#define __pyx_n_s_WIN_CREATE_FLAVOR __pyx_mstate_global->__pyx_n_s_WIN_CREATE_FLAVOR
#define __pyx_n_s_WIN_DISP_UNIT __pyx_mstate_global->__pyx_n_s_WIN_DISP_UNIT
#define __pyx_n_s_WIN_FLAVOR __pyx_mstate_global->__pyx_n_s_WIN_FLAVOR
#define __pyx_n_s_WIN_FLAVOR_ALLOCATE __pyx_mstate_global->__pyx_n_s_WIN_FLAVOR_ALLOCATE
#define __pyx_n_s_WIN_FLAVOR_CREATE __pyx_mstate_global->__pyx_n_s_WIN_FLAVOR_CREATE
#define __pyx_n_s_WIN_FLAVOR_DYNAMIC __pyx_mstate_global->__pyx_n_s_WIN_FLAVOR_DYNAMIC
#define __pyx_n_s_WIN_FLAVOR_SHARED __pyx_mstate_global->__pyx_n_s_WIN_FLAVOR_SHARED
#define __pyx_n_s_WIN_MODEL __pyx_mstate_global->__pyx_n_s_WIN_MODEL
#define __pyx_n_s_WIN_NULL __pyx_mstate_global->__pyx_n_s_WIN_NULL
#define __pyx_n_s_WIN_SEPARATE __pyx_mstate_global->__pyx_n_s_WIN_SEPARATE
#define __pyx_n_s_WIN_SIZE __pyx_mstate_global->__pyx_n_s_WIN_SIZE
#define __pyx_n_s_WIN_UNIFIED __pyx_mstate_global->__pyx_n_s_WIN_UNIFIED
#define __pyx_n_s_WTIME_IS_GLOBAL __pyx_mstate_global->__pyx_n_s_WTIME_IS_GLOBAL
#define __pyx_n_s_Wait __pyx_mstate_global->__pyx_n_s_Wait
#define __pyx_n_s_Waitall __pyx_mstate_global->__pyx_n_s_Waitall
#define __pyx_n_s_Waitany __pyx_mstate_global->__pyx_n_s_Waitany
#define __pyx_n_s_Waitsome __pyx_mstate_global->__pyx_n_s_Waitsome
#define __pyx_n_s_Win __pyx_mstate_global->__pyx_n_s_Win
#define __pyx_n_s_Win_Accumulate __pyx_mstate_global->__pyx_n_s_Win_Accumulate
#define __pyx_n_s_Win_Allocate __pyx_mstate_global->__pyx_n_s_Win_Allocate
#define __pyx_n_s_Win_Allocate_shared __pyx_mstate_global->__pyx_n_s_Win_Allocate_shared
#define __pyx_n_s_Win_Attach __pyx_mstate_global->__pyx_n_s_Win_Attach
#define __pyx_n_s_Win_Call_errhandler __pyx_mstate_global->__pyx_n_s_Win_Call_errhandler
#define __pyx_n_s_Win_Compare_and_swap __pyx_mstate_global->__pyx_n_s_Win_Compare_and_swap
#define __pyx_n_s_Win_Complete __pyx_mstate_global->__pyx_n_s_Win_Complete
#define __pyx_n_s_Win_Create __pyx_mstate_global->__pyx_n_s_Win_Create
#define __pyx_n_s_Win_Create_dynamic __pyx_mstate_global->__pyx_n_s_Win_Create_dynamic
#define __pyx_n_s_Win_Create_errhandler __pyx_mstate_global->__pyx_n_s_Win_Create_errhandler
#define __pyx_n_s_Win_Create_keyval __pyx_mstate_global->__pyx_n_s_Win_Create_keyval
#define __pyx_n_s_Win_Delete_attr __pyx_mstate_global->__pyx_n_s_Win_Delete_attr
#define __pyx_n_s_Win_Detach __pyx_mstate_global->__pyx_n_s_Win_Detach
#define __pyx_n_s_Win_Fence __pyx_mstate_global->__pyx_n_s_Win_Fence
#define __pyx_n_s_Win_Fetch_and_op __pyx_mstate_global->__pyx_n_s_Win_Fetch_and_op
#define __pyx_n_s_Win_Flush __pyx_mstate_global->__pyx_n_s_Win_Flush
#define __pyx_n_s_Win_Flush_all __pyx_mstate_global->__pyx_n_s_Win_Flush_all
#define __pyx_n_s_Win_Flush_local __pyx_mstate_global->__pyx_n_s_Win_Flush_local
#define __pyx_n_s_Win_Flush_local_all __pyx_mstate_global->__pyx_n_s_Win_Flush_local_all
#define __pyx_n_s_Win_Free __pyx_mstate_global->__pyx_n_s_Win_Free
#define __pyx_n_s_Win_Free_keyval __pyx_mstate_global->__pyx_n_s_Win_Free_keyval
#define __pyx_n_s_Win_Get __pyx_mstate_global->__pyx_n_s_Win_Get
#define __pyx_n_s_Win_Get_accumulate __pyx_mstate_global->__pyx_n_s_Win_Get_accumulate
#define __pyx_n_s_Win_Get_attr __pyx_mstate_global->__pyx_n_s_Win_Get_attr
#define __pyx_n_s_Win_Get_errhandler __pyx_mstate_global->__pyx_n_s_Win_Get_errhandler
#define __pyx_n_s_Win_Get_group __pyx_mstate_global->__pyx_n_s_Win_Get_group
#define __pyx_n_s_Win_Get_info __pyx_mstate_global->__pyx_n_s_Win_Get_info
#define __pyx_n_s_Win_Get_name __pyx_mstate_global->__pyx_n_s_Win_Get_name
#define __pyx_n_s_Win_Lock __pyx_mstate_global->__pyx_n_s_Win_Lock
#define __pyx_n_s_Win_Lock_all __pyx_mstate_global->__pyx_n_s_Win_Lock_all
#define __pyx_n_s_Win_Post __pyx_mstate_global->__pyx_n_s_Win_Post
#define __pyx_n_s_Win_Put __pyx_mstate_global->__pyx_n_s_Win_Put
#define __pyx_n_s_Win_Raccumulate __pyx_mstate_global->__pyx_n_s_Win_Raccumulate
#define __pyx_n_s_Win_Rget __pyx_mstate_global->__pyx_n_s_Win_Rget
#define __pyx_n_s_Win_Rget_accumulate __pyx_mstate_global->__pyx_n_s_Win_Rget_accumulate
#define __pyx_n_s_Win_Rput __pyx_mstate_global->__pyx_n_s_Win_Rput
#define __pyx_n_s_Win_Set_attr __pyx_mstate_global->__pyx_n_s_Win_Set_attr
#define __pyx_n_s_Win_Set_errhandler __pyx_mstate_global->__pyx_n_s_Win_Set_errhandler
#define __pyx_n_s_Win_Set_info __pyx_mstate_global->__pyx_n_s_Win_Set_info
#define __pyx_n_s_Win_Set_name __pyx_mstate_global->__pyx_n_s_Win_Set_name
#define __pyx_n_s_Win_Shared_query __pyx_mstate_global->__pyx_n_s_Win_Shared_query
#define __pyx_n_s_Win_Start __pyx_mstate_global->__pyx_n_s_Win_Start
#define __pyx_n_s_Win_Sync __pyx_mstate_global->__pyx_n_s_Win_Sync
#define __pyx_n_s_Win_Test __pyx_mstate_global->__pyx_n_s_Win_Test
#define __pyx_n_s_Win_Unlock __pyx_mstate_global->__pyx_n_s_Win_Unlock
#define __pyx_n_s_Win_Unlock_all __pyx_mstate_global->__pyx_n_s_Win_Unlock_all
#define __pyx_n_s_Win_Wait __pyx_mstate_global->__pyx_n_s_Win_Wait
#define __pyx_n_s_Win___reduce __pyx_mstate_global->__pyx_n_s_Win___reduce
#define __pyx_n_s_Win_f2py __pyx_mstate_global->__pyx_n_s_Win_f2py
#define __pyx_n_s_Win_free __pyx_mstate_global->__pyx_n_s_Win_free
#define __pyx_n_s_Win_fromhandle __pyx_mstate_global->__pyx_n_s_Win_fromhandle
#define __pyx_n_s_Win_py2f __pyx_mstate_global->__pyx_n_s_Win_py2f
#define __pyx_n_s_Win_tomemory __pyx_mstate_global->__pyx_n_s_Win_tomemory
#define __pyx_n_s_Write __pyx_mstate_global->__pyx_n_s_Write
#define __pyx_n_s_Write_all __pyx_mstate_global->__pyx_n_s_Write_all
#define __pyx_n_s_Write_all_begin __pyx_mstate_global->__pyx_n_s_Write_all_begin
#define __pyx_n_s_Write_all_end __pyx_mstate_global->__pyx_n_s_Write_all_end
#define __pyx_n_s_Write_at __pyx_mstate_global->__pyx_n_s_Write_at
#define __pyx_n_s_Write_at_all __pyx_mstate_global->__pyx_n_s_Write_at_all
#define __pyx_n_s_Write_at_all_begin __pyx_mstate_global->__pyx_n_s_Write_at_all_begin
#define __pyx_n_s_Write_at_all_end __pyx_mstate_global->__pyx_n_s_Write_at_all_end
#define __pyx_n_s_Write_ordered __pyx_mstate_global->__pyx_n_s_Write_ordered
#define __pyx_n_s_Write_ordered_begin __pyx_mstate_global->__pyx_n_s_Write_ordered_begin
#define __pyx_n_s_Write_ordered_end __pyx_mstate_global->__pyx_n_s_Write_ordered_end
#define __pyx_n_s_Write_shared __pyx_mstate_global->__pyx_n_s_Write_shared
#define __pyx_n_s_Wtick __pyx_mstate_global->__pyx_n_s_Wtick
#define __pyx_n_s_Wtime __pyx_mstate_global->__pyx_n_s_Wtime
#define __pyx_kp_u__17 __pyx_mstate_global->__pyx_kp_u__17
#define __pyx_kp_u__2 __pyx_mstate_global->__pyx_kp_u__2
#define __pyx_n_s__205 __pyx_mstate_global->__pyx_n_s__205
#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3
#define __pyx_kp_u__30 __pyx_mstate_global->__pyx_kp_u__30
#define __pyx_kp_u__57 __pyx_mstate_global->__pyx_kp_u__57
#define __pyx_n_s__809 __pyx_mstate_global->__pyx_n_s__809
#define __pyx_n_s_a __pyx_mstate_global->__pyx_n_s_a
#define __pyx_n_s_abort __pyx_mstate_global->__pyx_n_s_abort
#define __pyx_n_s_addr __pyx_mstate_global->__pyx_n_s_addr
#define __pyx_n_s_addr1 __pyx_mstate_global->__pyx_n_s_addr1
#define __pyx_n_s_addr2 __pyx_mstate_global->__pyx_n_s_addr2
#define __pyx_n_s_address __pyx_mstate_global->__pyx_n_s_address
#define __pyx_n_s_addresses __pyx_mstate_global->__pyx_n_s_addresses
#define __pyx_n_s_addressof __pyx_mstate_global->__pyx_n_s_addressof
#define __pyx_n_s_align __pyx_mstate_global->__pyx_n_s_align
#define __pyx_n_s_allgather __pyx_mstate_global->__pyx_n_s_allgather
#define __pyx_n_s_allocate __pyx_mstate_global->__pyx_n_s_allocate
#define __pyx_n_s_allocate_lock __pyx_mstate_global->__pyx_n_s_allocate_lock
#define __pyx_n_s_allreduce __pyx_mstate_global->__pyx_n_s_allreduce
#define __pyx_n_s_alltoall __pyx_mstate_global->__pyx_n_s_alltoall
#define __pyx_n_s_amode __pyx_mstate_global->__pyx_n_s_amode
#define __pyx_kp_u_and_counts __pyx_mstate_global->__pyx_kp_u_and_counts
#define __pyx_kp_u_and_receive_count __pyx_mstate_global->__pyx_kp_u_and_receive_count
#define __pyx_kp_u_and_sum_counts __pyx_mstate_global->__pyx_kp_u_and_sum_counts
#define __pyx_n_s_append __pyx_mstate_global->__pyx_n_s_append
#define __pyx_n_s_arg __pyx_mstate_global->__pyx_n_s_arg
#define __pyx_n_s_argc __pyx_mstate_global->__pyx_n_s_argc
#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
#define __pyx_n_s_argv __pyx_mstate_global->__pyx_n_s_argv
#define __pyx_n_s_argvs __pyx_mstate_global->__pyx_n_s_argvs
#define __pyx_n_s_array_of_partitions __pyx_mstate_global->__pyx_n_s_array_of_partitions
#define __pyx_n_s_assertion __pyx_mstate_global->__pyx_n_s_assertion
#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
#define __pyx_n_s_attrval __pyx_mstate_global->__pyx_n_s_attrval
#define __pyx_n_s_barrier __pyx_mstate_global->__pyx_n_s_barrier
#define __pyx_n_s_base __pyx_mstate_global->__pyx_n_s_base
#define __pyx_n_s_baseptr __pyx_mstate_global->__pyx_n_s_baseptr
#define __pyx_n_s_bcast __pyx_mstate_global->__pyx_n_s_bcast
#define __pyx_kp_s_bcast_p2p __pyx_mstate_global->__pyx_kp_s_bcast_p2p
#define __pyx_n_s_blocklength __pyx_mstate_global->__pyx_n_s_blocklength
#define __pyx_n_s_blocklengths __pyx_mstate_global->__pyx_n_s_blocklengths
#define __pyx_n_s_bool __pyx_mstate_global->__pyx_n_s_bool
#define __pyx_n_s_bsend __pyx_mstate_global->__pyx_n_s_bsend
#define __pyx_n_s_buf __pyx_mstate_global->__pyx_n_s_buf
#define __pyx_n_s_buffer __pyx_mstate_global->__pyx_n_s_buffer
#define __pyx_n_s_buffer_allocate __pyx_mstate_global->__pyx_n_s_buffer_allocate
#define __pyx_n_s_buffer_callback __pyx_mstate_global->__pyx_n_s_buffer_callback
#define __pyx_n_s_buffer_cast __pyx_mstate_global->__pyx_n_s_buffer_cast
#define __pyx_n_s_buffer_fromaddress __pyx_mstate_global->__pyx_n_s_buffer_fromaddress
#define __pyx_n_s_buffer_frombuffer __pyx_mstate_global->__pyx_n_s_buffer_frombuffer
#define __pyx_kp_s_buffer_is_not_CPU_accessible __pyx_mstate_global->__pyx_kp_s_buffer_is_not_CPU_accessible
#define __pyx_kp_s_buffer_is_read_only __pyx_mstate_global->__pyx_kp_s_buffer_is_read_only
#define __pyx_n_s_buffer_release __pyx_mstate_global->__pyx_n_s_buffer_release
#define __pyx_n_s_buffer_tobytes __pyx_mstate_global->__pyx_n_s_buffer_tobytes
#define __pyx_n_s_buffer_toreadonly __pyx_mstate_global->__pyx_n_s_buffer_toreadonly
#define __pyx_n_s_buffers __pyx_mstate_global->__pyx_n_s_buffers
#define __pyx_n_s_buflen __pyx_mstate_global->__pyx_n_s_buflen
#define __pyx_n_s_bytes __pyx_mstate_global->__pyx_n_s_bytes
#define __pyx_n_s_c __pyx_mstate_global->__pyx_n_s_c
#define __pyx_n_s_c_num_to_ack __pyx_mstate_global->__pyx_n_s_c_num_to_ack
#define __pyx_n_s_c_status __pyx_mstate_global->__pyx_n_s_c_status
#define __pyx_n_s_call __pyx_mstate_global->__pyx_n_s_call
#define __pyx_n_s_cancel __pyx_mstate_global->__pyx_n_s_cancel
#define __pyx_n_s_cancel_fn __pyx_mstate_global->__pyx_n_s_cancel_fn
#define __pyx_n_s_cancelled __pyx_mstate_global->__pyx_n_s_cancelled
#define __pyx_kp_s_cannot_call_user_defined_operati __pyx_mstate_global->__pyx_kp_s_cannot_call_user_defined_operati
#define __pyx_kp_s_cannot_create_instance __pyx_mstate_global->__pyx_kp_s_cannot_create_instance
#define __pyx_kp_s_cannot_create_too_many_user_defi __pyx_mstate_global->__pyx_kp_s_cannot_create_too_many_user_defi
#define __pyx_kp_s_cannot_create_too_many_user_defi_2 __pyx_mstate_global->__pyx_kp_s_cannot_create_too_many_user_defi_2
#define __pyx_kp_u_cannot_map __pyx_mstate_global->__pyx_kp_u_cannot_map
#define __pyx_kp_u_cannot_map_code __pyx_mstate_global->__pyx_kp_u_cannot_map_code
#define __pyx_kp_s_cannot_map_to_character_code_or __pyx_mstate_global->__pyx_kp_s_cannot_map_to_character_code_or
#define __pyx_kp_s_cannot_pickle_user_defined_reduc __pyx_mstate_global->__pyx_kp_s_cannot_pickle_user_defined_reduc
#define __pyx_kp_u_cannot_serialize __pyx_mstate_global->__pyx_kp_u_cannot_serialize
#define __pyx_n_s_cast __pyx_mstate_global->__pyx_n_s_cast
#define __pyx_n_s_cdatarep __pyx_mstate_global->__pyx_n_s_cdatarep
#define __pyx_n_s_cerrhdl __pyx_mstate_global->__pyx_n_s_cerrhdl
#define __pyx_n_s_cetype __pyx_mstate_global->__pyx_n_s_cetype
#define __pyx_n_s_cfilename __pyx_mstate_global->__pyx_n_s_cfilename
#define __pyx_n_s_cftype __pyx_mstate_global->__pyx_n_s_cftype
#define __pyx_n_s_cinfo __pyx_mstate_global->__pyx_n_s_cinfo
#define __pyx_n_s_ckey __pyx_mstate_global->__pyx_n_s_ckey
#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem
#define __pyx_n_s_clear __pyx_mstate_global->__pyx_n_s_clear
#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
#define __pyx_n_s_cls __pyx_mstate_global->__pyx_n_s_cls
#define __pyx_n_s_cmd __pyx_mstate_global->__pyx_n_s_cmd
#define __pyx_n_s_cmds __pyx_mstate_global->__pyx_n_s_cmds
#define __pyx_n_s_cmessage __pyx_mstate_global->__pyx_n_s_cmessage
#define __pyx_n_s_cname __pyx_mstate_global->__pyx_n_s_cname
#define __pyx_n_s_code __pyx_mstate_global->__pyx_n_s_code
#define __pyx_n_s_color __pyx_mstate_global->__pyx_n_s_color
#define __pyx_n_s_combiner __pyx_mstate_global->__pyx_n_s_combiner
#define __pyx_n_s_comm __pyx_mstate_global->__pyx_n_s_comm
#define __pyx_n_s_comm_lock __pyx_mstate_global->__pyx_n_s_comm_lock
#define __pyx_n_s_comm_lock_table __pyx_mstate_global->__pyx_n_s_comm_lock_table
#define __pyx_n_s_command __pyx_mstate_global->__pyx_n_s_command
#define __pyx_kp_s_commctx_inter __pyx_mstate_global->__pyx_kp_s_commctx_inter
#define __pyx_n_s_commctx_inter_2 __pyx_mstate_global->__pyx_n_s_commctx_inter_2
#define __pyx_kp_s_commctx_intra __pyx_mstate_global->__pyx_kp_s_commctx_intra
#define __pyx_n_s_commctx_intra_2 __pyx_mstate_global->__pyx_n_s_commctx_intra_2
#define __pyx_n_s_commute __pyx_mstate_global->__pyx_n_s_commute
#define __pyx_n_s_compare __pyx_mstate_global->__pyx_n_s_compare
#define __pyx_kp_u_compare_expecting_a_single_eleme __pyx_mstate_global->__pyx_kp_u_compare_expecting_a_single_eleme
#define __pyx_n_s_complete __pyx_mstate_global->__pyx_n_s_complete
#define __pyx_n_s_coords __pyx_mstate_global->__pyx_n_s_coords
#define __pyx_n_s_copy __pyx_mstate_global->__pyx_n_s_copy
#define __pyx_n_s_copy_2 __pyx_mstate_global->__pyx_n_s_copy_2
#define __pyx_n_s_copy_fn __pyx_mstate_global->__pyx_n_s_copy_fn
#define __pyx_n_s_copyreg __pyx_mstate_global->__pyx_n_s_copyreg
#define __pyx_n_s_count __pyx_mstate_global->__pyx_n_s_count
#define __pyx_n_s_counts __pyx_mstate_global->__pyx_n_s_counts
#define __pyx_n_s_cportname __pyx_mstate_global->__pyx_n_s_cportname
#define __pyx_n_s_csrvcname __pyx_mstate_global->__pyx_n_s_csrvcname
#define __pyx_n_s_cstring __pyx_mstate_global->__pyx_n_s_cstring
#define __pyx_n_s_cstringtag __pyx_mstate_global->__pyx_n_s_cstringtag
#define __pyx_n_s_cuda_array_interface __pyx_mstate_global->__pyx_n_s_cuda_array_interface
#define __pyx_kp_u_cuda_array_interface___buffer __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___buffer
#define __pyx_kp_u_cuda_array_interface___buffer_2 __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___buffer_2
#define __pyx_kp_s_cuda_array_interface___cannot __pyx_mstate_global->__pyx_kp_s_cuda_array_interface___cannot
#define __pyx_kp_u_cuda_array_interface___typestr __pyx_mstate_global->__pyx_kp_u_cuda_array_interface___typestr
#define __pyx_n_s_cvalue __pyx_mstate_global->__pyx_n_s_cvalue
#define __pyx_n_s_d __pyx_mstate_global->__pyx_n_s_d
#define __pyx_n_s_dargs __pyx_mstate_global->__pyx_n_s_dargs
#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data
#define __pyx_n_s_datarep __pyx_mstate_global->__pyx_n_s_datarep
#define __pyx_n_s_datatype __pyx_mstate_global->__pyx_n_s_datatype
#define __pyx_n_s_datatype_create __pyx_mstate_global->__pyx_n_s_datatype_create
#define __pyx_n_s_datatype_decode __pyx_mstate_global->__pyx_n_s_datatype_decode
#define __pyx_n_s_datatypes __pyx_mstate_global->__pyx_n_s_datatypes
#define __pyx_n_s_decode __pyx_mstate_global->__pyx_n_s_decode
#define __pyx_n_s_default __pyx_mstate_global->__pyx_n_s_default
#define __pyx_n_s_degrees __pyx_mstate_global->__pyx_n_s_degrees
#define __pyx_n_s_del __pyx_mstate_global->__pyx_n_s_del
#define __pyx_n_s_delete_fn __pyx_mstate_global->__pyx_n_s_delete_fn
#define __pyx_n_s_descr __pyx_mstate_global->__pyx_n_s_descr
#define __pyx_n_s_dest __pyx_mstate_global->__pyx_n_s_dest
#define __pyx_n_s_destinations __pyx_mstate_global->__pyx_n_s_destinations
#define __pyx_n_s_destweights __pyx_mstate_global->__pyx_n_s_destweights
#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
#define __pyx_kp_s_dict_Hashable_Lock __pyx_mstate_global->__pyx_kp_s_dict_Hashable_Lock
#define __pyx_kp_s_dict_str_Any __pyx_mstate_global->__pyx_kp_s_dict_str_Any
#define __pyx_kp_s_dict_str_Any_None __pyx_mstate_global->__pyx_kp_s_dict_str_Any_None
#define __pyx_kp_s_dict_str_int __pyx_mstate_global->__pyx_kp_s_dict_str_int
#define __pyx_n_s_dim __pyx_mstate_global->__pyx_n_s_dim
#define __pyx_n_s_dims __pyx_mstate_global->__pyx_n_s_dims
#define __pyx_n_s_direction __pyx_mstate_global->__pyx_n_s_direction
#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
#define __pyx_n_s_disp __pyx_mstate_global->__pyx_n_s_disp
#define __pyx_n_s_disp_unit __pyx_mstate_global->__pyx_n_s_disp_unit
#define __pyx_n_s_displacements __pyx_mstate_global->__pyx_n_s_displacements
#define __pyx_n_s_distribs __pyx_mstate_global->__pyx_n_s_distribs
#define __pyx_n_s_dlpack __pyx_mstate_global->__pyx_n_s_dlpack
#define __pyx_kp_s_dlpack_buffer_is_not_contiguous __pyx_mstate_global->__pyx_kp_s_dlpack_buffer_is_not_contiguous
#define __pyx_n_s_dlpack_device __pyx_mstate_global->__pyx_n_s_dlpack_device
#define __pyx_kp_s_dlpack_invalid_capsule_object __pyx_mstate_global->__pyx_kp_s_dlpack_invalid_capsule_object
#define __pyx_kp_s_dlpack_missing_support __pyx_mstate_global->__pyx_kp_s_dlpack_missing_support
#define __pyx_kp_s_dlpack_number_of_dimensions_is_n __pyx_mstate_global->__pyx_kp_s_dlpack_number_of_dimensions_is_n
#define __pyx_kp_s_dlpack_shape_is_NULL __pyx_mstate_global->__pyx_kp_s_dlpack_shape_is_NULL
#define __pyx_kp_s_dlpack_shape_item_is_negative __pyx_mstate_global->__pyx_kp_s_dlpack_shape_item_is_negative
#define __pyx_kp_s_dlpack_strides_item_is_negative __pyx_mstate_global->__pyx_kp_s_dlpack_strides_item_is_negative
#define __pyx_kp_s_dlpack_unexpected_version __pyx_mstate_global->__pyx_kp_s_dlpack_unexpected_version
#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc
#define __pyx_n_s_dst __pyx_mstate_global->__pyx_n_s_dst
#define __pyx_n_s_dtype __pyx_mstate_global->__pyx_n_s_dtype
#define __pyx_n_s_dummy_thread __pyx_mstate_global->__pyx_n_s_dummy_thread
#define __pyx_n_s_dumps __pyx_mstate_global->__pyx_n_s_dumps
#define __pyx_n_s_dumps_oob __pyx_mstate_global->__pyx_n_s_dumps_oob
#define __pyx_n_s_dupcomm __pyx_mstate_global->__pyx_n_s_dupcomm
#define __pyx_n_s_dw __pyx_mstate_global->__pyx_n_s_dw
#define __pyx_n_s_edges __pyx_mstate_global->__pyx_n_s_edges
#define __pyx_n_s_elements __pyx_mstate_global->__pyx_n_s_elements
#define __pyx_kp_s_empty_weights_but_nonzero_degree __pyx_mstate_global->__pyx_kp_s_empty_weights_but_nonzero_degree
#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter
#define __pyx_n_s_errcodes __pyx_mstate_global->__pyx_n_s_errcodes
#define __pyx_n_s_errhandler __pyx_mstate_global->__pyx_n_s_errhandler
#define __pyx_n_s_errhandler_fn __pyx_mstate_global->__pyx_n_s_errhandler_fn
#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error
#define __pyx_kp_u_error_code __pyx_mstate_global->__pyx_kp_u_error_code
#define __pyx_n_s_errorclass __pyx_mstate_global->__pyx_n_s_errorclass
#define __pyx_n_s_errorcode __pyx_mstate_global->__pyx_n_s_errorcode
#define __pyx_n_s_etype __pyx_mstate_global->__pyx_n_s_etype
#define __pyx_n_s_ex __pyx_mstate_global->__pyx_n_s_ex
#define __pyx_n_s_exception __pyx_mstate_global->__pyx_n_s_exception
#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit
#define __pyx_kp_u_expecting __pyx_mstate_global->__pyx_kp_u_expecting
#define __pyx_kp_s_expecting_a_Cartesian_communicat __pyx_mstate_global->__pyx_kp_s_expecting_a_Cartesian_communicat
#define __pyx_kp_s_expecting_a_distributed_graph_co __pyx_mstate_global->__pyx_kp_s_expecting_a_distributed_graph_co
#define __pyx_kp_s_expecting_a_general_graph_commun __pyx_mstate_global->__pyx_kp_s_expecting_a_general_graph_commun
#define __pyx_kp_s_expecting_a_sequence_of_strings __pyx_mstate_global->__pyx_kp_s_expecting_a_sequence_of_strings
#define __pyx_kp_s_expecting_a_topology_communicato __pyx_mstate_global->__pyx_kp_s_expecting_a_topology_communicato
#define __pyx_kp_s_expecting_an_MPI_instance __pyx_mstate_global->__pyx_kp_s_expecting_an_MPI_instance
#define __pyx_kp_s_expecting_an_MPI_type_or_instanc __pyx_mstate_global->__pyx_kp_s_expecting_an_MPI_type_or_instanc
#define __pyx_kp_s_expecting_an_intercommunicator __pyx_mstate_global->__pyx_kp_s_expecting_an_intercommunicator
#define __pyx_kp_s_expecting_an_intracommunicator __pyx_mstate_global->__pyx_kp_s_expecting_an_intracommunicator
#define __pyx_kp_u_expecting_buffer_with_format __pyx_mstate_global->__pyx_kp_u_expecting_buffer_with_format
#define __pyx_kp_s_expecting_non_NULL_address __pyx_mstate_global->__pyx_kp_s_expecting_non_NULL_address
#define __pyx_kp_s_expecting_non_negative_buffer_le __pyx_mstate_global->__pyx_kp_s_expecting_non_negative_buffer_le
#define __pyx_kp_s_expecting_non_negative_size __pyx_mstate_global->__pyx_kp_s_expecting_non_negative_size
#define __pyx_n_s_exscan __pyx_mstate_global->__pyx_n_s_exscan
#define __pyx_n_s_extent __pyx_mstate_global->__pyx_n_s_extent
#define __pyx_n_s_extent_fn __pyx_mstate_global->__pyx_n_s_extent_fn
#define __pyx_n_s_f2py __pyx_mstate_global->__pyx_n_s_f2py
#define __pyx_n_s_f_status __pyx_mstate_global->__pyx_n_s_f_status
#define __pyx_n_s_fatal __pyx_mstate_global->__pyx_n_s_fatal
#define __pyx_n_s_fd __pyx_mstate_global->__pyx_n_s_fd
#define __pyx_n_s_file __pyx_mstate_global->__pyx_n_s_file
#define __pyx_n_s_filename __pyx_mstate_global->__pyx_n_s_filename
#define __pyx_n_s_filetype __pyx_mstate_global->__pyx_n_s_filetype
#define __pyx_n_s_flag __pyx_mstate_global->__pyx_n_s_flag
#define __pyx_kp_s_flag_expecting_int_buffer_of_len __pyx_mstate_global->__pyx_kp_s_flag_expecting_int_buffer_of_len
#define __pyx_n_s_flag_len __pyx_mstate_global->__pyx_n_s_flag_len
#define __pyx_n_s_flag_ptr __pyx_mstate_global->__pyx_n_s_flag_ptr
#define __pyx_n_s_flags __pyx_mstate_global->__pyx_n_s_flags
#define __pyx_n_s_float __pyx_mstate_global->__pyx_n_s_float
#define __pyx_n_s_fn __pyx_mstate_global->__pyx_n_s_fn
#define __pyx_n_s_fn_c __pyx_mstate_global->__pyx_n_s_fn_c
#define __pyx_n_s_fn_i __pyx_mstate_global->__pyx_n_s_fn_i
#define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format
#define __pyx_kp_u_format_string __pyx_mstate_global->__pyx_kp_u_format_string
#define __pyx_n_s_free __pyx_mstate_global->__pyx_n_s_free
#define __pyx_n_s_free_fn __pyx_mstate_global->__pyx_n_s_free_fn
#define __pyx_n_s_fromaddress __pyx_mstate_global->__pyx_n_s_fromaddress
#define __pyx_n_s_frombuffer __pyx_mstate_global->__pyx_n_s_frombuffer
#define __pyx_n_s_fromcode __pyx_mstate_global->__pyx_n_s_fromcode
#define __pyx_n_s_fromhandle __pyx_mstate_global->__pyx_n_s_fromhandle
#define __pyx_n_s_ftype __pyx_mstate_global->__pyx_n_s_ftype
#define __pyx_n_s_function __pyx_mstate_global->__pyx_n_s_function
#define __pyx_n_s_funneled __pyx_mstate_global->__pyx_n_s_funneled
#define __pyx_n_s_gather __pyx_mstate_global->__pyx_n_s_gather
#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get
#define __pyx_n_s_get_buffer_callback_locals_buffe __pyx_mstate_global->__pyx_n_s_get_buffer_callback_locals_buffe
#define __pyx_n_s_get_status __pyx_mstate_global->__pyx_n_s_get_status
#define __pyx_n_s_get_status_all __pyx_mstate_global->__pyx_n_s_get_status_all
#define __pyx_n_s_get_status_any __pyx_mstate_global->__pyx_n_s_get_status_any
#define __pyx_n_s_get_status_some __pyx_mstate_global->__pyx_n_s_get_status_some
#define __pyx_n_s_get_vendor __pyx_mstate_global->__pyx_n_s_get_vendor
#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
#define __pyx_kp_u_got __pyx_mstate_global->__pyx_kp_u_got
#define __pyx_n_s_grequest __pyx_mstate_global->__pyx_n_s_grequest
#define __pyx_n_s_group __pyx_mstate_global->__pyx_n_s_group
#define __pyx_n_s_group1 __pyx_mstate_global->__pyx_n_s_group1
#define __pyx_n_s_group2 __pyx_mstate_global->__pyx_n_s_group2
#define __pyx_n_s_gsizes __pyx_mstate_global->__pyx_n_s_gsizes
#define __pyx_n_s_handle __pyx_mstate_global->__pyx_n_s_handle
#define __pyx_n_s_handleof __pyx_mstate_global->__pyx_n_s_handleof
#define __pyx_n_s_high __pyx_mstate_global->__pyx_n_s_high
#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i
#define __pyx_n_s_iblen __pyx_mstate_global->__pyx_n_s_iblen
#define __pyx_n_s_ibptr __pyx_mstate_global->__pyx_n_s_ibptr
#define __pyx_n_s_ibsend __pyx_mstate_global->__pyx_n_s_ibsend
#define __pyx_n_s_icoords __pyx_mstate_global->__pyx_n_s_icoords
#define __pyx_n_s_icount __pyx_mstate_global->__pyx_n_s_icount
#define __pyx_n_s_idargs __pyx_mstate_global->__pyx_n_s_idargs
#define __pyx_n_s_idegree __pyx_mstate_global->__pyx_n_s_idegree
#define __pyx_n_s_idest __pyx_mstate_global->__pyx_n_s_idest
#define __pyx_n_s_idestweight __pyx_mstate_global->__pyx_n_s_idestweight
#define __pyx_n_s_idims __pyx_mstate_global->__pyx_n_s_idims
#define __pyx_n_s_idisp __pyx_mstate_global->__pyx_n_s_idisp
#define __pyx_n_s_idistribs __pyx_mstate_global->__pyx_n_s_idistribs
#define __pyx_n_s_iedges __pyx_mstate_global->__pyx_n_s_iedges
#define __pyx_n_s_ierr __pyx_mstate_global->__pyx_n_s_ierr
#define __pyx_n_s_ierrcodes __pyx_mstate_global->__pyx_n_s_ierrcodes
#define __pyx_n_s_igsizes __pyx_mstate_global->__pyx_n_s_igsizes
#define __pyx_n_s_iindex __pyx_mstate_global->__pyx_n_s_iindex
#define __pyx_n_s_imaxprocs __pyx_mstate_global->__pyx_n_s_imaxprocs
#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
#define __pyx_n_s_improbe __pyx_mstate_global->__pyx_n_s_improbe
#define __pyx_n_s_inbuf __pyx_mstate_global->__pyx_n_s_inbuf
#define __pyx_n_s_indegree __pyx_mstate_global->__pyx_n_s_indegree
#define __pyx_n_s_index __pyx_mstate_global->__pyx_n_s_index
#define __pyx_kp_s_index_must_be_integer_or_slice __pyx_mstate_global->__pyx_kp_s_index_must_be_integer_or_slice
#define __pyx_kp_s_index_out_of_range __pyx_mstate_global->__pyx_kp_s_index_out_of_range
#define __pyx_n_s_indices __pyx_mstate_global->__pyx_n_s_indices
#define __pyx_n_s_ineighbors __pyx_mstate_global->__pyx_n_s_ineighbors
#define __pyx_n_s_info __pyx_mstate_global->__pyx_n_s_info
#define __pyx_n_s_infos __pyx_mstate_global->__pyx_n_s_infos
#define __pyx_n_s_init __pyx_mstate_global->__pyx_n_s_init
#define __pyx_n_s_inoutbuf __pyx_mstate_global->__pyx_n_s_inoutbuf
#define __pyx_n_s_inoutedges __pyx_mstate_global->__pyx_n_s_inoutedges
#define __pyx_n_s_insert __pyx_mstate_global->__pyx_n_s_insert
#define __pyx_kp_u_instance __pyx_mstate_global->__pyx_kp_u_instance
#define __pyx_n_s_int __pyx_mstate_global->__pyx_n_s_int
#define __pyx_kp_s_int_Any_None __pyx_mstate_global->__pyx_kp_s_int_Any_None
#define __pyx_kp_s_int_None __pyx_mstate_global->__pyx_kp_s_int_None
#define __pyx_kp_s_int_Sequence_int __pyx_mstate_global->__pyx_kp_s_int_Sequence_int
#define __pyx_n_s_integers __pyx_mstate_global->__pyx_n_s_integers
#define __pyx_n_s_iperiods __pyx_mstate_global->__pyx_n_s_iperiods
#define __pyx_n_s_iprobe __pyx_mstate_global->__pyx_n_s_iprobe
#define __pyx_n_s_ipsizes __pyx_mstate_global->__pyx_n_s_ipsizes
#define __pyx_n_s_iranks __pyx_mstate_global->__pyx_n_s_iranks
#define __pyx_n_s_iranks1 __pyx_mstate_global->__pyx_n_s_iranks1
#define __pyx_n_s_iranks2 __pyx_mstate_global->__pyx_n_s_iranks2
#define __pyx_n_s_irecv __pyx_mstate_global->__pyx_n_s_irecv
#define __pyx_n_s_iremdims __pyx_mstate_global->__pyx_n_s_iremdims
#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
#define __pyx_kp_u_is_not_a_multiple_of_datatype_e __pyx_mstate_global->__pyx_kp_u_is_not_a_multiple_of_datatype_e
#define __pyx_kp_u_is_not_a_multiple_of_required_n __pyx_mstate_global->__pyx_kp_u_is_not_a_multiple_of_required_n
#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
#define __pyx_n_s_isend __pyx_mstate_global->__pyx_n_s_isend
#define __pyx_n_s_isizes __pyx_mstate_global->__pyx_n_s_isizes
#define __pyx_n_s_isource __pyx_mstate_global->__pyx_n_s_isource
#define __pyx_n_s_isourceweight __pyx_mstate_global->__pyx_n_s_isourceweight
#define __pyx_n_s_issend __pyx_mstate_global->__pyx_n_s_issend
#define __pyx_n_s_istarts __pyx_mstate_global->__pyx_n_s_istarts
#define __pyx_n_s_isubsizes __pyx_mstate_global->__pyx_n_s_isubsizes
#define __pyx_n_s_items __pyx_mstate_global->__pyx_n_s_items
#define __pyx_kp_u_items_got __pyx_mstate_global->__pyx_kp_u_items_got
#define __pyx_kp_u_itemsize __pyx_mstate_global->__pyx_kp_u_itemsize
#define __pyx_n_s_iweight __pyx_mstate_global->__pyx_n_s_iweight
#define __pyx_n_s_j __pyx_mstate_global->__pyx_n_s_j
#define __pyx_n_s_join __pyx_mstate_global->__pyx_n_s_join
#define __pyx_n_s_k __pyx_mstate_global->__pyx_n_s_k
#define __pyx_n_s_key __pyx_mstate_global->__pyx_n_s_key
#define __pyx_n_s_keys __pyx_mstate_global->__pyx_n_s_keys
#define __pyx_n_s_keyval __pyx_mstate_global->__pyx_n_s_keyval
#define __pyx_n_s_keyval_registry __pyx_mstate_global->__pyx_n_s_keyval_registry
#define __pyx_n_s_keyval_save __pyx_mstate_global->__pyx_n_s_keyval_save
#define __pyx_n_s_kwargs __pyx_mstate_global->__pyx_n_s_kwargs
#define __pyx_n_s_kwds __pyx_mstate_global->__pyx_n_s_kwds
#define __pyx_kp_u_lb __pyx_mstate_global->__pyx_kp_u_lb
#define __pyx_n_s_lb_2 __pyx_mstate_global->__pyx_n_s_lb_2
#define __pyx_n_s_length __pyx_mstate_global->__pyx_n_s_length
#define __pyx_kp_s_length_count_does_not_fit_in_MPI __pyx_mstate_global->__pyx_kp_s_length_count_does_not_fit_in_MPI
#define __pyx_kp_s_length_size_larger_than_INT_MAX __pyx_mstate_global->__pyx_kp_s_length_size_larger_than_INT_MAX
#define __pyx_n_s_level __pyx_mstate_global->__pyx_n_s_level
#define __pyx_kp_s_list_Any __pyx_mstate_global->__pyx_kp_s_list_Any
#define __pyx_kp_s_list_Any_None __pyx_mstate_global->__pyx_kp_s_list_Any_None
#define __pyx_kp_s_list_Prequest __pyx_mstate_global->__pyx_kp_s_list_Prequest
#define __pyx_kp_s_list_Status_None __pyx_mstate_global->__pyx_kp_s_list_Status_None
#define __pyx_kp_s_list_int __pyx_mstate_global->__pyx_kp_s_list_int
#define __pyx_kp_s_list_int_None __pyx_mstate_global->__pyx_kp_s_list_int_None
#define __pyx_kp_s_list_int_tuple_int __pyx_mstate_global->__pyx_kp_s_list_int_tuple_int
#define __pyx_kp_s_list_list_int_None __pyx_mstate_global->__pyx_kp_s_list_list_int_None
#define __pyx_kp_s_list_str __pyx_mstate_global->__pyx_kp_s_list_str
#define __pyx_kp_s_list_tuple_str_str __pyx_mstate_global->__pyx_kp_s_list_tuple_str_str
#define __pyx_n_s_loads __pyx_mstate_global->__pyx_n_s_loads
#define __pyx_n_s_loads_oob __pyx_mstate_global->__pyx_n_s_loads_oob
#define __pyx_n_s_local_group __pyx_mstate_global->__pyx_n_s_local_group
#define __pyx_n_s_local_leader __pyx_mstate_global->__pyx_n_s_local_leader
#define __pyx_n_s_localcomm __pyx_mstate_global->__pyx_n_s_localcomm
#define __pyx_n_s_location __pyx_mstate_global->__pyx_n_s_location
#define __pyx_n_s_lock_type __pyx_mstate_global->__pyx_n_s_lock_type
#define __pyx_n_s_low_group __pyx_mstate_global->__pyx_n_s_low_group
#define __pyx_n_s_lower __pyx_mstate_global->__pyx_n_s_lower
#define __pyx_n_s_m __pyx_mstate_global->__pyx_n_s_m
#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
#define __pyx_n_s_major __pyx_mstate_global->__pyx_n_s_major
#define __pyx_n_s_mark __pyx_mstate_global->__pyx_n_s_mark
#define __pyx_n_s_mask __pyx_mstate_global->__pyx_n_s_mask
#define __pyx_n_s_max_version __pyx_mstate_global->__pyx_n_s_max_version
#define __pyx_n_s_maxindegree __pyx_mstate_global->__pyx_n_s_maxindegree
#define __pyx_n_s_maxoutdegree __pyx_mstate_global->__pyx_n_s_maxoutdegree
#define __pyx_n_s_maxprocs __pyx_mstate_global->__pyx_n_s_maxprocs
#define __pyx_n_s_mem __pyx_mstate_global->__pyx_n_s_mem
#define __pyx_n_s_memory __pyx_mstate_global->__pyx_n_s_memory
#define __pyx_kp_s_memory_allocation_size_too_large __pyx_mstate_global->__pyx_kp_s_memory_allocation_size_too_large
#define __pyx_kp_s_memory_allocation_with_negative __pyx_mstate_global->__pyx_kp_s_memory_allocation_with_negative
#define __pyx_n_s_memoryview __pyx_mstate_global->__pyx_n_s_memoryview
#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message
#define __pyx_kp_s_message_BOTTOM_requires_counts __pyx_mstate_global->__pyx_kp_s_message_BOTTOM_requires_counts
#define __pyx_kp_s_message_BOTTOM_requires_displs __pyx_mstate_global->__pyx_kp_s_message_BOTTOM_requires_displs
#define __pyx_kp_u_message_buffer_is_None_but_count __pyx_mstate_global->__pyx_kp_u_message_buffer_is_None_but_count
#define __pyx_kp_u_message_cannot_handle_displaceme __pyx_mstate_global->__pyx_kp_u_message_cannot_handle_displaceme
#define __pyx_kp_u_message_cannot_handle_displaceme_2 __pyx_mstate_global->__pyx_kp_u_message_cannot_handle_displaceme_2
#define __pyx_kp_u_message_cannot_infer_count_buffe __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_buffe
#define __pyx_kp_u_message_cannot_infer_count_datat __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_datat
#define __pyx_kp_u_message_cannot_infer_count_datat_2 __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_datat_2
#define __pyx_kp_u_message_cannot_infer_count_numbe __pyx_mstate_global->__pyx_kp_u_message_cannot_infer_count_numbe
#define __pyx_kp_u_message_displacement __pyx_mstate_global->__pyx_kp_u_message_displacement
#define __pyx_kp_s_message_expecting_2_to_4_items __pyx_mstate_global->__pyx_kp_s_message_expecting_2_to_4_items
#define __pyx_kp_s_message_expecting_buffer_or_list __pyx_mstate_global->__pyx_kp_s_message_expecting_buffer_or_list
#define __pyx_kp_u_message_negative_count __pyx_mstate_global->__pyx_kp_u_message_negative_count
#define __pyx_kp_u_message_negative_displacement __pyx_mstate_global->__pyx_kp_u_message_negative_displacement
#define __pyx_n_s_micro __pyx_mstate_global->__pyx_n_s_micro
#define __pyx_n_s_minor __pyx_mstate_global->__pyx_n_s_minor
#define __pyx_kp_u_mismatch_in_origin_and_compare_M __pyx_mstate_global->__pyx_kp_u_mismatch_in_origin_and_compare_M
#define __pyx_kp_u_mismatch_in_origin_and_result_MP __pyx_mstate_global->__pyx_kp_u_mismatch_in_origin_and_result_MP
#define __pyx_kp_u_mismatch_in_receive_count __pyx_mstate_global->__pyx_kp_u_mismatch_in_receive_count
#define __pyx_kp_u_mismatch_in_send_and_receive_MPI __pyx_mstate_global->__pyx_kp_u_mismatch_in_send_and_receive_MPI
#define __pyx_kp_u_mismatch_in_send_count __pyx_mstate_global->__pyx_kp_u_mismatch_in_send_count
#define __pyx_kp_s_missing_CUDA_array_interface __pyx_mstate_global->__pyx_kp_s_missing_CUDA_array_interface
#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module
#define __pyx_n_s_mpi4py_MPI __pyx_mstate_global->__pyx_n_s_mpi4py_MPI
#define __pyx_n_s_mprobe __pyx_mstate_global->__pyx_n_s_mprobe
#define __pyx_n_s_msg __pyx_mstate_global->__pyx_n_s_msg
#define __pyx_n_s_multiple __pyx_mstate_global->__pyx_n_s_multiple
#define __pyx_n_s_n __pyx_mstate_global->__pyx_n_s_n
#define __pyx_n_s_na __pyx_mstate_global->__pyx_n_s_na
#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
#define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2
#define __pyx_n_s_native __pyx_mstate_global->__pyx_n_s_native
#define __pyx_n_s_nbytes __pyx_mstate_global->__pyx_n_s_nbytes
#define __pyx_n_s_nc __pyx_mstate_global->__pyx_n_s_nc
#define __pyx_n_s_nd __pyx_mstate_global->__pyx_n_s_nd
#define __pyx_n_s_ndim __pyx_mstate_global->__pyx_n_s_ndim
#define __pyx_n_s_ndims __pyx_mstate_global->__pyx_n_s_ndims
#define __pyx_n_s_ne __pyx_mstate_global->__pyx_n_s_ne
#define __pyx_n_s_nedges __pyx_mstate_global->__pyx_n_s_nedges
#define __pyx_n_s_neighbor_allgather __pyx_mstate_global->__pyx_n_s_neighbor_allgather
#define __pyx_n_s_neighbor_alltoall __pyx_mstate_global->__pyx_n_s_neighbor_alltoall
#define __pyx_n_s_neighbors __pyx_mstate_global->__pyx_n_s_neighbors
#define __pyx_n_s_newobj __pyx_mstate_global->__pyx_n_s_newobj
#define __pyx_n_s_ni __pyx_mstate_global->__pyx_n_s_ni
#define __pyx_n_s_nindex __pyx_mstate_global->__pyx_n_s_nindex
#define __pyx_n_s_nkeys __pyx_mstate_global->__pyx_n_s_nkeys
#define __pyx_n_s_nlen __pyx_mstate_global->__pyx_n_s_nlen
#define __pyx_n_s_nneighbors __pyx_mstate_global->__pyx_n_s_nneighbors
#define __pyx_n_s_nnodes __pyx_mstate_global->__pyx_n_s_nnodes
#define __pyx_n_s_no __pyx_mstate_global->__pyx_n_s_no
#define __pyx_n_s_nopython __pyx_mstate_global->__pyx_n_s_nopython
#define __pyx_n_s_np __pyx_mstate_global->__pyx_n_s_np
#define __pyx_n_s_num_acked __pyx_mstate_global->__pyx_n_s_num_acked
#define __pyx_n_s_num_psets __pyx_mstate_global->__pyx_n_s_num_psets
#define __pyx_n_s_num_to_ack __pyx_mstate_global->__pyx_n_s_num_to_ack
#define __pyx_n_s_nv __pyx_mstate_global->__pyx_n_s_nv
#define __pyx_n_s_ob __pyx_mstate_global->__pyx_n_s_ob
#define __pyx_n_s_obj __pyx_mstate_global->__pyx_n_s_obj
#define __pyx_n_s_oblen __pyx_mstate_global->__pyx_n_s_oblen
#define __pyx_n_s_obptr __pyx_mstate_global->__pyx_n_s_obptr
#define __pyx_n_s_ocount __pyx_mstate_global->__pyx_n_s_ocount
#define __pyx_n_s_offset __pyx_mstate_global->__pyx_n_s_offset
#define __pyx_n_s_op __pyx_mstate_global->__pyx_n_s_op
#define __pyx_n_s_order __pyx_mstate_global->__pyx_n_s_order
#define __pyx_kp_s_org_mpi4py __pyx_mstate_global->__pyx_kp_s_org_mpi4py
#define __pyx_n_s_origin __pyx_mstate_global->__pyx_n_s_origin
#define __pyx_kp_u_origin_expecting_a_single_elemen __pyx_mstate_global->__pyx_kp_u_origin_expecting_a_single_elemen
#define __pyx_kp_u_out_of_bounds_number_of_datatyp __pyx_mstate_global->__pyx_kp_u_out_of_bounds_number_of_datatyp
#define __pyx_n_s_outbuf __pyx_mstate_global->__pyx_n_s_outbuf
#define __pyx_n_s_outdegree __pyx_mstate_global->__pyx_n_s_outdegree
#define __pyx_n_s_p __pyx_mstate_global->__pyx_n_s_p
#define __pyx_n_s_params __pyx_mstate_global->__pyx_n_s_params
#define __pyx_n_s_partition __pyx_mstate_global->__pyx_n_s_partition
#define __pyx_n_s_partition_high __pyx_mstate_global->__pyx_n_s_partition_high
#define __pyx_n_s_partition_low __pyx_mstate_global->__pyx_n_s_partition_low
#define __pyx_n_s_partitions __pyx_mstate_global->__pyx_n_s_partitions
#define __pyx_n_s_peer_comm __pyx_mstate_global->__pyx_n_s_peer_comm
#define __pyx_n_s_periods __pyx_mstate_global->__pyx_n_s_periods
#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
#define __pyx_n_s_pickle5 __pyx_mstate_global->__pyx_n_s_pickle5
#define __pyx_n_s_pop __pyx_mstate_global->__pyx_n_s_pop
#define __pyx_n_s_popitem __pyx_mstate_global->__pyx_n_s_popitem
#define __pyx_n_s_port_name __pyx_mstate_global->__pyx_n_s_port_name
#define __pyx_n_s_position __pyx_mstate_global->__pyx_n_s_position
#define __pyx_n_s_probe __pyx_mstate_global->__pyx_n_s_probe
#define __pyx_n_s_protocol __pyx_mstate_global->__pyx_n_s_protocol
#define __pyx_n_s_provided __pyx_mstate_global->__pyx_n_s_provided
#define __pyx_n_s_pset_name __pyx_mstate_global->__pyx_n_s_pset_name
#define __pyx_n_s_psizes __pyx_mstate_global->__pyx_n_s_psizes
#define __pyx_n_s_ptr __pyx_mstate_global->__pyx_n_s_ptr
#define __pyx_n_s_ptype __pyx_mstate_global->__pyx_n_s_ptype
#define __pyx_n_s_py2f __pyx_mstate_global->__pyx_n_s_py2f
#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
#define __pyx_n_s_q __pyx_mstate_global->__pyx_n_s_q
#define __pyx_n_s_query_fn __pyx_mstate_global->__pyx_n_s_query_fn
#define __pyx_n_s_r __pyx_mstate_global->__pyx_n_s_r
#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range
#define __pyx_n_s_ranges __pyx_mstate_global->__pyx_n_s_ranges
#define __pyx_n_s_rank __pyx_mstate_global->__pyx_n_s_rank
#define __pyx_n_s_ranks __pyx_mstate_global->__pyx_n_s_ranks
#define __pyx_n_s_ranks2 __pyx_mstate_global->__pyx_n_s_ranks2
#define __pyx_n_s_rc __pyx_mstate_global->__pyx_n_s_rc
#define __pyx_n_s_rd __pyx_mstate_global->__pyx_n_s_rd
#define __pyx_n_s_read_fn __pyx_mstate_global->__pyx_n_s_read_fn
#define __pyx_n_s_readonly __pyx_mstate_global->__pyx_n_s_readonly
#define __pyx_n_s_recv __pyx_mstate_global->__pyx_n_s_recv
#define __pyx_n_s_recvbuf __pyx_mstate_global->__pyx_n_s_recvbuf
#define __pyx_n_s_recvcounts __pyx_mstate_global->__pyx_n_s_recvcounts
#define __pyx_n_s_recvtag __pyx_mstate_global->__pyx_n_s_recvtag
#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
#define __pyx_n_s_reduce_2 __pyx_mstate_global->__pyx_n_s_reduce_2
#define __pyx_n_s_release __pyx_mstate_global->__pyx_n_s_release
#define __pyx_n_s_remain_dims __pyx_mstate_global->__pyx_n_s_remain_dims
#define __pyx_n_s_remote_group __pyx_mstate_global->__pyx_n_s_remote_group
#define __pyx_n_s_remote_leader __pyx_mstate_global->__pyx_n_s_remote_leader
#define __pyx_n_s_reorder __pyx_mstate_global->__pyx_n_s_reorder
#define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request
#define __pyx_n_s_requests __pyx_mstate_global->__pyx_n_s_requests
#define __pyx_n_s_required __pyx_mstate_global->__pyx_n_s_required
#define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result
#define __pyx_kp_u_result_expecting_a_single_elemen __pyx_mstate_global->__pyx_kp_u_result_expecting_a_single_elemen
#define __pyx_n_s_resultlen __pyx_mstate_global->__pyx_n_s_resultlen
#define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return
#define __pyx_n_s_rmsg __pyx_mstate_global->__pyx_n_s_rmsg
#define __pyx_n_s_root __pyx_mstate_global->__pyx_n_s_root
#define __pyx_n_s_rs __pyx_mstate_global->__pyx_n_s_rs
#define __pyx_n_s_s __pyx_mstate_global->__pyx_n_s_s
#define __pyx_n_s_scan __pyx_mstate_global->__pyx_n_s_scan
#define __pyx_n_s_scatter __pyx_mstate_global->__pyx_n_s_scatter
#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send
#define __pyx_n_s_sendbuf __pyx_mstate_global->__pyx_n_s_sendbuf
#define __pyx_n_s_sendobj __pyx_mstate_global->__pyx_n_s_sendobj
#define __pyx_n_s_sendrecv __pyx_mstate_global->__pyx_n_s_sendrecv
#define __pyx_n_s_sendtag __pyx_mstate_global->__pyx_n_s_sendtag
#define __pyx_n_s_serialized __pyx_mstate_global->__pyx_n_s_serialized
#define __pyx_n_s_service_name __pyx_mstate_global->__pyx_n_s_service_name
#define __pyx_n_s_session __pyx_mstate_global->__pyx_n_s_session
#define __pyx_n_s_set_abort_status __pyx_mstate_global->__pyx_n_s_set_abort_status
#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
#define __pyx_n_s_shape __pyx_mstate_global->__pyx_n_s_shape
#define __pyx_n_s_single __pyx_mstate_global->__pyx_n_s_single
#define __pyx_kp_u_size __pyx_mstate_global->__pyx_kp_u_size
#define __pyx_n_s_size_2 __pyx_mstate_global->__pyx_n_s_size_2
#define __pyx_n_s_sizeof __pyx_mstate_global->__pyx_n_s_sizeof
#define __pyx_n_s_sizes __pyx_mstate_global->__pyx_n_s_sizes
#define __pyx_kp_s_slice_length_does_not_match_buff __pyx_mstate_global->__pyx_kp_s_slice_length_does_not_match_buff
#define __pyx_kp_s_slice_with_step_not_supported __pyx_mstate_global->__pyx_kp_s_slice_with_step_not_supported
#define __pyx_n_s_smsg __pyx_mstate_global->__pyx_n_s_smsg
#define __pyx_n_s_source __pyx_mstate_global->__pyx_n_s_source
#define __pyx_n_s_sources __pyx_mstate_global->__pyx_n_s_sources
#define __pyx_n_s_sourceweights __pyx_mstate_global->__pyx_n_s_sourceweights
#define __pyx_n_s_split_type __pyx_mstate_global->__pyx_n_s_split_type
#define __pyx_n_s_src __pyx_mstate_global->__pyx_n_s_src
#define __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py
#define __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_File_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_File_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Group_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Info_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Message_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Op_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Request_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Session_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Status_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_Win_pyx
#define __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi
#define __pyx_kp_s_src_mpi4py_MPI_src_atimport_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_atimport_pxi
#define __pyx_kp_s_src_mpi4py_MPI_src_bufaimpl_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_bufaimpl_pxi
#define __pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi
#define __pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi
#define __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi
#define __pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi
#define __pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi __pyx_mstate_global->__pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi
#define __pyx_n_s_ssend __pyx_mstate_global->__pyx_n_s_ssend
#define __pyx_n_s_starts __pyx_mstate_global->__pyx_n_s_starts
#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state
#define __pyx_n_s_staticmethod __pyx_mstate_global->__pyx_n_s_staticmethod
#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status
#define __pyx_n_s_statuses __pyx_mstate_global->__pyx_n_s_statuses
#define __pyx_n_s_statusp __pyx_mstate_global->__pyx_n_s_statusp
#define __pyx_n_s_str __pyx_mstate_global->__pyx_n_s_str
#define __pyx_kp_s_str_None __pyx_mstate_global->__pyx_kp_s_str_None
#define __pyx_kp_s_str_tuple_Any __pyx_mstate_global->__pyx_kp_s_str_tuple_Any
#define __pyx_n_s_stream __pyx_mstate_global->__pyx_n_s_stream
#define __pyx_n_s_stride __pyx_mstate_global->__pyx_n_s_stride
#define __pyx_n_s_strides __pyx_mstate_global->__pyx_n_s_strides
#define __pyx_kp_u_strides_2 __pyx_mstate_global->__pyx_kp_u_strides_2
#define __pyx_n_s_string __pyx_mstate_global->__pyx_n_s_string
#define __pyx_n_s_stringtag __pyx_mstate_global->__pyx_n_s_stringtag
#define __pyx_n_s_subsizes __pyx_mstate_global->__pyx_n_s_subsizes
#define __pyx_n_s_subversion __pyx_mstate_global->__pyx_n_s_subversion
#define __pyx_n_s_sw __pyx_mstate_global->__pyx_n_s_sw
#define __pyx_n_s_t __pyx_mstate_global->__pyx_n_s_t
#define __pyx_n_s_tag __pyx_mstate_global->__pyx_n_s_tag
#define __pyx_n_s_target __pyx_mstate_global->__pyx_n_s_target
#define __pyx_n_s_target_disp __pyx_mstate_global->__pyx_n_s_target_disp
#define __pyx_kp_s_target_expecting_3_items_at_most __pyx_mstate_global->__pyx_kp_s_target_expecting_3_items_at_most
#define __pyx_kp_s_target_expecting_integral_or_lis __pyx_mstate_global->__pyx_kp_s_target_expecting_integral_or_lis
#define __pyx_n_s_target_rank __pyx_mstate_global->__pyx_n_s_target_rank
#define __pyx_n_s_tc __pyx_mstate_global->__pyx_n_s_tc
#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
#define __pyx_n_s_testall __pyx_mstate_global->__pyx_n_s_testall
#define __pyx_n_s_testany __pyx_mstate_global->__pyx_n_s_testany
#define __pyx_n_s_testsome __pyx_mstate_global->__pyx_n_s_testsome
#define __pyx_n_s_thread __pyx_mstate_global->__pyx_n_s_thread
#define __pyx_n_s_threshold __pyx_mstate_global->__pyx_n_s_threshold
#define __pyx_kp_u_to_MPI_datatype __pyx_mstate_global->__pyx_kp_u_to_MPI_datatype
#define __pyx_n_s_tobytes __pyx_mstate_global->__pyx_n_s_tobytes
#define __pyx_n_s_tocode __pyx_mstate_global->__pyx_n_s_tocode
#define __pyx_n_s_tomemory __pyx_mstate_global->__pyx_n_s_tomemory
#define __pyx_n_s_topo __pyx_mstate_global->__pyx_n_s_topo
#define __pyx_n_s_toreadonly __pyx_mstate_global->__pyx_n_s_toreadonly
#define __pyx_kp_s_tuple_Any_None __pyx_mstate_global->__pyx_kp_s_tuple_Any_None
#define __pyx_kp_s_tuple_Any_tuple_Any_dict_str_Any __pyx_mstate_global->__pyx_kp_s_tuple_Any_tuple_Any_dict_str_Any
#define __pyx_kp_s_tuple_Comm_Request __pyx_mstate_global->__pyx_kp_s_tuple_Comm_Request
#define __pyx_kp_s_tuple_Datatype_str_dict_str_Any __pyx_mstate_global->__pyx_kp_s_tuple_Datatype_str_dict_str_Any
#define __pyx_kp_s_tuple_Intercomm_int_Intracomm_bo __pyx_mstate_global->__pyx_kp_s_tuple_Intercomm_int_Intracomm_bo
#define __pyx_kp_s_tuple_Intracomm_int __pyx_mstate_global->__pyx_kp_s_tuple_Intracomm_int
#define __pyx_kp_s_tuple_Self_Request __pyx_mstate_global->__pyx_kp_s_tuple_Self_Request
#define __pyx_kp_s_tuple_bool_Any_None __pyx_mstate_global->__pyx_kp_s_tuple_bool_Any_None
#define __pyx_kp_s_tuple_bool_list_Any_None __pyx_mstate_global->__pyx_kp_s_tuple_bool_list_Any_None
#define __pyx_kp_s_tuple_buffer_int __pyx_mstate_global->__pyx_kp_s_tuple_buffer_int
#define __pyx_kp_s_tuple_bytes_list_buffer __pyx_mstate_global->__pyx_kp_s_tuple_bytes_list_buffer
#define __pyx_kp_s_tuple_int_Any __pyx_mstate_global->__pyx_kp_s_tuple_int_Any
#define __pyx_kp_s_tuple_int_Datatype_Datatype_str __pyx_mstate_global->__pyx_kp_s_tuple_int_Datatype_Datatype_str
#define __pyx_kp_s_tuple_int_bool __pyx_mstate_global->__pyx_kp_s_tuple_int_bool
#define __pyx_kp_s_tuple_int_bool_Any_None __pyx_mstate_global->__pyx_kp_s_tuple_int_bool_Any_None
#define __pyx_kp_s_tuple_int_int __pyx_mstate_global->__pyx_kp_s_tuple_int_int
#define __pyx_kp_s_tuple_int_int_int_int_int __pyx_mstate_global->__pyx_kp_s_tuple_int_int_int_int_int
#define __pyx_kp_s_tuple_list_int_None_list_Any_Non __pyx_mstate_global->__pyx_kp_s_tuple_list_int_None_list_Any_Non
#define __pyx_kp_s_tuple_list_int_list_int __pyx_mstate_global->__pyx_kp_s_tuple_list_int_list_int
#define __pyx_kp_s_tuple_list_int_list_int_list_int __pyx_mstate_global->__pyx_kp_s_tuple_list_int_list_int_list_int
#define __pyx_kp_s_tuple_list_int_list_int_list_int_2 __pyx_mstate_global->__pyx_kp_s_tuple_list_int_list_int_list_int_2
#define __pyx_kp_s_tuple_list_int_list_int_tuple_li __pyx_mstate_global->__pyx_kp_s_tuple_list_int_list_int_tuple_li
#define __pyx_kp_s_tuple_str_str __pyx_mstate_global->__pyx_kp_s_tuple_str_str
#define __pyx_kp_s_tuple_str_tuple_int_int_int __pyx_mstate_global->__pyx_kp_s_tuple_str_tuple_int_int_int
#define __pyx_n_s_typealign __pyx_mstate_global->__pyx_n_s_typealign
#define __pyx_n_s_typeclass __pyx_mstate_global->__pyx_n_s_typeclass
#define __pyx_n_s_typecode __pyx_mstate_global->__pyx_n_s_typecode
#define __pyx_n_s_typedict __pyx_mstate_global->__pyx_n_s_typedict
#define __pyx_n_s_typedict_c __pyx_mstate_global->__pyx_n_s_typedict_c
#define __pyx_n_s_typedict_f __pyx_mstate_global->__pyx_n_s_typedict_f
#define __pyx_n_s_typestr __pyx_mstate_global->__pyx_n_s_typestr
#define __pyx_kp_u_ub __pyx_mstate_global->__pyx_kp_u_ub
#define __pyx_kp_u_unknown_combiner_value __pyx_mstate_global->__pyx_kp_u_unknown_combiner_value
#define __pyx_kp_u_unorderable_type __pyx_mstate_global->__pyx_kp_u_unorderable_type
#define __pyx_n_s_unused __pyx_mstate_global->__pyx_n_s_unused
#define __pyx_n_s_unused1 __pyx_mstate_global->__pyx_n_s_unused1
#define __pyx_n_s_unused2 __pyx_mstate_global->__pyx_n_s_unused2
#define __pyx_n_s_unused3 __pyx_mstate_global->__pyx_n_s_unused3
#define __pyx_n_s_unused4 __pyx_mstate_global->__pyx_n_s_unused4
#define __pyx_n_s_unused5 __pyx_mstate_global->__pyx_n_s_unused5
#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
#define __pyx_n_s_upper __pyx_mstate_global->__pyx_n_s_upper
#define __pyx_n_s_val __pyx_mstate_global->__pyx_n_s_val
#define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value
#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values
#define __pyx_n_s_version __pyx_mstate_global->__pyx_n_s_version
#define __pyx_n_s_wait __pyx_mstate_global->__pyx_n_s_wait
#define __pyx_n_s_waitall __pyx_mstate_global->__pyx_n_s_waitall
#define __pyx_n_s_waitany __pyx_mstate_global->__pyx_n_s_waitany
#define __pyx_n_s_waitsome __pyx_mstate_global->__pyx_n_s_waitsome
#define __pyx_n_s_weighted __pyx_mstate_global->__pyx_n_s_weighted
#define __pyx_n_s_weights __pyx_mstate_global->__pyx_n_s_weights
#define __pyx_n_s_whence __pyx_mstate_global->__pyx_n_s_whence
#define __pyx_n_s_win __pyx_mstate_global->__pyx_n_s_win
#define __pyx_kp_u_with_non_native_byte_order __pyx_mstate_global->__pyx_kp_u_with_non_native_byte_order
#define __pyx_kp_u_with_unrecognized_byte_order __pyx_mstate_global->__pyx_kp_u_with_unrecognized_byte_order
#define __pyx_n_s_wr __pyx_mstate_global->__pyx_n_s_wr
#define __pyx_n_s_write_fn __pyx_mstate_global->__pyx_n_s_write_fn
#define __pyx_n_s_x __pyx_mstate_global->__pyx_n_s_x
#define __pyx_n_s_xs __pyx_mstate_global->__pyx_n_s_xs
#define __pyx_n_s_y __pyx_mstate_global->__pyx_n_s_y
#define __pyx_n_s_yes __pyx_mstate_global->__pyx_n_s_yes
#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2
#define __pyx_int_32768 __pyx_mstate_global->__pyx_int_32768
#define __pyx_int_262144 __pyx_mstate_global->__pyx_int_262144
#define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1
#define __pyx_k__65 __pyx_mstate_global->__pyx_k__65
#define __pyx_k__66 __pyx_mstate_global->__pyx_k__66
#define __pyx_k__68 __pyx_mstate_global->__pyx_k__68
#define __pyx_k__69 __pyx_mstate_global->__pyx_k__69
#define __pyx_k__70 __pyx_mstate_global->__pyx_k__70
#define __pyx_k__71 __pyx_mstate_global->__pyx_k__71
#define __pyx_k__72 __pyx_mstate_global->__pyx_k__72
#define __pyx_k__73 __pyx_mstate_global->__pyx_k__73
#define __pyx_k__74 __pyx_mstate_global->__pyx_k__74
#define __pyx_k__75 __pyx_mstate_global->__pyx_k__75
#define __pyx_k__76 __pyx_mstate_global->__pyx_k__76
#define __pyx_k__77 __pyx_mstate_global->__pyx_k__77
#define __pyx_k__78 __pyx_mstate_global->__pyx_k__78
#define __pyx_k__79 __pyx_mstate_global->__pyx_k__79
#define __pyx_k__80 __pyx_mstate_global->__pyx_k__80
#define __pyx_k__82 __pyx_mstate_global->__pyx_k__82
#define __pyx_k__83 __pyx_mstate_global->__pyx_k__83
#define __pyx_k__84 __pyx_mstate_global->__pyx_k__84
#define __pyx_k__85 __pyx_mstate_global->__pyx_k__85
#define __pyx_k__86 __pyx_mstate_global->__pyx_k__86
#define __pyx_k__87 __pyx_mstate_global->__pyx_k__87
#define __pyx_k__88 __pyx_mstate_global->__pyx_k__88
#define __pyx_k__89 __pyx_mstate_global->__pyx_k__89
#define __pyx_k__90 __pyx_mstate_global->__pyx_k__90
#define __pyx_k__91 __pyx_mstate_global->__pyx_k__91
#define __pyx_k__92 __pyx_mstate_global->__pyx_k__92
#define __pyx_k__93 __pyx_mstate_global->__pyx_k__93
#define __pyx_k__94 __pyx_mstate_global->__pyx_k__94
#define __pyx_k__95 __pyx_mstate_global->__pyx_k__95
#define __pyx_k__96 __pyx_mstate_global->__pyx_k__96
#define __pyx_k__97 __pyx_mstate_global->__pyx_k__97
#define __pyx_k__98 __pyx_mstate_global->__pyx_k__98
#define __pyx_k__99 __pyx_mstate_global->__pyx_k__99
#define __pyx_k__100 __pyx_mstate_global->__pyx_k__100
#define __pyx_k__101 __pyx_mstate_global->__pyx_k__101
#define __pyx_k__102 __pyx_mstate_global->__pyx_k__102
#define __pyx_k__103 __pyx_mstate_global->__pyx_k__103
#define __pyx_k__104 __pyx_mstate_global->__pyx_k__104
#define __pyx_k__105 __pyx_mstate_global->__pyx_k__105
#define __pyx_k__106 __pyx_mstate_global->__pyx_k__106
#define __pyx_k__107 __pyx_mstate_global->__pyx_k__107
#define __pyx_k__108 __pyx_mstate_global->__pyx_k__108
#define __pyx_k__109 __pyx_mstate_global->__pyx_k__109
#define __pyx_k__110 __pyx_mstate_global->__pyx_k__110
#define __pyx_k__111 __pyx_mstate_global->__pyx_k__111
#define __pyx_k__112 __pyx_mstate_global->__pyx_k__112
#define __pyx_k__113 __pyx_mstate_global->__pyx_k__113
#define __pyx_k__114 __pyx_mstate_global->__pyx_k__114
#define __pyx_k__115 __pyx_mstate_global->__pyx_k__115
#define __pyx_k__116 __pyx_mstate_global->__pyx_k__116
#define __pyx_k__117 __pyx_mstate_global->__pyx_k__117
#define __pyx_k__118 __pyx_mstate_global->__pyx_k__118
#define __pyx_k__119 __pyx_mstate_global->__pyx_k__119
#define __pyx_k__120 __pyx_mstate_global->__pyx_k__120
#define __pyx_k__121 __pyx_mstate_global->__pyx_k__121
#define __pyx_k__122 __pyx_mstate_global->__pyx_k__122
#define __pyx_k__123 __pyx_mstate_global->__pyx_k__123
#define __pyx_k__124 __pyx_mstate_global->__pyx_k__124
#define __pyx_k__125 __pyx_mstate_global->__pyx_k__125
#define __pyx_k__126 __pyx_mstate_global->__pyx_k__126
#define __pyx_k__127 __pyx_mstate_global->__pyx_k__127
#define __pyx_k__128 __pyx_mstate_global->__pyx_k__128
#define __pyx_k__129 __pyx_mstate_global->__pyx_k__129
#define __pyx_k__130 __pyx_mstate_global->__pyx_k__130
#define __pyx_k__131 __pyx_mstate_global->__pyx_k__131
#define __pyx_k__132 __pyx_mstate_global->__pyx_k__132
#define __pyx_k__133 __pyx_mstate_global->__pyx_k__133
#define __pyx_k__134 __pyx_mstate_global->__pyx_k__134
#define __pyx_k__135 __pyx_mstate_global->__pyx_k__135
#define __pyx_k__136 __pyx_mstate_global->__pyx_k__136
#define __pyx_k__137 __pyx_mstate_global->__pyx_k__137
#define __pyx_k__138 __pyx_mstate_global->__pyx_k__138
#define __pyx_k__139 __pyx_mstate_global->__pyx_k__139
#define __pyx_k__140 __pyx_mstate_global->__pyx_k__140
#define __pyx_k__141 __pyx_mstate_global->__pyx_k__141
#define __pyx_k__142 __pyx_mstate_global->__pyx_k__142
#define __pyx_k__143 __pyx_mstate_global->__pyx_k__143
#define __pyx_k__144 __pyx_mstate_global->__pyx_k__144
#define __pyx_k__145 __pyx_mstate_global->__pyx_k__145
#define __pyx_k__146 __pyx_mstate_global->__pyx_k__146
#define __pyx_k__147 __pyx_mstate_global->__pyx_k__147
#define __pyx_k__148 __pyx_mstate_global->__pyx_k__148
#define __pyx_k__149 __pyx_mstate_global->__pyx_k__149
#define __pyx_k__150 __pyx_mstate_global->__pyx_k__150
#define __pyx_k__152 __pyx_mstate_global->__pyx_k__152
#define __pyx_k__153 __pyx_mstate_global->__pyx_k__153
#define __pyx_k__154 __pyx_mstate_global->__pyx_k__154
#define __pyx_k__155 __pyx_mstate_global->__pyx_k__155
#define __pyx_k__156 __pyx_mstate_global->__pyx_k__156
#define __pyx_k__157 __pyx_mstate_global->__pyx_k__157
#define __pyx_k__158 __pyx_mstate_global->__pyx_k__158
#define __pyx_k__159 __pyx_mstate_global->__pyx_k__159
#define __pyx_k__160 __pyx_mstate_global->__pyx_k__160
#define __pyx_k__161 __pyx_mstate_global->__pyx_k__161
#define __pyx_k__162 __pyx_mstate_global->__pyx_k__162
#define __pyx_k__163 __pyx_mstate_global->__pyx_k__163
#define __pyx_k__164 __pyx_mstate_global->__pyx_k__164
#define __pyx_k__165 __pyx_mstate_global->__pyx_k__165
#define __pyx_k__167 __pyx_mstate_global->__pyx_k__167
#define __pyx_k__168 __pyx_mstate_global->__pyx_k__168
#define __pyx_k__169 __pyx_mstate_global->__pyx_k__169
#define __pyx_k__172 __pyx_mstate_global->__pyx_k__172
#define __pyx_k__173 __pyx_mstate_global->__pyx_k__173
#define __pyx_k__174 __pyx_mstate_global->__pyx_k__174
#define __pyx_k__175 __pyx_mstate_global->__pyx_k__175
#define __pyx_k__176 __pyx_mstate_global->__pyx_k__176
#define __pyx_k__181 __pyx_mstate_global->__pyx_k__181
#define __pyx_k__182 __pyx_mstate_global->__pyx_k__182
#define __pyx_k__183 __pyx_mstate_global->__pyx_k__183
#define __pyx_k__184 __pyx_mstate_global->__pyx_k__184
#define __pyx_k__185 __pyx_mstate_global->__pyx_k__185
#define __pyx_k__186 __pyx_mstate_global->__pyx_k__186
#define __pyx_k__187 __pyx_mstate_global->__pyx_k__187
#define __pyx_k__188 __pyx_mstate_global->__pyx_k__188
#define __pyx_k__189 __pyx_mstate_global->__pyx_k__189
#define __pyx_k__190 __pyx_mstate_global->__pyx_k__190
#define __pyx_k__191 __pyx_mstate_global->__pyx_k__191
#define __pyx_k__192 __pyx_mstate_global->__pyx_k__192
#define __pyx_k__193 __pyx_mstate_global->__pyx_k__193
#define __pyx_k__194 __pyx_mstate_global->__pyx_k__194
#define __pyx_k__195 __pyx_mstate_global->__pyx_k__195
#define __pyx_k__196 __pyx_mstate_global->__pyx_k__196
#define __pyx_k__197 __pyx_mstate_global->__pyx_k__197
#define __pyx_k__198 __pyx_mstate_global->__pyx_k__198
#define __pyx_k__199 __pyx_mstate_global->__pyx_k__199
#define __pyx_k__200 __pyx_mstate_global->__pyx_k__200
#define __pyx_k__201 __pyx_mstate_global->__pyx_k__201
#define __pyx_k__202 __pyx_mstate_global->__pyx_k__202
#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4
#define __pyx_tuple__5 __pyx_mstate_global->__pyx_tuple__5
#define __pyx_tuple__6 __pyx_mstate_global->__pyx_tuple__6
#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7
#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8
#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9
#define __pyx_tuple__10 __pyx_mstate_global->__pyx_tuple__10
#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11
#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13
#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14
#define __pyx_tuple__15 __pyx_mstate_global->__pyx_tuple__15
#define __pyx_tuple__16 __pyx_mstate_global->__pyx_tuple__16
#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
#define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19
#define __pyx_tuple__20 __pyx_mstate_global->__pyx_tuple__20
#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
#define __pyx_tuple__22 __pyx_mstate_global->__pyx_tuple__22
#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23
#define __pyx_tuple__24 __pyx_mstate_global->__pyx_tuple__24
#define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25
#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26
#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27
#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28
#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29
#define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31
#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32
#define __pyx_tuple__33 __pyx_mstate_global->__pyx_tuple__33
#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34
#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35
#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36
#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37
#define __pyx_tuple__38 __pyx_mstate_global->__pyx_tuple__38
#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39
#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40
#define __pyx_tuple__41 __pyx_mstate_global->__pyx_tuple__41
#define __pyx_tuple__42 __pyx_mstate_global->__pyx_tuple__42
#define __pyx_tuple__43 __pyx_mstate_global->__pyx_tuple__43
#define __pyx_tuple__44 __pyx_mstate_global->__pyx_tuple__44
#define __pyx_tuple__45 __pyx_mstate_global->__pyx_tuple__45
#define __pyx_tuple__46 __pyx_mstate_global->__pyx_tuple__46
#define __pyx_tuple__47 __pyx_mstate_global->__pyx_tuple__47
#define __pyx_tuple__48 __pyx_mstate_global->__pyx_tuple__48
#define __pyx_tuple__49 __pyx_mstate_global->__pyx_tuple__49
#define __pyx_tuple__50 __pyx_mstate_global->__pyx_tuple__50
#define __pyx_tuple__51 __pyx_mstate_global->__pyx_tuple__51
#define __pyx_tuple__52 __pyx_mstate_global->__pyx_tuple__52
#define __pyx_tuple__53 __pyx_mstate_global->__pyx_tuple__53
#define __pyx_tuple__54 __pyx_mstate_global->__pyx_tuple__54
#define __pyx_tuple__55 __pyx_mstate_global->__pyx_tuple__55
#define __pyx_tuple__56 __pyx_mstate_global->__pyx_tuple__56
#define __pyx_tuple__58 __pyx_mstate_global->__pyx_tuple__58
#define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59
#define __pyx_tuple__60 __pyx_mstate_global->__pyx_tuple__60
#define __pyx_tuple__61 __pyx_mstate_global->__pyx_tuple__61
#define __pyx_tuple__62 __pyx_mstate_global->__pyx_tuple__62
#define __pyx_tuple__64 __pyx_mstate_global->__pyx_tuple__64
#define __pyx_tuple__67 __pyx_mstate_global->__pyx_tuple__67
#define __pyx_tuple__81 __pyx_mstate_global->__pyx_tuple__81
#define __pyx_slice__166 __pyx_mstate_global->__pyx_slice__166
#define __pyx_slice__171 __pyx_mstate_global->__pyx_slice__171
#define __pyx_tuple__151 __pyx_mstate_global->__pyx_tuple__151
#define __pyx_tuple__170 __pyx_mstate_global->__pyx_tuple__170
#define __pyx_tuple__177 __pyx_mstate_global->__pyx_tuple__177
#define __pyx_tuple__178 __pyx_mstate_global->__pyx_tuple__178
#define __pyx_tuple__179 __pyx_mstate_global->__pyx_tuple__179
#define __pyx_tuple__180 __pyx_mstate_global->__pyx_tuple__180
#define __pyx_tuple__203 __pyx_mstate_global->__pyx_tuple__203
#define __pyx_tuple__204 __pyx_mstate_global->__pyx_tuple__204
#define __pyx_tuple__206 __pyx_mstate_global->__pyx_tuple__206
#define __pyx_tuple__208 __pyx_mstate_global->__pyx_tuple__208
#define __pyx_tuple__210 __pyx_mstate_global->__pyx_tuple__210
#define __pyx_tuple__211 __pyx_mstate_global->__pyx_tuple__211
#define __pyx_tuple__213 __pyx_mstate_global->__pyx_tuple__213
#define __pyx_tuple__215 __pyx_mstate_global->__pyx_tuple__215
#define __pyx_tuple__217 __pyx_mstate_global->__pyx_tuple__217
#define __pyx_tuple__218 __pyx_mstate_global->__pyx_tuple__218
#define __pyx_tuple__220 __pyx_mstate_global->__pyx_tuple__220
#define __pyx_tuple__221 __pyx_mstate_global->__pyx_tuple__221
#define __pyx_tuple__223 __pyx_mstate_global->__pyx_tuple__223
#define __pyx_tuple__226 __pyx_mstate_global->__pyx_tuple__226
#define __pyx_tuple__228 __pyx_mstate_global->__pyx_tuple__228
#define __pyx_tuple__232 __pyx_mstate_global->__pyx_tuple__232
#define __pyx_tuple__234 __pyx_mstate_global->__pyx_tuple__234
#define __pyx_tuple__237 __pyx_mstate_global->__pyx_tuple__237
#define __pyx_tuple__239 __pyx_mstate_global->__pyx_tuple__239
#define __pyx_tuple__241 __pyx_mstate_global->__pyx_tuple__241
#define __pyx_tuple__243 __pyx_mstate_global->__pyx_tuple__243
#define __pyx_tuple__245 __pyx_mstate_global->__pyx_tuple__245
#define __pyx_tuple__247 __pyx_mstate_global->__pyx_tuple__247
#define __pyx_tuple__250 __pyx_mstate_global->__pyx_tuple__250
#define __pyx_tuple__252 __pyx_mstate_global->__pyx_tuple__252
#define __pyx_tuple__254 __pyx_mstate_global->__pyx_tuple__254
#define __pyx_tuple__257 __pyx_mstate_global->__pyx_tuple__257
#define __pyx_tuple__259 __pyx_mstate_global->__pyx_tuple__259
#define __pyx_tuple__261 __pyx_mstate_global->__pyx_tuple__261
#define __pyx_tuple__264 __pyx_mstate_global->__pyx_tuple__264
#define __pyx_tuple__267 __pyx_mstate_global->__pyx_tuple__267
#define __pyx_tuple__269 __pyx_mstate_global->__pyx_tuple__269
#define __pyx_tuple__271 __pyx_mstate_global->__pyx_tuple__271
#define __pyx_tuple__273 __pyx_mstate_global->__pyx_tuple__273
#define __pyx_tuple__275 __pyx_mstate_global->__pyx_tuple__275
#define __pyx_tuple__278 __pyx_mstate_global->__pyx_tuple__278
#define __pyx_tuple__281 __pyx_mstate_global->__pyx_tuple__281
#define __pyx_tuple__284 __pyx_mstate_global->__pyx_tuple__284
#define __pyx_tuple__286 __pyx_mstate_global->__pyx_tuple__286
#define __pyx_tuple__288 __pyx_mstate_global->__pyx_tuple__288
#define __pyx_tuple__290 __pyx_mstate_global->__pyx_tuple__290
#define __pyx_tuple__292 __pyx_mstate_global->__pyx_tuple__292
#define __pyx_tuple__294 __pyx_mstate_global->__pyx_tuple__294
#define __pyx_tuple__297 __pyx_mstate_global->__pyx_tuple__297
#define __pyx_tuple__300 __pyx_mstate_global->__pyx_tuple__300
#define __pyx_tuple__302 __pyx_mstate_global->__pyx_tuple__302
#define __pyx_tuple__305 __pyx_mstate_global->__pyx_tuple__305
#define __pyx_tuple__307 __pyx_mstate_global->__pyx_tuple__307
#define __pyx_tuple__310 __pyx_mstate_global->__pyx_tuple__310
#define __pyx_tuple__312 __pyx_mstate_global->__pyx_tuple__312
#define __pyx_tuple__314 __pyx_mstate_global->__pyx_tuple__314
#define __pyx_tuple__316 __pyx_mstate_global->__pyx_tuple__316
#define __pyx_tuple__318 __pyx_mstate_global->__pyx_tuple__318
#define __pyx_tuple__320 __pyx_mstate_global->__pyx_tuple__320
#define __pyx_tuple__322 __pyx_mstate_global->__pyx_tuple__322
#define __pyx_tuple__324 __pyx_mstate_global->__pyx_tuple__324
#define __pyx_tuple__326 __pyx_mstate_global->__pyx_tuple__326
#define __pyx_tuple__328 __pyx_mstate_global->__pyx_tuple__328
#define __pyx_tuple__330 __pyx_mstate_global->__pyx_tuple__330
#define __pyx_tuple__331 __pyx_mstate_global->__pyx_tuple__331
#define __pyx_tuple__333 __pyx_mstate_global->__pyx_tuple__333
#define __pyx_tuple__335 __pyx_mstate_global->__pyx_tuple__335
#define __pyx_tuple__338 __pyx_mstate_global->__pyx_tuple__338
#define __pyx_tuple__340 __pyx_mstate_global->__pyx_tuple__340
#define __pyx_tuple__342 __pyx_mstate_global->__pyx_tuple__342
#define __pyx_tuple__344 __pyx_mstate_global->__pyx_tuple__344
#define __pyx_tuple__346 __pyx_mstate_global->__pyx_tuple__346
#define __pyx_tuple__348 __pyx_mstate_global->__pyx_tuple__348
#define __pyx_tuple__351 __pyx_mstate_global->__pyx_tuple__351
#define __pyx_tuple__354 __pyx_mstate_global->__pyx_tuple__354
#define __pyx_tuple__357 __pyx_mstate_global->__pyx_tuple__357
#define __pyx_tuple__360 __pyx_mstate_global->__pyx_tuple__360
#define __pyx_tuple__363 __pyx_mstate_global->__pyx_tuple__363
#define __pyx_tuple__365 __pyx_mstate_global->__pyx_tuple__365
#define __pyx_tuple__367 __pyx_mstate_global->__pyx_tuple__367
#define __pyx_tuple__369 __pyx_mstate_global->__pyx_tuple__369
#define __pyx_tuple__372 __pyx_mstate_global->__pyx_tuple__372
#define __pyx_tuple__374 __pyx_mstate_global->__pyx_tuple__374
#define __pyx_tuple__379 __pyx_mstate_global->__pyx_tuple__379
#define __pyx_tuple__381 __pyx_mstate_global->__pyx_tuple__381
#define __pyx_tuple__384 __pyx_mstate_global->__pyx_tuple__384
#define __pyx_tuple__386 __pyx_mstate_global->__pyx_tuple__386
#define __pyx_tuple__389 __pyx_mstate_global->__pyx_tuple__389
#define __pyx_tuple__391 __pyx_mstate_global->__pyx_tuple__391
#define __pyx_tuple__394 __pyx_mstate_global->__pyx_tuple__394
#define __pyx_tuple__402 __pyx_mstate_global->__pyx_tuple__402
#define __pyx_tuple__404 __pyx_mstate_global->__pyx_tuple__404
#define __pyx_tuple__407 __pyx_mstate_global->__pyx_tuple__407
#define __pyx_tuple__409 __pyx_mstate_global->__pyx_tuple__409
#define __pyx_tuple__411 __pyx_mstate_global->__pyx_tuple__411
#define __pyx_tuple__413 __pyx_mstate_global->__pyx_tuple__413
#define __pyx_tuple__415 __pyx_mstate_global->__pyx_tuple__415
#define __pyx_tuple__417 __pyx_mstate_global->__pyx_tuple__417
#define __pyx_tuple__424 __pyx_mstate_global->__pyx_tuple__424
#define __pyx_tuple__426 __pyx_mstate_global->__pyx_tuple__426
#define __pyx_tuple__428 __pyx_mstate_global->__pyx_tuple__428
#define __pyx_tuple__430 __pyx_mstate_global->__pyx_tuple__430
#define __pyx_tuple__432 __pyx_mstate_global->__pyx_tuple__432
#define __pyx_tuple__434 __pyx_mstate_global->__pyx_tuple__434
#define __pyx_tuple__436 __pyx_mstate_global->__pyx_tuple__436
#define __pyx_tuple__437 __pyx_mstate_global->__pyx_tuple__437
#define __pyx_tuple__443 __pyx_mstate_global->__pyx_tuple__443
#define __pyx_tuple__445 __pyx_mstate_global->__pyx_tuple__445
#define __pyx_tuple__447 __pyx_mstate_global->__pyx_tuple__447
#define __pyx_tuple__449 __pyx_mstate_global->__pyx_tuple__449
#define __pyx_tuple__451 __pyx_mstate_global->__pyx_tuple__451
#define __pyx_tuple__453 __pyx_mstate_global->__pyx_tuple__453
#define __pyx_tuple__455 __pyx_mstate_global->__pyx_tuple__455
#define __pyx_tuple__457 __pyx_mstate_global->__pyx_tuple__457
#define __pyx_tuple__464 __pyx_mstate_global->__pyx_tuple__464
#define __pyx_tuple__468 __pyx_mstate_global->__pyx_tuple__468
#define __pyx_tuple__476 __pyx_mstate_global->__pyx_tuple__476
#define __pyx_tuple__478 __pyx_mstate_global->__pyx_tuple__478
#define __pyx_tuple__480 __pyx_mstate_global->__pyx_tuple__480
#define __pyx_tuple__481 __pyx_mstate_global->__pyx_tuple__481
#define __pyx_tuple__483 __pyx_mstate_global->__pyx_tuple__483
#define __pyx_tuple__485 __pyx_mstate_global->__pyx_tuple__485
#define __pyx_tuple__489 __pyx_mstate_global->__pyx_tuple__489
#define __pyx_tuple__492 __pyx_mstate_global->__pyx_tuple__492
#define __pyx_tuple__495 __pyx_mstate_global->__pyx_tuple__495
#define __pyx_tuple__503 __pyx_mstate_global->__pyx_tuple__503
#define __pyx_tuple__505 __pyx_mstate_global->__pyx_tuple__505
#define __pyx_tuple__508 __pyx_mstate_global->__pyx_tuple__508
#define __pyx_tuple__510 __pyx_mstate_global->__pyx_tuple__510
#define __pyx_tuple__512 __pyx_mstate_global->__pyx_tuple__512
#define __pyx_tuple__514 __pyx_mstate_global->__pyx_tuple__514
#define __pyx_tuple__516 __pyx_mstate_global->__pyx_tuple__516
#define __pyx_tuple__518 __pyx_mstate_global->__pyx_tuple__518
#define __pyx_tuple__522 __pyx_mstate_global->__pyx_tuple__522
#define __pyx_tuple__524 __pyx_mstate_global->__pyx_tuple__524
#define __pyx_tuple__526 __pyx_mstate_global->__pyx_tuple__526
#define __pyx_tuple__528 __pyx_mstate_global->__pyx_tuple__528
#define __pyx_tuple__530 __pyx_mstate_global->__pyx_tuple__530
#define __pyx_tuple__532 __pyx_mstate_global->__pyx_tuple__532
#define __pyx_tuple__534 __pyx_mstate_global->__pyx_tuple__534
#define __pyx_tuple__537 __pyx_mstate_global->__pyx_tuple__537
#define __pyx_tuple__548 __pyx_mstate_global->__pyx_tuple__548
#define __pyx_tuple__551 __pyx_mstate_global->__pyx_tuple__551
#define __pyx_tuple__553 __pyx_mstate_global->__pyx_tuple__553
#define __pyx_tuple__556 __pyx_mstate_global->__pyx_tuple__556
#define __pyx_tuple__558 __pyx_mstate_global->__pyx_tuple__558
#define __pyx_tuple__560 __pyx_mstate_global->__pyx_tuple__560
#define __pyx_tuple__562 __pyx_mstate_global->__pyx_tuple__562
#define __pyx_tuple__565 __pyx_mstate_global->__pyx_tuple__565
#define __pyx_tuple__567 __pyx_mstate_global->__pyx_tuple__567
#define __pyx_tuple__569 __pyx_mstate_global->__pyx_tuple__569
#define __pyx_tuple__581 __pyx_mstate_global->__pyx_tuple__581
#define __pyx_tuple__583 __pyx_mstate_global->__pyx_tuple__583
#define __pyx_tuple__585 __pyx_mstate_global->__pyx_tuple__585
#define __pyx_tuple__587 __pyx_mstate_global->__pyx_tuple__587
#define __pyx_tuple__589 __pyx_mstate_global->__pyx_tuple__589
#define __pyx_tuple__591 __pyx_mstate_global->__pyx_tuple__591
#define __pyx_tuple__593 __pyx_mstate_global->__pyx_tuple__593
#define __pyx_tuple__595 __pyx_mstate_global->__pyx_tuple__595
#define __pyx_tuple__597 __pyx_mstate_global->__pyx_tuple__597
#define __pyx_tuple__598 __pyx_mstate_global->__pyx_tuple__598
#define __pyx_tuple__604 __pyx_mstate_global->__pyx_tuple__604
#define __pyx_tuple__607 __pyx_mstate_global->__pyx_tuple__607
#define __pyx_tuple__609 __pyx_mstate_global->__pyx_tuple__609
#define __pyx_tuple__611 __pyx_mstate_global->__pyx_tuple__611
#define __pyx_tuple__619 __pyx_mstate_global->__pyx_tuple__619
#define __pyx_tuple__621 __pyx_mstate_global->__pyx_tuple__621
#define __pyx_tuple__622 __pyx_mstate_global->__pyx_tuple__622
#define __pyx_tuple__624 __pyx_mstate_global->__pyx_tuple__624
#define __pyx_tuple__626 __pyx_mstate_global->__pyx_tuple__626
#define __pyx_tuple__628 __pyx_mstate_global->__pyx_tuple__628
#define __pyx_tuple__630 __pyx_mstate_global->__pyx_tuple__630
#define __pyx_tuple__632 __pyx_mstate_global->__pyx_tuple__632
#define __pyx_tuple__634 __pyx_mstate_global->__pyx_tuple__634
#define __pyx_tuple__636 __pyx_mstate_global->__pyx_tuple__636
#define __pyx_tuple__638 __pyx_mstate_global->__pyx_tuple__638
#define __pyx_tuple__640 __pyx_mstate_global->__pyx_tuple__640
#define __pyx_tuple__642 __pyx_mstate_global->__pyx_tuple__642
#define __pyx_tuple__646 __pyx_mstate_global->__pyx_tuple__646
#define __pyx_tuple__648 __pyx_mstate_global->__pyx_tuple__648
#define __pyx_tuple__660 __pyx_mstate_global->__pyx_tuple__660
#define __pyx_tuple__662 __pyx_mstate_global->__pyx_tuple__662
#define __pyx_tuple__667 __pyx_mstate_global->__pyx_tuple__667
#define __pyx_tuple__673 __pyx_mstate_global->__pyx_tuple__673
#define __pyx_tuple__675 __pyx_mstate_global->__pyx_tuple__675
#define __pyx_tuple__678 __pyx_mstate_global->__pyx_tuple__678
#define __pyx_tuple__681 __pyx_mstate_global->__pyx_tuple__681
#define __pyx_tuple__683 __pyx_mstate_global->__pyx_tuple__683
#define __pyx_tuple__688 __pyx_mstate_global->__pyx_tuple__688
#define __pyx_tuple__694 __pyx_mstate_global->__pyx_tuple__694
#define __pyx_tuple__696 __pyx_mstate_global->__pyx_tuple__696
#define __pyx_tuple__699 __pyx_mstate_global->__pyx_tuple__699
#define __pyx_tuple__701 __pyx_mstate_global->__pyx_tuple__701
#define __pyx_tuple__703 __pyx_mstate_global->__pyx_tuple__703
#define __pyx_tuple__705 __pyx_mstate_global->__pyx_tuple__705
#define __pyx_tuple__710 __pyx_mstate_global->__pyx_tuple__710
#define __pyx_tuple__716 __pyx_mstate_global->__pyx_tuple__716
#define __pyx_tuple__718 __pyx_mstate_global->__pyx_tuple__718
#define __pyx_tuple__721 __pyx_mstate_global->__pyx_tuple__721
#define __pyx_tuple__725 __pyx_mstate_global->__pyx_tuple__725
#define __pyx_tuple__727 __pyx_mstate_global->__pyx_tuple__727
#define __pyx_tuple__730 __pyx_mstate_global->__pyx_tuple__730
#define __pyx_tuple__746 __pyx_mstate_global->__pyx_tuple__746
#define __pyx_tuple__750 __pyx_mstate_global->__pyx_tuple__750
#define __pyx_tuple__752 __pyx_mstate_global->__pyx_tuple__752
#define __pyx_tuple__754 __pyx_mstate_global->__pyx_tuple__754
#define __pyx_tuple__758 __pyx_mstate_global->__pyx_tuple__758
#define __pyx_tuple__760 __pyx_mstate_global->__pyx_tuple__760
#define __pyx_tuple__763 __pyx_mstate_global->__pyx_tuple__763
#define __pyx_tuple__765 __pyx_mstate_global->__pyx_tuple__765
#define __pyx_tuple__768 __pyx_mstate_global->__pyx_tuple__768
#define __pyx_tuple__770 __pyx_mstate_global->__pyx_tuple__770
#define __pyx_tuple__773 __pyx_mstate_global->__pyx_tuple__773
#define __pyx_tuple__776 __pyx_mstate_global->__pyx_tuple__776
#define __pyx_tuple__778 __pyx_mstate_global->__pyx_tuple__778
#define __pyx_tuple__780 __pyx_mstate_global->__pyx_tuple__780
#define __pyx_tuple__782 __pyx_mstate_global->__pyx_tuple__782
#define __pyx_tuple__784 __pyx_mstate_global->__pyx_tuple__784
#define __pyx_tuple__786 __pyx_mstate_global->__pyx_tuple__786
#define __pyx_tuple__787 __pyx_mstate_global->__pyx_tuple__787
#define __pyx_tuple__789 __pyx_mstate_global->__pyx_tuple__789
#define __pyx_tuple__791 __pyx_mstate_global->__pyx_tuple__791
#define __pyx_tuple__793 __pyx_mstate_global->__pyx_tuple__793
#define __pyx_tuple__795 __pyx_mstate_global->__pyx_tuple__795
#define __pyx_tuple__797 __pyx_mstate_global->__pyx_tuple__797
#define __pyx_tuple__807 __pyx_mstate_global->__pyx_tuple__807
#define __pyx_tuple__810 __pyx_mstate_global->__pyx_tuple__810
#define __pyx_tuple__812 __pyx_mstate_global->__pyx_tuple__812
#define __pyx_tuple__832 __pyx_mstate_global->__pyx_tuple__832
#define __pyx_tuple__834 __pyx_mstate_global->__pyx_tuple__834
#define __pyx_tuple__836 __pyx_mstate_global->__pyx_tuple__836
#define __pyx_tuple__838 __pyx_mstate_global->__pyx_tuple__838
#define __pyx_tuple__840 __pyx_mstate_global->__pyx_tuple__840
#define __pyx_tuple__842 __pyx_mstate_global->__pyx_tuple__842
#define __pyx_tuple__844 __pyx_mstate_global->__pyx_tuple__844
#define __pyx_tuple__846 __pyx_mstate_global->__pyx_tuple__846
#define __pyx_tuple__848 __pyx_mstate_global->__pyx_tuple__848
#define __pyx_tuple__850 __pyx_mstate_global->__pyx_tuple__850
#define __pyx_tuple__852 __pyx_mstate_global->__pyx_tuple__852
#define __pyx_tuple__854 __pyx_mstate_global->__pyx_tuple__854
#define __pyx_tuple__856 __pyx_mstate_global->__pyx_tuple__856
#define __pyx_tuple__858 __pyx_mstate_global->__pyx_tuple__858
#define __pyx_tuple__862 __pyx_mstate_global->__pyx_tuple__862
#define __pyx_tuple__864 __pyx_mstate_global->__pyx_tuple__864
#define __pyx_tuple__866 __pyx_mstate_global->__pyx_tuple__866
#define __pyx_tuple__869 __pyx_mstate_global->__pyx_tuple__869
#define __pyx_tuple__871 __pyx_mstate_global->__pyx_tuple__871
#define __pyx_tuple__873 __pyx_mstate_global->__pyx_tuple__873
#define __pyx_tuple__875 __pyx_mstate_global->__pyx_tuple__875
#define __pyx_tuple__878 __pyx_mstate_global->__pyx_tuple__878
#define __pyx_tuple__883 __pyx_mstate_global->__pyx_tuple__883
#define __pyx_tuple__885 __pyx_mstate_global->__pyx_tuple__885
#define __pyx_tuple__888 __pyx_mstate_global->__pyx_tuple__888
#define __pyx_tuple__890 __pyx_mstate_global->__pyx_tuple__890
#define __pyx_tuple__892 __pyx_mstate_global->__pyx_tuple__892
#define __pyx_tuple__894 __pyx_mstate_global->__pyx_tuple__894
#define __pyx_tuple__906 __pyx_mstate_global->__pyx_tuple__906
#define __pyx_tuple__909 __pyx_mstate_global->__pyx_tuple__909
#define __pyx_tuple__911 __pyx_mstate_global->__pyx_tuple__911
#define __pyx_tuple__913 __pyx_mstate_global->__pyx_tuple__913
#define __pyx_tuple__915 __pyx_mstate_global->__pyx_tuple__915
#define __pyx_tuple__917 __pyx_mstate_global->__pyx_tuple__917
#define __pyx_tuple__920 __pyx_mstate_global->__pyx_tuple__920
#define __pyx_tuple__922 __pyx_mstate_global->__pyx_tuple__922
#define __pyx_tuple__924 __pyx_mstate_global->__pyx_tuple__924
#define __pyx_tuple__926 __pyx_mstate_global->__pyx_tuple__926
#define __pyx_tuple__932 __pyx_mstate_global->__pyx_tuple__932
#define __pyx_tuple__953 __pyx_mstate_global->__pyx_tuple__953
#define __pyx_tuple__956 __pyx_mstate_global->__pyx_tuple__956
#define __pyx_tuple__961 __pyx_mstate_global->__pyx_tuple__961
#define __pyx_tuple__966 __pyx_mstate_global->__pyx_tuple__966
#define __pyx_tuple__968 __pyx_mstate_global->__pyx_tuple__968
#define __pyx_tuple__970 __pyx_mstate_global->__pyx_tuple__970
#define __pyx_tuple__975 __pyx_mstate_global->__pyx_tuple__975
#define __pyx_tuple__980 __pyx_mstate_global->__pyx_tuple__980
#define __pyx_tuple__985 __pyx_mstate_global->__pyx_tuple__985
#define __pyx_tuple__990 __pyx_mstate_global->__pyx_tuple__990
#define __pyx_tuple__992 __pyx_mstate_global->__pyx_tuple__992
#define __pyx_tuple__994 __pyx_mstate_global->__pyx_tuple__994
#define __pyx_codeobj__63 __pyx_mstate_global->__pyx_codeobj__63
#define __pyx_tuple__1004 __pyx_mstate_global->__pyx_tuple__1004
#define __pyx_tuple__1009 __pyx_mstate_global->__pyx_tuple__1009
#define __pyx_tuple__1018 __pyx_mstate_global->__pyx_tuple__1018
#define __pyx_tuple__1029 __pyx_mstate_global->__pyx_tuple__1029
#define __pyx_tuple__1031 __pyx_mstate_global->__pyx_tuple__1031
#define __pyx_tuple__1033 __pyx_mstate_global->__pyx_tuple__1033
#define __pyx_tuple__1037 __pyx_mstate_global->__pyx_tuple__1037
#define __pyx_tuple__1039 __pyx_mstate_global->__pyx_tuple__1039
#define __pyx_tuple__1041 __pyx_mstate_global->__pyx_tuple__1041
#define __pyx_tuple__1045 __pyx_mstate_global->__pyx_tuple__1045
#define __pyx_tuple__1047 __pyx_mstate_global->__pyx_tuple__1047
#define __pyx_tuple__1050 __pyx_mstate_global->__pyx_tuple__1050
#define __pyx_tuple__1054 __pyx_mstate_global->__pyx_tuple__1054
#define __pyx_tuple__1056 __pyx_mstate_global->__pyx_tuple__1056
#define __pyx_tuple__1058 __pyx_mstate_global->__pyx_tuple__1058
#define __pyx_tuple__1060 __pyx_mstate_global->__pyx_tuple__1060
#define __pyx_tuple__1062 __pyx_mstate_global->__pyx_tuple__1062
#define __pyx_tuple__1064 __pyx_mstate_global->__pyx_tuple__1064
#define __pyx_tuple__1066 __pyx_mstate_global->__pyx_tuple__1066
#define __pyx_tuple__1068 __pyx_mstate_global->__pyx_tuple__1068
#define __pyx_codeobj__207 __pyx_mstate_global->__pyx_codeobj__207
#define __pyx_codeobj__209 __pyx_mstate_global->__pyx_codeobj__209
#define __pyx_codeobj__212 __pyx_mstate_global->__pyx_codeobj__212
#define __pyx_codeobj__214 __pyx_mstate_global->__pyx_codeobj__214
#define __pyx_codeobj__216 __pyx_mstate_global->__pyx_codeobj__216
#define __pyx_codeobj__219 __pyx_mstate_global->__pyx_codeobj__219
#define __pyx_codeobj__222 __pyx_mstate_global->__pyx_codeobj__222
#define __pyx_codeobj__224 __pyx_mstate_global->__pyx_codeobj__224
#define __pyx_codeobj__225 __pyx_mstate_global->__pyx_codeobj__225
#define __pyx_codeobj__227 __pyx_mstate_global->__pyx_codeobj__227
#define __pyx_codeobj__229 __pyx_mstate_global->__pyx_codeobj__229
#define __pyx_codeobj__230 __pyx_mstate_global->__pyx_codeobj__230
#define __pyx_codeobj__231 __pyx_mstate_global->__pyx_codeobj__231
#define __pyx_codeobj__233 __pyx_mstate_global->__pyx_codeobj__233
#define __pyx_codeobj__235 __pyx_mstate_global->__pyx_codeobj__235
#define __pyx_codeobj__236 __pyx_mstate_global->__pyx_codeobj__236
#define __pyx_codeobj__238 __pyx_mstate_global->__pyx_codeobj__238
#define __pyx_codeobj__240 __pyx_mstate_global->__pyx_codeobj__240
#define __pyx_codeobj__242 __pyx_mstate_global->__pyx_codeobj__242
#define __pyx_codeobj__244 __pyx_mstate_global->__pyx_codeobj__244
#define __pyx_codeobj__246 __pyx_mstate_global->__pyx_codeobj__246
#define __pyx_codeobj__248 __pyx_mstate_global->__pyx_codeobj__248
#define __pyx_codeobj__249 __pyx_mstate_global->__pyx_codeobj__249
#define __pyx_codeobj__251 __pyx_mstate_global->__pyx_codeobj__251
#define __pyx_codeobj__253 __pyx_mstate_global->__pyx_codeobj__253
#define __pyx_codeobj__255 __pyx_mstate_global->__pyx_codeobj__255
#define __pyx_codeobj__256 __pyx_mstate_global->__pyx_codeobj__256
#define __pyx_codeobj__258 __pyx_mstate_global->__pyx_codeobj__258
#define __pyx_codeobj__260 __pyx_mstate_global->__pyx_codeobj__260
#define __pyx_codeobj__262 __pyx_mstate_global->__pyx_codeobj__262
#define __pyx_codeobj__263 __pyx_mstate_global->__pyx_codeobj__263
#define __pyx_codeobj__265 __pyx_mstate_global->__pyx_codeobj__265
#define __pyx_codeobj__266 __pyx_mstate_global->__pyx_codeobj__266
#define __pyx_codeobj__268 __pyx_mstate_global->__pyx_codeobj__268
#define __pyx_codeobj__270 __pyx_mstate_global->__pyx_codeobj__270
#define __pyx_codeobj__272 __pyx_mstate_global->__pyx_codeobj__272
#define __pyx_codeobj__274 __pyx_mstate_global->__pyx_codeobj__274
#define __pyx_codeobj__276 __pyx_mstate_global->__pyx_codeobj__276
#define __pyx_codeobj__277 __pyx_mstate_global->__pyx_codeobj__277
#define __pyx_codeobj__279 __pyx_mstate_global->__pyx_codeobj__279
#define __pyx_codeobj__280 __pyx_mstate_global->__pyx_codeobj__280
#define __pyx_codeobj__282 __pyx_mstate_global->__pyx_codeobj__282
#define __pyx_codeobj__283 __pyx_mstate_global->__pyx_codeobj__283
#define __pyx_codeobj__285 __pyx_mstate_global->__pyx_codeobj__285
#define __pyx_codeobj__287 __pyx_mstate_global->__pyx_codeobj__287
#define __pyx_codeobj__289 __pyx_mstate_global->__pyx_codeobj__289
#define __pyx_codeobj__291 __pyx_mstate_global->__pyx_codeobj__291
#define __pyx_codeobj__293 __pyx_mstate_global->__pyx_codeobj__293
#define __pyx_codeobj__295 __pyx_mstate_global->__pyx_codeobj__295
#define __pyx_codeobj__296 __pyx_mstate_global->__pyx_codeobj__296
#define __pyx_codeobj__298 __pyx_mstate_global->__pyx_codeobj__298
#define __pyx_codeobj__299 __pyx_mstate_global->__pyx_codeobj__299
#define __pyx_codeobj__301 __pyx_mstate_global->__pyx_codeobj__301
#define __pyx_codeobj__303 __pyx_mstate_global->__pyx_codeobj__303
#define __pyx_codeobj__304 __pyx_mstate_global->__pyx_codeobj__304
#define __pyx_codeobj__306 __pyx_mstate_global->__pyx_codeobj__306
#define __pyx_codeobj__308 __pyx_mstate_global->__pyx_codeobj__308
#define __pyx_codeobj__309 __pyx_mstate_global->__pyx_codeobj__309
#define __pyx_codeobj__311 __pyx_mstate_global->__pyx_codeobj__311
#define __pyx_codeobj__313 __pyx_mstate_global->__pyx_codeobj__313
#define __pyx_codeobj__315 __pyx_mstate_global->__pyx_codeobj__315
#define __pyx_codeobj__317 __pyx_mstate_global->__pyx_codeobj__317
#define __pyx_codeobj__319 __pyx_mstate_global->__pyx_codeobj__319
#define __pyx_codeobj__321 __pyx_mstate_global->__pyx_codeobj__321
#define __pyx_codeobj__323 __pyx_mstate_global->__pyx_codeobj__323
#define __pyx_codeobj__325 __pyx_mstate_global->__pyx_codeobj__325
#define __pyx_codeobj__327 __pyx_mstate_global->__pyx_codeobj__327
#define __pyx_codeobj__329 __pyx_mstate_global->__pyx_codeobj__329
#define __pyx_codeobj__332 __pyx_mstate_global->__pyx_codeobj__332
#define __pyx_codeobj__334 __pyx_mstate_global->__pyx_codeobj__334
#define __pyx_codeobj__336 __pyx_mstate_global->__pyx_codeobj__336
#define __pyx_codeobj__337 __pyx_mstate_global->__pyx_codeobj__337
#define __pyx_codeobj__339 __pyx_mstate_global->__pyx_codeobj__339
#define __pyx_codeobj__341 __pyx_mstate_global->__pyx_codeobj__341
#define __pyx_codeobj__343 __pyx_mstate_global->__pyx_codeobj__343
#define __pyx_codeobj__345 __pyx_mstate_global->__pyx_codeobj__345
#define __pyx_codeobj__347 __pyx_mstate_global->__pyx_codeobj__347
#define __pyx_codeobj__349 __pyx_mstate_global->__pyx_codeobj__349
#define __pyx_codeobj__350 __pyx_mstate_global->__pyx_codeobj__350
#define __pyx_codeobj__352 __pyx_mstate_global->__pyx_codeobj__352
#define __pyx_codeobj__353 __pyx_mstate_global->__pyx_codeobj__353
#define __pyx_codeobj__355 __pyx_mstate_global->__pyx_codeobj__355
#define __pyx_codeobj__356 __pyx_mstate_global->__pyx_codeobj__356
#define __pyx_codeobj__358 __pyx_mstate_global->__pyx_codeobj__358
#define __pyx_codeobj__359 __pyx_mstate_global->__pyx_codeobj__359
#define __pyx_codeobj__361 __pyx_mstate_global->__pyx_codeobj__361
#define __pyx_codeobj__362 __pyx_mstate_global->__pyx_codeobj__362
#define __pyx_codeobj__364 __pyx_mstate_global->__pyx_codeobj__364
#define __pyx_codeobj__366 __pyx_mstate_global->__pyx_codeobj__366
#define __pyx_codeobj__368 __pyx_mstate_global->__pyx_codeobj__368
#define __pyx_codeobj__370 __pyx_mstate_global->__pyx_codeobj__370
#define __pyx_codeobj__371 __pyx_mstate_global->__pyx_codeobj__371
#define __pyx_codeobj__373 __pyx_mstate_global->__pyx_codeobj__373
#define __pyx_codeobj__375 __pyx_mstate_global->__pyx_codeobj__375
#define __pyx_codeobj__376 __pyx_mstate_global->__pyx_codeobj__376
#define __pyx_codeobj__377 __pyx_mstate_global->__pyx_codeobj__377
#define __pyx_codeobj__378 __pyx_mstate_global->__pyx_codeobj__378
#define __pyx_codeobj__380 __pyx_mstate_global->__pyx_codeobj__380
#define __pyx_codeobj__382 __pyx_mstate_global->__pyx_codeobj__382
#define __pyx_codeobj__383 __pyx_mstate_global->__pyx_codeobj__383
#define __pyx_codeobj__385 __pyx_mstate_global->__pyx_codeobj__385
#define __pyx_codeobj__387 __pyx_mstate_global->__pyx_codeobj__387
#define __pyx_codeobj__388 __pyx_mstate_global->__pyx_codeobj__388
#define __pyx_codeobj__390 __pyx_mstate_global->__pyx_codeobj__390
#define __pyx_codeobj__392 __pyx_mstate_global->__pyx_codeobj__392
#define __pyx_codeobj__393 __pyx_mstate_global->__pyx_codeobj__393
#define __pyx_codeobj__395 __pyx_mstate_global->__pyx_codeobj__395
#define __pyx_codeobj__396 __pyx_mstate_global->__pyx_codeobj__396
#define __pyx_codeobj__397 __pyx_mstate_global->__pyx_codeobj__397
#define __pyx_codeobj__398 __pyx_mstate_global->__pyx_codeobj__398
#define __pyx_codeobj__399 __pyx_mstate_global->__pyx_codeobj__399
#define __pyx_codeobj__400 __pyx_mstate_global->__pyx_codeobj__400
#define __pyx_codeobj__401 __pyx_mstate_global->__pyx_codeobj__401
#define __pyx_codeobj__403 __pyx_mstate_global->__pyx_codeobj__403
#define __pyx_codeobj__405 __pyx_mstate_global->__pyx_codeobj__405
#define __pyx_codeobj__406 __pyx_mstate_global->__pyx_codeobj__406
#define __pyx_codeobj__408 __pyx_mstate_global->__pyx_codeobj__408
#define __pyx_codeobj__410 __pyx_mstate_global->__pyx_codeobj__410
#define __pyx_codeobj__412 __pyx_mstate_global->__pyx_codeobj__412
#define __pyx_codeobj__414 __pyx_mstate_global->__pyx_codeobj__414
#define __pyx_codeobj__416 __pyx_mstate_global->__pyx_codeobj__416
#define __pyx_codeobj__418 __pyx_mstate_global->__pyx_codeobj__418
#define __pyx_codeobj__419 __pyx_mstate_global->__pyx_codeobj__419
#define __pyx_codeobj__420 __pyx_mstate_global->__pyx_codeobj__420
#define __pyx_codeobj__421 __pyx_mstate_global->__pyx_codeobj__421
#define __pyx_codeobj__422 __pyx_mstate_global->__pyx_codeobj__422
#define __pyx_codeobj__423 __pyx_mstate_global->__pyx_codeobj__423
#define __pyx_codeobj__425 __pyx_mstate_global->__pyx_codeobj__425
#define __pyx_codeobj__427 __pyx_mstate_global->__pyx_codeobj__427
#define __pyx_codeobj__429 __pyx_mstate_global->__pyx_codeobj__429
#define __pyx_codeobj__431 __pyx_mstate_global->__pyx_codeobj__431
#define __pyx_codeobj__433 __pyx_mstate_global->__pyx_codeobj__433
#define __pyx_codeobj__435 __pyx_mstate_global->__pyx_codeobj__435
#define __pyx_codeobj__438 __pyx_mstate_global->__pyx_codeobj__438
#define __pyx_codeobj__439 __pyx_mstate_global->__pyx_codeobj__439
#define __pyx_codeobj__440 __pyx_mstate_global->__pyx_codeobj__440
#define __pyx_codeobj__441 __pyx_mstate_global->__pyx_codeobj__441
#define __pyx_codeobj__442 __pyx_mstate_global->__pyx_codeobj__442
#define __pyx_codeobj__444 __pyx_mstate_global->__pyx_codeobj__444
#define __pyx_codeobj__446 __pyx_mstate_global->__pyx_codeobj__446
#define __pyx_codeobj__448 __pyx_mstate_global->__pyx_codeobj__448
#define __pyx_codeobj__450 __pyx_mstate_global->__pyx_codeobj__450
#define __pyx_codeobj__452 __pyx_mstate_global->__pyx_codeobj__452
#define __pyx_codeobj__454 __pyx_mstate_global->__pyx_codeobj__454
#define __pyx_codeobj__456 __pyx_mstate_global->__pyx_codeobj__456
#define __pyx_codeobj__458 __pyx_mstate_global->__pyx_codeobj__458
#define __pyx_codeobj__459 __pyx_mstate_global->__pyx_codeobj__459
#define __pyx_codeobj__460 __pyx_mstate_global->__pyx_codeobj__460
#define __pyx_codeobj__461 __pyx_mstate_global->__pyx_codeobj__461
#define __pyx_codeobj__462 __pyx_mstate_global->__pyx_codeobj__462
#define __pyx_codeobj__463 __pyx_mstate_global->__pyx_codeobj__463
#define __pyx_codeobj__465 __pyx_mstate_global->__pyx_codeobj__465
#define __pyx_codeobj__466 __pyx_mstate_global->__pyx_codeobj__466
#define __pyx_codeobj__467 __pyx_mstate_global->__pyx_codeobj__467
#define __pyx_codeobj__469 __pyx_mstate_global->__pyx_codeobj__469
#define __pyx_codeobj__470 __pyx_mstate_global->__pyx_codeobj__470
#define __pyx_codeobj__471 __pyx_mstate_global->__pyx_codeobj__471
#define __pyx_codeobj__472 __pyx_mstate_global->__pyx_codeobj__472
#define __pyx_codeobj__473 __pyx_mstate_global->__pyx_codeobj__473
#define __pyx_codeobj__474 __pyx_mstate_global->__pyx_codeobj__474
#define __pyx_codeobj__475 __pyx_mstate_global->__pyx_codeobj__475
#define __pyx_codeobj__477 __pyx_mstate_global->__pyx_codeobj__477
#define __pyx_codeobj__479 __pyx_mstate_global->__pyx_codeobj__479
#define __pyx_codeobj__482 __pyx_mstate_global->__pyx_codeobj__482
#define __pyx_codeobj__484 __pyx_mstate_global->__pyx_codeobj__484
#define __pyx_codeobj__486 __pyx_mstate_global->__pyx_codeobj__486
#define __pyx_codeobj__487 __pyx_mstate_global->__pyx_codeobj__487
#define __pyx_codeobj__488 __pyx_mstate_global->__pyx_codeobj__488
#define __pyx_codeobj__490 __pyx_mstate_global->__pyx_codeobj__490
#define __pyx_codeobj__491 __pyx_mstate_global->__pyx_codeobj__491
#define __pyx_codeobj__493 __pyx_mstate_global->__pyx_codeobj__493
#define __pyx_codeobj__494 __pyx_mstate_global->__pyx_codeobj__494
#define __pyx_codeobj__496 __pyx_mstate_global->__pyx_codeobj__496
#define __pyx_codeobj__497 __pyx_mstate_global->__pyx_codeobj__497
#define __pyx_codeobj__498 __pyx_mstate_global->__pyx_codeobj__498
#define __pyx_codeobj__499 __pyx_mstate_global->__pyx_codeobj__499
#define __pyx_codeobj__500 __pyx_mstate_global->__pyx_codeobj__500
#define __pyx_codeobj__501 __pyx_mstate_global->__pyx_codeobj__501
#define __pyx_codeobj__502 __pyx_mstate_global->__pyx_codeobj__502
#define __pyx_codeobj__504 __pyx_mstate_global->__pyx_codeobj__504
#define __pyx_codeobj__506 __pyx_mstate_global->__pyx_codeobj__506
#define __pyx_codeobj__507 __pyx_mstate_global->__pyx_codeobj__507
#define __pyx_codeobj__509 __pyx_mstate_global->__pyx_codeobj__509
#define __pyx_codeobj__511 __pyx_mstate_global->__pyx_codeobj__511
#define __pyx_codeobj__513 __pyx_mstate_global->__pyx_codeobj__513
#define __pyx_codeobj__515 __pyx_mstate_global->__pyx_codeobj__515
#define __pyx_codeobj__517 __pyx_mstate_global->__pyx_codeobj__517
#define __pyx_codeobj__519 __pyx_mstate_global->__pyx_codeobj__519
#define __pyx_codeobj__520 __pyx_mstate_global->__pyx_codeobj__520
#define __pyx_codeobj__521 __pyx_mstate_global->__pyx_codeobj__521
#define __pyx_codeobj__523 __pyx_mstate_global->__pyx_codeobj__523
#define __pyx_codeobj__525 __pyx_mstate_global->__pyx_codeobj__525
#define __pyx_codeobj__527 __pyx_mstate_global->__pyx_codeobj__527
#define __pyx_codeobj__529 __pyx_mstate_global->__pyx_codeobj__529
#define __pyx_codeobj__531 __pyx_mstate_global->__pyx_codeobj__531
#define __pyx_codeobj__533 __pyx_mstate_global->__pyx_codeobj__533
#define __pyx_codeobj__535 __pyx_mstate_global->__pyx_codeobj__535
#define __pyx_codeobj__536 __pyx_mstate_global->__pyx_codeobj__536
#define __pyx_codeobj__538 __pyx_mstate_global->__pyx_codeobj__538
#define __pyx_codeobj__539 __pyx_mstate_global->__pyx_codeobj__539
#define __pyx_codeobj__540 __pyx_mstate_global->__pyx_codeobj__540
#define __pyx_codeobj__541 __pyx_mstate_global->__pyx_codeobj__541
#define __pyx_codeobj__542 __pyx_mstate_global->__pyx_codeobj__542
#define __pyx_codeobj__543 __pyx_mstate_global->__pyx_codeobj__543
#define __pyx_codeobj__544 __pyx_mstate_global->__pyx_codeobj__544
#define __pyx_codeobj__545 __pyx_mstate_global->__pyx_codeobj__545
#define __pyx_codeobj__546 __pyx_mstate_global->__pyx_codeobj__546
#define __pyx_codeobj__547 __pyx_mstate_global->__pyx_codeobj__547
#define __pyx_codeobj__549 __pyx_mstate_global->__pyx_codeobj__549
#define __pyx_codeobj__550 __pyx_mstate_global->__pyx_codeobj__550
#define __pyx_codeobj__552 __pyx_mstate_global->__pyx_codeobj__552
#define __pyx_codeobj__554 __pyx_mstate_global->__pyx_codeobj__554
#define __pyx_codeobj__555 __pyx_mstate_global->__pyx_codeobj__555
#define __pyx_codeobj__557 __pyx_mstate_global->__pyx_codeobj__557
#define __pyx_codeobj__559 __pyx_mstate_global->__pyx_codeobj__559
#define __pyx_codeobj__561 __pyx_mstate_global->__pyx_codeobj__561
#define __pyx_codeobj__563 __pyx_mstate_global->__pyx_codeobj__563
#define __pyx_codeobj__564 __pyx_mstate_global->__pyx_codeobj__564
#define __pyx_codeobj__566 __pyx_mstate_global->__pyx_codeobj__566
#define __pyx_codeobj__568 __pyx_mstate_global->__pyx_codeobj__568
#define __pyx_codeobj__570 __pyx_mstate_global->__pyx_codeobj__570
#define __pyx_codeobj__571 __pyx_mstate_global->__pyx_codeobj__571
#define __pyx_codeobj__572 __pyx_mstate_global->__pyx_codeobj__572
#define __pyx_codeobj__573 __pyx_mstate_global->__pyx_codeobj__573
#define __pyx_codeobj__574 __pyx_mstate_global->__pyx_codeobj__574
#define __pyx_codeobj__575 __pyx_mstate_global->__pyx_codeobj__575
#define __pyx_codeobj__576 __pyx_mstate_global->__pyx_codeobj__576
#define __pyx_codeobj__577 __pyx_mstate_global->__pyx_codeobj__577
#define __pyx_codeobj__578 __pyx_mstate_global->__pyx_codeobj__578
#define __pyx_codeobj__579 __pyx_mstate_global->__pyx_codeobj__579
#define __pyx_codeobj__580 __pyx_mstate_global->__pyx_codeobj__580
#define __pyx_codeobj__582 __pyx_mstate_global->__pyx_codeobj__582
#define __pyx_codeobj__584 __pyx_mstate_global->__pyx_codeobj__584
#define __pyx_codeobj__586 __pyx_mstate_global->__pyx_codeobj__586
#define __pyx_codeobj__588 __pyx_mstate_global->__pyx_codeobj__588
#define __pyx_codeobj__590 __pyx_mstate_global->__pyx_codeobj__590
#define __pyx_codeobj__592 __pyx_mstate_global->__pyx_codeobj__592
#define __pyx_codeobj__594 __pyx_mstate_global->__pyx_codeobj__594
#define __pyx_codeobj__596 __pyx_mstate_global->__pyx_codeobj__596
#define __pyx_codeobj__599 __pyx_mstate_global->__pyx_codeobj__599
#define __pyx_codeobj__600 __pyx_mstate_global->__pyx_codeobj__600
#define __pyx_codeobj__601 __pyx_mstate_global->__pyx_codeobj__601
#define __pyx_codeobj__602 __pyx_mstate_global->__pyx_codeobj__602
#define __pyx_codeobj__603 __pyx_mstate_global->__pyx_codeobj__603
#define __pyx_codeobj__605 __pyx_mstate_global->__pyx_codeobj__605
#define __pyx_codeobj__606 __pyx_mstate_global->__pyx_codeobj__606
#define __pyx_codeobj__608 __pyx_mstate_global->__pyx_codeobj__608
#define __pyx_codeobj__610 __pyx_mstate_global->__pyx_codeobj__610
#define __pyx_codeobj__612 __pyx_mstate_global->__pyx_codeobj__612
#define __pyx_codeobj__613 __pyx_mstate_global->__pyx_codeobj__613
#define __pyx_codeobj__614 __pyx_mstate_global->__pyx_codeobj__614
#define __pyx_codeobj__615 __pyx_mstate_global->__pyx_codeobj__615
#define __pyx_codeobj__616 __pyx_mstate_global->__pyx_codeobj__616
#define __pyx_codeobj__617 __pyx_mstate_global->__pyx_codeobj__617
#define __pyx_codeobj__618 __pyx_mstate_global->__pyx_codeobj__618
#define __pyx_codeobj__620 __pyx_mstate_global->__pyx_codeobj__620
#define __pyx_codeobj__623 __pyx_mstate_global->__pyx_codeobj__623
#define __pyx_codeobj__625 __pyx_mstate_global->__pyx_codeobj__625
#define __pyx_codeobj__627 __pyx_mstate_global->__pyx_codeobj__627
#define __pyx_codeobj__629 __pyx_mstate_global->__pyx_codeobj__629
#define __pyx_codeobj__631 __pyx_mstate_global->__pyx_codeobj__631
#define __pyx_codeobj__633 __pyx_mstate_global->__pyx_codeobj__633
#define __pyx_codeobj__635 __pyx_mstate_global->__pyx_codeobj__635
#define __pyx_codeobj__637 __pyx_mstate_global->__pyx_codeobj__637
#define __pyx_codeobj__639 __pyx_mstate_global->__pyx_codeobj__639
#define __pyx_codeobj__641 __pyx_mstate_global->__pyx_codeobj__641
#define __pyx_codeobj__643 __pyx_mstate_global->__pyx_codeobj__643
#define __pyx_codeobj__644 __pyx_mstate_global->__pyx_codeobj__644
#define __pyx_codeobj__645 __pyx_mstate_global->__pyx_codeobj__645
#define __pyx_codeobj__647 __pyx_mstate_global->__pyx_codeobj__647
#define __pyx_codeobj__649 __pyx_mstate_global->__pyx_codeobj__649
#define __pyx_codeobj__650 __pyx_mstate_global->__pyx_codeobj__650
#define __pyx_codeobj__651 __pyx_mstate_global->__pyx_codeobj__651
#define __pyx_codeobj__652 __pyx_mstate_global->__pyx_codeobj__652
#define __pyx_codeobj__653 __pyx_mstate_global->__pyx_codeobj__653
#define __pyx_codeobj__654 __pyx_mstate_global->__pyx_codeobj__654
#define __pyx_codeobj__655 __pyx_mstate_global->__pyx_codeobj__655
#define __pyx_codeobj__656 __pyx_mstate_global->__pyx_codeobj__656
#define __pyx_codeobj__657 __pyx_mstate_global->__pyx_codeobj__657
#define __pyx_codeobj__658 __pyx_mstate_global->__pyx_codeobj__658
#define __pyx_codeobj__659 __pyx_mstate_global->__pyx_codeobj__659
#define __pyx_codeobj__661 __pyx_mstate_global->__pyx_codeobj__661
#define __pyx_codeobj__663 __pyx_mstate_global->__pyx_codeobj__663
#define __pyx_codeobj__664 __pyx_mstate_global->__pyx_codeobj__664
#define __pyx_codeobj__665 __pyx_mstate_global->__pyx_codeobj__665
#define __pyx_codeobj__666 __pyx_mstate_global->__pyx_codeobj__666
#define __pyx_codeobj__668 __pyx_mstate_global->__pyx_codeobj__668
#define __pyx_codeobj__669 __pyx_mstate_global->__pyx_codeobj__669
#define __pyx_codeobj__670 __pyx_mstate_global->__pyx_codeobj__670
#define __pyx_codeobj__671 __pyx_mstate_global->__pyx_codeobj__671
#define __pyx_codeobj__672 __pyx_mstate_global->__pyx_codeobj__672
#define __pyx_codeobj__674 __pyx_mstate_global->__pyx_codeobj__674
#define __pyx_codeobj__676 __pyx_mstate_global->__pyx_codeobj__676
#define __pyx_codeobj__677 __pyx_mstate_global->__pyx_codeobj__677
#define __pyx_codeobj__679 __pyx_mstate_global->__pyx_codeobj__679
#define __pyx_codeobj__680 __pyx_mstate_global->__pyx_codeobj__680
#define __pyx_codeobj__682 __pyx_mstate_global->__pyx_codeobj__682
#define __pyx_codeobj__684 __pyx_mstate_global->__pyx_codeobj__684
#define __pyx_codeobj__685 __pyx_mstate_global->__pyx_codeobj__685
#define __pyx_codeobj__686 __pyx_mstate_global->__pyx_codeobj__686
#define __pyx_codeobj__687 __pyx_mstate_global->__pyx_codeobj__687
#define __pyx_codeobj__689 __pyx_mstate_global->__pyx_codeobj__689
#define __pyx_codeobj__690 __pyx_mstate_global->__pyx_codeobj__690
#define __pyx_codeobj__691 __pyx_mstate_global->__pyx_codeobj__691
#define __pyx_codeobj__692 __pyx_mstate_global->__pyx_codeobj__692
#define __pyx_codeobj__693 __pyx_mstate_global->__pyx_codeobj__693
#define __pyx_codeobj__695 __pyx_mstate_global->__pyx_codeobj__695
#define __pyx_codeobj__697 __pyx_mstate_global->__pyx_codeobj__697
#define __pyx_codeobj__698 __pyx_mstate_global->__pyx_codeobj__698
#define __pyx_codeobj__700 __pyx_mstate_global->__pyx_codeobj__700
#define __pyx_codeobj__702 __pyx_mstate_global->__pyx_codeobj__702
#define __pyx_codeobj__704 __pyx_mstate_global->__pyx_codeobj__704
#define __pyx_codeobj__706 __pyx_mstate_global->__pyx_codeobj__706
#define __pyx_codeobj__707 __pyx_mstate_global->__pyx_codeobj__707
#define __pyx_codeobj__708 __pyx_mstate_global->__pyx_codeobj__708
#define __pyx_codeobj__709 __pyx_mstate_global->__pyx_codeobj__709
#define __pyx_codeobj__711 __pyx_mstate_global->__pyx_codeobj__711
#define __pyx_codeobj__712 __pyx_mstate_global->__pyx_codeobj__712
#define __pyx_codeobj__713 __pyx_mstate_global->__pyx_codeobj__713
#define __pyx_codeobj__714 __pyx_mstate_global->__pyx_codeobj__714
#define __pyx_codeobj__715 __pyx_mstate_global->__pyx_codeobj__715
#define __pyx_codeobj__717 __pyx_mstate_global->__pyx_codeobj__717
#define __pyx_codeobj__719 __pyx_mstate_global->__pyx_codeobj__719
#define __pyx_codeobj__720 __pyx_mstate_global->__pyx_codeobj__720
#define __pyx_codeobj__722 __pyx_mstate_global->__pyx_codeobj__722
#define __pyx_codeobj__723 __pyx_mstate_global->__pyx_codeobj__723
#define __pyx_codeobj__724 __pyx_mstate_global->__pyx_codeobj__724
#define __pyx_codeobj__726 __pyx_mstate_global->__pyx_codeobj__726
#define __pyx_codeobj__728 __pyx_mstate_global->__pyx_codeobj__728
#define __pyx_codeobj__729 __pyx_mstate_global->__pyx_codeobj__729
#define __pyx_codeobj__731 __pyx_mstate_global->__pyx_codeobj__731
#define __pyx_codeobj__732 __pyx_mstate_global->__pyx_codeobj__732
#define __pyx_codeobj__733 __pyx_mstate_global->__pyx_codeobj__733
#define __pyx_codeobj__734 __pyx_mstate_global->__pyx_codeobj__734
#define __pyx_codeobj__735 __pyx_mstate_global->__pyx_codeobj__735
#define __pyx_codeobj__736 __pyx_mstate_global->__pyx_codeobj__736
#define __pyx_codeobj__737 __pyx_mstate_global->__pyx_codeobj__737
#define __pyx_codeobj__738 __pyx_mstate_global->__pyx_codeobj__738
#define __pyx_codeobj__739 __pyx_mstate_global->__pyx_codeobj__739
#define __pyx_codeobj__740 __pyx_mstate_global->__pyx_codeobj__740
#define __pyx_codeobj__741 __pyx_mstate_global->__pyx_codeobj__741
#define __pyx_codeobj__742 __pyx_mstate_global->__pyx_codeobj__742
#define __pyx_codeobj__743 __pyx_mstate_global->__pyx_codeobj__743
#define __pyx_codeobj__744 __pyx_mstate_global->__pyx_codeobj__744
#define __pyx_codeobj__745 __pyx_mstate_global->__pyx_codeobj__745
#define __pyx_codeobj__747 __pyx_mstate_global->__pyx_codeobj__747
#define __pyx_codeobj__748 __pyx_mstate_global->__pyx_codeobj__748
#define __pyx_codeobj__749 __pyx_mstate_global->__pyx_codeobj__749
#define __pyx_codeobj__751 __pyx_mstate_global->__pyx_codeobj__751
#define __pyx_codeobj__753 __pyx_mstate_global->__pyx_codeobj__753
#define __pyx_codeobj__755 __pyx_mstate_global->__pyx_codeobj__755
#define __pyx_codeobj__756 __pyx_mstate_global->__pyx_codeobj__756
#define __pyx_codeobj__757 __pyx_mstate_global->__pyx_codeobj__757
#define __pyx_codeobj__759 __pyx_mstate_global->__pyx_codeobj__759
#define __pyx_codeobj__761 __pyx_mstate_global->__pyx_codeobj__761
#define __pyx_codeobj__762 __pyx_mstate_global->__pyx_codeobj__762
#define __pyx_codeobj__764 __pyx_mstate_global->__pyx_codeobj__764
#define __pyx_codeobj__766 __pyx_mstate_global->__pyx_codeobj__766
#define __pyx_codeobj__767 __pyx_mstate_global->__pyx_codeobj__767
#define __pyx_codeobj__769 __pyx_mstate_global->__pyx_codeobj__769
#define __pyx_codeobj__771 __pyx_mstate_global->__pyx_codeobj__771
#define __pyx_codeobj__772 __pyx_mstate_global->__pyx_codeobj__772
#define __pyx_codeobj__774 __pyx_mstate_global->__pyx_codeobj__774
#define __pyx_codeobj__775 __pyx_mstate_global->__pyx_codeobj__775
#define __pyx_codeobj__777 __pyx_mstate_global->__pyx_codeobj__777
#define __pyx_codeobj__779 __pyx_mstate_global->__pyx_codeobj__779
#define __pyx_codeobj__781 __pyx_mstate_global->__pyx_codeobj__781
#define __pyx_codeobj__783 __pyx_mstate_global->__pyx_codeobj__783
#define __pyx_codeobj__785 __pyx_mstate_global->__pyx_codeobj__785
#define __pyx_codeobj__788 __pyx_mstate_global->__pyx_codeobj__788
#define __pyx_codeobj__790 __pyx_mstate_global->__pyx_codeobj__790
#define __pyx_codeobj__792 __pyx_mstate_global->__pyx_codeobj__792
#define __pyx_codeobj__794 __pyx_mstate_global->__pyx_codeobj__794
#define __pyx_codeobj__796 __pyx_mstate_global->__pyx_codeobj__796
#define __pyx_codeobj__798 __pyx_mstate_global->__pyx_codeobj__798
#define __pyx_codeobj__799 __pyx_mstate_global->__pyx_codeobj__799
#define __pyx_codeobj__800 __pyx_mstate_global->__pyx_codeobj__800
#define __pyx_codeobj__801 __pyx_mstate_global->__pyx_codeobj__801
#define __pyx_codeobj__802 __pyx_mstate_global->__pyx_codeobj__802
#define __pyx_codeobj__803 __pyx_mstate_global->__pyx_codeobj__803
#define __pyx_codeobj__804 __pyx_mstate_global->__pyx_codeobj__804
#define __pyx_codeobj__805 __pyx_mstate_global->__pyx_codeobj__805
#define __pyx_codeobj__806 __pyx_mstate_global->__pyx_codeobj__806
#define __pyx_codeobj__808 __pyx_mstate_global->__pyx_codeobj__808
#define __pyx_codeobj__811 __pyx_mstate_global->__pyx_codeobj__811
#define __pyx_codeobj__813 __pyx_mstate_global->__pyx_codeobj__813
#define __pyx_codeobj__814 __pyx_mstate_global->__pyx_codeobj__814
#define __pyx_codeobj__815 __pyx_mstate_global->__pyx_codeobj__815
#define __pyx_codeobj__816 __pyx_mstate_global->__pyx_codeobj__816
#define __pyx_codeobj__817 __pyx_mstate_global->__pyx_codeobj__817
#define __pyx_codeobj__818 __pyx_mstate_global->__pyx_codeobj__818
#define __pyx_codeobj__819 __pyx_mstate_global->__pyx_codeobj__819
#define __pyx_codeobj__820 __pyx_mstate_global->__pyx_codeobj__820
#define __pyx_codeobj__821 __pyx_mstate_global->__pyx_codeobj__821
#define __pyx_codeobj__822 __pyx_mstate_global->__pyx_codeobj__822
#define __pyx_codeobj__823 __pyx_mstate_global->__pyx_codeobj__823
#define __pyx_codeobj__824 __pyx_mstate_global->__pyx_codeobj__824
#define __pyx_codeobj__825 __pyx_mstate_global->__pyx_codeobj__825
#define __pyx_codeobj__826 __pyx_mstate_global->__pyx_codeobj__826
#define __pyx_codeobj__827 __pyx_mstate_global->__pyx_codeobj__827
#define __pyx_codeobj__828 __pyx_mstate_global->__pyx_codeobj__828
#define __pyx_codeobj__829 __pyx_mstate_global->__pyx_codeobj__829
#define __pyx_codeobj__830 __pyx_mstate_global->__pyx_codeobj__830
#define __pyx_codeobj__831 __pyx_mstate_global->__pyx_codeobj__831
#define __pyx_codeobj__833 __pyx_mstate_global->__pyx_codeobj__833
#define __pyx_codeobj__835 __pyx_mstate_global->__pyx_codeobj__835
#define __pyx_codeobj__837 __pyx_mstate_global->__pyx_codeobj__837
#define __pyx_codeobj__839 __pyx_mstate_global->__pyx_codeobj__839
#define __pyx_codeobj__841 __pyx_mstate_global->__pyx_codeobj__841
#define __pyx_codeobj__843 __pyx_mstate_global->__pyx_codeobj__843
#define __pyx_codeobj__845 __pyx_mstate_global->__pyx_codeobj__845
#define __pyx_codeobj__847 __pyx_mstate_global->__pyx_codeobj__847
#define __pyx_codeobj__849 __pyx_mstate_global->__pyx_codeobj__849
#define __pyx_codeobj__851 __pyx_mstate_global->__pyx_codeobj__851
#define __pyx_codeobj__853 __pyx_mstate_global->__pyx_codeobj__853
#define __pyx_codeobj__855 __pyx_mstate_global->__pyx_codeobj__855
#define __pyx_codeobj__857 __pyx_mstate_global->__pyx_codeobj__857
#define __pyx_codeobj__859 __pyx_mstate_global->__pyx_codeobj__859
#define __pyx_codeobj__860 __pyx_mstate_global->__pyx_codeobj__860
#define __pyx_codeobj__861 __pyx_mstate_global->__pyx_codeobj__861
#define __pyx_codeobj__863 __pyx_mstate_global->__pyx_codeobj__863
#define __pyx_codeobj__865 __pyx_mstate_global->__pyx_codeobj__865
#define __pyx_codeobj__867 __pyx_mstate_global->__pyx_codeobj__867
#define __pyx_codeobj__868 __pyx_mstate_global->__pyx_codeobj__868
#define __pyx_codeobj__870 __pyx_mstate_global->__pyx_codeobj__870
#define __pyx_codeobj__872 __pyx_mstate_global->__pyx_codeobj__872
#define __pyx_codeobj__874 __pyx_mstate_global->__pyx_codeobj__874
#define __pyx_codeobj__876 __pyx_mstate_global->__pyx_codeobj__876
#define __pyx_codeobj__877 __pyx_mstate_global->__pyx_codeobj__877
#define __pyx_codeobj__879 __pyx_mstate_global->__pyx_codeobj__879
#define __pyx_codeobj__880 __pyx_mstate_global->__pyx_codeobj__880
#define __pyx_codeobj__881 __pyx_mstate_global->__pyx_codeobj__881
#define __pyx_codeobj__882 __pyx_mstate_global->__pyx_codeobj__882
#define __pyx_codeobj__884 __pyx_mstate_global->__pyx_codeobj__884
#define __pyx_codeobj__886 __pyx_mstate_global->__pyx_codeobj__886
#define __pyx_codeobj__887 __pyx_mstate_global->__pyx_codeobj__887
#define __pyx_codeobj__889 __pyx_mstate_global->__pyx_codeobj__889
#define __pyx_codeobj__891 __pyx_mstate_global->__pyx_codeobj__891
#define __pyx_codeobj__893 __pyx_mstate_global->__pyx_codeobj__893
#define __pyx_codeobj__895 __pyx_mstate_global->__pyx_codeobj__895
#define __pyx_codeobj__896 __pyx_mstate_global->__pyx_codeobj__896
#define __pyx_codeobj__897 __pyx_mstate_global->__pyx_codeobj__897
#define __pyx_codeobj__898 __pyx_mstate_global->__pyx_codeobj__898
#define __pyx_codeobj__899 __pyx_mstate_global->__pyx_codeobj__899
#define __pyx_codeobj__900 __pyx_mstate_global->__pyx_codeobj__900
#define __pyx_codeobj__901 __pyx_mstate_global->__pyx_codeobj__901
#define __pyx_codeobj__902 __pyx_mstate_global->__pyx_codeobj__902
#define __pyx_codeobj__903 __pyx_mstate_global->__pyx_codeobj__903
#define __pyx_codeobj__904 __pyx_mstate_global->__pyx_codeobj__904
#define __pyx_codeobj__905 __pyx_mstate_global->__pyx_codeobj__905
#define __pyx_codeobj__907 __pyx_mstate_global->__pyx_codeobj__907
#define __pyx_codeobj__908 __pyx_mstate_global->__pyx_codeobj__908
#define __pyx_codeobj__910 __pyx_mstate_global->__pyx_codeobj__910
#define __pyx_codeobj__912 __pyx_mstate_global->__pyx_codeobj__912
#define __pyx_codeobj__914 __pyx_mstate_global->__pyx_codeobj__914
#define __pyx_codeobj__916 __pyx_mstate_global->__pyx_codeobj__916
#define __pyx_codeobj__918 __pyx_mstate_global->__pyx_codeobj__918
#define __pyx_codeobj__919 __pyx_mstate_global->__pyx_codeobj__919
#define __pyx_codeobj__921 __pyx_mstate_global->__pyx_codeobj__921
#define __pyx_codeobj__923 __pyx_mstate_global->__pyx_codeobj__923
#define __pyx_codeobj__925 __pyx_mstate_global->__pyx_codeobj__925
#define __pyx_codeobj__927 __pyx_mstate_global->__pyx_codeobj__927
#define __pyx_codeobj__928 __pyx_mstate_global->__pyx_codeobj__928
#define __pyx_codeobj__929 __pyx_mstate_global->__pyx_codeobj__929
#define __pyx_codeobj__930 __pyx_mstate_global->__pyx_codeobj__930
#define __pyx_codeobj__931 __pyx_mstate_global->__pyx_codeobj__931
#define __pyx_codeobj__933 __pyx_mstate_global->__pyx_codeobj__933
#define __pyx_codeobj__934 __pyx_mstate_global->__pyx_codeobj__934
#define __pyx_codeobj__935 __pyx_mstate_global->__pyx_codeobj__935
#define __pyx_codeobj__936 __pyx_mstate_global->__pyx_codeobj__936
#define __pyx_codeobj__937 __pyx_mstate_global->__pyx_codeobj__937
#define __pyx_codeobj__938 __pyx_mstate_global->__pyx_codeobj__938
#define __pyx_codeobj__939 __pyx_mstate_global->__pyx_codeobj__939
#define __pyx_codeobj__940 __pyx_mstate_global->__pyx_codeobj__940
#define __pyx_codeobj__941 __pyx_mstate_global->__pyx_codeobj__941
#define __pyx_codeobj__942 __pyx_mstate_global->__pyx_codeobj__942
#define __pyx_codeobj__943 __pyx_mstate_global->__pyx_codeobj__943
#define __pyx_codeobj__944 __pyx_mstate_global->__pyx_codeobj__944
#define __pyx_codeobj__945 __pyx_mstate_global->__pyx_codeobj__945
#define __pyx_codeobj__946 __pyx_mstate_global->__pyx_codeobj__946
#define __pyx_codeobj__947 __pyx_mstate_global->__pyx_codeobj__947
#define __pyx_codeobj__948 __pyx_mstate_global->__pyx_codeobj__948
#define __pyx_codeobj__949 __pyx_mstate_global->__pyx_codeobj__949
#define __pyx_codeobj__950 __pyx_mstate_global->__pyx_codeobj__950
#define __pyx_codeobj__951 __pyx_mstate_global->__pyx_codeobj__951
#define __pyx_codeobj__952 __pyx_mstate_global->__pyx_codeobj__952
#define __pyx_codeobj__954 __pyx_mstate_global->__pyx_codeobj__954
#define __pyx_codeobj__955 __pyx_mstate_global->__pyx_codeobj__955
#define __pyx_codeobj__957 __pyx_mstate_global->__pyx_codeobj__957
#define __pyx_codeobj__958 __pyx_mstate_global->__pyx_codeobj__958
#define __pyx_codeobj__959 __pyx_mstate_global->__pyx_codeobj__959
#define __pyx_codeobj__960 __pyx_mstate_global->__pyx_codeobj__960
#define __pyx_codeobj__962 __pyx_mstate_global->__pyx_codeobj__962
#define __pyx_codeobj__963 __pyx_mstate_global->__pyx_codeobj__963
#define __pyx_codeobj__964 __pyx_mstate_global->__pyx_codeobj__964
#define __pyx_codeobj__965 __pyx_mstate_global->__pyx_codeobj__965
#define __pyx_codeobj__967 __pyx_mstate_global->__pyx_codeobj__967
#define __pyx_codeobj__969 __pyx_mstate_global->__pyx_codeobj__969
#define __pyx_codeobj__971 __pyx_mstate_global->__pyx_codeobj__971
#define __pyx_codeobj__972 __pyx_mstate_global->__pyx_codeobj__972
#define __pyx_codeobj__973 __pyx_mstate_global->__pyx_codeobj__973
#define __pyx_codeobj__974 __pyx_mstate_global->__pyx_codeobj__974
#define __pyx_codeobj__976 __pyx_mstate_global->__pyx_codeobj__976
#define __pyx_codeobj__977 __pyx_mstate_global->__pyx_codeobj__977
#define __pyx_codeobj__978 __pyx_mstate_global->__pyx_codeobj__978
#define __pyx_codeobj__979 __pyx_mstate_global->__pyx_codeobj__979
#define __pyx_codeobj__981 __pyx_mstate_global->__pyx_codeobj__981
#define __pyx_codeobj__982 __pyx_mstate_global->__pyx_codeobj__982
#define __pyx_codeobj__983 __pyx_mstate_global->__pyx_codeobj__983
#define __pyx_codeobj__984 __pyx_mstate_global->__pyx_codeobj__984
#define __pyx_codeobj__986 __pyx_mstate_global->__pyx_codeobj__986
#define __pyx_codeobj__987 __pyx_mstate_global->__pyx_codeobj__987
#define __pyx_codeobj__988 __pyx_mstate_global->__pyx_codeobj__988
#define __pyx_codeobj__989 __pyx_mstate_global->__pyx_codeobj__989
#define __pyx_codeobj__991 __pyx_mstate_global->__pyx_codeobj__991
#define __pyx_codeobj__993 __pyx_mstate_global->__pyx_codeobj__993
#define __pyx_codeobj__995 __pyx_mstate_global->__pyx_codeobj__995
#define __pyx_codeobj__996 __pyx_mstate_global->__pyx_codeobj__996
#define __pyx_codeobj__997 __pyx_mstate_global->__pyx_codeobj__997
#define __pyx_codeobj__998 __pyx_mstate_global->__pyx_codeobj__998
#define __pyx_codeobj__999 __pyx_mstate_global->__pyx_codeobj__999
#define __pyx_codeobj__1000 __pyx_mstate_global->__pyx_codeobj__1000
#define __pyx_codeobj__1001 __pyx_mstate_global->__pyx_codeobj__1001
#define __pyx_codeobj__1002 __pyx_mstate_global->__pyx_codeobj__1002
#define __pyx_codeobj__1003 __pyx_mstate_global->__pyx_codeobj__1003
#define __pyx_codeobj__1005 __pyx_mstate_global->__pyx_codeobj__1005
#define __pyx_codeobj__1006 __pyx_mstate_global->__pyx_codeobj__1006
#define __pyx_codeobj__1007 __pyx_mstate_global->__pyx_codeobj__1007
#define __pyx_codeobj__1008 __pyx_mstate_global->__pyx_codeobj__1008
#define __pyx_codeobj__1010 __pyx_mstate_global->__pyx_codeobj__1010
#define __pyx_codeobj__1011 __pyx_mstate_global->__pyx_codeobj__1011
#define __pyx_codeobj__1012 __pyx_mstate_global->__pyx_codeobj__1012
#define __pyx_codeobj__1013 __pyx_mstate_global->__pyx_codeobj__1013
#define __pyx_codeobj__1014 __pyx_mstate_global->__pyx_codeobj__1014
#define __pyx_codeobj__1015 __pyx_mstate_global->__pyx_codeobj__1015
#define __pyx_codeobj__1016 __pyx_mstate_global->__pyx_codeobj__1016
#define __pyx_codeobj__1017 __pyx_mstate_global->__pyx_codeobj__1017
#define __pyx_codeobj__1019 __pyx_mstate_global->__pyx_codeobj__1019
#define __pyx_codeobj__1020 __pyx_mstate_global->__pyx_codeobj__1020
#define __pyx_codeobj__1021 __pyx_mstate_global->__pyx_codeobj__1021
#define __pyx_codeobj__1022 __pyx_mstate_global->__pyx_codeobj__1022
#define __pyx_codeobj__1023 __pyx_mstate_global->__pyx_codeobj__1023
#define __pyx_codeobj__1024 __pyx_mstate_global->__pyx_codeobj__1024
#define __pyx_codeobj__1025 __pyx_mstate_global->__pyx_codeobj__1025
#define __pyx_codeobj__1026 __pyx_mstate_global->__pyx_codeobj__1026
#define __pyx_codeobj__1027 __pyx_mstate_global->__pyx_codeobj__1027
#define __pyx_codeobj__1028 __pyx_mstate_global->__pyx_codeobj__1028
#define __pyx_codeobj__1030 __pyx_mstate_global->__pyx_codeobj__1030
#define __pyx_codeobj__1032 __pyx_mstate_global->__pyx_codeobj__1032
#define __pyx_codeobj__1034 __pyx_mstate_global->__pyx_codeobj__1034
#define __pyx_codeobj__1035 __pyx_mstate_global->__pyx_codeobj__1035
#define __pyx_codeobj__1036 __pyx_mstate_global->__pyx_codeobj__1036
#define __pyx_codeobj__1038 __pyx_mstate_global->__pyx_codeobj__1038
#define __pyx_codeobj__1040 __pyx_mstate_global->__pyx_codeobj__1040
#define __pyx_codeobj__1042 __pyx_mstate_global->__pyx_codeobj__1042
#define __pyx_codeobj__1043 __pyx_mstate_global->__pyx_codeobj__1043
#define __pyx_codeobj__1044 __pyx_mstate_global->__pyx_codeobj__1044
#define __pyx_codeobj__1046 __pyx_mstate_global->__pyx_codeobj__1046
#define __pyx_codeobj__1048 __pyx_mstate_global->__pyx_codeobj__1048
#define __pyx_codeobj__1049 __pyx_mstate_global->__pyx_codeobj__1049
#define __pyx_codeobj__1051 __pyx_mstate_global->__pyx_codeobj__1051
#define __pyx_codeobj__1052 __pyx_mstate_global->__pyx_codeobj__1052
#define __pyx_codeobj__1053 __pyx_mstate_global->__pyx_codeobj__1053
#define __pyx_codeobj__1055 __pyx_mstate_global->__pyx_codeobj__1055
#define __pyx_codeobj__1057 __pyx_mstate_global->__pyx_codeobj__1057
#define __pyx_codeobj__1059 __pyx_mstate_global->__pyx_codeobj__1059
#define __pyx_codeobj__1061 __pyx_mstate_global->__pyx_codeobj__1061
#define __pyx_codeobj__1063 __pyx_mstate_global->__pyx_codeobj__1063
#define __pyx_codeobj__1065 __pyx_mstate_global->__pyx_codeobj__1065
#define __pyx_codeobj__1067 __pyx_mstate_global->__pyx_codeobj__1067
#define __pyx_codeobj__1069 __pyx_mstate_global->__pyx_codeobj__1069
#define __pyx_codeobj__1070 __pyx_mstate_global->__pyx_codeobj__1070
/* #### Code section: module_code ### */

/* "src/mpi4py/MPI.src/atimport.pxi":104
 * options.errors = 1
 * 
 * cdef object getOpt(object rc, const char name[], object value):             # <<<<<<<<<<<<<<
 *     cdef bytes bname = b"MPI4PY_RC_" + name.upper()
 *     cdef const char *cname  = <const char*>bname
 */

static PyObject *__pyx_f_6mpi4py_3MPI_getOpt(PyObject *__pyx_v_rc, char const *__pyx_v_name, PyObject *__pyx_v_value) {
  PyObject *__pyx_v_bname = 0;
  char const *__pyx_v_cname;
  char const *__pyx_v_cvalue;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  char const *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getOpt", 0);
  __Pyx_INCREF(__pyx_v_value);

  /* "src/mpi4py/MPI.src/atimport.pxi":105
 * 
 * cdef object getOpt(object rc, const char name[], object value):
 *     cdef bytes bname = b"MPI4PY_RC_" + name.upper()             # <<<<<<<<<<<<<<
 *     cdef const char *cname  = <const char*>bname
 *     cdef const char *cvalue = Py_GETENV(cname)
 */
  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_upper); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyNumber_Add(__pyx_n_b_MPI4PY_RC, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(2, 105, __pyx_L1_error)
  __pyx_v_bname = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":106
 * cdef object getOpt(object rc, const char name[], object value):
 *     cdef bytes bname = b"MPI4PY_RC_" + name.upper()
 *     cdef const char *cname  = <const char*>bname             # <<<<<<<<<<<<<<
 *     cdef const char *cvalue = Py_GETENV(cname)
 *     if cvalue == NULL:
 */
  if (unlikely(__pyx_v_bname == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(2, 106, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyBytes_AsString(__pyx_v_bname); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(2, 106, __pyx_L1_error)
  __pyx_v_cname = ((char const *)__pyx_t_5);

  /* "src/mpi4py/MPI.src/atimport.pxi":107
 *     cdef bytes bname = b"MPI4PY_RC_" + name.upper()
 *     cdef const char *cname  = <const char*>bname
 *     cdef const char *cvalue = Py_GETENV(cname)             # <<<<<<<<<<<<<<
 *     if cvalue == NULL:
 *         return getattr(rc, pystr(name), value)
 */
  __pyx_v_cvalue = Py_GETENV(__pyx_v_cname);

  /* "src/mpi4py/MPI.src/atimport.pxi":108
 *     cdef const char *cname  = <const char*>bname
 *     cdef const char *cvalue = Py_GETENV(cname)
 *     if cvalue == NULL:             # <<<<<<<<<<<<<<
 *         return getattr(rc, pystr(name), value)
 *     if cstr_is_uint(cvalue) and (type(value) is int):
 */
  __pyx_t_6 = (__pyx_v_cvalue == NULL);
  if (__pyx_t_6) {

    /* "src/mpi4py/MPI.src/atimport.pxi":109
 *     cdef const char *cvalue = Py_GETENV(cname)
 *     if cvalue == NULL:
 *         return getattr(rc, pystr(name), value)             # <<<<<<<<<<<<<<
 *     if cstr_is_uint(cvalue) and (type(value) is int):
 *         value = int(pystr(cvalue))
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_rc, __pyx_t_3, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/atimport.pxi":108
 *     cdef const char *cname  = <const char*>bname
 *     cdef const char *cvalue = Py_GETENV(cname)
 *     if cvalue == NULL:             # <<<<<<<<<<<<<<
 *         return getattr(rc, pystr(name), value)
 *     if cstr_is_uint(cvalue) and (type(value) is int):
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":110
 *     if cvalue == NULL:
 *         return getattr(rc, pystr(name), value)
 *     if cstr_is_uint(cvalue) and (type(value) is int):             # <<<<<<<<<<<<<<
 *         value = int(pystr(cvalue))
 *     elif cstr_is_bool(cvalue):
 */
  __pyx_t_7 = (__pyx_f_6mpi4py_3MPI_cstr_is_uint(__pyx_v_cvalue) != 0);
  if (__pyx_t_7) {
  } else {
    __pyx_t_6 = __pyx_t_7;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_7 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyInt_Type)));
  __pyx_t_6 = __pyx_t_7;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_6) {

    /* "src/mpi4py/MPI.src/atimport.pxi":111
 *         return getattr(rc, pystr(name), value)
 *     if cstr_is_uint(cvalue) and (type(value) is int):
 *         value = int(pystr(cvalue))             # <<<<<<<<<<<<<<
 *     elif cstr_is_bool(cvalue):
 *         value = <bint>cstr2bool(cvalue)
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_cvalue); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":110
 *     if cvalue == NULL:
 *         return getattr(rc, pystr(name), value)
 *     if cstr_is_uint(cvalue) and (type(value) is int):             # <<<<<<<<<<<<<<
 *         value = int(pystr(cvalue))
 *     elif cstr_is_bool(cvalue):
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":112
 *     if cstr_is_uint(cvalue) and (type(value) is int):
 *         value = int(pystr(cvalue))
 *     elif cstr_is_bool(cvalue):             # <<<<<<<<<<<<<<
 *         value = <bint>cstr2bool(cvalue)
 *     else:
 */
  __pyx_t_6 = (__pyx_f_6mpi4py_3MPI_cstr_is_bool(__pyx_v_cvalue) != 0);
  if (__pyx_t_6) {

    /* "src/mpi4py/MPI.src/atimport.pxi":113
 *         value = int(pystr(cvalue))
 *     elif cstr_is_bool(cvalue):
 *         value = <bint>cstr2bool(cvalue)             # <<<<<<<<<<<<<<
 *     else:
 *         value = pystr(cvalue).lower()
 */
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_f_6mpi4py_3MPI_cstr2bool(__pyx_v_cvalue) != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":112
 *     if cstr_is_uint(cvalue) and (type(value) is int):
 *         value = int(pystr(cvalue))
 *     elif cstr_is_bool(cvalue):             # <<<<<<<<<<<<<<
 *         value = <bint>cstr2bool(cvalue)
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":115
 *         value = <bint>cstr2bool(cvalue)
 *     else:
 *         value = pystr(cvalue).lower()             # <<<<<<<<<<<<<<
 *     try:
 *         setattr(rc, pystr(name), value)
 */
  /*else*/ {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_cvalue); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    __pyx_t_4 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/atimport.pxi":116
 *     else:
 *         value = pystr(cvalue).lower()
 *     try:             # <<<<<<<<<<<<<<
 *         setattr(rc, pystr(name), value)
 *     except:  # noqa
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
    __Pyx_XGOTREF(__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_9);
    __Pyx_XGOTREF(__pyx_t_10);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/atimport.pxi":117
 *         value = pystr(cvalue).lower()
 *     try:
 *         setattr(rc, pystr(name), value)             # <<<<<<<<<<<<<<
 *     except:  # noqa
 *         pass
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 117, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_11 = PyObject_SetAttr(__pyx_v_rc, __pyx_t_3, __pyx_v_value); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(2, 117, __pyx_L7_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/atimport.pxi":116
 *     else:
 *         value = pystr(cvalue).lower()
 *     try:             # <<<<<<<<<<<<<<
 *         setattr(rc, pystr(name), value)
 *     except:  # noqa
 */
    }
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    goto __pyx_L12_try_end;
    __pyx_L7_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":118
 *     try:
 *         setattr(rc, pystr(name), value)
 *     except:  # noqa             # <<<<<<<<<<<<<<
 *         pass
 *     return value
 */
    /*except:*/ {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L8_exception_handled;
    }
    __pyx_L8_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_9);
    __Pyx_XGIVEREF(__pyx_t_10);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
    __pyx_L12_try_end:;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":120
 *     except:  # noqa
 *         pass
 *     return value             # <<<<<<<<<<<<<<
 * 
 * cdef int warnOpt(const char name[], object value) except -1:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_r = __pyx_v_value;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":104
 * options.errors = 1
 * 
 * cdef object getOpt(object rc, const char name[], object value):             # <<<<<<<<<<<<<<
 *     cdef bytes bname = b"MPI4PY_RC_" + name.upper()
 *     cdef const char *cname  = <const char*>bname
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.getOpt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bname);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":122
 *     return value
 * 
 * cdef int warnOpt(const char name[], object value) except -1:             # <<<<<<<<<<<<<<
 *     value = PyUnicode_AsUTF8String(repr(value))
 *     PyErr_WarnFormat(
 */

static int __pyx_f_6mpi4py_3MPI_warnOpt(char const *__pyx_v_name, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  char const *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("warnOpt", 0);
  __Pyx_INCREF(__pyx_v_value);

  /* "src/mpi4py/MPI.src/atimport.pxi":123
 * 
 * cdef int warnOpt(const char name[], object value) except -1:
 *     value = PyUnicode_AsUTF8String(repr(value))             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":127
 *         RuntimeWarning, 1,
 *         b"mpi4py.rc.%s: unexpected value %.200s",
 *         name, <const char*>value,             # <<<<<<<<<<<<<<
 *     )
 *     return 0
 */
  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(2, 127, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":124
 * cdef int warnOpt(const char name[], object value) except -1:
 *     value = PyUnicode_AsUTF8String(repr(value))
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"mpi4py.rc.%s: unexpected value %.200s",
 */
  __pyx_t_4 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"mpi4py.rc.%s: unexpected value %.200s"), __pyx_v_name, ((char const *)__pyx_t_3)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 124, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":129
 *         name, <const char*>value,
 *     )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int getOptions(Options* opts) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":122
 *     return value
 * 
 * cdef int warnOpt(const char name[], object value) except -1:             # <<<<<<<<<<<<<<
 *     value = PyUnicode_AsUTF8String(repr(value))
 *     PyErr_WarnFormat(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.warnOpt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":131
 *     return 0
 * 
 * cdef int getOptions(Options* opts) except -1:             # <<<<<<<<<<<<<<
 *     opts.initialize = 1
 *     opts.threads = 1
 */

static int __pyx_f_6mpi4py_3MPI_getOptions(__pyx_t_6mpi4py_3MPI_Options *__pyx_v_opts) {
  PyObject *__pyx_v_rc = 0;
  PyObject *__pyx_v_initialize = 0;
  PyObject *__pyx_v_threads = 0;
  PyObject *__pyx_v_thread_level = 0;
  PyObject *__pyx_v_finalize = 0;
  PyObject *__pyx_v_fast_reduce = 0;
  PyObject *__pyx_v_recv_mprobe = 0;
  PyObject *__pyx_v_irecv_bufsz = 0;
  PyObject *__pyx_v_errors = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  MPI_Count __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getOptions", 1);

  /* "src/mpi4py/MPI.src/atimport.pxi":132
 * 
 * cdef int getOptions(Options* opts) except -1:
 *     opts.initialize = 1             # <<<<<<<<<<<<<<
 *     opts.threads = 1
 *     opts.thread_level = MPI_THREAD_MULTIPLE
 */
  __pyx_v_opts->initialize = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":133
 * cdef int getOptions(Options* opts) except -1:
 *     opts.initialize = 1
 *     opts.threads = 1             # <<<<<<<<<<<<<<
 *     opts.thread_level = MPI_THREAD_MULTIPLE
 *     opts.finalize = 1
 */
  __pyx_v_opts->threads = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":134
 *     opts.initialize = 1
 *     opts.threads = 1
 *     opts.thread_level = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 *     opts.finalize = 1
 *     opts.fast_reduce = 1
 */
  __pyx_v_opts->thread_level = MPI_THREAD_MULTIPLE;

  /* "src/mpi4py/MPI.src/atimport.pxi":135
 *     opts.threads = 1
 *     opts.thread_level = MPI_THREAD_MULTIPLE
 *     opts.finalize = 1             # <<<<<<<<<<<<<<
 *     opts.fast_reduce = 1
 *     opts.recv_mprobe = USE_MATCHED_RECV
 */
  __pyx_v_opts->finalize = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":136
 *     opts.thread_level = MPI_THREAD_MULTIPLE
 *     opts.finalize = 1
 *     opts.fast_reduce = 1             # <<<<<<<<<<<<<<
 *     opts.recv_mprobe = USE_MATCHED_RECV
 *     opts.irecv_bufsz = 32768
 */
  __pyx_v_opts->fast_reduce = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":137
 *     opts.finalize = 1
 *     opts.fast_reduce = 1
 *     opts.recv_mprobe = USE_MATCHED_RECV             # <<<<<<<<<<<<<<
 *     opts.irecv_bufsz = 32768
 *     opts.errors = 1
 */
  __pyx_v_opts->recv_mprobe = PyMPI_USE_MATCHED_RECV;

  /* "src/mpi4py/MPI.src/atimport.pxi":138
 *     opts.fast_reduce = 1
 *     opts.recv_mprobe = USE_MATCHED_RECV
 *     opts.irecv_bufsz = 32768             # <<<<<<<<<<<<<<
 *     opts.errors = 1
 *     #
 */
  __pyx_v_opts->irecv_bufsz = 0x8000;

  /* "src/mpi4py/MPI.src/atimport.pxi":139
 *     opts.recv_mprobe = USE_MATCHED_RECV
 *     opts.irecv_bufsz = 32768
 *     opts.errors = 1             # <<<<<<<<<<<<<<
 *     #
 *     cdef object rc
 */
  __pyx_v_opts->errors = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":142
 *     #
 *     cdef object rc
 *     try:             # <<<<<<<<<<<<<<
 *         from . import rc
 *     except (ImportError, ImportWarning):
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/atimport.pxi":143
 *     cdef object rc
 *     try:
 *         from . import rc             # <<<<<<<<<<<<<<
 *     except (ImportError, ImportWarning):
 *         rc = None
 */
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 143, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_n_s_rc);
      __Pyx_GIVEREF(__pyx_n_s_rc);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_rc)) __PYX_ERR(2, 143, __pyx_L3_error);
      __pyx_t_5 = __Pyx_Import(__pyx_n_s_, __pyx_t_4, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 143, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_5, __pyx_n_s_rc); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 143, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_rc = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/atimport.pxi":142
 *     #
 *     cdef object rc
 *     try:             # <<<<<<<<<<<<<<
 *         from . import rc
 *     except (ImportError, ImportWarning):
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":144
 *     try:
 *         from . import rc
 *     except (ImportError, ImportWarning):             # <<<<<<<<<<<<<<
 *         rc = None
 *     #
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches2(__pyx_builtin_ImportError, __pyx_builtin_ImportWarning);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("mpi4py.MPI.getOptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(2, 144, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/atimport.pxi":145
 *         from . import rc
 *     except (ImportError, ImportWarning):
 *         rc = None             # <<<<<<<<<<<<<<
 *     #
 *     cdef object initialize   = getOpt(rc, b"initialize"   , True        )
 */
      __Pyx_INCREF(Py_None);
      __Pyx_XDECREF_SET(__pyx_v_rc, Py_None);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/atimport.pxi":142
 *     #
 *     cdef object rc
 *     try:             # <<<<<<<<<<<<<<
 *         from . import rc
 *     except (ImportError, ImportWarning):
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":147
 *         rc = None
 *     #
 *     cdef object initialize   = getOpt(rc, b"initialize"   , True        )             # <<<<<<<<<<<<<<
 *     cdef object threads      = getOpt(rc, b"threads"      , True        )
 *     cdef object thread_level = getOpt(rc, b"thread_level" , 'multiple'  )
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"initialize"), Py_True); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_initialize = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":148
 *     #
 *     cdef object initialize   = getOpt(rc, b"initialize"   , True        )
 *     cdef object threads      = getOpt(rc, b"threads"      , True        )             # <<<<<<<<<<<<<<
 *     cdef object thread_level = getOpt(rc, b"thread_level" , 'multiple'  )
 *     cdef object finalize     = getOpt(rc, b"finalize"     , None        )
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"threads"), Py_True); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_threads = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":149
 *     cdef object initialize   = getOpt(rc, b"initialize"   , True        )
 *     cdef object threads      = getOpt(rc, b"threads"      , True        )
 *     cdef object thread_level = getOpt(rc, b"thread_level" , 'multiple'  )             # <<<<<<<<<<<<<<
 *     cdef object finalize     = getOpt(rc, b"finalize"     , None        )
 *     cdef object fast_reduce  = getOpt(rc, b"fast_reduce"  , True        )
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"thread_level"), __pyx_n_s_multiple); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_thread_level = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":150
 *     cdef object threads      = getOpt(rc, b"threads"      , True        )
 *     cdef object thread_level = getOpt(rc, b"thread_level" , 'multiple'  )
 *     cdef object finalize     = getOpt(rc, b"finalize"     , None        )             # <<<<<<<<<<<<<<
 *     cdef object fast_reduce  = getOpt(rc, b"fast_reduce"  , True        )
 *     cdef object recv_mprobe  = getOpt(rc, b"recv_mprobe"  , True        )
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"finalize"), Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_finalize = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":151
 *     cdef object thread_level = getOpt(rc, b"thread_level" , 'multiple'  )
 *     cdef object finalize     = getOpt(rc, b"finalize"     , None        )
 *     cdef object fast_reduce  = getOpt(rc, b"fast_reduce"  , True        )             # <<<<<<<<<<<<<<
 *     cdef object recv_mprobe  = getOpt(rc, b"recv_mprobe"  , True        )
 *     cdef object irecv_bufsz  = getOpt(rc, b"irecv_bufsz"  , 32768       )
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"fast_reduce"), Py_True); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_fast_reduce = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":152
 *     cdef object finalize     = getOpt(rc, b"finalize"     , None        )
 *     cdef object fast_reduce  = getOpt(rc, b"fast_reduce"  , True        )
 *     cdef object recv_mprobe  = getOpt(rc, b"recv_mprobe"  , True        )             # <<<<<<<<<<<<<<
 *     cdef object irecv_bufsz  = getOpt(rc, b"irecv_bufsz"  , 32768       )
 *     cdef object errors       = getOpt(rc, b"errors"       , 'exception' )
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"recv_mprobe"), Py_True); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_recv_mprobe = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":153
 *     cdef object fast_reduce  = getOpt(rc, b"fast_reduce"  , True        )
 *     cdef object recv_mprobe  = getOpt(rc, b"recv_mprobe"  , True        )
 *     cdef object irecv_bufsz  = getOpt(rc, b"irecv_bufsz"  , 32768       )             # <<<<<<<<<<<<<<
 *     cdef object errors       = getOpt(rc, b"errors"       , 'exception' )
 *     #
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"irecv_bufsz"), __pyx_int_32768); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_irecv_bufsz = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":154
 *     cdef object recv_mprobe  = getOpt(rc, b"recv_mprobe"  , True        )
 *     cdef object irecv_bufsz  = getOpt(rc, b"irecv_bufsz"  , 32768       )
 *     cdef object errors       = getOpt(rc, b"errors"       , 'exception' )             # <<<<<<<<<<<<<<
 *     #
 *     if initialize in (True, 'yes'):
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_getOpt(__pyx_v_rc, ((char const *)"errors"), __pyx_n_s_exception); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_errors = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":156
 *     cdef object errors       = getOpt(rc, b"errors"       , 'exception' )
 *     #
 *     if initialize in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.initialize = 1
 *     elif initialize in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_initialize);
  __pyx_t_7 = __pyx_v_initialize;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 156, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_yes, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 156, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L12_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = __pyx_t_8;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":157
 *     #
 *     if initialize in (True, 'yes'):
 *         opts.initialize = 1             # <<<<<<<<<<<<<<
 *     elif initialize in (False, 'no'):
 *         opts.initialize = 0
 */
    __pyx_v_opts->initialize = 1;

    /* "src/mpi4py/MPI.src/atimport.pxi":156
 *     cdef object errors       = getOpt(rc, b"errors"       , 'exception' )
 *     #
 *     if initialize in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.initialize = 1
 *     elif initialize in (False, 'no'):
 */
    goto __pyx_L11;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":158
 *     if initialize in (True, 'yes'):
 *         opts.initialize = 1
 *     elif initialize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.initialize = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_initialize);
  __pyx_t_7 = __pyx_v_initialize;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 158, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_8) {
  } else {
    __pyx_t_9 = __pyx_t_8;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_no, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 158, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_8;
  __pyx_L14_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = __pyx_t_9;
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":159
 *         opts.initialize = 1
 *     elif initialize in (False, 'no'):
 *         opts.initialize = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"initialize", initialize)
 */
    __pyx_v_opts->initialize = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":158
 *     if initialize in (True, 'yes'):
 *         opts.initialize = 1
 *     elif initialize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.initialize = 0
 *     else:
 */
    goto __pyx_L11;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":161
 *         opts.initialize = 0
 *     else:
 *         warnOpt(b"initialize", initialize)             # <<<<<<<<<<<<<<
 *     #
 *     if threads in (True, 'yes'):
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"initialize"), __pyx_v_initialize); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 161, __pyx_L1_error)
  }
  __pyx_L11:;

  /* "src/mpi4py/MPI.src/atimport.pxi":163
 *         warnOpt(b"initialize", initialize)
 *     #
 *     if threads in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.threads = 1
 *     elif threads in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_threads);
  __pyx_t_7 = __pyx_v_threads;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 163, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L17_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_yes, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 163, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L17_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = __pyx_t_8;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":164
 *     #
 *     if threads in (True, 'yes'):
 *         opts.threads = 1             # <<<<<<<<<<<<<<
 *     elif threads in (False, 'no'):
 *         opts.threads = 0
 */
    __pyx_v_opts->threads = 1;

    /* "src/mpi4py/MPI.src/atimport.pxi":163
 *         warnOpt(b"initialize", initialize)
 *     #
 *     if threads in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.threads = 1
 *     elif threads in (False, 'no'):
 */
    goto __pyx_L16;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":165
 *     if threads in (True, 'yes'):
 *         opts.threads = 1
 *     elif threads in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.threads = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_threads);
  __pyx_t_7 = __pyx_v_threads;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 165, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_8) {
  } else {
    __pyx_t_9 = __pyx_t_8;
    goto __pyx_L19_bool_binop_done;
  }
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_no, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 165, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_8;
  __pyx_L19_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = __pyx_t_9;
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":166
 *         opts.threads = 1
 *     elif threads in (False, 'no'):
 *         opts.threads = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"threads", threads)
 */
    __pyx_v_opts->threads = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":165
 *     if threads in (True, 'yes'):
 *         opts.threads = 1
 *     elif threads in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.threads = 0
 *     else:
 */
    goto __pyx_L16;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":168
 *         opts.threads = 0
 *     else:
 *         warnOpt(b"threads", threads)             # <<<<<<<<<<<<<<
 *     #
 *     if thread_level == 'single':
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"threads"), __pyx_v_threads); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 168, __pyx_L1_error)
  }
  __pyx_L16:;

  /* "src/mpi4py/MPI.src/atimport.pxi":170
 *         warnOpt(b"threads", threads)
 *     #
 *     if thread_level == 'single':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_thread_level, __pyx_n_s_single, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 170, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":171
 *     #
 *     if thread_level == 'single':
 *         opts.thread_level = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     elif thread_level == 'funneled':
 *         opts.thread_level = MPI_THREAD_FUNNELED
 */
    __pyx_v_opts->thread_level = MPI_THREAD_SINGLE;

    /* "src/mpi4py/MPI.src/atimport.pxi":170
 *         warnOpt(b"threads", threads)
 *     #
 *     if thread_level == 'single':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':
 */
    goto __pyx_L21;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":172
 *     if thread_level == 'single':
 *         opts.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_thread_level, __pyx_n_s_funneled, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 172, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":173
 *         opts.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':
 *         opts.thread_level = MPI_THREAD_FUNNELED             # <<<<<<<<<<<<<<
 *     elif thread_level == 'serialized':
 *         opts.thread_level = MPI_THREAD_SERIALIZED
 */
    __pyx_v_opts->thread_level = MPI_THREAD_FUNNELED;

    /* "src/mpi4py/MPI.src/atimport.pxi":172
 *     if thread_level == 'single':
 *         opts.thread_level = MPI_THREAD_SINGLE
 *     elif thread_level == 'funneled':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':
 */
    goto __pyx_L21;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":174
 *     elif thread_level == 'funneled':
 *         opts.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_thread_level, __pyx_n_s_serialized, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 174, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":175
 *         opts.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':
 *         opts.thread_level = MPI_THREAD_SERIALIZED             # <<<<<<<<<<<<<<
 *     elif thread_level == 'multiple':
 *         opts.thread_level = MPI_THREAD_MULTIPLE
 */
    __pyx_v_opts->thread_level = MPI_THREAD_SERIALIZED;

    /* "src/mpi4py/MPI.src/atimport.pxi":174
 *     elif thread_level == 'funneled':
 *         opts.thread_level = MPI_THREAD_FUNNELED
 *     elif thread_level == 'serialized':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':
 */
    goto __pyx_L21;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":176
 *     elif thread_level == 'serialized':
 *         opts.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_thread_level, __pyx_n_s_multiple, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 176, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":177
 *         opts.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':
 *         opts.thread_level = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"thread_level", thread_level)
 */
    __pyx_v_opts->thread_level = MPI_THREAD_MULTIPLE;

    /* "src/mpi4py/MPI.src/atimport.pxi":176
 *     elif thread_level == 'serialized':
 *         opts.thread_level = MPI_THREAD_SERIALIZED
 *     elif thread_level == 'multiple':             # <<<<<<<<<<<<<<
 *         opts.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 */
    goto __pyx_L21;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":179
 *         opts.thread_level = MPI_THREAD_MULTIPLE
 *     else:
 *         warnOpt(b"thread_level", thread_level)             # <<<<<<<<<<<<<<
 *     #
 *     if finalize is None:
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"thread_level"), __pyx_v_thread_level); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 179, __pyx_L1_error)
  }
  __pyx_L21:;

  /* "src/mpi4py/MPI.src/atimport.pxi":181
 *         warnOpt(b"thread_level", thread_level)
 *     #
 *     if finalize is None:             # <<<<<<<<<<<<<<
 *         opts.finalize = opts.initialize
 *     elif finalize in (True, 'yes'):
 */
  __pyx_t_8 = (__pyx_v_finalize == Py_None);
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":182
 *     #
 *     if finalize is None:
 *         opts.finalize = opts.initialize             # <<<<<<<<<<<<<<
 *     elif finalize in (True, 'yes'):
 *         opts.finalize = 1
 */
    __pyx_t_8 = __pyx_v_opts->initialize;
    __pyx_v_opts->finalize = __pyx_t_8;

    /* "src/mpi4py/MPI.src/atimport.pxi":181
 *         warnOpt(b"thread_level", thread_level)
 *     #
 *     if finalize is None:             # <<<<<<<<<<<<<<
 *         opts.finalize = opts.initialize
 *     elif finalize in (True, 'yes'):
 */
    goto __pyx_L22;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":183
 *     if finalize is None:
 *         opts.finalize = opts.initialize
 *     elif finalize in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.finalize = 1
 *     elif finalize in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_finalize);
  __pyx_t_7 = __pyx_v_finalize;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 183, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L23_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_yes, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 183, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L23_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = __pyx_t_8;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":184
 *         opts.finalize = opts.initialize
 *     elif finalize in (True, 'yes'):
 *         opts.finalize = 1             # <<<<<<<<<<<<<<
 *     elif finalize in (False, 'no'):
 *         opts.finalize = 0
 */
    __pyx_v_opts->finalize = 1;

    /* "src/mpi4py/MPI.src/atimport.pxi":183
 *     if finalize is None:
 *         opts.finalize = opts.initialize
 *     elif finalize in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.finalize = 1
 *     elif finalize in (False, 'no'):
 */
    goto __pyx_L22;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":185
 *     elif finalize in (True, 'yes'):
 *         opts.finalize = 1
 *     elif finalize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.finalize = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_finalize);
  __pyx_t_7 = __pyx_v_finalize;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 185, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_8) {
  } else {
    __pyx_t_9 = __pyx_t_8;
    goto __pyx_L25_bool_binop_done;
  }
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_no, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 185, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_8;
  __pyx_L25_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = __pyx_t_9;
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":186
 *         opts.finalize = 1
 *     elif finalize in (False, 'no'):
 *         opts.finalize = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"finalize", finalize)
 */
    __pyx_v_opts->finalize = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":185
 *     elif finalize in (True, 'yes'):
 *         opts.finalize = 1
 *     elif finalize in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.finalize = 0
 *     else:
 */
    goto __pyx_L22;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":188
 *         opts.finalize = 0
 *     else:
 *         warnOpt(b"finalize", finalize)             # <<<<<<<<<<<<<<
 *     #
 *     if fast_reduce in (True, 'yes'):
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"finalize"), __pyx_v_finalize); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 188, __pyx_L1_error)
  }
  __pyx_L22:;

  /* "src/mpi4py/MPI.src/atimport.pxi":190
 *         warnOpt(b"finalize", finalize)
 *     #
 *     if fast_reduce in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.fast_reduce = 1
 *     elif fast_reduce in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_fast_reduce);
  __pyx_t_7 = __pyx_v_fast_reduce;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 190, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L28_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_yes, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 190, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L28_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = __pyx_t_8;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":191
 *     #
 *     if fast_reduce in (True, 'yes'):
 *         opts.fast_reduce = 1             # <<<<<<<<<<<<<<
 *     elif fast_reduce in (False, 'no'):
 *         opts.fast_reduce = 0
 */
    __pyx_v_opts->fast_reduce = 1;

    /* "src/mpi4py/MPI.src/atimport.pxi":190
 *         warnOpt(b"finalize", finalize)
 *     #
 *     if fast_reduce in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.fast_reduce = 1
 *     elif fast_reduce in (False, 'no'):
 */
    goto __pyx_L27;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":192
 *     if fast_reduce in (True, 'yes'):
 *         opts.fast_reduce = 1
 *     elif fast_reduce in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.fast_reduce = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_fast_reduce);
  __pyx_t_7 = __pyx_v_fast_reduce;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 192, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_8) {
  } else {
    __pyx_t_9 = __pyx_t_8;
    goto __pyx_L30_bool_binop_done;
  }
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_no, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 192, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_8;
  __pyx_L30_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = __pyx_t_9;
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":193
 *         opts.fast_reduce = 1
 *     elif fast_reduce in (False, 'no'):
 *         opts.fast_reduce = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"fast_reduce", fast_reduce)
 */
    __pyx_v_opts->fast_reduce = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":192
 *     if fast_reduce in (True, 'yes'):
 *         opts.fast_reduce = 1
 *     elif fast_reduce in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.fast_reduce = 0
 *     else:
 */
    goto __pyx_L27;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":195
 *         opts.fast_reduce = 0
 *     else:
 *         warnOpt(b"fast_reduce", fast_reduce)             # <<<<<<<<<<<<<<
 *     #
 *     if recv_mprobe in (True, 'yes'):
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"fast_reduce"), __pyx_v_fast_reduce); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 195, __pyx_L1_error)
  }
  __pyx_L27:;

  /* "src/mpi4py/MPI.src/atimport.pxi":197
 *         warnOpt(b"fast_reduce", fast_reduce)
 *     #
 *     if recv_mprobe in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.recv_mprobe = 1 and USE_MATCHED_RECV
 *     elif recv_mprobe in (False, 'no'):
 */
  __Pyx_INCREF(__pyx_v_recv_mprobe);
  __pyx_t_7 = __pyx_v_recv_mprobe;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 197, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L33_bool_binop_done;
  }
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_yes, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 197, __pyx_L1_error)
  __pyx_t_8 = __pyx_t_9;
  __pyx_L33_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_9 = __pyx_t_8;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/atimport.pxi":198
 *     #
 *     if recv_mprobe in (True, 'yes'):
 *         opts.recv_mprobe = 1 and USE_MATCHED_RECV             # <<<<<<<<<<<<<<
 *     elif recv_mprobe in (False, 'no'):
 *         opts.recv_mprobe = 0
 */
    __pyx_v_opts->recv_mprobe = PyMPI_USE_MATCHED_RECV;

    /* "src/mpi4py/MPI.src/atimport.pxi":197
 *         warnOpt(b"fast_reduce", fast_reduce)
 *     #
 *     if recv_mprobe in (True, 'yes'):             # <<<<<<<<<<<<<<
 *         opts.recv_mprobe = 1 and USE_MATCHED_RECV
 *     elif recv_mprobe in (False, 'no'):
 */
    goto __pyx_L32;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":199
 *     if recv_mprobe in (True, 'yes'):
 *         opts.recv_mprobe = 1 and USE_MATCHED_RECV
 *     elif recv_mprobe in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.recv_mprobe = 0
 *     else:
 */
  __Pyx_INCREF(__pyx_v_recv_mprobe);
  __pyx_t_7 = __pyx_v_recv_mprobe;
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, Py_False, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 199, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_8) {
  } else {
    __pyx_t_9 = __pyx_t_8;
    goto __pyx_L35_bool_binop_done;
  }
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_7, __pyx_n_s_no, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 199, __pyx_L1_error)
  __pyx_t_9 = __pyx_t_8;
  __pyx_L35_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = __pyx_t_9;
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":200
 *         opts.recv_mprobe = 1 and USE_MATCHED_RECV
 *     elif recv_mprobe in (False, 'no'):
 *         opts.recv_mprobe = 0             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"recv_mprobe", recv_mprobe)
 */
    __pyx_v_opts->recv_mprobe = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":199
 *     if recv_mprobe in (True, 'yes'):
 *         opts.recv_mprobe = 1 and USE_MATCHED_RECV
 *     elif recv_mprobe in (False, 'no'):             # <<<<<<<<<<<<<<
 *         opts.recv_mprobe = 0
 *     else:
 */
    goto __pyx_L32;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":202
 *         opts.recv_mprobe = 0
 *     else:
 *         warnOpt(b"recv_mprobe", recv_mprobe)             # <<<<<<<<<<<<<<
 *     #
 *     if type(irecv_bufsz) is int and irecv_bufsz >= 0:
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"recv_mprobe"), __pyx_v_recv_mprobe); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 202, __pyx_L1_error)
  }
  __pyx_L32:;

  /* "src/mpi4py/MPI.src/atimport.pxi":204
 *         warnOpt(b"recv_mprobe", recv_mprobe)
 *     #
 *     if type(irecv_bufsz) is int and irecv_bufsz >= 0:             # <<<<<<<<<<<<<<
 *         opts.irecv_bufsz = irecv_bufsz
 *     else:
 */
  __pyx_t_9 = (((PyObject *)Py_TYPE(__pyx_v_irecv_bufsz)) == ((PyObject *)(&PyInt_Type)));
  if (__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L38_bool_binop_done;
  }
  __pyx_t_7 = PyObject_RichCompare(__pyx_v_irecv_bufsz, __pyx_int_0, Py_GE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 204, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(2, 204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = __pyx_t_9;
  __pyx_L38_bool_binop_done:;
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":205
 *     #
 *     if type(irecv_bufsz) is int and irecv_bufsz >= 0:
 *         opts.irecv_bufsz = irecv_bufsz             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"irecv_bufsz", irecv_bufsz)
 */
    __pyx_t_10 = __Pyx_PyInt_As_MPI_Count(__pyx_v_irecv_bufsz); if (unlikely((__pyx_t_10 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(2, 205, __pyx_L1_error)
    __pyx_v_opts->irecv_bufsz = __pyx_t_10;

    /* "src/mpi4py/MPI.src/atimport.pxi":204
 *         warnOpt(b"recv_mprobe", recv_mprobe)
 *     #
 *     if type(irecv_bufsz) is int and irecv_bufsz >= 0:             # <<<<<<<<<<<<<<
 *         opts.irecv_bufsz = irecv_bufsz
 *     else:
 */
    goto __pyx_L37;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":207
 *         opts.irecv_bufsz = irecv_bufsz
 *     else:
 *         warnOpt(b"irecv_bufsz", irecv_bufsz)             # <<<<<<<<<<<<<<
 *     #
 *     if errors == 'default':
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"irecv_bufsz"), __pyx_v_irecv_bufsz); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 207, __pyx_L1_error)
  }
  __pyx_L37:;

  /* "src/mpi4py/MPI.src/atimport.pxi":209
 *         warnOpt(b"irecv_bufsz", irecv_bufsz)
 *     #
 *     if errors == 'default':             # <<<<<<<<<<<<<<
 *         opts.errors = 0
 *     elif errors == 'exception':
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_errors, __pyx_n_s_default, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 209, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":210
 *     #
 *     if errors == 'default':
 *         opts.errors = 0             # <<<<<<<<<<<<<<
 *     elif errors == 'exception':
 *         opts.errors = 1
 */
    __pyx_v_opts->errors = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":209
 *         warnOpt(b"irecv_bufsz", irecv_bufsz)
 *     #
 *     if errors == 'default':             # <<<<<<<<<<<<<<
 *         opts.errors = 0
 *     elif errors == 'exception':
 */
    goto __pyx_L40;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":211
 *     if errors == 'default':
 *         opts.errors = 0
 *     elif errors == 'exception':             # <<<<<<<<<<<<<<
 *         opts.errors = 1
 *     elif errors == 'abort':
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_errors, __pyx_n_s_exception, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 211, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":212
 *         opts.errors = 0
 *     elif errors == 'exception':
 *         opts.errors = 1             # <<<<<<<<<<<<<<
 *     elif errors == 'abort':
 *         opts.errors = 2
 */
    __pyx_v_opts->errors = 1;

    /* "src/mpi4py/MPI.src/atimport.pxi":211
 *     if errors == 'default':
 *         opts.errors = 0
 *     elif errors == 'exception':             # <<<<<<<<<<<<<<
 *         opts.errors = 1
 *     elif errors == 'abort':
 */
    goto __pyx_L40;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":213
 *     elif errors == 'exception':
 *         opts.errors = 1
 *     elif errors == 'abort':             # <<<<<<<<<<<<<<
 *         opts.errors = 2
 *         if MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL: opts.errors = 3
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_errors, __pyx_n_s_abort, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 213, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":214
 *         opts.errors = 1
 *     elif errors == 'abort':
 *         opts.errors = 2             # <<<<<<<<<<<<<<
 *         if MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL: opts.errors = 3
 *     elif errors == 'fatal':
 */
    __pyx_v_opts->errors = 2;

    /* "src/mpi4py/MPI.src/atimport.pxi":215
 *     elif errors == 'abort':
 *         opts.errors = 2
 *         if MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL: opts.errors = 3             # <<<<<<<<<<<<<<
 *     elif errors == 'fatal':
 *         opts.errors = 3
 */
    __pyx_t_8 = (MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL);
    if (__pyx_t_8) {
      __pyx_v_opts->errors = 3;
    }

    /* "src/mpi4py/MPI.src/atimport.pxi":213
 *     elif errors == 'exception':
 *         opts.errors = 1
 *     elif errors == 'abort':             # <<<<<<<<<<<<<<
 *         opts.errors = 2
 *         if MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL: opts.errors = 3
 */
    goto __pyx_L40;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":216
 *         opts.errors = 2
 *         if MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL: opts.errors = 3
 *     elif errors == 'fatal':             # <<<<<<<<<<<<<<
 *         opts.errors = 3
 *     else:
 */
  __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_errors, __pyx_n_s_fatal, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(2, 216, __pyx_L1_error)
  if (__pyx_t_8) {

    /* "src/mpi4py/MPI.src/atimport.pxi":217
 *         if MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL: opts.errors = 3
 *     elif errors == 'fatal':
 *         opts.errors = 3             # <<<<<<<<<<<<<<
 *     else:
 *         warnOpt(b"errors", errors)
 */
    __pyx_v_opts->errors = 3;

    /* "src/mpi4py/MPI.src/atimport.pxi":216
 *         opts.errors = 2
 *         if MPI_ERRORS_ABORT == MPI_ERRHANDLER_NULL: opts.errors = 3
 *     elif errors == 'fatal':             # <<<<<<<<<<<<<<
 *         opts.errors = 3
 *     else:
 */
    goto __pyx_L40;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":219
 *         opts.errors = 3
 *     else:
 *         warnOpt(b"errors", errors)             # <<<<<<<<<<<<<<
 *     #
 *     return 0
 */
  /*else*/ {
    __pyx_t_6 = __pyx_f_6mpi4py_3MPI_warnOpt(((char const *)"errors"), __pyx_v_errors); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(2, 219, __pyx_L1_error)
  }
  __pyx_L40:;

  /* "src/mpi4py/MPI.src/atimport.pxi":221
 *         warnOpt(b"errors", errors)
 *     #
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":131
 *     return 0
 * 
 * cdef int getOptions(Options* opts) except -1:             # <<<<<<<<<<<<<<
 *     opts.initialize = 1
 *     opts.threads = 1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.getOptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rc);
  __Pyx_XDECREF(__pyx_v_initialize);
  __Pyx_XDECREF(__pyx_v_threads);
  __Pyx_XDECREF(__pyx_v_thread_level);
  __Pyx_XDECREF(__pyx_v_finalize);
  __Pyx_XDECREF(__pyx_v_fast_reduce);
  __Pyx_XDECREF(__pyx_v_recv_mprobe);
  __Pyx_XDECREF(__pyx_v_irecv_bufsz);
  __Pyx_XDECREF(__pyx_v_errors);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":231
 *     """
 * 
 * cdef int warn_environ(const char envvar[]) except -1 with gil:             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */

static int __pyx_f_6mpi4py_3MPI_warn_environ(char const *__pyx_v_envvar) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif

  /* "src/mpi4py/MPI.src/atimport.pxi":232
 * 
 * cdef int warn_environ(const char envvar[]) except -1 with gil:
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"environment variable %s: "
 */
  __pyx_t_1 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"environment variable %s: unexpected value '%.200s'"), __pyx_v_envvar, getenv(__pyx_v_envvar)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 232, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":231
 *     """
 * 
 * cdef int warn_environ(const char envvar[]) except -1 with gil:             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.warn_environ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":239
 *     )
 * 
 * cdef int warn_mpiexec(             # <<<<<<<<<<<<<<
 *     const char envvar[],
 *     const char vendor[],
 */

static int __pyx_f_6mpi4py_3MPI_warn_mpiexec(char const *__pyx_v_envvar, char const *__pyx_v_vendor) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif

  /* "src/mpi4py/MPI.src/atimport.pxi":243
 *     const char vendor[],
 * ) except -1 with gil:
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"suspicious MPI execution environment\n"
 */
  __pyx_t_1 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"suspicious MPI execution environment\nYour environment has %s=%.200s set, but mpi4py was built with %s.\nYou may be using `mpiexec` or `mpirun` from a different MPI implementation."), __pyx_v_envvar, getenv(__pyx_v_envvar), __pyx_v_vendor); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 243, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":239
 *     )
 * 
 * cdef int warn_mpiexec(             # <<<<<<<<<<<<<<
 *     const char envvar[],
 *     const char vendor[],
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.warn_mpiexec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":253
 *     )
 * 
 * cdef int check_mpiexec() except -1 nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr, size = 0
 *     ierr = MPI_Comm_size(MPI_COMM_WORLD, &size)
 */

static int __pyx_f_6mpi4py_3MPI_check_mpiexec(void) {
  int __pyx_v_ierr;
  int __pyx_v_size;
  int __pyx_v_check;
  char const *__pyx_v_ename;
  char const *__pyx_v_value;
  char const *__pyx_v_vendor;
  int __pyx_v_MPICH;
  int __pyx_v_IMPI;
  int __pyx_v_OPENMPI;
  char const *__pyx_v_mpich;
  char const *__pyx_v_impi;
  char const *__pyx_v_pmi_sz;
  char const *__pyx_v_openmpi;
  char const *__pyx_v_bad_env;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/atimport.pxi":254
 * 
 * cdef int check_mpiexec() except -1 nogil:
 *     cdef int ierr, size = 0             # <<<<<<<<<<<<<<
 *     ierr = MPI_Comm_size(MPI_COMM_WORLD, &size)
 *     if ierr != MPI_SUCCESS: return 0
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":255
 * cdef int check_mpiexec() except -1 nogil:
 *     cdef int ierr, size = 0
 *     ierr = MPI_Comm_size(MPI_COMM_WORLD, &size)             # <<<<<<<<<<<<<<
 *     if ierr != MPI_SUCCESS: return 0
 *     if size > 1: return 0
 */
  __pyx_v_ierr = MPI_Comm_size(MPI_COMM_WORLD, (&__pyx_v_size));

  /* "src/mpi4py/MPI.src/atimport.pxi":256
 *     cdef int ierr, size = 0
 *     ierr = MPI_Comm_size(MPI_COMM_WORLD, &size)
 *     if ierr != MPI_SUCCESS: return 0             # <<<<<<<<<<<<<<
 *     if size > 1: return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_ierr != MPI_SUCCESS);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":257
 *     ierr = MPI_Comm_size(MPI_COMM_WORLD, &size)
 *     if ierr != MPI_SUCCESS: return 0
 *     if size > 1: return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int check = 1
 */
  __pyx_t_1 = (__pyx_v_size > 1);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":259
 *     if size > 1: return 0
 * 
 *     cdef int check = 1             # <<<<<<<<<<<<<<
 *     cdef const char *ename  = b"MPI4PY_CHECK_MPIEXEC"
 *     cdef const char *value  = Py_GETENV(ename)
 */
  __pyx_v_check = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":260
 * 
 *     cdef int check = 1
 *     cdef const char *ename  = b"MPI4PY_CHECK_MPIEXEC"             # <<<<<<<<<<<<<<
 *     cdef const char *value  = Py_GETENV(ename)
 *     if value != NULL: check = cstr2bool(value)
 */
  __pyx_v_ename = ((char const *)"MPI4PY_CHECK_MPIEXEC");

  /* "src/mpi4py/MPI.src/atimport.pxi":261
 *     cdef int check = 1
 *     cdef const char *ename  = b"MPI4PY_CHECK_MPIEXEC"
 *     cdef const char *value  = Py_GETENV(ename)             # <<<<<<<<<<<<<<
 *     if value != NULL: check = cstr2bool(value)
 *     if check == -1: warn_environ(ename)
 */
  __pyx_v_value = Py_GETENV(__pyx_v_ename);

  /* "src/mpi4py/MPI.src/atimport.pxi":262
 *     cdef const char *ename  = b"MPI4PY_CHECK_MPIEXEC"
 *     cdef const char *value  = Py_GETENV(ename)
 *     if value != NULL: check = cstr2bool(value)             # <<<<<<<<<<<<<<
 *     if check == -1: warn_environ(ename)
 *     if check <=  0: return 0
 */
  __pyx_t_1 = (__pyx_v_value != NULL);
  if (__pyx_t_1) {
    __pyx_v_check = __pyx_f_6mpi4py_3MPI_cstr2bool(__pyx_v_value);
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":263
 *     cdef const char *value  = Py_GETENV(ename)
 *     if value != NULL: check = cstr2bool(value)
 *     if check == -1: warn_environ(ename)             # <<<<<<<<<<<<<<
 *     if check <=  0: return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_check == -1L);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_warn_environ(__pyx_v_ename); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 263, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":264
 *     if value != NULL: check = cstr2bool(value)
 *     if check == -1: warn_environ(ename)
 *     if check <=  0: return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef const char *vendor = NULL
 */
  __pyx_t_1 = (__pyx_v_check <= 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":266
 *     if check <=  0: return 0
 * 
 *     cdef const char *vendor = NULL             # <<<<<<<<<<<<<<
 *     <void>PyMPI_Get_vendor(&vendor, NULL, NULL, NULL)
 * 
 */
  __pyx_v_vendor = NULL;

  /* "src/mpi4py/MPI.src/atimport.pxi":267
 * 
 *     cdef const char *vendor = NULL
 *     <void>PyMPI_Get_vendor(&vendor, NULL, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     cdef bint MPICH   = (strncmp(b"MPICH", vendor, 6) == 0)
 */
  ((void)PyMPI_Get_vendor((&__pyx_v_vendor), NULL, NULL, NULL));

  /* "src/mpi4py/MPI.src/atimport.pxi":269
 *     <void>PyMPI_Get_vendor(&vendor, NULL, NULL, NULL)
 * 
 *     cdef bint MPICH   = (strncmp(b"MPICH", vendor, 6) == 0)             # <<<<<<<<<<<<<<
 *     cdef bint IMPI    = (strncmp(b"Intel MPI", vendor, 10) == 0)
 *     cdef bint OPENMPI = (strncmp(b"Open MPI", vendor, 9) == 0)
 */
  __pyx_v_MPICH = (strncmp(((char const *)"MPICH"), __pyx_v_vendor, 6) == 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":270
 * 
 *     cdef bint MPICH   = (strncmp(b"MPICH", vendor, 6) == 0)
 *     cdef bint IMPI    = (strncmp(b"Intel MPI", vendor, 10) == 0)             # <<<<<<<<<<<<<<
 *     cdef bint OPENMPI = (strncmp(b"Open MPI", vendor, 9) == 0)
 *     cdef const char *mpich   = b"HYDI_CONTROL_FD"
 */
  __pyx_v_IMPI = (strncmp(((char const *)"Intel MPI"), __pyx_v_vendor, 10) == 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":271
 *     cdef bint MPICH   = (strncmp(b"MPICH", vendor, 6) == 0)
 *     cdef bint IMPI    = (strncmp(b"Intel MPI", vendor, 10) == 0)
 *     cdef bint OPENMPI = (strncmp(b"Open MPI", vendor, 9) == 0)             # <<<<<<<<<<<<<<
 *     cdef const char *mpich   = b"HYDI_CONTROL_FD"
 *     cdef const char *impi    = b"I_MPI_HYDRA_TOPOLIB"
 */
  __pyx_v_OPENMPI = (strncmp(((char const *)"Open MPI"), __pyx_v_vendor, 9) == 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":272
 *     cdef bint IMPI    = (strncmp(b"Intel MPI", vendor, 10) == 0)
 *     cdef bint OPENMPI = (strncmp(b"Open MPI", vendor, 9) == 0)
 *     cdef const char *mpich   = b"HYDI_CONTROL_FD"             # <<<<<<<<<<<<<<
 *     cdef const char *impi    = b"I_MPI_HYDRA_TOPOLIB"
 *     cdef const char *pmi_sz  = b"PMI_SIZE"
 */
  __pyx_v_mpich = ((char const *)"HYDI_CONTROL_FD");

  /* "src/mpi4py/MPI.src/atimport.pxi":273
 *     cdef bint OPENMPI = (strncmp(b"Open MPI", vendor, 9) == 0)
 *     cdef const char *mpich   = b"HYDI_CONTROL_FD"
 *     cdef const char *impi    = b"I_MPI_HYDRA_TOPOLIB"             # <<<<<<<<<<<<<<
 *     cdef const char *pmi_sz  = b"PMI_SIZE"
 *     cdef const char *openmpi = b"OMPI_COMM_WORLD_SIZE"
 */
  __pyx_v_impi = ((char const *)"I_MPI_HYDRA_TOPOLIB");

  /* "src/mpi4py/MPI.src/atimport.pxi":274
 *     cdef const char *mpich   = b"HYDI_CONTROL_FD"
 *     cdef const char *impi    = b"I_MPI_HYDRA_TOPOLIB"
 *     cdef const char *pmi_sz  = b"PMI_SIZE"             # <<<<<<<<<<<<<<
 *     cdef const char *openmpi = b"OMPI_COMM_WORLD_SIZE"
 *     cdef const char *bad_env = NULL
 */
  __pyx_v_pmi_sz = ((char const *)"PMI_SIZE");

  /* "src/mpi4py/MPI.src/atimport.pxi":275
 *     cdef const char *impi    = b"I_MPI_HYDRA_TOPOLIB"
 *     cdef const char *pmi_sz  = b"PMI_SIZE"
 *     cdef const char *openmpi = b"OMPI_COMM_WORLD_SIZE"             # <<<<<<<<<<<<<<
 *     cdef const char *bad_env = NULL
 *     MPICH |= (strncmp(b"MVAPICH", vendor, 8) == 0)
 */
  __pyx_v_openmpi = ((char const *)"OMPI_COMM_WORLD_SIZE");

  /* "src/mpi4py/MPI.src/atimport.pxi":276
 *     cdef const char *pmi_sz  = b"PMI_SIZE"
 *     cdef const char *openmpi = b"OMPI_COMM_WORLD_SIZE"
 *     cdef const char *bad_env = NULL             # <<<<<<<<<<<<<<
 *     MPICH |= (strncmp(b"MVAPICH", vendor, 8) == 0)
 *     MPICH |= (strncmp(b"MVAPICH2", vendor, 9) == 0)
 */
  __pyx_v_bad_env = NULL;

  /* "src/mpi4py/MPI.src/atimport.pxi":277
 *     cdef const char *openmpi = b"OMPI_COMM_WORLD_SIZE"
 *     cdef const char *bad_env = NULL
 *     MPICH |= (strncmp(b"MVAPICH", vendor, 8) == 0)             # <<<<<<<<<<<<<<
 *     MPICH |= (strncmp(b"MVAPICH2", vendor, 9) == 0)
 *     if MPICH:
 */
  __pyx_v_MPICH = (__pyx_v_MPICH | (strncmp(((char const *)"MVAPICH"), __pyx_v_vendor, 8) == 0));

  /* "src/mpi4py/MPI.src/atimport.pxi":278
 *     cdef const char *bad_env = NULL
 *     MPICH |= (strncmp(b"MVAPICH", vendor, 8) == 0)
 *     MPICH |= (strncmp(b"MVAPICH2", vendor, 9) == 0)             # <<<<<<<<<<<<<<
 *     if MPICH:
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich
 */
  __pyx_v_MPICH = (__pyx_v_MPICH | (strncmp(((char const *)"MVAPICH2"), __pyx_v_vendor, 9) == 0));

  /* "src/mpi4py/MPI.src/atimport.pxi":279
 *     MPICH |= (strncmp(b"MVAPICH", vendor, 8) == 0)
 *     MPICH |= (strncmp(b"MVAPICH2", vendor, 9) == 0)
 *     if MPICH:             # <<<<<<<<<<<<<<
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich
 *             if getenv(openmpi) != NULL:                           # ~> mpich
 */
  if (__pyx_v_MPICH) {

    /* "src/mpi4py/MPI.src/atimport.pxi":280
 *     MPICH |= (strncmp(b"MVAPICH2", vendor, 9) == 0)
 *     if MPICH:
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich             # <<<<<<<<<<<<<<
 *             if getenv(openmpi) != NULL:                           # ~> mpich
 *                 bad_env = openmpi                                 # ~> mpich
 */
    __pyx_t_3 = (getenv(__pyx_v_mpich) == NULL);
    if (__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_3 = (getenv(__pyx_v_pmi_sz) == NULL);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/atimport.pxi":281
 *     if MPICH:
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich
 *             if getenv(openmpi) != NULL:                           # ~> mpich             # <<<<<<<<<<<<<<
 *                 bad_env = openmpi                                 # ~> mpich
 *     if IMPI:
 */
      __pyx_t_1 = (getenv(__pyx_v_openmpi) != NULL);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/atimport.pxi":282
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich
 *             if getenv(openmpi) != NULL:                           # ~> mpich
 *                 bad_env = openmpi                                 # ~> mpich             # <<<<<<<<<<<<<<
 *     if IMPI:
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi
 */
        __pyx_v_bad_env = __pyx_v_openmpi;

        /* "src/mpi4py/MPI.src/atimport.pxi":281
 *     if MPICH:
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich
 *             if getenv(openmpi) != NULL:                           # ~> mpich             # <<<<<<<<<<<<<<
 *                 bad_env = openmpi                                 # ~> mpich
 *     if IMPI:
 */
      }

      /* "src/mpi4py/MPI.src/atimport.pxi":280
 *     MPICH |= (strncmp(b"MVAPICH2", vendor, 9) == 0)
 *     if MPICH:
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich             # <<<<<<<<<<<<<<
 *             if getenv(openmpi) != NULL:                           # ~> mpich
 *                 bad_env = openmpi                                 # ~> mpich
 */
    }

    /* "src/mpi4py/MPI.src/atimport.pxi":279
 *     MPICH |= (strncmp(b"MVAPICH", vendor, 8) == 0)
 *     MPICH |= (strncmp(b"MVAPICH2", vendor, 9) == 0)
 *     if MPICH:             # <<<<<<<<<<<<<<
 *         if getenv(mpich) == NULL and getenv(pmi_sz) == NULL:      # ~> mpich
 *             if getenv(openmpi) != NULL:                           # ~> mpich
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":283
 *             if getenv(openmpi) != NULL:                           # ~> mpich
 *                 bad_env = openmpi                                 # ~> mpich
 *     if IMPI:             # <<<<<<<<<<<<<<
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi
 *             if getenv(openmpi) != NULL:                           # ~> impi
 */
  if (__pyx_v_IMPI) {

    /* "src/mpi4py/MPI.src/atimport.pxi":284
 *                 bad_env = openmpi                                 # ~> mpich
 *     if IMPI:
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi             # <<<<<<<<<<<<<<
 *             if getenv(openmpi) != NULL:                           # ~> impi
 *                 bad_env = openmpi                                 # ~> impi
 */
    __pyx_t_3 = (getenv(__pyx_v_impi) == NULL);
    if (__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L15_bool_binop_done;
    }
    __pyx_t_3 = (getenv(__pyx_v_pmi_sz) == NULL);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L15_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/atimport.pxi":285
 *     if IMPI:
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi
 *             if getenv(openmpi) != NULL:                           # ~> impi             # <<<<<<<<<<<<<<
 *                 bad_env = openmpi                                 # ~> impi
 *     if OPENMPI:
 */
      __pyx_t_1 = (getenv(__pyx_v_openmpi) != NULL);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/atimport.pxi":286
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi
 *             if getenv(openmpi) != NULL:                           # ~> impi
 *                 bad_env = openmpi                                 # ~> impi             # <<<<<<<<<<<<<<
 *     if OPENMPI:
 *         if getenv(openmpi) == NULL:                               # ~> openmpi
 */
        __pyx_v_bad_env = __pyx_v_openmpi;

        /* "src/mpi4py/MPI.src/atimport.pxi":285
 *     if IMPI:
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi
 *             if getenv(openmpi) != NULL:                           # ~> impi             # <<<<<<<<<<<<<<
 *                 bad_env = openmpi                                 # ~> impi
 *     if OPENMPI:
 */
      }

      /* "src/mpi4py/MPI.src/atimport.pxi":284
 *                 bad_env = openmpi                                 # ~> mpich
 *     if IMPI:
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi             # <<<<<<<<<<<<<<
 *             if getenv(openmpi) != NULL:                           # ~> impi
 *                 bad_env = openmpi                                 # ~> impi
 */
    }

    /* "src/mpi4py/MPI.src/atimport.pxi":283
 *             if getenv(openmpi) != NULL:                           # ~> mpich
 *                 bad_env = openmpi                                 # ~> mpich
 *     if IMPI:             # <<<<<<<<<<<<<<
 *         if getenv(impi) == NULL and getenv(pmi_sz) == NULL:       # ~> impi
 *             if getenv(openmpi) != NULL:                           # ~> impi
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":287
 *             if getenv(openmpi) != NULL:                           # ~> impi
 *                 bad_env = openmpi                                 # ~> impi
 *     if OPENMPI:             # <<<<<<<<<<<<<<
 *         if getenv(openmpi) == NULL:                               # ~> openmpi
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 */
  if (__pyx_v_OPENMPI) {

    /* "src/mpi4py/MPI.src/atimport.pxi":288
 *                 bad_env = openmpi                                 # ~> impi
 *     if OPENMPI:
 *         if getenv(openmpi) == NULL:                               # ~> openmpi             # <<<<<<<<<<<<<<
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi
 */
    __pyx_t_1 = (getenv(__pyx_v_openmpi) == NULL);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/atimport.pxi":289
 *     if OPENMPI:
 *         if getenv(openmpi) == NULL:                               # ~> openmpi
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi             # <<<<<<<<<<<<<<
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 */
      __pyx_t_3 = (getenv(__pyx_v_mpich) != NULL);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_3 = (getenv(__pyx_v_pmi_sz) != NULL);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L21_bool_binop_done:;
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/atimport.pxi":290
 *         if getenv(openmpi) == NULL:                               # ~> openmpi
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi             # <<<<<<<<<<<<<<
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi
 */
        __pyx_v_bad_env = __pyx_v_pmi_sz;

        /* "src/mpi4py/MPI.src/atimport.pxi":289
 *     if OPENMPI:
 *         if getenv(openmpi) == NULL:                               # ~> openmpi
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi             # <<<<<<<<<<<<<<
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 */
      }

      /* "src/mpi4py/MPI.src/atimport.pxi":291
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi             # <<<<<<<<<<<<<<
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *     if bad_env != NULL:
 */
      __pyx_t_3 = (getenv(__pyx_v_impi) != NULL);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L24_bool_binop_done;
      }
      __pyx_t_3 = (getenv(__pyx_v_pmi_sz) != NULL);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L24_bool_binop_done:;
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/atimport.pxi":292
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi             # <<<<<<<<<<<<<<
 *     if bad_env != NULL:
 *         warn_mpiexec(bad_env, vendor)
 */
        __pyx_v_bad_env = __pyx_v_pmi_sz;

        /* "src/mpi4py/MPI.src/atimport.pxi":291
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi             # <<<<<<<<<<<<<<
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *     if bad_env != NULL:
 */
      }

      /* "src/mpi4py/MPI.src/atimport.pxi":288
 *                 bad_env = openmpi                                 # ~> impi
 *     if OPENMPI:
 *         if getenv(openmpi) == NULL:                               # ~> openmpi             # <<<<<<<<<<<<<<
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi
 */
    }

    /* "src/mpi4py/MPI.src/atimport.pxi":287
 *             if getenv(openmpi) != NULL:                           # ~> impi
 *                 bad_env = openmpi                                 # ~> impi
 *     if OPENMPI:             # <<<<<<<<<<<<<<
 *         if getenv(openmpi) == NULL:                               # ~> openmpi
 *             if getenv(mpich) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":293
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *     if bad_env != NULL:             # <<<<<<<<<<<<<<
 *         warn_mpiexec(bad_env, vendor)
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_bad_env != NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/atimport.pxi":294
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *     if bad_env != NULL:
 *         warn_mpiexec(bad_env, vendor)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_warn_mpiexec(__pyx_v_bad_env, __pyx_v_vendor); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 294, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/atimport.pxi":293
 *             if getenv(impi ) != NULL and getenv(pmi_sz) != NULL:  # ~> openmpi
 *                 bad_env = pmi_sz                                  # ~> openmpi
 *     if bad_env != NULL:             # <<<<<<<<<<<<<<
 *         warn_mpiexec(bad_env, vendor)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":295
 *     if bad_env != NULL:
 *         warn_mpiexec(bad_env, vendor)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":253
 *     )
 * 
 * cdef int check_mpiexec() except -1 nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr, size = 0
 *     ierr = MPI_Comm_size(MPI_COMM_WORLD, &size)
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.check_mpiexec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":302
 *     int Py_AtExit(void (*)() noexcept nogil)
 * 
 * cdef int bootstrap() except -1:             # <<<<<<<<<<<<<<
 *     # Get options from 'mpi4py.rc' module
 *     getOptions(&options)
 */

static int __pyx_f_6mpi4py_3MPI_bootstrap(void) {
  int __pyx_v_initialized;
  int __pyx_v_ierr;
  int __pyx_v_required;
  int __pyx_v_provided;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_UCS4 __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bootstrap", 1);

  /* "src/mpi4py/MPI.src/atimport.pxi":304
 * cdef int bootstrap() except -1:
 *     # Get options from 'mpi4py.rc' module
 *     getOptions(&options)             # <<<<<<<<<<<<<<
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit) < 0:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_getOptions((&__pyx_v_6mpi4py_3MPI_options)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":306
 *     getOptions(&options)
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit) < 0:             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(                                   # ~> uncovered
 *             b"WARNING: %s\n",                                # ~> uncovered
 */
  __pyx_t_2 = (Py_AtExit(__pyx_f_6mpi4py_3MPI_atexit) < 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/atimport.pxi":307
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit) < 0:
 *         PySys_WriteStderr(                                   # ~> uncovered             # <<<<<<<<<<<<<<
 *             b"WARNING: %s\n",                                # ~> uncovered
 *             b"could not register cleanup with Py_AtExit()",  # ~> uncovered
 */
    PySys_WriteStderr(((char *)"WARNING: %s\n"), ((char *)"could not register cleanup with Py_AtExit()"));

    /* "src/mpi4py/MPI.src/atimport.pxi":306
 *     getOptions(&options)
 *     # Cleanup at (the very end of) Python exit
 *     if Py_AtExit(atexit) < 0:             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(                                   # ~> uncovered
 *             b"WARNING: %s\n",                                # ~> uncovered
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":312
 *         )
 *     # Do we have to initialize MPI?
 *     cdef int initialized = 1             # <<<<<<<<<<<<<<
 *     <void>MPI_Initialized(&initialized)
 *     if initialized:
 */
  __pyx_v_initialized = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":313
 *     # Do we have to initialize MPI?
 *     cdef int initialized = 1
 *     <void>MPI_Initialized(&initialized)             # <<<<<<<<<<<<<<
 *     if initialized:
 *         options.finalize = 0  # ~> TODO
 */
  ((void)MPI_Initialized((&__pyx_v_initialized)));

  /* "src/mpi4py/MPI.src/atimport.pxi":314
 *     cdef int initialized = 1
 *     <void>MPI_Initialized(&initialized)
 *     if initialized:             # <<<<<<<<<<<<<<
 *         options.finalize = 0  # ~> TODO
 *         return 0              # ~> TODO
 */
  __pyx_t_2 = (__pyx_v_initialized != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/atimport.pxi":315
 *     <void>MPI_Initialized(&initialized)
 *     if initialized:
 *         options.finalize = 0  # ~> TODO             # <<<<<<<<<<<<<<
 *         return 0              # ~> TODO
 *     if not options.initialize:
 */
    __pyx_v_6mpi4py_3MPI_options.finalize = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":316
 *     if initialized:
 *         options.finalize = 0  # ~> TODO
 *         return 0              # ~> TODO             # <<<<<<<<<<<<<<
 *     if not options.initialize:
 *         return 0
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/atimport.pxi":314
 *     cdef int initialized = 1
 *     <void>MPI_Initialized(&initialized)
 *     if initialized:             # <<<<<<<<<<<<<<
 *         options.finalize = 0  # ~> TODO
 *         return 0              # ~> TODO
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":317
 *         options.finalize = 0  # ~> TODO
 *         return 0              # ~> TODO
 *     if not options.initialize:             # <<<<<<<<<<<<<<
 *         return 0
 *     # MPI initialization
 */
  __pyx_t_2 = (!__pyx_v_6mpi4py_3MPI_options.initialize);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/atimport.pxi":318
 *         return 0              # ~> TODO
 *     if not options.initialize:
 *         return 0             # <<<<<<<<<<<<<<
 *     # MPI initialization
 *     cdef int ierr = MPI_SUCCESS
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/atimport.pxi":317
 *         options.finalize = 0  # ~> TODO
 *         return 0              # ~> TODO
 *     if not options.initialize:             # <<<<<<<<<<<<<<
 *         return 0
 *     # MPI initialization
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":320
 *         return 0
 *     # MPI initialization
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef int required = MPI_THREAD_SINGLE
 *     cdef int provided = MPI_THREAD_SINGLE
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/atimport.pxi":321
 *     # MPI initialization
 *     cdef int ierr = MPI_SUCCESS
 *     cdef int required = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     cdef int provided = MPI_THREAD_SINGLE
 *     if options.threads:
 */
  __pyx_v_required = MPI_THREAD_SINGLE;

  /* "src/mpi4py/MPI.src/atimport.pxi":322
 *     cdef int ierr = MPI_SUCCESS
 *     cdef int required = MPI_THREAD_SINGLE
 *     cdef int provided = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     if options.threads:
 *         required = options.thread_level
 */
  __pyx_v_provided = MPI_THREAD_SINGLE;

  /* "src/mpi4py/MPI.src/atimport.pxi":323
 *     cdef int required = MPI_THREAD_SINGLE
 *     cdef int provided = MPI_THREAD_SINGLE
 *     if options.threads:             # <<<<<<<<<<<<<<
 *         required = options.thread_level
 *         ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 */
  if (__pyx_v_6mpi4py_3MPI_options.threads) {

    /* "src/mpi4py/MPI.src/atimport.pxi":324
 *     cdef int provided = MPI_THREAD_SINGLE
 *     if options.threads:
 *         required = options.thread_level             # <<<<<<<<<<<<<<
 *         ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *         if ierr != MPI_SUCCESS:
 */
    __pyx_t_1 = __pyx_v_6mpi4py_3MPI_options.thread_level;
    __pyx_v_required = __pyx_t_1;

    /* "src/mpi4py/MPI.src/atimport.pxi":325
 *     if options.threads:
 *         required = options.thread_level
 *         ierr = MPI_Init_thread(NULL, NULL, required, &provided)             # <<<<<<<<<<<<<<
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 */
    __pyx_v_ierr = MPI_Init_thread(NULL, NULL, __pyx_v_required, (&__pyx_v_provided));

    /* "src/mpi4py/MPI.src/atimport.pxi":326
 *         required = options.thread_level
 *         ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *         if ierr != MPI_SUCCESS:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init_thread() failed "  # ~> uncovered
 */
    __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
    if (unlikely(__pyx_t_2)) {

      /* "src/mpi4py/MPI.src/atimport.pxi":328
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init_thread() failed "  # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     else:
 */
      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 0;
      __pyx_t_5 = 127;
      __Pyx_INCREF(__pyx_kp_u_MPI_Init_thread_failed_error_cod);
      __pyx_t_4 += 38;
      __Pyx_GIVEREF(__pyx_kp_u_MPI_Init_thread_failed_error_cod);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_MPI_Init_thread_failed_error_cod);

      /* "src/mpi4py/MPI.src/atimport.pxi":329
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init_thread() failed "  # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered             # <<<<<<<<<<<<<<
 *     else:
 *         ierr = MPI_Init(NULL, NULL)
 */
      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_ierr, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_kp_u__3);
      __pyx_t_4 += 1;
      __Pyx_GIVEREF(__pyx_kp_u__3);
      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__3);

      /* "src/mpi4py/MPI.src/atimport.pxi":328
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init_thread() failed "  # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     else:
 */
      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 328, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/atimport.pxi":327
 *         ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"MPI_Init_thread() failed "  # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered
 */
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 327, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(2, 327, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/atimport.pxi":326
 *         required = options.thread_level
 *         ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 *         if ierr != MPI_SUCCESS:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init_thread() failed "  # ~> uncovered
 */
    }

    /* "src/mpi4py/MPI.src/atimport.pxi":323
 *     cdef int required = MPI_THREAD_SINGLE
 *     cdef int provided = MPI_THREAD_SINGLE
 *     if options.threads:             # <<<<<<<<<<<<<<
 *         required = options.thread_level
 *         ierr = MPI_Init_thread(NULL, NULL, required, &provided)
 */
    goto __pyx_L6;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":331
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     else:
 *         ierr = MPI_Init(NULL, NULL)             # <<<<<<<<<<<<<<
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 */
  /*else*/ {
    __pyx_v_ierr = MPI_Init(NULL, NULL);

    /* "src/mpi4py/MPI.src/atimport.pxi":332
 *     else:
 *         ierr = MPI_Init(NULL, NULL)
 *         if ierr != MPI_SUCCESS:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init() failed "         # ~> uncovered
 */
    __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
    if (unlikely(__pyx_t_2)) {

      /* "src/mpi4py/MPI.src/atimport.pxi":334
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init() failed "         # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     return 0
 */
      __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 334, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 0;
      __pyx_t_5 = 127;
      __Pyx_INCREF(__pyx_kp_u_MPI_Init_failed_error_code);
      __pyx_t_4 += 31;
      __Pyx_GIVEREF(__pyx_kp_u_MPI_Init_failed_error_code);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_MPI_Init_failed_error_code);

      /* "src/mpi4py/MPI.src/atimport.pxi":335
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init() failed "         # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_ierr, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 335, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_kp_u__3);
      __pyx_t_4 += 1;
      __Pyx_GIVEREF(__pyx_kp_u__3);
      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__3);

      /* "src/mpi4py/MPI.src/atimport.pxi":334
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init() failed "         # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     return 0
 */
      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 334, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/atimport.pxi":333
 *         ierr = MPI_Init(NULL, NULL)
 *         if ierr != MPI_SUCCESS:
 *             raise RuntimeError(               # ~> uncovered             # <<<<<<<<<<<<<<
 *                 f"MPI_Init() failed "         # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered
 */
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(2, 333, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/atimport.pxi":332
 *     else:
 *         ierr = MPI_Init(NULL, NULL)
 *         if ierr != MPI_SUCCESS:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(               # ~> uncovered
 *                 f"MPI_Init() failed "         # ~> uncovered
 */
    }
  }
  __pyx_L6:;

  /* "src/mpi4py/MPI.src/atimport.pxi":336
 *                 f"MPI_Init() failed "         # ~> uncovered
 *                 f"[error code: {ierr}]")      # ~> uncovered
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":302
 *     int Py_AtExit(void (*)() noexcept nogil)
 * 
 * cdef int bootstrap() except -1:             # <<<<<<<<<<<<<<
 *     # Get options from 'mpi4py.rc' module
 *     getOptions(&options)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.bootstrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":340
 * 
 * @cython.linetrace(False)
 * cdef inline int mpi_active() noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_mpi_active(void) {
  int __pyx_v_ierr;
  int __pyx_v_initialized;
  int __pyx_v_finalized;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/atimport.pxi":341
 * @cython.linetrace(False)
 * cdef inline int mpi_active() noexcept nogil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     # MPI initialized ?
 *     cdef int initialized = 0
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/atimport.pxi":343
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 *     cdef int initialized = 0             # <<<<<<<<<<<<<<
 *     ierr = MPI_Initialized(&initialized)
 *     if not initialized or ierr != MPI_SUCCESS: return 0
 */
  __pyx_v_initialized = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":344
 *     # MPI initialized ?
 *     cdef int initialized = 0
 *     ierr = MPI_Initialized(&initialized)             # <<<<<<<<<<<<<<
 *     if not initialized or ierr != MPI_SUCCESS: return 0
 *     # MPI finalized ?
 */
  __pyx_v_ierr = MPI_Initialized((&__pyx_v_initialized));

  /* "src/mpi4py/MPI.src/atimport.pxi":345
 *     cdef int initialized = 0
 *     ierr = MPI_Initialized(&initialized)
 *     if not initialized or ierr != MPI_SUCCESS: return 0             # <<<<<<<<<<<<<<
 *     # MPI finalized ?
 *     cdef int finalized = 1
 */
  __pyx_t_2 = (!(__pyx_v_initialized != 0));
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":347
 *     if not initialized or ierr != MPI_SUCCESS: return 0
 *     # MPI finalized ?
 *     cdef int finalized = 1             # <<<<<<<<<<<<<<
 *     ierr = MPI_Finalized(&finalized)
 *     if finalized or ierr != MPI_SUCCESS: return 0
 */
  __pyx_v_finalized = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":348
 *     # MPI finalized ?
 *     cdef int finalized = 1
 *     ierr = MPI_Finalized(&finalized)             # <<<<<<<<<<<<<<
 *     if finalized or ierr != MPI_SUCCESS: return 0
 *     # MPI should be active ...
 */
  __pyx_v_ierr = MPI_Finalized((&__pyx_v_finalized));

  /* "src/mpi4py/MPI.src/atimport.pxi":349
 *     cdef int finalized = 1
 *     ierr = MPI_Finalized(&finalized)
 *     if finalized or ierr != MPI_SUCCESS: return 0             # <<<<<<<<<<<<<<
 *     # MPI should be active ...
 *     return 1
 */
  __pyx_t_2 = (__pyx_v_finalized != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_ierr != MPI_SUCCESS);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":351
 *     if finalized or ierr != MPI_SUCCESS: return 0
 *     # MPI should be active ...
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":340
 * 
 * @cython.linetrace(False)
 * cdef inline int mpi_active() noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     # MPI initialized ?
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":358
 * cdef int mpi_numversion = 0
 * 
 * cdef int initialize() except -1 nogil:             # <<<<<<<<<<<<<<
 *     global mpi_version, mpi_subversion, mpi_numversion
 *     <void> MPI_Get_version(&mpi_version, &mpi_subversion)
 */

static int __pyx_f_6mpi4py_3MPI_initialize(void) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/atimport.pxi":360
 * cdef int initialize() except -1 nogil:
 *     global mpi_version, mpi_subversion, mpi_numversion
 *     <void> MPI_Get_version(&mpi_version, &mpi_subversion)             # <<<<<<<<<<<<<<
 *     mpi_numversion = 10 * mpi_version + mpi_subversion
 *     if not mpi_active(): return 0
 */
  ((void)MPI_Get_version((&__pyx_v_6mpi4py_3MPI_mpi_version), (&__pyx_v_6mpi4py_3MPI_mpi_subversion)));

  /* "src/mpi4py/MPI.src/atimport.pxi":361
 *     global mpi_version, mpi_subversion, mpi_numversion
 *     <void> MPI_Get_version(&mpi_version, &mpi_subversion)
 *     mpi_numversion = 10 * mpi_version + mpi_subversion             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     check_mpiexec()
 */
  __pyx_v_6mpi4py_3MPI_mpi_numversion = ((10 * __pyx_v_6mpi4py_3MPI_mpi_version) + __pyx_v_6mpi4py_3MPI_mpi_subversion);

  /* "src/mpi4py/MPI.src/atimport.pxi":362
 *     <void> MPI_Get_version(&mpi_version, &mpi_subversion)
 *     mpi_numversion = 10 * mpi_version + mpi_subversion
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     check_mpiexec()
 *     comm_set_eh(MPI_COMM_SELF)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":363
 *     mpi_numversion = 10 * mpi_version + mpi_subversion
 *     if not mpi_active(): return 0
 *     check_mpiexec()             # <<<<<<<<<<<<<<
 *     comm_set_eh(MPI_COMM_SELF)
 *     comm_set_eh(MPI_COMM_WORLD)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_check_mpiexec(); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 363, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":364
 *     if not mpi_active(): return 0
 *     check_mpiexec()
 *     comm_set_eh(MPI_COMM_SELF)             # <<<<<<<<<<<<<<
 *     comm_set_eh(MPI_COMM_WORLD)
 *     return 0
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_comm_set_eh(MPI_COMM_SELF); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":365
 *     check_mpiexec()
 *     comm_set_eh(MPI_COMM_SELF)
 *     comm_set_eh(MPI_COMM_WORLD)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_comm_set_eh(MPI_COMM_WORLD); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 365, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":366
 *     comm_set_eh(MPI_COMM_SELF)
 *     comm_set_eh(MPI_COMM_WORLD)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":358
 * cdef int mpi_numversion = 0
 * 
 * cdef int initialize() except -1 nogil:             # <<<<<<<<<<<<<<
 *     global mpi_version, mpi_subversion, mpi_numversion
 *     <void> MPI_Get_version(&mpi_version, &mpi_subversion)
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.initialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":370
 * 
 * @cython.linetrace(False)
 * cdef void finalize() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     <void>PyMPI_Commctx_finalize()
 */

static void __pyx_f_6mpi4py_3MPI_finalize(void) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/atimport.pxi":371
 * @cython.linetrace(False)
 * cdef void finalize() noexcept nogil:
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     <void>PyMPI_Commctx_finalize()
 * 
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":372
 * cdef void finalize() noexcept nogil:
 *     if not mpi_active(): return
 *     <void>PyMPI_Commctx_finalize()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  ((void)PyMPI_Commctx_finalize());

  /* "src/mpi4py/MPI.src/atimport.pxi":370
 * 
 * @cython.linetrace(False)
 * cdef void finalize() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     <void>PyMPI_Commctx_finalize()
 */

  /* function exit code */
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/atimport.pxi":379
 * 
 * @cython.linetrace(False)
 * cdef void atexit() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     if abort_status:
 */

static void __pyx_f_6mpi4py_3MPI_atexit(void) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/atimport.pxi":380
 * @cython.linetrace(False)
 * cdef void atexit() noexcept nogil:
 *     if not mpi_active(): return             # <<<<<<<<<<<<<<
 *     if abort_status:
 *         <void>MPI_Abort(MPI_COMM_WORLD, abort_status)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":381
 * cdef void atexit() noexcept nogil:
 *     if not mpi_active(): return
 *     if abort_status:             # <<<<<<<<<<<<<<
 *         <void>MPI_Abort(MPI_COMM_WORLD, abort_status)
 *     finalize()
 */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_abort_status != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/atimport.pxi":382
 *     if not mpi_active(): return
 *     if abort_status:
 *         <void>MPI_Abort(MPI_COMM_WORLD, abort_status)             # <<<<<<<<<<<<<<
 *     finalize()
 *     if options.finalize:
 */
    ((void)MPI_Abort(MPI_COMM_WORLD, __pyx_v_6mpi4py_3MPI_abort_status));

    /* "src/mpi4py/MPI.src/atimport.pxi":381
 * cdef void atexit() noexcept nogil:
 *     if not mpi_active(): return
 *     if abort_status:             # <<<<<<<<<<<<<<
 *         <void>MPI_Abort(MPI_COMM_WORLD, abort_status)
 *     finalize()
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":383
 *     if abort_status:
 *         <void>MPI_Abort(MPI_COMM_WORLD, abort_status)
 *     finalize()             # <<<<<<<<<<<<<<
 *     if options.finalize:
 *         <void>MPI_Finalize()
 */
  __pyx_f_6mpi4py_3MPI_finalize();

  /* "src/mpi4py/MPI.src/atimport.pxi":384
 *         <void>MPI_Abort(MPI_COMM_WORLD, abort_status)
 *     finalize()
 *     if options.finalize:             # <<<<<<<<<<<<<<
 *         <void>MPI_Finalize()
 * 
 */
  if (__pyx_v_6mpi4py_3MPI_options.finalize) {

    /* "src/mpi4py/MPI.src/atimport.pxi":385
 *     finalize()
 *     if options.finalize:
 *         <void>MPI_Finalize()             # <<<<<<<<<<<<<<
 * 
 * 
 */
    ((void)MPI_Finalize());

    /* "src/mpi4py/MPI.src/atimport.pxi":384
 *         <void>MPI_Abort(MPI_COMM_WORLD, abort_status)
 *     finalize()
 *     if options.finalize:             # <<<<<<<<<<<<<<
 *         <void>MPI_Finalize()
 * 
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":379
 * 
 * @cython.linetrace(False)
 * cdef void atexit() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return
 *     if abort_status:
 */

  /* function exit code */
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/atimport.pxi":388
 * 
 * 
 * def _set_abort_status(int status: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Helper for ``python -m mpi4py.run ...``.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_1_set_abort_status(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI__set_abort_status, "_set_abort_status(status: int) -> None\n\n    Helper for ``python -m mpi4py.run ...``.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_1_set_abort_status = {"_set_abort_status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_1_set_abort_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI__set_abort_status};
static PyObject *__pyx_pw_6mpi4py_3MPI_1_set_abort_status(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_status;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_abort_status (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 388, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_set_abort_status") < 0)) __PYX_ERR(2, 388, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_status = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_status == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 388, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_set_abort_status", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 388, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._set_abort_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI__set_abort_status(__pyx_self, __pyx_v_status);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI__set_abort_status(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_set_abort_status", 1);

  /* "src/mpi4py/MPI.src/atimport.pxi":393
 *     """
 *     global abort_status
 *     abort_status = status             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_6mpi4py_3MPI_abort_status = __pyx_v_status;

  /* "src/mpi4py/MPI.src/atimport.pxi":388
 * 
 * 
 * def _set_abort_status(int status: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Helper for ``python -m mpi4py.run ...``.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":405
 * cdef object MPIException = <object>PyExc_RuntimeError
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:             # <<<<<<<<<<<<<<
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered
 */

static int __pyx_f_6mpi4py_3MPI_PyMPI_Raise(int __pyx_v_ierr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("PyMPI_Raise", 0);

  /* "src/mpi4py/MPI.src/atimport.pxi":406
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == PyMPI_ERR_UNAVAILABLE:             # <<<<<<<<<<<<<<
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered
 *         return 0                                                  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_ierr == PyMPI_ERR_UNAVAILABLE);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/atimport.pxi":407
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered             # <<<<<<<<<<<<<<
 *         return 0                                                  # ~> uncovered
 *     if (<void*>MPIException) == NULL:
 */
    __pyx_t_2 = ((PyObject *)PyExc_NotImplementedError);
    __Pyx_INCREF(__pyx_t_2);
    PyErr_SetObject(__pyx_t_2, Py_None);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":408
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered
 *         return 0                                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if (<void*>MPIException) == NULL:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)   # ~> uncovered
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/atimport.pxi":406
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 *     if ierr == PyMPI_ERR_UNAVAILABLE:             # <<<<<<<<<<<<<<
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered
 *         return 0                                                  # ~> uncovered
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":409
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered
 *         return 0                                                  # ~> uncovered
 *     if (<void*>MPIException) == NULL:             # <<<<<<<<<<<<<<
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)   # ~> uncovered
 *         return 0                                                  # ~> uncovered
 */
  __pyx_t_1 = (((void *)__pyx_v_6mpi4py_3MPI_MPIException) == NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/atimport.pxi":410
 *         return 0                                                  # ~> uncovered
 *     if (<void*>MPIException) == NULL:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)   # ~> uncovered             # <<<<<<<<<<<<<<
 *         return 0                                                  # ~> uncovered
 *     PyErr_SetObject(MPIException, <long>ierr)
 */
    __pyx_t_2 = ((PyObject *)PyExc_RuntimeError);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_From_long(((long)__pyx_v_ierr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    PyErr_SetObject(__pyx_t_2, __pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/atimport.pxi":411
 *     if (<void*>MPIException) == NULL:
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)   # ~> uncovered
 *         return 0                                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *     PyErr_SetObject(MPIException, <long>ierr)
 *     return 0
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/atimport.pxi":409
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered
 *         return 0                                                  # ~> uncovered
 *     if (<void*>MPIException) == NULL:             # <<<<<<<<<<<<<<
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)   # ~> uncovered
 *         return 0                                                  # ~> uncovered
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":412
 *         PyErr_SetObject(<object>PyExc_RuntimeError, <long>ierr)   # ~> uncovered
 *         return 0                                                  # ~> uncovered
 *     PyErr_SetObject(MPIException, <long>ierr)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_3 = __pyx_v_6mpi4py_3MPI_MPIException;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyInt_From_long(((long)__pyx_v_ierr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 412, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  PyErr_SetObject(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":413
 *         return 0                                                  # ~> uncovered
 *     PyErr_SetObject(MPIException, <long>ierr)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int CHKERR(int ierr) except -1 nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":405
 * cdef object MPIException = <object>PyExc_RuntimeError
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:             # <<<<<<<<<<<<<<
 *     if ierr == PyMPI_ERR_UNAVAILABLE:
 *         PyErr_SetObject(<object>PyExc_NotImplementedError, None)  # ~> uncovered
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Raise", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":415
 *     return 0
 * 
 * cdef inline int CHKERR(int ierr) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ierr == MPI_SUCCESS: return 0
 *     PyMPI_Raise(ierr)
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_CHKERR(int __pyx_v_ierr) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/atimport.pxi":416
 * 
 * cdef inline int CHKERR(int ierr) except -1 nogil:
 *     if ierr == MPI_SUCCESS: return 0             # <<<<<<<<<<<<<<
 *     PyMPI_Raise(ierr)
 *     return -1
 */
  __pyx_t_1 = (__pyx_v_ierr == MPI_SUCCESS);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":417
 * cdef inline int CHKERR(int ierr) except -1 nogil:
 *     if ierr == MPI_SUCCESS: return 0
 *     PyMPI_Raise(ierr)             # <<<<<<<<<<<<<<
 *     return -1
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_Raise(__pyx_v_ierr); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(2, 417, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":418
 *     if ierr == MPI_SUCCESS: return 0
 *     PyMPI_Raise(ierr)
 *     return -1             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_HandleException(object exc) noexcept:
 */
  __pyx_r = -1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":415
 *     return 0
 * 
 * cdef inline int CHKERR(int ierr) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ierr == MPI_SUCCESS: return 0
 *     PyMPI_Raise(ierr)
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.CHKERR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":420
 *     return -1
 * 
 * cdef int PyMPI_HandleException(object exc) noexcept:             # <<<<<<<<<<<<<<
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:
 */

static int __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(PyObject *__pyx_v_exc) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/atimport.pxi":421
 * 
 * cdef int PyMPI_HandleException(object exc) noexcept:
 *     PyErr_DisplayException(exc)             # <<<<<<<<<<<<<<
 *     if (<void*>MPIException) != NULL:
 *         if isinstance(exc, Exception):
 */
  PyErr_DisplayException(__pyx_v_exc);

  /* "src/mpi4py/MPI.src/atimport.pxi":422
 * cdef int PyMPI_HandleException(object exc) noexcept:
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:             # <<<<<<<<<<<<<<
 *         if isinstance(exc, Exception):
 *             return (<Exception>exc).ob_mpi
 */
  __pyx_t_1 = (((void *)__pyx_v_6mpi4py_3MPI_MPIException) != NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/atimport.pxi":423
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:
 *         if isinstance(exc, Exception):             # <<<<<<<<<<<<<<
 *             return (<Exception>exc).ob_mpi
 *     return MPI_ERR_OTHER
 */
    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_exc, __pyx_ptype_6mpi4py_3MPI_Exception); 
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/atimport.pxi":424
 *     if (<void*>MPIException) != NULL:
 *         if isinstance(exc, Exception):
 *             return (<Exception>exc).ob_mpi             # <<<<<<<<<<<<<<
 *     return MPI_ERR_OTHER
 * 
 */
      __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_exc)->ob_mpi;
      goto __pyx_L0;

      /* "src/mpi4py/MPI.src/atimport.pxi":423
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:
 *         if isinstance(exc, Exception):             # <<<<<<<<<<<<<<
 *             return (<Exception>exc).ob_mpi
 *     return MPI_ERR_OTHER
 */
    }

    /* "src/mpi4py/MPI.src/atimport.pxi":422
 * cdef int PyMPI_HandleException(object exc) noexcept:
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:             # <<<<<<<<<<<<<<
 *         if isinstance(exc, Exception):
 *             return (<Exception>exc).ob_mpi
 */
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":425
 *         if isinstance(exc, Exception):
 *             return (<Exception>exc).ob_mpi
 *     return MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = MPI_ERR_OTHER;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":420
 *     return -1
 * 
 * cdef int PyMPI_HandleException(object exc) noexcept:             # <<<<<<<<<<<<<<
 *     PyErr_DisplayException(exc)
 *     if (<void*>MPIException) != NULL:
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":437
 * 
 * @cython.linetrace(False)
 * cdef inline int py_module_alive() noexcept nogil:             # <<<<<<<<<<<<<<
 *     return NULL != <void *>_py_module_sentinel
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_py_module_alive(void) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/atimport.pxi":438
 * @cython.linetrace(False)
 * cdef inline int py_module_alive() noexcept nogil:
 *     return NULL != <void *>_py_module_sentinel             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = (NULL != ((void *)__pyx_v_6mpi4py_3MPI__py_module_sentinel));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":437
 * 
 * @cython.linetrace(False)
 * cdef inline int py_module_alive() noexcept nogil:             # <<<<<<<<<<<<<<
 *     return NULL != <void *>_py_module_sentinel
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/atimport.pxi":442
 * 
 * @cython.linetrace(False)
 * cdef inline int Py_IsInitialized() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if PYPY and not py_module_alive(): return 0
 *     return _Py_IsInitialized()
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_Py_IsInitialized(void) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/atimport.pxi":443
 * @cython.linetrace(False)
 * cdef inline int Py_IsInitialized() noexcept nogil:
 *     if PYPY and not py_module_alive(): return 0             # <<<<<<<<<<<<<<
 *     return _Py_IsInitialized()
 * 
 */
  if (PyMPI_RUNTIME_PYPY) {
  } else {
    __pyx_t_1 = PyMPI_RUNTIME_PYPY;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/atimport.pxi":444
 * cdef inline int Py_IsInitialized() noexcept nogil:
 *     if PYPY and not py_module_alive(): return 0
 *     return _Py_IsInitialized()             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = Py_IsInitialized();
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/atimport.pxi":442
 * 
 * @cython.linetrace(False)
 * cdef inline int Py_IsInitialized() noexcept nogil:             # <<<<<<<<<<<<<<
 *     if PYPY and not py_module_alive(): return 0
 *     return _Py_IsInitialized()
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/allocate.pxi":25
 *     cdef void (*free)(void*) noexcept
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf = NULL
 *         self.len = 0
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6_PyMem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6_PyMem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6_PyMem___cinit__(((struct __pyx_obj_6mpi4py_3MPI__PyMem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6_PyMem___cinit__(struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/allocate.pxi":26
 * 
 *     def __cinit__(self):
 *         self.buf = NULL             # <<<<<<<<<<<<<<
 *         self.len = 0
 *         self.free = NULL
 */
  __pyx_v_self->buf = NULL;

  /* "src/mpi4py/MPI.src/allocate.pxi":27
 *     def __cinit__(self):
 *         self.buf = NULL
 *         self.len = 0             # <<<<<<<<<<<<<<
 *         self.free = NULL
 * 
 */
  __pyx_v_self->len = 0;

  /* "src/mpi4py/MPI.src/allocate.pxi":28
 *         self.buf = NULL
 *         self.len = 0
 *         self.free = NULL             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_v_self->free = NULL;

  /* "src/mpi4py/MPI.src/allocate.pxi":25
 *     cdef void (*free)(void*) noexcept
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf = NULL
 *         self.len = 0
 */

  /* function exit code */
  __pyx_r = 0;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/allocate.pxi":30
 *         self.free = NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.free:
 *             self.free(self.buf)
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_6_PyMem_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_6_PyMem_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_6_PyMem_2__dealloc__(((struct __pyx_obj_6mpi4py_3MPI__PyMem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_6_PyMem_2__dealloc__(struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_self) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/allocate.pxi":31
 * 
 *     def __dealloc__(self):
 *         if self.free:             # <<<<<<<<<<<<<<
 *             self.free(self.buf)
 * 
 */
  __pyx_t_1 = (__pyx_v_self->free != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/allocate.pxi":32
 *     def __dealloc__(self):
 *         if self.free:
 *             self.free(self.buf)             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 */
    __pyx_v_self->free(__pyx_v_self->buf);

    /* "src/mpi4py/MPI.src/allocate.pxi":31
 * 
 *     def __dealloc__(self):
 *         if self.free:             # <<<<<<<<<<<<<<
 *             self.free(self.buf)
 * 
 */
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":30
 *         self.free = NULL
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.free:
 *             self.free(self.buf)
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/allocate.pxi":34
 *             self.free(self.buf)
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, self, self.buf, self.len, 0, flags)
 * 
 */

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_6_PyMem_5__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_6_PyMem_5__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6_PyMem_4__getbuffer__(((struct __pyx_obj_6mpi4py_3MPI__PyMem *)__pyx_v_self), ((Py_buffer *)__pyx_v_view), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6_PyMem_4__getbuffer__(struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (unlikely(__pyx_v_view == NULL)) {
    PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    return -1;
  }
  __pyx_v_view->obj = NULL;

  /* "src/mpi4py/MPI.src/allocate.pxi":35
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         PyBuffer_FillInfo(view, self, self.buf, self.len, 0, flags)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)__pyx_v_self), __pyx_v_self->buf, __pyx_v_self->len, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 35, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/allocate.pxi":34
 *             self.free(self.buf)
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, self, self.buf, self.len, 0, flags)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._PyMem.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  Py_CLEAR(__pyx_v_view->obj);
  goto __pyx_L2;
  __pyx_L0:;
  __pyx_L2:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/allocate.pxi":38
 * 
 * 
 * cdef inline _PyMem allocate(Py_ssize_t m, size_t b, void *buf):             # <<<<<<<<<<<<<<
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_f_6mpi4py_3MPI_allocate(Py_ssize_t __pyx_v_m, size_t __pyx_v_b, void *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_ob = 0;
  struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allocate", 1);

  /* "src/mpi4py/MPI.src/allocate.pxi":39
 * 
 * cdef inline _PyMem allocate(Py_ssize_t m, size_t b, void *buf):
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:             # <<<<<<<<<<<<<<
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:
 */
  __pyx_t_1 = (__pyx_v_m > (PY_SSIZE_T_MAX / ((Py_ssize_t)__pyx_v_b)));
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/allocate.pxi":40
 * cdef inline _PyMem allocate(Py_ssize_t m, size_t b, void *buf):
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(3, 40, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/allocate.pxi":39
 * 
 * cdef inline _PyMem allocate(Py_ssize_t m, size_t b, void *buf):
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:             # <<<<<<<<<<<<<<
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:
 */
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":41
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 */
  __pyx_t_1 = (__pyx_v_m < 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/allocate.pxi":42
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered             # <<<<<<<<<<<<<<
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 *     ob.len  = m * <Py_ssize_t>b
 */
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(3, 42, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/allocate.pxi":41
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 */
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":43
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)             # <<<<<<<<<<<<<<
 *     ob.len  = m * <Py_ssize_t>b
 *     ob.free = PyMem_Free
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI__PyMem); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_ob = ((struct __pyx_obj_6mpi4py_3MPI__PyMem *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/allocate.pxi":44
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 *     ob.len  = m * <Py_ssize_t>b             # <<<<<<<<<<<<<<
 *     ob.free = PyMem_Free
 *     ob.buf  = PyMem_Malloc(<size_t>m * b)
 */
  __pyx_v_ob->len = (__pyx_v_m * ((Py_ssize_t)__pyx_v_b));

  /* "src/mpi4py/MPI.src/allocate.pxi":45
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 *     ob.len  = m * <Py_ssize_t>b
 *     ob.free = PyMem_Free             # <<<<<<<<<<<<<<
 *     ob.buf  = PyMem_Malloc(<size_t>m * b)
 *     if ob.buf == NULL: raise MemoryError
 */
  __pyx_v_ob->free = PyMem_Free;

  /* "src/mpi4py/MPI.src/allocate.pxi":46
 *     ob.len  = m * <Py_ssize_t>b
 *     ob.free = PyMem_Free
 *     ob.buf  = PyMem_Malloc(<size_t>m * b)             # <<<<<<<<<<<<<<
 *     if ob.buf == NULL: raise MemoryError
 *     if buf != NULL: (<void**>buf)[0] = ob.buf
 */
  __pyx_v_ob->buf = PyMem_Malloc((((size_t)__pyx_v_m) * __pyx_v_b));

  /* "src/mpi4py/MPI.src/allocate.pxi":47
 *     ob.free = PyMem_Free
 *     ob.buf  = PyMem_Malloc(<size_t>m * b)
 *     if ob.buf == NULL: raise MemoryError             # <<<<<<<<<<<<<<
 *     if buf != NULL: (<void**>buf)[0] = ob.buf
 *     return ob
 */
  __pyx_t_1 = (__pyx_v_ob->buf == NULL);
  if (unlikely(__pyx_t_1)) {
    PyErr_NoMemory(); __PYX_ERR(3, 47, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":48
 *     ob.buf  = PyMem_Malloc(<size_t>m * b)
 *     if ob.buf == NULL: raise MemoryError
 *     if buf != NULL: (<void**>buf)[0] = ob.buf             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  __pyx_t_1 = (__pyx_v_buf != NULL);
  if (__pyx_t_1) {
    __pyx_t_4 = __pyx_v_ob->buf;
    (((void **)__pyx_v_buf)[0]) = __pyx_t_4;
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":49
 *     if ob.buf == NULL: raise MemoryError
 *     if buf != NULL: (<void**>buf)[0] = ob.buf
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/allocate.pxi":38
 * 
 * 
 * cdef inline _PyMem allocate(Py_ssize_t m, size_t b, void *buf):             # <<<<<<<<<<<<<<
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.allocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ob);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/allocate.pxi":52
 * 
 * 
 * cdef inline _PyMem rawalloc(Py_ssize_t m, size_t b, bint clear, void *buf):             # <<<<<<<<<<<<<<
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_f_6mpi4py_3MPI_rawalloc(Py_ssize_t __pyx_v_m, size_t __pyx_v_b, int __pyx_v_clear, void *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_v_ob = 0;
  struct __pyx_obj_6mpi4py_3MPI__PyMem *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rawalloc", 1);

  /* "src/mpi4py/MPI.src/allocate.pxi":53
 * 
 * cdef inline _PyMem rawalloc(Py_ssize_t m, size_t b, bint clear, void *buf):
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:             # <<<<<<<<<<<<<<
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:
 */
  __pyx_t_1 = (__pyx_v_m > (PY_SSIZE_T_MAX / ((Py_ssize_t)__pyx_v_b)));
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/allocate.pxi":54
 * cdef inline _PyMem rawalloc(Py_ssize_t m, size_t b, bint clear, void *buf):
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(3, 54, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/allocate.pxi":53
 * 
 * cdef inline _PyMem rawalloc(Py_ssize_t m, size_t b, bint clear, void *buf):
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:             # <<<<<<<<<<<<<<
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:
 */
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":55
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 */
  __pyx_t_1 = (__pyx_v_m < 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/allocate.pxi":56
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered             # <<<<<<<<<<<<<<
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 *     ob.len = m * <Py_ssize_t>b
 */
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(3, 56, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/allocate.pxi":55
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:             # <<<<<<<<<<<<<<
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 */
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":57
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)             # <<<<<<<<<<<<<<
 *     ob.len = m * <Py_ssize_t>b
 *     ob.free = PyMem_RawFree
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI__PyMem); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_ob = ((struct __pyx_obj_6mpi4py_3MPI__PyMem *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/allocate.pxi":58
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 *     ob.len = m * <Py_ssize_t>b             # <<<<<<<<<<<<<<
 *     ob.free = PyMem_RawFree
 *     if clear:
 */
  __pyx_v_ob->len = (__pyx_v_m * ((Py_ssize_t)__pyx_v_b));

  /* "src/mpi4py/MPI.src/allocate.pxi":59
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 *     ob.len = m * <Py_ssize_t>b
 *     ob.free = PyMem_RawFree             # <<<<<<<<<<<<<<
 *     if clear:
 *         ob.buf = PyMem_RawCalloc(<size_t>m, b)
 */
  __pyx_v_ob->free = PyMem_RawFree;

  /* "src/mpi4py/MPI.src/allocate.pxi":60
 *     ob.len = m * <Py_ssize_t>b
 *     ob.free = PyMem_RawFree
 *     if clear:             # <<<<<<<<<<<<<<
 *         ob.buf = PyMem_RawCalloc(<size_t>m, b)
 *     else:
 */
  if (__pyx_v_clear) {

    /* "src/mpi4py/MPI.src/allocate.pxi":61
 *     ob.free = PyMem_RawFree
 *     if clear:
 *         ob.buf = PyMem_RawCalloc(<size_t>m, b)             # <<<<<<<<<<<<<<
 *     else:
 *         ob.buf = PyMem_RawMalloc(<size_t>m * b)
 */
    __pyx_v_ob->buf = PyMem_RawCalloc(((size_t)__pyx_v_m), __pyx_v_b);

    /* "src/mpi4py/MPI.src/allocate.pxi":60
 *     ob.len = m * <Py_ssize_t>b
 *     ob.free = PyMem_RawFree
 *     if clear:             # <<<<<<<<<<<<<<
 *         ob.buf = PyMem_RawCalloc(<size_t>m, b)
 *     else:
 */
    goto __pyx_L5;
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":63
 *         ob.buf = PyMem_RawCalloc(<size_t>m, b)
 *     else:
 *         ob.buf = PyMem_RawMalloc(<size_t>m * b)             # <<<<<<<<<<<<<<
 *     if ob.buf == NULL: raise MemoryError
 *     if buf != NULL: (<void**>buf)[0] = ob.buf
 */
  /*else*/ {
    __pyx_v_ob->buf = PyMem_RawMalloc((((size_t)__pyx_v_m) * __pyx_v_b));
  }
  __pyx_L5:;

  /* "src/mpi4py/MPI.src/allocate.pxi":64
 *     else:
 *         ob.buf = PyMem_RawMalloc(<size_t>m * b)
 *     if ob.buf == NULL: raise MemoryError             # <<<<<<<<<<<<<<
 *     if buf != NULL: (<void**>buf)[0] = ob.buf
 *     return ob
 */
  __pyx_t_1 = (__pyx_v_ob->buf == NULL);
  if (unlikely(__pyx_t_1)) {
    PyErr_NoMemory(); __PYX_ERR(3, 64, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":65
 *         ob.buf = PyMem_RawMalloc(<size_t>m * b)
 *     if ob.buf == NULL: raise MemoryError
 *     if buf != NULL: (<void**>buf)[0] = ob.buf             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  __pyx_t_1 = (__pyx_v_buf != NULL);
  if (__pyx_t_1) {
    __pyx_t_4 = __pyx_v_ob->buf;
    (((void **)__pyx_v_buf)[0]) = __pyx_t_4;
  }

  /* "src/mpi4py/MPI.src/allocate.pxi":66
 *     if ob.buf == NULL: raise MemoryError
 *     if buf != NULL: (<void**>buf)[0] = ob.buf
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/allocate.pxi":52
 * 
 * 
 * cdef inline _PyMem rawalloc(Py_ssize_t m, size_t b, bint clear, void *buf):             # <<<<<<<<<<<<<<
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.rawalloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ob);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asstring.pxi":14
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object asmpistr(object ob, char *s[]):             # <<<<<<<<<<<<<<
 *     if PyUnicode_Check(ob):
 *         ob = PyUnicode_AsUTF8String(ob)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmpistr(PyObject *__pyx_v_ob, char **__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asmpistr", 0);
  __Pyx_INCREF(__pyx_v_ob);

  /* "src/mpi4py/MPI.src/asstring.pxi":15
 * 
 * cdef inline object asmpistr(object ob, char *s[]):
 *     if PyUnicode_Check(ob):             # <<<<<<<<<<<<<<
 *         ob = PyUnicode_AsUTF8String(ob)
 *     PyBytes_AsStringAndSize(ob, s, NULL)
 */
  __pyx_t_1 = (PyUnicode_Check(__pyx_v_ob) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asstring.pxi":16
 * cdef inline object asmpistr(object ob, char *s[]):
 *     if PyUnicode_Check(ob):
 *         ob = PyUnicode_AsUTF8String(ob)             # <<<<<<<<<<<<<<
 *     PyBytes_AsStringAndSize(ob, s, NULL)
 *     return ob
 */
    __pyx_t_2 = PyUnicode_AsUTF8String(__pyx_v_ob); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_ob, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/asstring.pxi":15
 * 
 * cdef inline object asmpistr(object ob, char *s[]):
 *     if PyUnicode_Check(ob):             # <<<<<<<<<<<<<<
 *         ob = PyUnicode_AsUTF8String(ob)
 *     PyBytes_AsStringAndSize(ob, s, NULL)
 */
  }

  /* "src/mpi4py/MPI.src/asstring.pxi":17
 *     if PyUnicode_Check(ob):
 *         ob = PyUnicode_AsUTF8String(ob)
 *     PyBytes_AsStringAndSize(ob, s, NULL)             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  __pyx_t_3 = PyBytes_AsStringAndSize(__pyx_v_ob, __pyx_v_s, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(4, 17, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asstring.pxi":18
 *         ob = PyUnicode_AsUTF8String(ob)
 *     PyBytes_AsStringAndSize(ob, s, NULL)
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object tompistr(const char s[], int n):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asstring.pxi":14
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object asmpistr(object ob, char *s[]):             # <<<<<<<<<<<<<<
 *     if PyUnicode_Check(ob):
 *         ob = PyUnicode_AsUTF8String(ob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.asmpistr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asstring.pxi":20
 *     return ob
 * 
 * cdef inline object tompistr(const char s[], int n):             # <<<<<<<<<<<<<<
 *     return PyUnicode_FromStringAndSize(s, n)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_tompistr(char const *__pyx_v_s, int __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tompistr", 1);

  /* "src/mpi4py/MPI.src/asstring.pxi":21
 * 
 * cdef inline object tompistr(const char s[], int n):
 *     return PyUnicode_FromStringAndSize(s, n)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object mpistr(const char s[]):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyUnicode_FromStringAndSize(__pyx_v_s, __pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asstring.pxi":20
 *     return ob
 * 
 * cdef inline object tompistr(const char s[], int n):             # <<<<<<<<<<<<<<
 *     return PyUnicode_FromStringAndSize(s, n)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.tompistr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asstring.pxi":23
 *     return PyUnicode_FromStringAndSize(s, n)
 * 
 * cdef inline object mpistr(const char s[]):             # <<<<<<<<<<<<<<
 *     return PyUnicode_FromString(s)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_mpistr(char const *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpistr", 1);

  /* "src/mpi4py/MPI.src/asstring.pxi":24
 * 
 * cdef inline object mpistr(const char s[]):
 *     return PyUnicode_FromString(s)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object pystr(const char s[]):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyUnicode_FromString(__pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asstring.pxi":23
 *     return PyUnicode_FromStringAndSize(s, n)
 * 
 * cdef inline object mpistr(const char s[]):             # <<<<<<<<<<<<<<
 *     return PyUnicode_FromString(s)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.mpistr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asstring.pxi":26
 *     return PyUnicode_FromString(s)
 * 
 * cdef inline object pystr(const char s[]):             # <<<<<<<<<<<<<<
 *     return PyUnicode_FromString(s)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_pystr(char const *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pystr", 1);

  /* "src/mpi4py/MPI.src/asstring.pxi":27
 * 
 * cdef inline object pystr(const char s[]):
 *     return PyUnicode_FromString(s)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyUnicode_FromString(__pyx_v_s); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asstring.pxi":26
 *     return PyUnicode_FromString(s)
 * 
 * cdef inline object pystr(const char s[]):             # <<<<<<<<<<<<<<
 *     return PyUnicode_FromString(s)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.pystr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asstring.pxi":49
 *     int PyMPI_strcasecmp(const char[], const char[])
 * 
 * cdef inline int cstr2bool(const char s[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef const char **T = [b"true",  b"yes", b"on",  b"y", b"1"], *t = NULL
 *     cdef const char **F = [b"false", b"no",  b"off", b"n", b"0"], *f = NULL
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cstr2bool(char const *__pyx_v_s) {
  char const **__pyx_v_T;
  char const *__pyx_v_t;
  char const **__pyx_v_F;
  char const *__pyx_v_f;
  int __pyx_r;
  char const *__pyx_t_1[5];
  char const *__pyx_t_2[5];
  int __pyx_t_3;
  char const **__pyx_t_4;
  char const **__pyx_t_5;
  char const **__pyx_t_6;
  char const **__pyx_t_7;
  char const **__pyx_t_8;
  char const **__pyx_t_9;

  /* "src/mpi4py/MPI.src/asstring.pxi":50
 * 
 * cdef inline int cstr2bool(const char s[]) noexcept nogil:
 *     cdef const char **T = [b"true",  b"yes", b"on",  b"y", b"1"], *t = NULL             # <<<<<<<<<<<<<<
 *     cdef const char **F = [b"false", b"no",  b"off", b"n", b"0"], *f = NULL
 *     if s == NULL: return 0
 */
  __pyx_t_1[0] = ((char const *)"true");
  __pyx_t_1[1] = ((char const *)"yes");
  __pyx_t_1[2] = ((char const *)"on");
  __pyx_t_1[3] = ((char const *)"y");
  __pyx_t_1[4] = ((char const *)"1");
  __pyx_v_T = __pyx_t_1;
  __pyx_v_t = NULL;

  /* "src/mpi4py/MPI.src/asstring.pxi":51
 * cdef inline int cstr2bool(const char s[]) noexcept nogil:
 *     cdef const char **T = [b"true",  b"yes", b"on",  b"y", b"1"], *t = NULL
 *     cdef const char **F = [b"false", b"no",  b"off", b"n", b"0"], *f = NULL             # <<<<<<<<<<<<<<
 *     if s == NULL: return 0
 *     if s[0] == 0: return 0
 */
  __pyx_t_2[0] = ((char const *)"false");
  __pyx_t_2[1] = ((char const *)"no");
  __pyx_t_2[2] = ((char const *)"off");
  __pyx_t_2[3] = ((char const *)"n");
  __pyx_t_2[4] = ((char const *)"0");
  __pyx_v_F = __pyx_t_2;
  __pyx_v_f = NULL;

  /* "src/mpi4py/MPI.src/asstring.pxi":52
 *     cdef const char **T = [b"true",  b"yes", b"on",  b"y", b"1"], *t = NULL
 *     cdef const char **F = [b"false", b"no",  b"off", b"n", b"0"], *f = NULL
 *     if s == NULL: return 0             # <<<<<<<<<<<<<<
 *     if s[0] == 0: return 0
 *     for f in F[:5]:
 */
  __pyx_t_3 = (__pyx_v_s == NULL);
  if (__pyx_t_3) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asstring.pxi":53
 *     cdef const char **F = [b"false", b"no",  b"off", b"n", b"0"], *f = NULL
 *     if s == NULL: return 0
 *     if s[0] == 0: return 0             # <<<<<<<<<<<<<<
 *     for f in F[:5]:
 *         if PyMPI_strcasecmp(s, f) == 0:
 */
  __pyx_t_3 = ((__pyx_v_s[0]) == 0);
  if (__pyx_t_3) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asstring.pxi":54
 *     if s == NULL: return 0
 *     if s[0] == 0: return 0
 *     for f in F[:5]:             # <<<<<<<<<<<<<<
 *         if PyMPI_strcasecmp(s, f) == 0:
 *             return 0
 */
  __pyx_t_5 = (__pyx_v_F + 5);
  for (__pyx_t_6 = __pyx_v_F; __pyx_t_6 < __pyx_t_5; __pyx_t_6++) {
    __pyx_t_4 = __pyx_t_6;
    __pyx_v_f = (__pyx_t_4[0]);

    /* "src/mpi4py/MPI.src/asstring.pxi":55
 *     if s[0] == 0: return 0
 *     for f in F[:5]:
 *         if PyMPI_strcasecmp(s, f) == 0:             # <<<<<<<<<<<<<<
 *             return 0
 *     for t in T[:5]:
 */
    __pyx_t_3 = (PyMPI_strcasecmp(__pyx_v_s, __pyx_v_f) == 0);
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/asstring.pxi":56
 *     for f in F[:5]:
 *         if PyMPI_strcasecmp(s, f) == 0:
 *             return 0             # <<<<<<<<<<<<<<
 *     for t in T[:5]:
 *         if PyMPI_strcasecmp(s, t) == 0:
 */
      __pyx_r = 0;
      goto __pyx_L0;

      /* "src/mpi4py/MPI.src/asstring.pxi":55
 *     if s[0] == 0: return 0
 *     for f in F[:5]:
 *         if PyMPI_strcasecmp(s, f) == 0:             # <<<<<<<<<<<<<<
 *             return 0
 *     for t in T[:5]:
 */
    }
  }

  /* "src/mpi4py/MPI.src/asstring.pxi":57
 *         if PyMPI_strcasecmp(s, f) == 0:
 *             return 0
 *     for t in T[:5]:             # <<<<<<<<<<<<<<
 *         if PyMPI_strcasecmp(s, t) == 0:
 *             return 1
 */
  __pyx_t_8 = (__pyx_v_T + 5);
  for (__pyx_t_9 = __pyx_v_T; __pyx_t_9 < __pyx_t_8; __pyx_t_9++) {
    __pyx_t_7 = __pyx_t_9;
    __pyx_v_t = (__pyx_t_7[0]);

    /* "src/mpi4py/MPI.src/asstring.pxi":58
 *             return 0
 *     for t in T[:5]:
 *         if PyMPI_strcasecmp(s, t) == 0:             # <<<<<<<<<<<<<<
 *             return 1
 *     return -1
 */
    __pyx_t_3 = (PyMPI_strcasecmp(__pyx_v_s, __pyx_v_t) == 0);
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/asstring.pxi":59
 *     for t in T[:5]:
 *         if PyMPI_strcasecmp(s, t) == 0:
 *             return 1             # <<<<<<<<<<<<<<
 *     return -1
 * 
 */
      __pyx_r = 1;
      goto __pyx_L0;

      /* "src/mpi4py/MPI.src/asstring.pxi":58
 *             return 0
 *     for t in T[:5]:
 *         if PyMPI_strcasecmp(s, t) == 0:             # <<<<<<<<<<<<<<
 *             return 1
 *     return -1
 */
    }
  }

  /* "src/mpi4py/MPI.src/asstring.pxi":60
 *         if PyMPI_strcasecmp(s, t) == 0:
 *             return 1
 *     return -1             # <<<<<<<<<<<<<<
 * 
 * cdef inline int cstr_is_bool(const char s[]) noexcept nogil:
 */
  __pyx_r = -1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asstring.pxi":49
 *     int PyMPI_strcasecmp(const char[], const char[])
 * 
 * cdef inline int cstr2bool(const char s[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef const char **T = [b"true",  b"yes", b"on",  b"y", b"1"], *t = NULL
 *     cdef const char **F = [b"false", b"no",  b"off", b"n", b"0"], *f = NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asstring.pxi":62
 *     return -1
 * 
 * cdef inline int cstr_is_bool(const char s[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return cstr2bool(s) >= 0
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cstr_is_bool(char const *__pyx_v_s) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/asstring.pxi":63
 * 
 * cdef inline int cstr_is_bool(const char s[]) noexcept nogil:
 *     return cstr2bool(s) >= 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int cstr_is_uint(const char s[]) noexcept nogil:
 */
  __pyx_r = (__pyx_f_6mpi4py_3MPI_cstr2bool(__pyx_v_s) >= 0);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asstring.pxi":62
 *     return -1
 * 
 * cdef inline int cstr_is_bool(const char s[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return cstr2bool(s) >= 0
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asstring.pxi":65
 *     return cstr2bool(s) >= 0
 * 
 * cdef inline int cstr_is_uint(const char s[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if s == NULL: return 0
 *     if s[0] == 0: return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cstr_is_uint(char const *__pyx_v_s) {
  Py_ssize_t __pyx_v_i;
  int __pyx_r;
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;

  /* "src/mpi4py/MPI.src/asstring.pxi":66
 * 
 * cdef inline int cstr_is_uint(const char s[]) noexcept nogil:
 *     if s == NULL: return 0             # <<<<<<<<<<<<<<
 *     if s[0] == 0: return 0
 *     for i in range(<Py_ssize_t>64):
 */
  __pyx_t_1 = (__pyx_v_s == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asstring.pxi":67
 * cdef inline int cstr_is_uint(const char s[]) noexcept nogil:
 *     if s == NULL: return 0
 *     if s[0] == 0: return 0             # <<<<<<<<<<<<<<
 *     for i in range(<Py_ssize_t>64):
 *         if s[i] == c' ' or s[i] == c'\t': continue
 */
  __pyx_t_1 = ((__pyx_v_s[0]) == 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asstring.pxi":68
 *     if s == NULL: return 0
 *     if s[0] == 0: return 0
 *     for i in range(<Py_ssize_t>64):             # <<<<<<<<<<<<<<
 *         if s[i] == c' ' or s[i] == c'\t': continue
 *         if s[i] >= c'0' and s[i] <= c'9': continue
 */
  __pyx_t_2 = ((Py_ssize_t)64);
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/asstring.pxi":69
 *     if s[0] == 0: return 0
 *     for i in range(<Py_ssize_t>64):
 *         if s[i] == c' ' or s[i] == c'\t': continue             # <<<<<<<<<<<<<<
 *         if s[i] >= c'0' and s[i] <= c'9': continue
 *         if s[i] == 0: return 1
 */
    __pyx_t_5 = ((__pyx_v_s[__pyx_v_i]) == ' ');
    if (!__pyx_t_5) {
    } else {
      __pyx_t_1 = __pyx_t_5;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_5 = ((__pyx_v_s[__pyx_v_i]) == '\t');
    __pyx_t_1 = __pyx_t_5;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_1) {
      goto __pyx_L5_continue;
    }

    /* "src/mpi4py/MPI.src/asstring.pxi":70
 *     for i in range(<Py_ssize_t>64):
 *         if s[i] == c' ' or s[i] == c'\t': continue
 *         if s[i] >= c'0' and s[i] <= c'9': continue             # <<<<<<<<<<<<<<
 *         if s[i] == 0: return 1
 *         break
 */
    __pyx_t_5 = ((__pyx_v_s[__pyx_v_i]) >= '0');
    if (__pyx_t_5) {
    } else {
      __pyx_t_1 = __pyx_t_5;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_5 = ((__pyx_v_s[__pyx_v_i]) <= '9');
    __pyx_t_1 = __pyx_t_5;
    __pyx_L11_bool_binop_done:;
    if (__pyx_t_1) {
      goto __pyx_L5_continue;
    }

    /* "src/mpi4py/MPI.src/asstring.pxi":71
 *         if s[i] == c' ' or s[i] == c'\t': continue
 *         if s[i] >= c'0' and s[i] <= c'9': continue
 *         if s[i] == 0: return 1             # <<<<<<<<<<<<<<
 *         break
 *     return 0
 */
    __pyx_t_1 = ((__pyx_v_s[__pyx_v_i]) == 0);
    if (__pyx_t_1) {
      __pyx_r = 1;
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asstring.pxi":72
 *         if s[i] >= c'0' and s[i] <= c'9': continue
 *         if s[i] == 0: return 1
 *         break             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    goto __pyx_L6_break;
    __pyx_L5_continue:;
  }
  __pyx_L6_break:;

  /* "src/mpi4py/MPI.src/asstring.pxi":73
 *         if s[i] == 0: return 1
 *         break
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asstring.pxi":65
 *     return cstr2bool(s) >= 0
 * 
 * cdef inline int cstr_is_uint(const char s[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if s == NULL: return 0
 *     if s[0] == 0: return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asfspath.pxi":8
 * 
 * 
 * cdef inline object asmpifspath(object path, char *p[]):             # <<<<<<<<<<<<<<
 *     path = PyOS_FSPath(path)
 *     if PyUnicode_Check(path):
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asmpifspath(PyObject *__pyx_v_path, char **__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asmpifspath", 0);
  __Pyx_INCREF(__pyx_v_path);

  /* "src/mpi4py/MPI.src/asfspath.pxi":9
 * 
 * cdef inline object asmpifspath(object path, char *p[]):
 *     path = PyOS_FSPath(path)             # <<<<<<<<<<<<<<
 *     if PyUnicode_Check(path):
 *         path = PyUnicode_EncodeFSDefault(path)
 */
  __pyx_t_1 = PyOS_FSPath(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asfspath.pxi":10
 * cdef inline object asmpifspath(object path, char *p[]):
 *     path = PyOS_FSPath(path)
 *     if PyUnicode_Check(path):             # <<<<<<<<<<<<<<
 *         path = PyUnicode_EncodeFSDefault(path)
 *     PyBytes_AsStringAndSize(path, p, NULL)
 */
  __pyx_t_2 = (PyUnicode_Check(__pyx_v_path) != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asfspath.pxi":11
 *     path = PyOS_FSPath(path)
 *     if PyUnicode_Check(path):
 *         path = PyUnicode_EncodeFSDefault(path)             # <<<<<<<<<<<<<<
 *     PyBytes_AsStringAndSize(path, p, NULL)
 *     return path
 */
    __pyx_t_1 = PyUnicode_EncodeFSDefault(__pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/asfspath.pxi":10
 * cdef inline object asmpifspath(object path, char *p[]):
 *     path = PyOS_FSPath(path)
 *     if PyUnicode_Check(path):             # <<<<<<<<<<<<<<
 *         path = PyUnicode_EncodeFSDefault(path)
 *     PyBytes_AsStringAndSize(path, p, NULL)
 */
  }

  /* "src/mpi4py/MPI.src/asfspath.pxi":12
 *     if PyUnicode_Check(path):
 *         path = PyUnicode_EncodeFSDefault(path)
 *     PyBytes_AsStringAndSize(path, p, NULL)             # <<<<<<<<<<<<<<
 *     return path
 * 
 */
  __pyx_t_3 = PyBytes_AsStringAndSize(__pyx_v_path, __pyx_v_p, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(8, 12, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asfspath.pxi":13
 *         path = PyUnicode_EncodeFSDefault(path)
 *     PyBytes_AsStringAndSize(path, p, NULL)
 *     return path             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_path);
  __pyx_r = __pyx_v_path;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asfspath.pxi":8
 * 
 * 
 * cdef inline object asmpifspath(object path, char *p[]):             # <<<<<<<<<<<<<<
 *     path = PyOS_FSPath(path)
 *     if PyUnicode_Check(path):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.asmpifspath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":43
 * 
 * 
 * cdef inline int is_big_endian() noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int i = 1
 *     return (<char*>&i)[0] == 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_big_endian(void) {
  int __pyx_v_i;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":44
 * 
 * cdef inline int is_big_endian() noexcept nogil:
 *     cdef int i = 1             # <<<<<<<<<<<<<<
 *     return (<char*>&i)[0] == 0
 * 
 */
  __pyx_v_i = 1;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":45
 * cdef inline int is_big_endian() noexcept nogil:
 *     cdef int i = 1
 *     return (<char*>&i)[0] == 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((((char *)(&__pyx_v_i))[0]) == 0);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":43
 * 
 * 
 * cdef inline int is_big_endian() noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int i = 1
 *     return (<char*>&i)[0] == 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":48
 * 
 * 
 * cdef inline int is_little_endian() noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int i = 1
 *     return (<char*>&i)[0] != 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_little_endian(void) {
  int __pyx_v_i;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":49
 * 
 * cdef inline int is_little_endian() noexcept nogil:
 *     cdef int i = 1             # <<<<<<<<<<<<<<
 *     return (<char*>&i)[0] != 0
 * 
 */
  __pyx_v_i = 1;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":50
 * cdef inline int is_little_endian() noexcept nogil:
 *     cdef int i = 1
 *     return (<char*>&i)[0] != 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((((char *)(&__pyx_v_i))[0]) != 0);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":48
 * 
 * 
 * cdef inline int is_little_endian() noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int i = 1
 *     return (<char*>&i)[0] != 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":86
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int dlpack_check_version(             # <<<<<<<<<<<<<<
 *     const DLPackVersion *version,
 *     unsigned version_major,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_check_version(__pyx_t_6mpi4py_3MPI_DLPackVersion const *__pyx_v_version, unsigned int __pyx_v_version_major) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dlpack_check_version", 1);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":90
 *     unsigned version_major,
 * ) except -1:
 *     if version == NULL: return 0             # <<<<<<<<<<<<<<
 *     if version.major >= version_major: return 0
 *     raise BufferError("dlpack: unexpected version")
 */
  __pyx_t_1 = (__pyx_v_version == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":91
 * ) except -1:
 *     if version == NULL: return 0
 *     if version.major >= version_major: return 0             # <<<<<<<<<<<<<<
 *     raise BufferError("dlpack: unexpected version")
 * 
 */
  __pyx_t_1 = (__pyx_v_version->major >= __pyx_v_version_major);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":92
 *     if version == NULL: return 0
 *     if version.major >= version_major: return 0
 *     raise BufferError("dlpack: unexpected version")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int dlpack_is_contig(
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(5, 92, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":86
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int dlpack_check_version(             # <<<<<<<<<<<<<<
 *     const DLPackVersion *version,
 *     unsigned version_major,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.dlpack_check_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":94
 *     raise BufferError("dlpack: unexpected version")
 * 
 * cdef inline int dlpack_is_contig(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 *     char order,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_is_contig(__pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor, char __pyx_v_order) {
  int __pyx_v_i;
  int __pyx_v_ndim;
  int64_t *__pyx_v_shape;
  int64_t *__pyx_v_strides;
  int64_t __pyx_v_start;
  int64_t __pyx_v_step;
  int64_t __pyx_v_index;
  int64_t __pyx_v_dim;
  int64_t __pyx_v_size;
  int __pyx_r;
  int32_t __pyx_t_1;
  int64_t *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":98
 *     char order,
 * ) noexcept nogil:
 *     cdef int i, ndim = dltensor.ndim             # <<<<<<<<<<<<<<
 *     cdef int64_t *shape = dltensor.shape
 *     cdef int64_t *strides = dltensor.strides
 */
  __pyx_t_1 = __pyx_v_dltensor->ndim;
  __pyx_v_ndim = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":99
 * ) noexcept nogil:
 *     cdef int i, ndim = dltensor.ndim
 *     cdef int64_t *shape = dltensor.shape             # <<<<<<<<<<<<<<
 *     cdef int64_t *strides = dltensor.strides
 *     cdef int64_t start, step, index, dim, size = 1
 */
  __pyx_t_2 = __pyx_v_dltensor->shape;
  __pyx_v_shape = __pyx_t_2;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":100
 *     cdef int i, ndim = dltensor.ndim
 *     cdef int64_t *shape = dltensor.shape
 *     cdef int64_t *strides = dltensor.strides             # <<<<<<<<<<<<<<
 *     cdef int64_t start, step, index, dim, size = 1
 *     if strides == NULL:
 */
  __pyx_t_2 = __pyx_v_dltensor->strides;
  __pyx_v_strides = __pyx_t_2;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":101
 *     cdef int64_t *shape = dltensor.shape
 *     cdef int64_t *strides = dltensor.strides
 *     cdef int64_t start, step, index, dim, size = 1             # <<<<<<<<<<<<<<
 *     if strides == NULL:
 *         return order != c'F' or ndim <= 1
 */
  __pyx_v_size = 1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":102
 *     cdef int64_t *strides = dltensor.strides
 *     cdef int64_t start, step, index, dim, size = 1
 *     if strides == NULL:             # <<<<<<<<<<<<<<
 *         return order != c'F' or ndim <= 1
 *     if order == c'F':
 */
  __pyx_t_3 = (__pyx_v_strides == NULL);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":103
 *     cdef int64_t start, step, index, dim, size = 1
 *     if strides == NULL:
 *         return order != c'F' or ndim <= 1             # <<<<<<<<<<<<<<
 *     if order == c'F':
 *         start = 0
 */
    __pyx_t_3 = (__pyx_v_order != 'F');
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_ndim <= 1);
    __pyx_t_4 = __pyx_t_3;
    __pyx_L4_bool_binop_done:;
    __pyx_r = __pyx_t_4;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":102
 *     cdef int64_t *strides = dltensor.strides
 *     cdef int64_t start, step, index, dim, size = 1
 *     if strides == NULL:             # <<<<<<<<<<<<<<
 *         return order != c'F' or ndim <= 1
 *     if order == c'F':
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":104
 *     if strides == NULL:
 *         return order != c'F' or ndim <= 1
 *     if order == c'F':             # <<<<<<<<<<<<<<
 *         start = 0
 *         step = 1
 */
  __pyx_t_3 = (__pyx_v_order == 'F');
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":105
 *         return order != c'F' or ndim <= 1
 *     if order == c'F':
 *         start = 0             # <<<<<<<<<<<<<<
 *         step = 1
 *     else:
 */
    __pyx_v_start = 0;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":106
 *     if order == c'F':
 *         start = 0
 *         step = 1             # <<<<<<<<<<<<<<
 *     else:
 *         start = ndim - 1
 */
    __pyx_v_step = 1;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":104
 *     if strides == NULL:
 *         return order != c'F' or ndim <= 1
 *     if order == c'F':             # <<<<<<<<<<<<<<
 *         start = 0
 *         step = 1
 */
    goto __pyx_L6;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":108
 *         step = 1
 *     else:
 *         start = ndim - 1             # <<<<<<<<<<<<<<
 *         step = -1
 *     for i in range(ndim):
 */
  /*else*/ {
    __pyx_v_start = (__pyx_v_ndim - 1);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":109
 *     else:
 *         start = ndim - 1
 *         step = -1             # <<<<<<<<<<<<<<
 *     for i in range(ndim):
 *         index = start + step * i
 */
    __pyx_v_step = -1LL;
  }
  __pyx_L6:;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":110
 *         start = ndim - 1
 *         step = -1
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         index = start + step * i
 *         dim = shape[index]
 */
  __pyx_t_4 = __pyx_v_ndim;
  __pyx_t_5 = __pyx_t_4;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
    __pyx_v_i = __pyx_t_6;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":111
 *         step = -1
 *     for i in range(ndim):
 *         index = start + step * i             # <<<<<<<<<<<<<<
 *         dim = shape[index]
 *         if dim > 1 and size != strides[index]:
 */
    __pyx_v_index = (__pyx_v_start + (__pyx_v_step * __pyx_v_i));

    /* "src/mpi4py/MPI.src/asdlpack.pxi":112
 *     for i in range(ndim):
 *         index = start + step * i
 *         dim = shape[index]             # <<<<<<<<<<<<<<
 *         if dim > 1 and size != strides[index]:
 *             return 0
 */
    __pyx_v_dim = (__pyx_v_shape[__pyx_v_index]);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":113
 *         index = start + step * i
 *         dim = shape[index]
 *         if dim > 1 and size != strides[index]:             # <<<<<<<<<<<<<<
 *             return 0
 *         size *= dim
 */
    __pyx_t_7 = (__pyx_v_dim > 1);
    if (__pyx_t_7) {
    } else {
      __pyx_t_3 = __pyx_t_7;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_7 = (__pyx_v_size != (__pyx_v_strides[__pyx_v_index]));
    __pyx_t_3 = __pyx_t_7;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":114
 *         dim = shape[index]
 *         if dim > 1 and size != strides[index]:
 *             return 0             # <<<<<<<<<<<<<<
 *         size *= dim
 *     return 1
 */
      __pyx_r = 0;
      goto __pyx_L0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":113
 *         index = start + step * i
 *         dim = shape[index]
 *         if dim > 1 and size != strides[index]:             # <<<<<<<<<<<<<<
 *             return 0
 *         size *= dim
 */
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":115
 *         if dim > 1 and size != strides[index]:
 *             return 0
 *         size *= dim             # <<<<<<<<<<<<<<
 *     return 1
 * 
 */
    __pyx_v_size = (__pyx_v_size * __pyx_v_dim);
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":116
 *             return 0
 *         size *= dim
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * cdef inline int dlpack_check_shape(const DLTensor *dltensor) except -1:
 */
  __pyx_r = 1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":94
 *     raise BufferError("dlpack: unexpected version")
 * 
 * cdef inline int dlpack_is_contig(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 *     char order,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":118
 *     return 1
 * 
 * cdef inline int dlpack_check_shape(const DLTensor *dltensor) except -1:             # <<<<<<<<<<<<<<
 *     cdef int i, ndim = dltensor.ndim
 *     if ndim < 0:
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_check_shape(__pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor) {
  int __pyx_v_i;
  int __pyx_v_ndim;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int32_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dlpack_check_shape", 1);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":119
 * 
 * cdef inline int dlpack_check_shape(const DLTensor *dltensor) except -1:
 *     cdef int i, ndim = dltensor.ndim             # <<<<<<<<<<<<<<
 *     if ndim < 0:
 *         raise BufferError("dlpack: number of dimensions is negative")
 */
  __pyx_t_1 = __pyx_v_dltensor->ndim;
  __pyx_v_ndim = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":120
 * cdef inline int dlpack_check_shape(const DLTensor *dltensor) except -1:
 *     cdef int i, ndim = dltensor.ndim
 *     if ndim < 0:             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: number of dimensions is negative")
 *     if ndim > 0 and dltensor.shape == NULL:
 */
  __pyx_t_2 = (__pyx_v_ndim < 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":121
 *     cdef int i, ndim = dltensor.ndim
 *     if ndim < 0:
 *         raise BufferError("dlpack: number of dimensions is negative")             # <<<<<<<<<<<<<<
 *     if ndim > 0 and dltensor.shape == NULL:
 *         raise BufferError("dlpack: shape is NULL")
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(5, 121, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":120
 * cdef inline int dlpack_check_shape(const DLTensor *dltensor) except -1:
 *     cdef int i, ndim = dltensor.ndim
 *     if ndim < 0:             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: number of dimensions is negative")
 *     if ndim > 0 and dltensor.shape == NULL:
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":122
 *     if ndim < 0:
 *         raise BufferError("dlpack: number of dimensions is negative")
 *     if ndim > 0 and dltensor.shape == NULL:             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: shape is NULL")
 *     for i in range(ndim):
 */
  __pyx_t_4 = (__pyx_v_ndim > 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_dltensor->shape == NULL);
  __pyx_t_2 = __pyx_t_4;
  __pyx_L5_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":123
 *         raise BufferError("dlpack: number of dimensions is negative")
 *     if ndim > 0 and dltensor.shape == NULL:
 *         raise BufferError("dlpack: shape is NULL")             # <<<<<<<<<<<<<<
 *     for i in range(ndim):
 *         if dltensor.shape[i] < 0:
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(5, 123, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":122
 *     if ndim < 0:
 *         raise BufferError("dlpack: number of dimensions is negative")
 *     if ndim > 0 and dltensor.shape == NULL:             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: shape is NULL")
 *     for i in range(ndim):
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":124
 *     if ndim > 0 and dltensor.shape == NULL:
 *         raise BufferError("dlpack: shape is NULL")
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         if dltensor.shape[i] < 0:
 *             raise BufferError("dlpack: shape item is negative")
 */
  __pyx_t_5 = __pyx_v_ndim;
  __pyx_t_6 = __pyx_t_5;
  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":125
 *         raise BufferError("dlpack: shape is NULL")
 *     for i in range(ndim):
 *         if dltensor.shape[i] < 0:             # <<<<<<<<<<<<<<
 *             raise BufferError("dlpack: shape item is negative")
 *     if dltensor.strides != NULL:
 */
    __pyx_t_2 = ((__pyx_v_dltensor->shape[__pyx_v_i]) < 0);
    if (unlikely(__pyx_t_2)) {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":126
 *     for i in range(ndim):
 *         if dltensor.shape[i] < 0:
 *             raise BufferError("dlpack: shape item is negative")             # <<<<<<<<<<<<<<
 *     if dltensor.strides != NULL:
 *         for i in range(ndim):
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(5, 126, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asdlpack.pxi":125
 *         raise BufferError("dlpack: shape is NULL")
 *     for i in range(ndim):
 *         if dltensor.shape[i] < 0:             # <<<<<<<<<<<<<<
 *             raise BufferError("dlpack: shape item is negative")
 *     if dltensor.strides != NULL:
 */
    }
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":127
 *         if dltensor.shape[i] < 0:
 *             raise BufferError("dlpack: shape item is negative")
 *     if dltensor.strides != NULL:             # <<<<<<<<<<<<<<
 *         for i in range(ndim):
 *             if dltensor.strides[i] < 0:
 */
  __pyx_t_2 = (__pyx_v_dltensor->strides != NULL);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":128
 *             raise BufferError("dlpack: shape item is negative")
 *     if dltensor.strides != NULL:
 *         for i in range(ndim):             # <<<<<<<<<<<<<<
 *             if dltensor.strides[i] < 0:
 *                 raise BufferError("dlpack: strides item is negative")
 */
    __pyx_t_5 = __pyx_v_ndim;
    __pyx_t_6 = __pyx_t_5;
    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
      __pyx_v_i = __pyx_t_7;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":129
 *     if dltensor.strides != NULL:
 *         for i in range(ndim):
 *             if dltensor.strides[i] < 0:             # <<<<<<<<<<<<<<
 *                 raise BufferError("dlpack: strides item is negative")
 *     return 0
 */
      __pyx_t_2 = ((__pyx_v_dltensor->strides[__pyx_v_i]) < 0);
      if (unlikely(__pyx_t_2)) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":130
 *         for i in range(ndim):
 *             if dltensor.strides[i] < 0:
 *                 raise BufferError("dlpack: strides item is negative")             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 130, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(5, 130, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/asdlpack.pxi":129
 *     if dltensor.strides != NULL:
 *         for i in range(ndim):
 *             if dltensor.strides[i] < 0:             # <<<<<<<<<<<<<<
 *                 raise BufferError("dlpack: strides item is negative")
 *     return 0
 */
      }
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":127
 *         if dltensor.shape[i] < 0:
 *             raise BufferError("dlpack: shape item is negative")
 *     if dltensor.strides != NULL:             # <<<<<<<<<<<<<<
 *         for i in range(ndim):
 *             if dltensor.strides[i] < 0:
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":131
 *             if dltensor.strides[i] < 0:
 *                 raise BufferError("dlpack: strides item is negative")
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int dlpack_check_contig(const DLTensor *dltensor) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":118
 *     return 1
 * 
 * cdef inline int dlpack_check_shape(const DLTensor *dltensor) except -1:             # <<<<<<<<<<<<<<
 *     cdef int i, ndim = dltensor.ndim
 *     if ndim < 0:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.dlpack_check_shape", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":133
 *     return 0
 * 
 * cdef inline int dlpack_check_contig(const DLTensor *dltensor) except -1:             # <<<<<<<<<<<<<<
 *     if dlpack_is_contig(dltensor, c'C'): return 0
 *     if dlpack_is_contig(dltensor, c'F'): return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_dlpack_check_contig(__pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dlpack_check_contig", 1);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":134
 * 
 * cdef inline int dlpack_check_contig(const DLTensor *dltensor) except -1:
 *     if dlpack_is_contig(dltensor, c'C'): return 0             # <<<<<<<<<<<<<<
 *     if dlpack_is_contig(dltensor, c'F'): return 0
 *     raise BufferError("dlpack: buffer is not contiguous")
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_dlpack_is_contig(__pyx_v_dltensor, 'C') != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":135
 * cdef inline int dlpack_check_contig(const DLTensor *dltensor) except -1:
 *     if dlpack_is_contig(dltensor, c'C'): return 0
 *     if dlpack_is_contig(dltensor, c'F'): return 0             # <<<<<<<<<<<<<<
 *     raise BufferError("dlpack: buffer is not contiguous")
 * 
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_dlpack_is_contig(__pyx_v_dltensor, 'F') != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":136
 *     if dlpack_is_contig(dltensor, c'C'): return 0
 *     if dlpack_is_contig(dltensor, c'F'): return 0
 *     raise BufferError("dlpack: buffer is not contiguous")             # <<<<<<<<<<<<<<
 * 
 * cdef inline void *dlpack_get_data(
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(5, 136, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":133
 *     return 0
 * 
 * cdef inline int dlpack_check_contig(const DLTensor *dltensor) except -1:             # <<<<<<<<<<<<<<
 *     if dlpack_is_contig(dltensor, c'C'): return 0
 *     if dlpack_is_contig(dltensor, c'F'): return 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.dlpack_check_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":138
 *     raise BufferError("dlpack: buffer is not contiguous")
 * 
 * cdef inline void *dlpack_get_data(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

static CYTHON_INLINE void *__pyx_f_6mpi4py_3MPI_dlpack_get_data(__pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor) {
  void *__pyx_r;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":141
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 *     return <char*> dltensor.data + dltensor.byte_offset             # <<<<<<<<<<<<<<
 * 
 * cdef inline Py_ssize_t dlpack_get_size(
 */
  __pyx_r = (((char *)__pyx_v_dltensor->data) + __pyx_v_dltensor->byte_offset);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":138
 *     raise BufferError("dlpack: buffer is not contiguous")
 * 
 * cdef inline void *dlpack_get_data(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":143
 *     return <char*> dltensor.data + dltensor.byte_offset
 * 
 * cdef inline Py_ssize_t dlpack_get_size(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

static CYTHON_INLINE Py_ssize_t __pyx_f_6mpi4py_3MPI_dlpack_get_size(__pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor) {
  int __pyx_v_i;
  int __pyx_v_ndim;
  int64_t *__pyx_v_shape;
  Py_ssize_t __pyx_v_bits;
  Py_ssize_t __pyx_v_lanes;
  Py_ssize_t __pyx_v_size;
  Py_ssize_t __pyx_r;
  int32_t __pyx_t_1;
  int64_t *__pyx_t_2;
  uint8_t __pyx_t_3;
  uint16_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":146
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 *     cdef int i, ndim = dltensor.ndim             # <<<<<<<<<<<<<<
 *     cdef int64_t *shape = dltensor.shape
 *     cdef Py_ssize_t bits = dltensor.dtype.bits
 */
  __pyx_t_1 = __pyx_v_dltensor->ndim;
  __pyx_v_ndim = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":147
 * ) noexcept nogil:
 *     cdef int i, ndim = dltensor.ndim
 *     cdef int64_t *shape = dltensor.shape             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t bits = dltensor.dtype.bits
 *     cdef Py_ssize_t lanes = dltensor.dtype.lanes
 */
  __pyx_t_2 = __pyx_v_dltensor->shape;
  __pyx_v_shape = __pyx_t_2;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":148
 *     cdef int i, ndim = dltensor.ndim
 *     cdef int64_t *shape = dltensor.shape
 *     cdef Py_ssize_t bits = dltensor.dtype.bits             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t lanes = dltensor.dtype.lanes
 *     cdef Py_ssize_t size = 1
 */
  __pyx_t_3 = __pyx_v_dltensor->dtype.bits;
  __pyx_v_bits = __pyx_t_3;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":149
 *     cdef int64_t *shape = dltensor.shape
 *     cdef Py_ssize_t bits = dltensor.dtype.bits
 *     cdef Py_ssize_t lanes = dltensor.dtype.lanes             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = 1
 *     for i in range(ndim):
 */
  __pyx_t_4 = __pyx_v_dltensor->dtype.lanes;
  __pyx_v_lanes = __pyx_t_4;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":150
 *     cdef Py_ssize_t bits = dltensor.dtype.bits
 *     cdef Py_ssize_t lanes = dltensor.dtype.lanes
 *     cdef Py_ssize_t size = 1             # <<<<<<<<<<<<<<
 *     for i in range(ndim):
 *         size *= <Py_ssize_t> shape[i]
 */
  __pyx_v_size = 1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":151
 *     cdef Py_ssize_t lanes = dltensor.dtype.lanes
 *     cdef Py_ssize_t size = 1
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         size *= <Py_ssize_t> shape[i]
 *     size *= (bits * lanes + 7) // 8
 */
  __pyx_t_5 = __pyx_v_ndim;
  __pyx_t_6 = __pyx_t_5;
  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":152
 *     cdef Py_ssize_t size = 1
 *     for i in range(ndim):
 *         size *= <Py_ssize_t> shape[i]             # <<<<<<<<<<<<<<
 *     size *= (bits * lanes + 7) // 8
 *     return size
 */
    __pyx_v_size = (__pyx_v_size * ((Py_ssize_t)(__pyx_v_shape[__pyx_v_i])));
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":153
 *     for i in range(ndim):
 *         size *= <Py_ssize_t> shape[i]
 *     size *= (bits * lanes + 7) // 8             # <<<<<<<<<<<<<<
 *     return size
 * 
 */
  __pyx_v_size = (__pyx_v_size * (((__pyx_v_bits * __pyx_v_lanes) + 7) / 8));

  /* "src/mpi4py/MPI.src/asdlpack.pxi":154
 *         size *= <Py_ssize_t> shape[i]
 *     size *= (bits * lanes + 7) // 8
 *     return size             # <<<<<<<<<<<<<<
 * 
 * cdef inline char *dlpack_get_format(
 */
  __pyx_r = __pyx_v_size;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":143
 *     return <char*> dltensor.data + dltensor.byte_offset
 * 
 * cdef inline Py_ssize_t dlpack_get_size(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":156
 *     return size
 * 
 * cdef inline char *dlpack_get_format(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

static CYTHON_INLINE char *__pyx_f_6mpi4py_3MPI_dlpack_get_format(__pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor) {
  unsigned int __pyx_v_code;
  unsigned int __pyx_v_bits;
  char *__pyx_r;
  uint8_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":159
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 *     cdef unsigned int code = dltensor.dtype.code             # <<<<<<<<<<<<<<
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:
 */
  __pyx_t_1 = __pyx_v_dltensor->dtype.code;
  __pyx_v_code = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":160
 * ) noexcept nogil:
 *     cdef unsigned int code = dltensor.dtype.code
 *     cdef unsigned int bits = dltensor.dtype.bits             # <<<<<<<<<<<<<<
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 */
  __pyx_t_1 = __pyx_v_dltensor->dtype.bits;
  __pyx_v_bits = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":161
 *     cdef unsigned int code = dltensor.dtype.code
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:             # <<<<<<<<<<<<<<
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if bits == 8*sizeof(float):       return b"Zf"
 */
  __pyx_t_2 = (__pyx_v_dltensor->dtype.lanes != 1);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":162
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:             # <<<<<<<<<<<<<<
 *             if bits == 8*sizeof(float):       return b"Zf"
 *             if bits == 8*sizeof(double):      return b"Zd"
 */
    __pyx_t_3 = (__pyx_v_code == __pyx_e_6mpi4py_3MPI_kDLFloat);
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_dltensor->dtype.lanes == 2);
    __pyx_t_2 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":163
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if bits == 8*sizeof(float):       return b"Zf"             # <<<<<<<<<<<<<<
 *             if bits == 8*sizeof(double):      return b"Zd"
 *             if bits == 8*sizeof(long double): return b"Zg"
 */
      __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(float))));
      if (__pyx_t_2) {
        __pyx_r = ((char *)"Zf");
        goto __pyx_L0;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":164
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if bits == 8*sizeof(float):       return b"Zf"
 *             if bits == 8*sizeof(double):      return b"Zd"             # <<<<<<<<<<<<<<
 *             if bits == 8*sizeof(long double): return b"Zg"
 *         return b"B"
 */
      __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(double))));
      if (__pyx_t_2) {
        __pyx_r = ((char *)"Zd");
        goto __pyx_L0;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":165
 *             if bits == 8*sizeof(float):       return b"Zf"
 *             if bits == 8*sizeof(double):      return b"Zd"
 *             if bits == 8*sizeof(long double): return b"Zg"             # <<<<<<<<<<<<<<
 *         return b"B"
 *     if code == kDLBool:
 */
      __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(long double))));
      if (__pyx_t_2) {
        __pyx_r = ((char *)"Zg");
        goto __pyx_L0;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":162
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:             # <<<<<<<<<<<<<<
 *             if bits == 8*sizeof(float):       return b"Zf"
 *             if bits == 8*sizeof(double):      return b"Zd"
 */
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":166
 *             if bits == 8*sizeof(double):      return b"Zd"
 *             if bits == 8*sizeof(long double): return b"Zg"
 *         return b"B"             # <<<<<<<<<<<<<<
 *     if code == kDLBool:
 *         if bits == 8: return b"?"
 */
    __pyx_r = ((char *)"B");
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":161
 *     cdef unsigned int code = dltensor.dtype.code
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:             # <<<<<<<<<<<<<<
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if bits == 8*sizeof(float):       return b"Zf"
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":167
 *             if bits == 8*sizeof(long double): return b"Zg"
 *         return b"B"
 *     if code == kDLBool:             # <<<<<<<<<<<<<<
 *         if bits == 8: return b"?"
 *     if code == kDLInt:
 */
  __pyx_t_2 = (__pyx_v_code == __pyx_e_6mpi4py_3MPI_kDLBool);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":168
 *         return b"B"
 *     if code == kDLBool:
 *         if bits == 8: return b"?"             # <<<<<<<<<<<<<<
 *     if code == kDLInt:
 *         if bits == 8*sizeof(char):      return b"b"
 */
    __pyx_t_2 = (__pyx_v_bits == 8);
    if (__pyx_t_2) {
      __pyx_r = ((char *)"?");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":167
 *             if bits == 8*sizeof(long double): return b"Zg"
 *         return b"B"
 *     if code == kDLBool:             # <<<<<<<<<<<<<<
 *         if bits == 8: return b"?"
 *     if code == kDLInt:
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":169
 *     if code == kDLBool:
 *         if bits == 8: return b"?"
 *     if code == kDLInt:             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(char):      return b"b"
 *         if bits == 8*sizeof(short):     return b"h"
 */
  __pyx_t_2 = (__pyx_v_code == __pyx_e_6mpi4py_3MPI_kDLInt);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":170
 *         if bits == 8: return b"?"
 *     if code == kDLInt:
 *         if bits == 8*sizeof(char):      return b"b"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(short):     return b"h"
 *         if bits == 8*sizeof(int):       return b"i"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(char))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"b");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":171
 *     if code == kDLInt:
 *         if bits == 8*sizeof(char):      return b"b"
 *         if bits == 8*sizeof(short):     return b"h"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(int):       return b"i"
 *         if bits == 8*sizeof(long):      return b"l"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(short))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"h");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":172
 *         if bits == 8*sizeof(char):      return b"b"
 *         if bits == 8*sizeof(short):     return b"h"
 *         if bits == 8*sizeof(int):       return b"i"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(long):      return b"l"
 *         if bits == 8*sizeof(long long): return b"q"  # ~> long
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(int))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"i");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":173
 *         if bits == 8*sizeof(short):     return b"h"
 *         if bits == 8*sizeof(int):       return b"i"
 *         if bits == 8*sizeof(long):      return b"l"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(long long): return b"q"  # ~> long
 *     if code == kDLUInt:
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(long))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"l");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":174
 *         if bits == 8*sizeof(int):       return b"i"
 *         if bits == 8*sizeof(long):      return b"l"
 *         if bits == 8*sizeof(long long): return b"q"  # ~> long             # <<<<<<<<<<<<<<
 *     if code == kDLUInt:
 *         if bits == 8*sizeof(char):      return b"B"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(PY_LONG_LONG))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"q");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":169
 *     if code == kDLBool:
 *         if bits == 8: return b"?"
 *     if code == kDLInt:             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(char):      return b"b"
 *         if bits == 8*sizeof(short):     return b"h"
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":175
 *         if bits == 8*sizeof(long):      return b"l"
 *         if bits == 8*sizeof(long long): return b"q"  # ~> long
 *     if code == kDLUInt:             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(char):      return b"B"
 *         if bits == 8*sizeof(short):     return b"H"
 */
  __pyx_t_2 = (__pyx_v_code == __pyx_e_6mpi4py_3MPI_kDLUInt);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":176
 *         if bits == 8*sizeof(long long): return b"q"  # ~> long
 *     if code == kDLUInt:
 *         if bits == 8*sizeof(char):      return b"B"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(short):     return b"H"
 *         if bits == 8*sizeof(int):       return b"I"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(char))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"B");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":177
 *     if code == kDLUInt:
 *         if bits == 8*sizeof(char):      return b"B"
 *         if bits == 8*sizeof(short):     return b"H"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(int):       return b"I"
 *         if bits == 8*sizeof(long):      return b"L"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(short))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"H");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":178
 *         if bits == 8*sizeof(char):      return b"B"
 *         if bits == 8*sizeof(short):     return b"H"
 *         if bits == 8*sizeof(int):       return b"I"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(long):      return b"L"
 *         if bits == 8*sizeof(long long): return b"Q"  # ~> long
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(int))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"I");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":179
 *         if bits == 8*sizeof(short):     return b"H"
 *         if bits == 8*sizeof(int):       return b"I"
 *         if bits == 8*sizeof(long):      return b"L"             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(long long): return b"Q"  # ~> long
 *     if code == kDLFloat:
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(long))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"L");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":180
 *         if bits == 8*sizeof(int):       return b"I"
 *         if bits == 8*sizeof(long):      return b"L"
 *         if bits == 8*sizeof(long long): return b"Q"  # ~> long             # <<<<<<<<<<<<<<
 *     if code == kDLFloat:
 *         if bits ==  8*sizeof(float)//2:    return b"e"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(PY_LONG_LONG))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"Q");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":175
 *         if bits == 8*sizeof(long):      return b"l"
 *         if bits == 8*sizeof(long long): return b"q"  # ~> long
 *     if code == kDLUInt:             # <<<<<<<<<<<<<<
 *         if bits == 8*sizeof(char):      return b"B"
 *         if bits == 8*sizeof(short):     return b"H"
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":181
 *         if bits == 8*sizeof(long):      return b"L"
 *         if bits == 8*sizeof(long long): return b"Q"  # ~> long
 *     if code == kDLFloat:             # <<<<<<<<<<<<<<
 *         if bits ==  8*sizeof(float)//2:    return b"e"
 *         if bits ==  8*sizeof(float):       return b"f"
 */
  __pyx_t_2 = (__pyx_v_code == __pyx_e_6mpi4py_3MPI_kDLFloat);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":182
 *         if bits == 8*sizeof(long long): return b"Q"  # ~> long
 *     if code == kDLFloat:
 *         if bits ==  8*sizeof(float)//2:    return b"e"             # <<<<<<<<<<<<<<
 *         if bits ==  8*sizeof(float):       return b"f"
 *         if bits ==  8*sizeof(double):      return b"d"
 */
    __pyx_t_2 = (__pyx_v_bits == ((8 * (sizeof(float))) / 2));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"e");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":183
 *     if code == kDLFloat:
 *         if bits ==  8*sizeof(float)//2:    return b"e"
 *         if bits ==  8*sizeof(float):       return b"f"             # <<<<<<<<<<<<<<
 *         if bits ==  8*sizeof(double):      return b"d"
 *         if bits ==  8*sizeof(long double): return b"g"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(float))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"f");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":184
 *         if bits ==  8*sizeof(float)//2:    return b"e"
 *         if bits ==  8*sizeof(float):       return b"f"
 *         if bits ==  8*sizeof(double):      return b"d"             # <<<<<<<<<<<<<<
 *         if bits ==  8*sizeof(long double): return b"g"
 *     if code == kDLComplex:
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(double))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"d");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":185
 *         if bits ==  8*sizeof(float):       return b"f"
 *         if bits ==  8*sizeof(double):      return b"d"
 *         if bits ==  8*sizeof(long double): return b"g"             # <<<<<<<<<<<<<<
 *     if code == kDLComplex:
 *         if bits ==  8*2*sizeof(float)//2:    return b"Ze"
 */
    __pyx_t_2 = (__pyx_v_bits == (8 * (sizeof(long double))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"g");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":181
 *         if bits == 8*sizeof(long):      return b"L"
 *         if bits == 8*sizeof(long long): return b"Q"  # ~> long
 *     if code == kDLFloat:             # <<<<<<<<<<<<<<
 *         if bits ==  8*sizeof(float)//2:    return b"e"
 *         if bits ==  8*sizeof(float):       return b"f"
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":186
 *         if bits ==  8*sizeof(double):      return b"d"
 *         if bits ==  8*sizeof(long double): return b"g"
 *     if code == kDLComplex:             # <<<<<<<<<<<<<<
 *         if bits ==  8*2*sizeof(float)//2:    return b"Ze"
 *         if bits ==  8*2*sizeof(float):       return b"Zf"
 */
  __pyx_t_2 = (__pyx_v_code == __pyx_e_6mpi4py_3MPI_kDLComplex);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":187
 *         if bits ==  8*sizeof(long double): return b"g"
 *     if code == kDLComplex:
 *         if bits ==  8*2*sizeof(float)//2:    return b"Ze"             # <<<<<<<<<<<<<<
 *         if bits ==  8*2*sizeof(float):       return b"Zf"
 *         if bits ==  8*2*sizeof(double):      return b"Zd"
 */
    __pyx_t_2 = (__pyx_v_bits == ((0x10 * (sizeof(float))) / 2));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"Ze");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":188
 *     if code == kDLComplex:
 *         if bits ==  8*2*sizeof(float)//2:    return b"Ze"
 *         if bits ==  8*2*sizeof(float):       return b"Zf"             # <<<<<<<<<<<<<<
 *         if bits ==  8*2*sizeof(double):      return b"Zd"
 *         if bits ==  8*2*sizeof(long double): return b"Zg"  # ~> uncovered
 */
    __pyx_t_2 = (__pyx_v_bits == (0x10 * (sizeof(float))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"Zf");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":189
 *         if bits ==  8*2*sizeof(float)//2:    return b"Ze"
 *         if bits ==  8*2*sizeof(float):       return b"Zf"
 *         if bits ==  8*2*sizeof(double):      return b"Zd"             # <<<<<<<<<<<<<<
 *         if bits ==  8*2*sizeof(long double): return b"Zg"  # ~> uncovered
 *     return BYTE_FMT
 */
    __pyx_t_2 = (__pyx_v_bits == (0x10 * (sizeof(double))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"Zd");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":190
 *         if bits ==  8*2*sizeof(float):       return b"Zf"
 *         if bits ==  8*2*sizeof(double):      return b"Zd"
 *         if bits ==  8*2*sizeof(long double): return b"Zg"  # ~> uncovered             # <<<<<<<<<<<<<<
 *     return BYTE_FMT
 * 
 */
    __pyx_t_2 = (__pyx_v_bits == (0x10 * (sizeof(long double))));
    if (__pyx_t_2) {
      __pyx_r = ((char *)"Zg");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":186
 *         if bits ==  8*sizeof(double):      return b"d"
 *         if bits ==  8*sizeof(long double): return b"g"
 *     if code == kDLComplex:             # <<<<<<<<<<<<<<
 *         if bits ==  8*2*sizeof(float)//2:    return b"Ze"
 *         if bits ==  8*2*sizeof(float):       return b"Zf"
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":191
 *         if bits ==  8*2*sizeof(double):      return b"Zd"
 *         if bits ==  8*2*sizeof(long double): return b"Zg"  # ~> uncovered
 *     return BYTE_FMT             # <<<<<<<<<<<<<<
 * 
 * cdef inline Py_ssize_t dlpack_get_itemsize(
 */
  __pyx_r = __pyx_v_6mpi4py_3MPI_BYTE_FMT;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":156
 *     return size
 * 
 * cdef inline char *dlpack_get_format(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":193
 *     return BYTE_FMT
 * 
 * cdef inline Py_ssize_t dlpack_get_itemsize(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

static CYTHON_INLINE Py_ssize_t __pyx_f_6mpi4py_3MPI_dlpack_get_itemsize(__pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor) {
  unsigned int __pyx_v_code;
  unsigned int __pyx_v_bits;
  Py_ssize_t __pyx_r;
  uint8_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":196
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 *     cdef unsigned int code = dltensor.dtype.code             # <<<<<<<<<<<<<<
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:
 */
  __pyx_t_1 = __pyx_v_dltensor->dtype.code;
  __pyx_v_code = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":197
 * ) noexcept nogil:
 *     cdef unsigned int code = dltensor.dtype.code
 *     cdef unsigned int bits = dltensor.dtype.bits             # <<<<<<<<<<<<<<
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 */
  __pyx_t_1 = __pyx_v_dltensor->dtype.bits;
  __pyx_v_bits = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":198
 *     cdef unsigned int code = dltensor.dtype.code
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:             # <<<<<<<<<<<<<<
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if (
 */
  __pyx_t_2 = (__pyx_v_dltensor->dtype.lanes != 1);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":199
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:             # <<<<<<<<<<<<<<
 *             if (
 *                 bits == 8*sizeof(float) or
 */
    __pyx_t_3 = (__pyx_v_code == __pyx_e_6mpi4py_3MPI_kDLFloat);
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_dltensor->dtype.lanes == 2);
    __pyx_t_2 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":201
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if (
 *                 bits == 8*sizeof(float) or             # <<<<<<<<<<<<<<
 *                 bits == 8*sizeof(double) or
 *                 bits == 8*sizeof(long double)
 */
      __pyx_t_3 = (__pyx_v_bits == (8 * (sizeof(float))));
      if (!__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L8_bool_binop_done;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":202
 *             if (
 *                 bits == 8*sizeof(float) or
 *                 bits == 8*sizeof(double) or             # <<<<<<<<<<<<<<
 *                 bits == 8*sizeof(long double)
 *             ):
 */
      __pyx_t_3 = (__pyx_v_bits == (8 * (sizeof(double))));
      if (!__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L8_bool_binop_done;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":203
 *                 bits == 8*sizeof(float) or
 *                 bits == 8*sizeof(double) or
 *                 bits == 8*sizeof(long double)             # <<<<<<<<<<<<<<
 *             ):
 *                 return <Py_ssize_t> bits // 8 * 2
 */
      __pyx_t_3 = (__pyx_v_bits == (8 * (sizeof(long double))));
      __pyx_t_2 = __pyx_t_3;
      __pyx_L8_bool_binop_done:;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":200
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if (             # <<<<<<<<<<<<<<
 *                 bits == 8*sizeof(float) or
 *                 bits == 8*sizeof(double) or
 */
      if (__pyx_t_2) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":205
 *                 bits == 8*sizeof(long double)
 *             ):
 *                 return <Py_ssize_t> bits // 8 * 2             # <<<<<<<<<<<<<<
 *         bits = 1
 *     return <Py_ssize_t> (bits + 7) // 8
 */
        __pyx_r = ((((Py_ssize_t)__pyx_v_bits) / 8) * 2);
        goto __pyx_L0;

        /* "src/mpi4py/MPI.src/asdlpack.pxi":200
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if (             # <<<<<<<<<<<<<<
 *                 bits == 8*sizeof(float) or
 *                 bits == 8*sizeof(double) or
 */
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":199
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:             # <<<<<<<<<<<<<<
 *             if (
 *                 bits == 8*sizeof(float) or
 */
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":206
 *             ):
 *                 return <Py_ssize_t> bits // 8 * 2
 *         bits = 1             # <<<<<<<<<<<<<<
 *     return <Py_ssize_t> (bits + 7) // 8
 * 
 */
    __pyx_v_bits = 1;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":198
 *     cdef unsigned int code = dltensor.dtype.code
 *     cdef unsigned int bits = dltensor.dtype.bits
 *     if dltensor.dtype.lanes != 1:             # <<<<<<<<<<<<<<
 *         if code == kDLFloat and dltensor.dtype.lanes == 2:
 *             if (
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":207
 *                 return <Py_ssize_t> bits // 8 * 2
 *         bits = 1
 *     return <Py_ssize_t> (bits + 7) // 8             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (((Py_ssize_t)(__pyx_v_bits + 7)) / 8);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":193
 *     return BYTE_FMT
 * 
 * cdef inline Py_ssize_t dlpack_get_itemsize(             # <<<<<<<<<<<<<<
 *     const DLTensor *dltensor,
 * ) noexcept nogil:
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":211
 * # -----------------------------------------------------------------------------
 * 
 * cdef int Py_CheckDLPackBuffer(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     try:    return <bint>hasattr(obj, '__dlpack__')
 *     except: return 0  # ~> uncovered  # noqa
 */

static int __pyx_f_6mpi4py_3MPI_Py_CheckDLPackBuffer(PyObject *__pyx_v_obj) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_CheckDLPackBuffer", 1);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":212
 * 
 * cdef int Py_CheckDLPackBuffer(object obj) noexcept:
 *     try:    return <bint>hasattr(obj, '__dlpack__')             # <<<<<<<<<<<<<<
 *     except: return 0  # ~> uncovered  # noqa
 * 
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      __pyx_t_4 = __Pyx_HasAttr(__pyx_v_obj, __pyx_n_s_dlpack); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 212, __pyx_L3_error)
      __pyx_r = __pyx_t_4;
      goto __pyx_L7_try_return;
    }
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":213
 * cdef int Py_CheckDLPackBuffer(object obj) noexcept:
 *     try:    return <bint>hasattr(obj, '__dlpack__')
 *     except: return 0  # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef int Py_GetDLPackBuffer(object obj, Py_buffer *view, int flags) except -1:
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Py_CheckDLPackBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 213, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __pyx_r = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_except_return;
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":212
 * 
 * cdef int Py_CheckDLPackBuffer(object obj) noexcept:
 *     try:    return <bint>hasattr(obj, '__dlpack__')             # <<<<<<<<<<<<<<
 *     except: return 0  # ~> uncovered  # noqa
 * 
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":211
 * # -----------------------------------------------------------------------------
 * 
 * cdef int Py_CheckDLPackBuffer(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     try:    return <bint>hasattr(obj, '__dlpack__')
 *     except: return 0  # ~> uncovered  # noqa
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.Py_CheckDLPackBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asdlpack.pxi":215
 *     except: return 0  # ~> uncovered  # noqa
 * 
 * cdef int Py_GetDLPackBuffer(object obj, Py_buffer *view, int flags) except -1:             # <<<<<<<<<<<<<<
 *     cdef unsigned version_major = 1
 *     cdef const char *capsulename = b"dltensor_versioned"
 */

static int __pyx_f_6mpi4py_3MPI_Py_GetDLPackBuffer(PyObject *__pyx_v_obj, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  unsigned int __pyx_v_version_major;
  char const *__pyx_v_capsulename;
  char const *__pyx_v_usedcapsulename;
  uint64_t __pyx_v_READONLY;
  PyObject *__pyx_v_dlpack = 0;
  PyObject *__pyx_v_dlpack_device = 0;
  PyObject *__pyx_v_max_version = 0;
  unsigned int __pyx_v_device_type;
  int __pyx_v_device_id;
  PyObject *__pyx_v_capsule = 0;
  void *__pyx_v_pointer;
  __pyx_t_6mpi4py_3MPI_DLManagedTensorVersioned *__pyx_v_managed1;
  __pyx_t_6mpi4py_3MPI_DLManagedTensor *__pyx_v_managed0;
  __pyx_t_6mpi4py_3MPI_DLPackVersion const *__pyx_v_dlversion;
  __pyx_t_6mpi4py_3MPI_DLTensor const *__pyx_v_dltensor;
  void *__pyx_v_buf;
  Py_ssize_t __pyx_v_size;
  Py_ssize_t __pyx_v_itemsize;
  char *__pyx_v_format;
  int __pyx_v_readonly;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  void *__pyx_t_14;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_t_20;
  int __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_GetDLPackBuffer", 1);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":216
 * 
 * cdef int Py_GetDLPackBuffer(object obj, Py_buffer *view, int flags) except -1:
 *     cdef unsigned version_major = 1             # <<<<<<<<<<<<<<
 *     cdef const char *capsulename = b"dltensor_versioned"
 *     cdef const char *usedcapsulename  = b"used_dltensor_versioned"
 */
  __pyx_v_version_major = 1;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":217
 * cdef int Py_GetDLPackBuffer(object obj, Py_buffer *view, int flags) except -1:
 *     cdef unsigned version_major = 1
 *     cdef const char *capsulename = b"dltensor_versioned"             # <<<<<<<<<<<<<<
 *     cdef const char *usedcapsulename  = b"used_dltensor_versioned"
 *     cdef uint64_t READONLY = DLPACK_FLAG_BITMASK_READ_ONLY
 */
  __pyx_v_capsulename = ((char const *)"dltensor_versioned");

  /* "src/mpi4py/MPI.src/asdlpack.pxi":218
 *     cdef unsigned version_major = 1
 *     cdef const char *capsulename = b"dltensor_versioned"
 *     cdef const char *usedcapsulename  = b"used_dltensor_versioned"             # <<<<<<<<<<<<<<
 *     cdef uint64_t READONLY = DLPACK_FLAG_BITMASK_READ_ONLY
 *     cdef object dlpack
 */
  __pyx_v_usedcapsulename = ((char const *)"used_dltensor_versioned");

  /* "src/mpi4py/MPI.src/asdlpack.pxi":219
 *     cdef const char *capsulename = b"dltensor_versioned"
 *     cdef const char *usedcapsulename  = b"used_dltensor_versioned"
 *     cdef uint64_t READONLY = DLPACK_FLAG_BITMASK_READ_ONLY             # <<<<<<<<<<<<<<
 *     cdef object dlpack
 *     cdef object dlpack_device
 */
  __pyx_v_READONLY = __pyx_e_6mpi4py_3MPI_DLPACK_FLAG_BITMASK_READ_ONLY;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":227
 *     cdef object capsule
 *     cdef void *pointer
 *     cdef DLManagedTensorVersioned *managed1 = NULL             # <<<<<<<<<<<<<<
 *     cdef DLManagedTensor *managed0 = NULL
 *     cdef const DLPackVersion *dlversion
 */
  __pyx_v_managed1 = NULL;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":228
 *     cdef void *pointer
 *     cdef DLManagedTensorVersioned *managed1 = NULL
 *     cdef DLManagedTensor *managed0 = NULL             # <<<<<<<<<<<<<<
 *     cdef const DLPackVersion *dlversion
 *     cdef const DLTensor *dltensor
 */
  __pyx_v_managed0 = NULL;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":237
 *     cdef bint readonly
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         dlpack = obj.__dlpack__
 *         dlpack_device = obj.__dlpack_device__
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":238
 * 
 *     try:
 *         dlpack = obj.__dlpack__             # <<<<<<<<<<<<<<
 *         dlpack_device = obj.__dlpack_device__
 *     except AttributeError:
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_dlpack); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 238, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_dlpack = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":239
 *     try:
 *         dlpack = obj.__dlpack__
 *         dlpack_device = obj.__dlpack_device__             # <<<<<<<<<<<<<<
 *     except AttributeError:
 *         raise NotImplementedError("dlpack: missing support")
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_dlpack_device); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 239, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_dlpack_device = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":237
 *     cdef bint readonly
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         dlpack = obj.__dlpack__
 *         dlpack_device = obj.__dlpack_device__
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":240
 *         dlpack = obj.__dlpack__
 *         dlpack_device = obj.__dlpack_device__
 *     except AttributeError:             # <<<<<<<<<<<<<<
 *         raise NotImplementedError("dlpack: missing support")
 * 
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.Py_GetDLPackBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 240, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/asdlpack.pxi":241
 *         dlpack_device = obj.__dlpack_device__
 *     except AttributeError:
 *         raise NotImplementedError("dlpack: missing support")             # <<<<<<<<<<<<<<
 * 
 *     device_type, device_id = dlpack_device()
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 241, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(5, 241, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":237
 *     cdef bint readonly
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         dlpack = obj.__dlpack__
 *         dlpack_device = obj.__dlpack_device__
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":243
 *         raise NotImplementedError("dlpack: missing support")
 * 
 *     device_type, device_id = dlpack_device()             # <<<<<<<<<<<<<<
 *     <void> device_id  # unused
 * 
 */
  __Pyx_INCREF(__pyx_v_dlpack_device);
  __pyx_t_6 = __pyx_v_dlpack_device; __pyx_t_4 = NULL;
  __pyx_t_9 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_9 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
    PyObject* sequence = __pyx_t_7;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(5, 243, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_8 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_8);
    index = 0; __pyx_t_6 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_6);
    index = 1; __pyx_t_4 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_8), 2) < 0) __PYX_ERR(5, 243, __pyx_L1_error)
    __pyx_t_10 = NULL;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L12_unpacking_done;
    __pyx_L11_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_10 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(5, 243, __pyx_L1_error)
    __pyx_L12_unpacking_done:;
  }
  __pyx_t_9 = __Pyx_PyInt_As_unsigned_int(__pyx_t_6); if (unlikely((__pyx_t_9 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(5, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_device_type = __pyx_t_9;
  __pyx_v_device_id = __pyx_t_5;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":244
 * 
 *     device_type, device_id = dlpack_device()
 *     <void> device_id  # unused             # <<<<<<<<<<<<<<
 * 
 *     try:  # DLPack v1.0+
 */
  ((void)__pyx_v_device_id);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":246
 *     <void> device_id  # unused
 * 
 *     try:  # DLPack v1.0+             # <<<<<<<<<<<<<<
 *         max_version = (version_major, 0)
 *         if device_type == kDLCPU:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_1);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":247
 * 
 *     try:  # DLPack v1.0+
 *         max_version = (version_major, 0)             # <<<<<<<<<<<<<<
 *         if device_type == kDLCPU:
 *             capsule = dlpack(max_version=max_version, copy=False)
 */
      __pyx_t_7 = __Pyx_PyInt_From_unsigned_int(__pyx_v_version_major); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 247, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 247, __pyx_L13_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_7);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7)) __PYX_ERR(5, 247, __pyx_L13_error);
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_GIVEREF(__pyx_int_0);
      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_0)) __PYX_ERR(5, 247, __pyx_L13_error);
      __pyx_t_7 = 0;
      __pyx_v_max_version = ((PyObject*)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":248
 *     try:  # DLPack v1.0+
 *         max_version = (version_major, 0)
 *         if device_type == kDLCPU:             # <<<<<<<<<<<<<<
 *             capsule = dlpack(max_version=max_version, copy=False)
 *         else:
 */
      __pyx_t_11 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLCPU);
      if (__pyx_t_11) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":249
 *         max_version = (version_major, 0)
 *         if device_type == kDLCPU:
 *             capsule = dlpack(max_version=max_version, copy=False)             # <<<<<<<<<<<<<<
 *         else:
 *             capsule = dlpack(stream=-1, max_version=max_version, copy=False)
 */
        __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 249, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_max_version, __pyx_v_max_version) < 0) __PYX_ERR(5, 249, __pyx_L13_error)
        if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(5, 249, __pyx_L13_error)
        __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_dlpack, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 249, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_capsule = __pyx_t_7;
        __pyx_t_7 = 0;

        /* "src/mpi4py/MPI.src/asdlpack.pxi":248
 *     try:  # DLPack v1.0+
 *         max_version = (version_major, 0)
 *         if device_type == kDLCPU:             # <<<<<<<<<<<<<<
 *             capsule = dlpack(max_version=max_version, copy=False)
 *         else:
 */
        goto __pyx_L19;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":251
 *             capsule = dlpack(max_version=max_version, copy=False)
 *         else:
 *             capsule = dlpack(stream=-1, max_version=max_version, copy=False)             # <<<<<<<<<<<<<<
 *     except TypeError:  # DLPack v0.x
 *         version_major = 0
 */
      /*else*/ {
        __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 251, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_stream, __pyx_int_neg_1) < 0) __PYX_ERR(5, 251, __pyx_L13_error)
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_max_version, __pyx_v_max_version) < 0) __PYX_ERR(5, 251, __pyx_L13_error)
        if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_copy, Py_False) < 0) __PYX_ERR(5, 251, __pyx_L13_error)
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_dlpack, __pyx_empty_tuple, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 251, __pyx_L13_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_v_capsule = __pyx_t_4;
        __pyx_t_4 = 0;
      }
      __pyx_L19:;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":246
 *     <void> device_id  # unused
 * 
 *     try:  # DLPack v1.0+             # <<<<<<<<<<<<<<
 *         max_version = (version_major, 0)
 *         if device_type == kDLCPU:
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L18_try_end;
    __pyx_L13_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":252
 *         else:
 *             capsule = dlpack(stream=-1, max_version=max_version, copy=False)
 *     except TypeError:  # DLPack v0.x             # <<<<<<<<<<<<<<
 *         version_major = 0
 *         capsulename = b"dltensor"
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.Py_GetDLPackBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(5, 252, __pyx_L15_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "src/mpi4py/MPI.src/asdlpack.pxi":253
 *             capsule = dlpack(stream=-1, max_version=max_version, copy=False)
 *     except TypeError:  # DLPack v0.x
 *         version_major = 0             # <<<<<<<<<<<<<<
 *         capsulename = b"dltensor"
 *         usedcapsulename = b"used_dltensor"
 */
      __pyx_v_version_major = 0;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":254
 *     except TypeError:  # DLPack v0.x
 *         version_major = 0
 *         capsulename = b"dltensor"             # <<<<<<<<<<<<<<
 *         usedcapsulename = b"used_dltensor"
 *         if device_type == kDLCPU:
 */
      __pyx_v_capsulename = ((char const *)"dltensor");

      /* "src/mpi4py/MPI.src/asdlpack.pxi":255
 *         version_major = 0
 *         capsulename = b"dltensor"
 *         usedcapsulename = b"used_dltensor"             # <<<<<<<<<<<<<<
 *         if device_type == kDLCPU:
 *             capsule = dlpack()
 */
      __pyx_v_usedcapsulename = ((char const *)"used_dltensor");

      /* "src/mpi4py/MPI.src/asdlpack.pxi":256
 *         capsulename = b"dltensor"
 *         usedcapsulename = b"used_dltensor"
 *         if device_type == kDLCPU:             # <<<<<<<<<<<<<<
 *             capsule = dlpack()
 *         else:
 */
      __pyx_t_11 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLCPU);
      if (__pyx_t_11) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":257
 *         usedcapsulename = b"used_dltensor"
 *         if device_type == kDLCPU:
 *             capsule = dlpack()             # <<<<<<<<<<<<<<
 *         else:
 *             capsule = dlpack(stream=-1)
 */
        __Pyx_INCREF(__pyx_v_dlpack);
        __pyx_t_12 = __pyx_v_dlpack; __pyx_t_13 = NULL;
        __pyx_t_9 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
            __pyx_t_9 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
          __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 257, __pyx_L15_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_XDECREF_SET(__pyx_v_capsule, __pyx_t_8);
        __pyx_t_8 = 0;

        /* "src/mpi4py/MPI.src/asdlpack.pxi":256
 *         capsulename = b"dltensor"
 *         usedcapsulename = b"used_dltensor"
 *         if device_type == kDLCPU:             # <<<<<<<<<<<<<<
 *             capsule = dlpack()
 *         else:
 */
        goto __pyx_L22;
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":259
 *             capsule = dlpack()
 *         else:
 *             capsule = dlpack(stream=-1)             # <<<<<<<<<<<<<<
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):
 */
      /*else*/ {
        __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 259, __pyx_L15_except_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_stream, __pyx_int_neg_1) < 0) __PYX_ERR(5, 259, __pyx_L15_except_error)
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_v_dlpack, __pyx_empty_tuple, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(5, 259, __pyx_L15_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF_SET(__pyx_v_capsule, __pyx_t_12);
        __pyx_t_12 = 0;
      }
      __pyx_L22:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L14_exception_handled;
    }
    goto __pyx_L15_except_error;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":246
 *     <void> device_id  # unused
 * 
 *     try:  # DLPack v1.0+             # <<<<<<<<<<<<<<
 *         max_version = (version_major, 0)
 *         if device_type == kDLCPU:
 */
    __pyx_L15_except_error:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
    goto __pyx_L1_error;
    __pyx_L14_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
    __pyx_L18_try_end:;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":261
 *             capsule = dlpack(stream=-1)
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: invalid capsule object")
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 */
  __pyx_t_11 = (!(PyCapsule_IsValid(__pyx_v_capsule, __pyx_v_capsulename) != 0));
  if (unlikely(__pyx_t_11)) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":262
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):
 *         raise BufferError("dlpack: invalid capsule object")             # <<<<<<<<<<<<<<
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 *     if version_major >= 1:
 */
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __PYX_ERR(5, 262, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":261
 *             capsule = dlpack(stream=-1)
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):             # <<<<<<<<<<<<<<
 *         raise BufferError("dlpack: invalid capsule object")
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":263
 *     if not PyCapsule_IsValid(capsule, capsulename):
 *         raise BufferError("dlpack: invalid capsule object")
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)             # <<<<<<<<<<<<<<
 *     if version_major >= 1:
 *         managed1  = <DLManagedTensorVersioned*> pointer
 */
  __pyx_t_14 = PyCapsule_GetPointer(__pyx_v_capsule, __pyx_v_capsulename); if (unlikely(__pyx_t_14 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(5, 263, __pyx_L1_error)
  __pyx_v_pointer = __pyx_t_14;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":264
 *         raise BufferError("dlpack: invalid capsule object")
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 *     if version_major >= 1:             # <<<<<<<<<<<<<<
 *         managed1  = <DLManagedTensorVersioned*> pointer
 *         dlversion = &managed1.version
 */
  __pyx_t_11 = (__pyx_v_version_major >= 1);
  if (__pyx_t_11) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":265
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 *     if version_major >= 1:
 *         managed1  = <DLManagedTensorVersioned*> pointer             # <<<<<<<<<<<<<<
 *         dlversion = &managed1.version
 *         dltensor  = &managed1.dl_tensor
 */
    __pyx_v_managed1 = ((__pyx_t_6mpi4py_3MPI_DLManagedTensorVersioned *)__pyx_v_pointer);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":266
 *     if version_major >= 1:
 *         managed1  = <DLManagedTensorVersioned*> pointer
 *         dlversion = &managed1.version             # <<<<<<<<<<<<<<
 *         dltensor  = &managed1.dl_tensor
 *         readonly  = (managed1.flags & READONLY) == READONLY
 */
    __pyx_v_dlversion = (&__pyx_v_managed1->version);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":267
 *         managed1  = <DLManagedTensorVersioned*> pointer
 *         dlversion = &managed1.version
 *         dltensor  = &managed1.dl_tensor             # <<<<<<<<<<<<<<
 *         readonly  = (managed1.flags & READONLY) == READONLY
 *     else:
 */
    __pyx_v_dltensor = (&__pyx_v_managed1->dl_tensor);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":268
 *         dlversion = &managed1.version
 *         dltensor  = &managed1.dl_tensor
 *         readonly  = (managed1.flags & READONLY) == READONLY             # <<<<<<<<<<<<<<
 *     else:
 *         managed0  = <DLManagedTensor*> pointer
 */
    __pyx_v_readonly = ((__pyx_v_managed1->flags & __pyx_v_READONLY) == __pyx_v_READONLY);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":264
 *         raise BufferError("dlpack: invalid capsule object")
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 *     if version_major >= 1:             # <<<<<<<<<<<<<<
 *         managed1  = <DLManagedTensorVersioned*> pointer
 *         dlversion = &managed1.version
 */
    goto __pyx_L24;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":270
 *         readonly  = (managed1.flags & READONLY) == READONLY
 *     else:
 *         managed0  = <DLManagedTensor*> pointer             # <<<<<<<<<<<<<<
 *         dlversion = NULL
 *         dltensor  = &managed0.dl_tensor
 */
  /*else*/ {
    __pyx_v_managed0 = ((__pyx_t_6mpi4py_3MPI_DLManagedTensor *)__pyx_v_pointer);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":271
 *     else:
 *         managed0  = <DLManagedTensor*> pointer
 *         dlversion = NULL             # <<<<<<<<<<<<<<
 *         dltensor  = &managed0.dl_tensor
 *         readonly  = 0
 */
    __pyx_v_dlversion = NULL;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":272
 *         managed0  = <DLManagedTensor*> pointer
 *         dlversion = NULL
 *         dltensor  = &managed0.dl_tensor             # <<<<<<<<<<<<<<
 *         readonly  = 0
 * 
 */
    __pyx_v_dltensor = (&__pyx_v_managed0->dl_tensor);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":273
 *         dlversion = NULL
 *         dltensor  = &managed0.dl_tensor
 *         readonly  = 0             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
    __pyx_v_readonly = 0;
  }
  __pyx_L24:;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":275
 *         readonly  = 0
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         dlpack_check_version(dlversion, version_major)
 *         dlpack_check_shape(dltensor)
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":276
 * 
 *     try:
 *         dlpack_check_version(dlversion, version_major)             # <<<<<<<<<<<<<<
 *         dlpack_check_shape(dltensor)
 *         dlpack_check_contig(dltensor)
 */
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_dlpack_check_version(__pyx_v_dlversion, __pyx_v_version_major); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 276, __pyx_L26_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":277
 *     try:
 *         dlpack_check_version(dlversion, version_major)
 *         dlpack_check_shape(dltensor)             # <<<<<<<<<<<<<<
 *         dlpack_check_contig(dltensor)
 *         buf = dlpack_get_data(dltensor)
 */
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_dlpack_check_shape(__pyx_v_dltensor); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 277, __pyx_L26_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":278
 *         dlpack_check_version(dlversion, version_major)
 *         dlpack_check_shape(dltensor)
 *         dlpack_check_contig(dltensor)             # <<<<<<<<<<<<<<
 *         buf = dlpack_get_data(dltensor)
 *         size = dlpack_get_size(dltensor)
 */
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_dlpack_check_contig(__pyx_v_dltensor); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 278, __pyx_L26_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":279
 *         dlpack_check_shape(dltensor)
 *         dlpack_check_contig(dltensor)
 *         buf = dlpack_get_data(dltensor)             # <<<<<<<<<<<<<<
 *         size = dlpack_get_size(dltensor)
 *         itemsize = dlpack_get_itemsize(dltensor)
 */
    __pyx_v_buf = __pyx_f_6mpi4py_3MPI_dlpack_get_data(__pyx_v_dltensor);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":280
 *         dlpack_check_contig(dltensor)
 *         buf = dlpack_get_data(dltensor)
 *         size = dlpack_get_size(dltensor)             # <<<<<<<<<<<<<<
 *         itemsize = dlpack_get_itemsize(dltensor)
 *         format = dlpack_get_format(dltensor)
 */
    __pyx_v_size = __pyx_f_6mpi4py_3MPI_dlpack_get_size(__pyx_v_dltensor);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":281
 *         buf = dlpack_get_data(dltensor)
 *         size = dlpack_get_size(dltensor)
 *         itemsize = dlpack_get_itemsize(dltensor)             # <<<<<<<<<<<<<<
 *         format = dlpack_get_format(dltensor)
 *     finally:
 */
    __pyx_v_itemsize = __pyx_f_6mpi4py_3MPI_dlpack_get_itemsize(__pyx_v_dltensor);

    /* "src/mpi4py/MPI.src/asdlpack.pxi":282
 *         size = dlpack_get_size(dltensor)
 *         itemsize = dlpack_get_itemsize(dltensor)
 *         format = dlpack_get_format(dltensor)             # <<<<<<<<<<<<<<
 *     finally:
 *         if managed1 != NULL:
 */
    __pyx_v_format = __pyx_f_6mpi4py_3MPI_dlpack_get_format(__pyx_v_dltensor);
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":284
 *         format = dlpack_get_format(dltensor)
 *     finally:
 *         if managed1 != NULL:             # <<<<<<<<<<<<<<
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_11 = (__pyx_v_managed1 != NULL);
      if (__pyx_t_11) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":285
 *     finally:
 *         if managed1 != NULL:
 *             if managed1.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 */
        __pyx_t_11 = (__pyx_v_managed1->deleter != NULL);
        if (__pyx_t_11) {

          /* "src/mpi4py/MPI.src/asdlpack.pxi":286
 *         if managed1 != NULL:
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)             # <<<<<<<<<<<<<<
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:
 */
          __pyx_v_managed1->deleter(__pyx_v_managed1); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 286, __pyx_L1_error)

          /* "src/mpi4py/MPI.src/asdlpack.pxi":285
 *     finally:
 *         if managed1 != NULL:
 *             if managed1.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 */
        }

        /* "src/mpi4py/MPI.src/asdlpack.pxi":284
 *         format = dlpack_get_format(dltensor)
 *     finally:
 *         if managed1 != NULL:             # <<<<<<<<<<<<<<
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 */
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":287
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:             # <<<<<<<<<<<<<<
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)
 */
      __pyx_t_11 = (__pyx_v_managed0 != NULL);
      if (__pyx_t_11) {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":288
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)
 */
        __pyx_t_11 = (__pyx_v_managed0->deleter != NULL);
        if (__pyx_t_11) {

          /* "src/mpi4py/MPI.src/asdlpack.pxi":289
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)             # <<<<<<<<<<<<<<
 *         PyCapsule_SetName(capsule, usedcapsulename)
 *         del capsule
 */
          __pyx_v_managed0->deleter(__pyx_v_managed0); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 289, __pyx_L1_error)

          /* "src/mpi4py/MPI.src/asdlpack.pxi":288
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)
 */
        }

        /* "src/mpi4py/MPI.src/asdlpack.pxi":287
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:             # <<<<<<<<<<<<<<
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)
 */
      }

      /* "src/mpi4py/MPI.src/asdlpack.pxi":290
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)             # <<<<<<<<<<<<<<
 *         del capsule
 * 
 */
      __pyx_t_5 = PyCapsule_SetName(__pyx_v_capsule, __pyx_v_usedcapsulename); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 290, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asdlpack.pxi":291
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)
 *         del capsule             # <<<<<<<<<<<<<<
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 */
      __Pyx_DECREF(__pyx_v_capsule); __pyx_v_capsule = 0;
      goto __pyx_L27;
    }
    __pyx_L26_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __pyx_t_5 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
      {

        /* "src/mpi4py/MPI.src/asdlpack.pxi":284
 *         format = dlpack_get_format(dltensor)
 *     finally:
 *         if managed1 != NULL:             # <<<<<<<<<<<<<<
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 */
        __pyx_t_11 = (__pyx_v_managed1 != NULL);
        if (__pyx_t_11) {

          /* "src/mpi4py/MPI.src/asdlpack.pxi":285
 *     finally:
 *         if managed1 != NULL:
 *             if managed1.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 */
          __pyx_t_11 = (__pyx_v_managed1->deleter != NULL);
          if (__pyx_t_11) {

            /* "src/mpi4py/MPI.src/asdlpack.pxi":286
 *         if managed1 != NULL:
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)             # <<<<<<<<<<<<<<
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:
 */
            __pyx_v_managed1->deleter(__pyx_v_managed1); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 286, __pyx_L33_error)

            /* "src/mpi4py/MPI.src/asdlpack.pxi":285
 *     finally:
 *         if managed1 != NULL:
 *             if managed1.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 */
          }

          /* "src/mpi4py/MPI.src/asdlpack.pxi":284
 *         format = dlpack_get_format(dltensor)
 *     finally:
 *         if managed1 != NULL:             # <<<<<<<<<<<<<<
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 */
        }

        /* "src/mpi4py/MPI.src/asdlpack.pxi":287
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:             # <<<<<<<<<<<<<<
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)
 */
        __pyx_t_11 = (__pyx_v_managed0 != NULL);
        if (__pyx_t_11) {

          /* "src/mpi4py/MPI.src/asdlpack.pxi":288
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)
 */
          __pyx_t_11 = (__pyx_v_managed0->deleter != NULL);
          if (__pyx_t_11) {

            /* "src/mpi4py/MPI.src/asdlpack.pxi":289
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)             # <<<<<<<<<<<<<<
 *         PyCapsule_SetName(capsule, usedcapsulename)
 *         del capsule
 */
            __pyx_v_managed0->deleter(__pyx_v_managed0); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 289, __pyx_L33_error)

            /* "src/mpi4py/MPI.src/asdlpack.pxi":288
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:
 *             if managed0.deleter != NULL:             # <<<<<<<<<<<<<<
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)
 */
          }

          /* "src/mpi4py/MPI.src/asdlpack.pxi":287
 *             if managed1.deleter != NULL:
 *                 managed1.deleter(managed1)
 *         if managed0 != NULL:             # <<<<<<<<<<<<<<
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)
 */
        }

        /* "src/mpi4py/MPI.src/asdlpack.pxi":290
 *             if managed0.deleter != NULL:
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)             # <<<<<<<<<<<<<<
 *         del capsule
 * 
 */
        __pyx_t_20 = PyCapsule_SetName(__pyx_v_capsule, __pyx_v_usedcapsulename); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(5, 290, __pyx_L33_error)

        /* "src/mpi4py/MPI.src/asdlpack.pxi":291
 *                 managed0.deleter(managed0)
 *         PyCapsule_SetName(capsule, usedcapsulename)
 *         del capsule             # <<<<<<<<<<<<<<
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 */
        __Pyx_DECREF(__pyx_v_capsule); __pyx_v_capsule = 0;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
      __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
      goto __pyx_L1_error;
      __pyx_L33_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L27:;
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":293
 *         del capsule
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError("Object is not writable")  # ~> pypy
 * 
 */
  if (PyMPI_RUNTIME_PYPY) {
  } else {
    __pyx_t_11 = PyMPI_RUNTIME_PYPY;
    goto __pyx_L39_bool_binop_done;
  }
  if (__pyx_v_readonly) {
  } else {
    __pyx_t_11 = __pyx_v_readonly;
    goto __pyx_L39_bool_binop_done;
  }
  __pyx_t_21 = ((__pyx_v_flags & PyBUF_WRITABLE) == PyBUF_WRITABLE);
  __pyx_t_11 = __pyx_t_21;
  __pyx_L39_bool_binop_done:;
  if (unlikely(__pyx_t_11)) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":294
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError("Object is not writable")  # ~> pypy             # <<<<<<<<<<<<<<
 * 
 *     PyBuffer_FillInfo(view, obj, buf, size, readonly, flags)
 */
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __PYX_ERR(5, 294, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asdlpack.pxi":293
 *         del capsule
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError("Object is not writable")  # ~> pypy
 * 
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":296
 *         raise BufferError("Object is not writable")  # ~> pypy
 * 
 *     PyBuffer_FillInfo(view, obj, buf, size, readonly, flags)             # <<<<<<<<<<<<<<
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 */
  __pyx_t_15 = PyBuffer_FillInfo(__pyx_v_view, __pyx_v_obj, __pyx_v_buf, __pyx_v_size, __pyx_v_readonly, __pyx_v_flags); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(5, 296, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asdlpack.pxi":298
 *     PyBuffer_FillInfo(view, obj, buf, size, readonly, flags)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         view.format = format
 *         if view.format != BYTE_FMT:
 */
  __pyx_t_11 = ((__pyx_v_flags & PyBUF_FORMAT) == PyBUF_FORMAT);
  if (__pyx_t_11) {

    /* "src/mpi4py/MPI.src/asdlpack.pxi":299
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format             # <<<<<<<<<<<<<<
 *         if view.format != BYTE_FMT:
 *             view.itemsize = itemsize
 */
    __pyx_v_view->format = __pyx_v_format;

    /* "src/mpi4py/MPI.src/asdlpack.pxi":300
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format
 *         if view.format != BYTE_FMT:             # <<<<<<<<<<<<<<
 *             view.itemsize = itemsize
 * 
 */
    __pyx_t_11 = (__pyx_v_view->format != __pyx_v_6mpi4py_3MPI_BYTE_FMT);
    if (__pyx_t_11) {

      /* "src/mpi4py/MPI.src/asdlpack.pxi":301
 *         view.format = format
 *         if view.format != BYTE_FMT:
 *             view.itemsize = itemsize             # <<<<<<<<<<<<<<
 * 
 *     return <int> device_type
 */
      __pyx_v_view->itemsize = __pyx_v_itemsize;

      /* "src/mpi4py/MPI.src/asdlpack.pxi":300
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format
 *         if view.format != BYTE_FMT:             # <<<<<<<<<<<<<<
 *             view.itemsize = itemsize
 * 
 */
    }

    /* "src/mpi4py/MPI.src/asdlpack.pxi":298
 *     PyBuffer_FillInfo(view, obj, buf, size, readonly, flags)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         view.format = format
 *         if view.format != BYTE_FMT:
 */
  }

  /* "src/mpi4py/MPI.src/asdlpack.pxi":303
 *             view.itemsize = itemsize
 * 
 *     return <int> device_type             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = ((int)__pyx_v_device_type);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asdlpack.pxi":215
 *     except: return 0  # ~> uncovered  # noqa
 * 
 * cdef int Py_GetDLPackBuffer(object obj, Py_buffer *view, int flags) except -1:             # <<<<<<<<<<<<<<
 *     cdef unsigned version_major = 1
 *     cdef const char *capsulename = b"dltensor_versioned"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.Py_GetDLPackBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dlpack);
  __Pyx_XDECREF(__pyx_v_dlpack_device);
  __Pyx_XDECREF(__pyx_v_max_version);
  __Pyx_XDECREF(__pyx_v_capsule);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ascaibuf.pxi":6
 * # See https://numba.pydata.org/numba-doc/latest/cuda/cuda_array_interface.html
 * 
 * cdef inline int cuda_is_contig(             # <<<<<<<<<<<<<<
 *     tuple shape,
 *     tuple strides,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_cuda_is_contig(PyObject *__pyx_v_shape, PyObject *__pyx_v_strides, Py_ssize_t __pyx_v_itemsize, char __pyx_v_order) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_ndim;
  Py_ssize_t __pyx_v_start;
  Py_ssize_t __pyx_v_step;
  Py_ssize_t __pyx_v_index;
  Py_ssize_t __pyx_v_dim;
  Py_ssize_t __pyx_v_size;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cuda_is_contig", 1);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":12
 *     char order,
 * ) except -1:
 *     cdef Py_ssize_t i, ndim = len(shape)             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t start, step, index, dim, size = itemsize
 *     if order == c'F':
 */
  if (unlikely(__pyx_v_shape == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(9, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyTuple_GET_SIZE(__pyx_v_shape); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(9, 12, __pyx_L1_error)
  __pyx_v_ndim = __pyx_t_1;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":13
 * ) except -1:
 *     cdef Py_ssize_t i, ndim = len(shape)
 *     cdef Py_ssize_t start, step, index, dim, size = itemsize             # <<<<<<<<<<<<<<
 *     if order == c'F':
 *         start = 0
 */
  __pyx_v_size = __pyx_v_itemsize;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":14
 *     cdef Py_ssize_t i, ndim = len(shape)
 *     cdef Py_ssize_t start, step, index, dim, size = itemsize
 *     if order == c'F':             # <<<<<<<<<<<<<<
 *         start = 0
 *         step = 1
 */
  __pyx_t_2 = (__pyx_v_order == 'F');
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":15
 *     cdef Py_ssize_t start, step, index, dim, size = itemsize
 *     if order == c'F':
 *         start = 0             # <<<<<<<<<<<<<<
 *         step = 1
 *     else:
 */
    __pyx_v_start = 0;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":16
 *     if order == c'F':
 *         start = 0
 *         step = 1             # <<<<<<<<<<<<<<
 *     else:
 *         start = ndim - 1
 */
    __pyx_v_step = 1;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":14
 *     cdef Py_ssize_t i, ndim = len(shape)
 *     cdef Py_ssize_t start, step, index, dim, size = itemsize
 *     if order == c'F':             # <<<<<<<<<<<<<<
 *         start = 0
 *         step = 1
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":18
 *         step = 1
 *     else:
 *         start = ndim - 1             # <<<<<<<<<<<<<<
 *         step = -1
 *     for i in range(ndim):
 */
  /*else*/ {
    __pyx_v_start = (__pyx_v_ndim - 1);

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":19
 *     else:
 *         start = ndim - 1
 *         step = -1             # <<<<<<<<<<<<<<
 *     for i in range(ndim):
 *         index = start + step * i
 */
    __pyx_v_step = -1L;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":20
 *         start = ndim - 1
 *         step = -1
 *     for i in range(ndim):             # <<<<<<<<<<<<<<
 *         index = start + step * i
 *         dim = <Py_ssize_t>shape[index]
 */
  __pyx_t_1 = __pyx_v_ndim;
  __pyx_t_3 = __pyx_t_1;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":21
 *         step = -1
 *     for i in range(ndim):
 *         index = start + step * i             # <<<<<<<<<<<<<<
 *         dim = <Py_ssize_t>shape[index]
 *         if dim > 1 and size != <Py_ssize_t>strides[index]:
 */
    __pyx_v_index = (__pyx_v_start + (__pyx_v_step * __pyx_v_i));

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":22
 *     for i in range(ndim):
 *         index = start + step * i
 *         dim = <Py_ssize_t>shape[index]             # <<<<<<<<<<<<<<
 *         if dim > 1 and size != <Py_ssize_t>strides[index]:
 *             return 0
 */
    if (unlikely(__pyx_v_shape == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(9, 22, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_shape, __pyx_v_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(9, 22, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_dim = ((Py_ssize_t)__pyx_t_6);

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":23
 *         index = start + step * i
 *         dim = <Py_ssize_t>shape[index]
 *         if dim > 1 and size != <Py_ssize_t>strides[index]:             # <<<<<<<<<<<<<<
 *             return 0
 *         size *= dim
 */
    __pyx_t_7 = (__pyx_v_dim > 1);
    if (__pyx_t_7) {
    } else {
      __pyx_t_2 = __pyx_t_7;
      goto __pyx_L7_bool_binop_done;
    }
    if (unlikely(__pyx_v_strides == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(9, 23, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_strides, __pyx_v_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(9, 23, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = (__pyx_v_size != ((Py_ssize_t)__pyx_t_6));
    __pyx_t_2 = __pyx_t_7;
    __pyx_L7_bool_binop_done:;
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":24
 *         dim = <Py_ssize_t>shape[index]
 *         if dim > 1 and size != <Py_ssize_t>strides[index]:
 *             return 0             # <<<<<<<<<<<<<<
 *         size *= dim
 *     return 1
 */
      __pyx_r = 0;
      goto __pyx_L0;

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":23
 *         index = start + step * i
 *         dim = <Py_ssize_t>shape[index]
 *         if dim > 1 and size != <Py_ssize_t>strides[index]:             # <<<<<<<<<<<<<<
 *             return 0
 *         size *= dim
 */
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":25
 *         if dim > 1 and size != <Py_ssize_t>strides[index]:
 *             return 0
 *         size *= dim             # <<<<<<<<<<<<<<
 *     return 1
 * 
 */
    __pyx_v_size = (__pyx_v_size * __pyx_v_dim);
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":26
 *             return 0
 *         size *= dim
 *     return 1             # <<<<<<<<<<<<<<
 * 
 * cdef inline char* cuda_get_format(
 */
  __pyx_r = 1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":6
 * # See https://numba.pydata.org/numba-doc/latest/cuda/cuda_array_interface.html
 * 
 * cdef inline int cuda_is_contig(             # <<<<<<<<<<<<<<
 *     tuple shape,
 *     tuple strides,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.cuda_is_contig", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ascaibuf.pxi":28
 *     return 1
 * 
 * cdef inline char* cuda_get_format(             # <<<<<<<<<<<<<<
 *     char typekind,
 *     Py_ssize_t itemsize,
 */

static CYTHON_INLINE char *__pyx_f_6mpi4py_3MPI_cuda_get_format(char __pyx_v_typekind, Py_ssize_t __pyx_v_itemsize) {
  char *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":32
 *     Py_ssize_t itemsize,
 * ) noexcept nogil:
 *     if typekind == c'b':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(char): return b"?"
 *     if typekind == c'i':
 */
  __pyx_t_1 = (__pyx_v_typekind == 'b');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":33
 * ) noexcept nogil:
 *     if typekind == c'b':
 *         if itemsize == sizeof(char): return b"?"             # <<<<<<<<<<<<<<
 *     if typekind == c'i':
 *         if itemsize == sizeof(char):      return b"b"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(char)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"?");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":32
 *     Py_ssize_t itemsize,
 * ) noexcept nogil:
 *     if typekind == c'b':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(char): return b"?"
 *     if typekind == c'i':
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":34
 *     if typekind == c'b':
 *         if itemsize == sizeof(char): return b"?"
 *     if typekind == c'i':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(char):      return b"b"
 *         if itemsize == sizeof(short):     return b"h"
 */
  __pyx_t_1 = (__pyx_v_typekind == 'i');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":35
 *         if itemsize == sizeof(char): return b"?"
 *     if typekind == c'i':
 *         if itemsize == sizeof(char):      return b"b"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(short):     return b"h"
 *         if itemsize == sizeof(int):       return b"i"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(char)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"b");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":36
 *     if typekind == c'i':
 *         if itemsize == sizeof(char):      return b"b"
 *         if itemsize == sizeof(short):     return b"h"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(int):       return b"i"
 *         if itemsize == sizeof(long):      return b"l"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(short)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"h");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":37
 *         if itemsize == sizeof(char):      return b"b"
 *         if itemsize == sizeof(short):     return b"h"
 *         if itemsize == sizeof(int):       return b"i"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(long):      return b"l"
 *         if itemsize == sizeof(long long): return b"q"  # ~> long
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(int)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"i");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":38
 *         if itemsize == sizeof(short):     return b"h"
 *         if itemsize == sizeof(int):       return b"i"
 *         if itemsize == sizeof(long):      return b"l"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(long long): return b"q"  # ~> long
 *     if typekind == c'u':
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(long)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"l");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":39
 *         if itemsize == sizeof(int):       return b"i"
 *         if itemsize == sizeof(long):      return b"l"
 *         if itemsize == sizeof(long long): return b"q"  # ~> long             # <<<<<<<<<<<<<<
 *     if typekind == c'u':
 *         if itemsize == sizeof(char):      return b"B"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(PY_LONG_LONG)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"q");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":34
 *     if typekind == c'b':
 *         if itemsize == sizeof(char): return b"?"
 *     if typekind == c'i':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(char):      return b"b"
 *         if itemsize == sizeof(short):     return b"h"
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":40
 *         if itemsize == sizeof(long):      return b"l"
 *         if itemsize == sizeof(long long): return b"q"  # ~> long
 *     if typekind == c'u':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(char):      return b"B"
 *         if itemsize == sizeof(short):     return b"H"
 */
  __pyx_t_1 = (__pyx_v_typekind == 'u');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":41
 *         if itemsize == sizeof(long long): return b"q"  # ~> long
 *     if typekind == c'u':
 *         if itemsize == sizeof(char):      return b"B"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(short):     return b"H"
 *         if itemsize == sizeof(int):       return b"I"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(char)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"B");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":42
 *     if typekind == c'u':
 *         if itemsize == sizeof(char):      return b"B"
 *         if itemsize == sizeof(short):     return b"H"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(int):       return b"I"
 *         if itemsize == sizeof(long):      return b"L"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(short)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"H");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":43
 *         if itemsize == sizeof(char):      return b"B"
 *         if itemsize == sizeof(short):     return b"H"
 *         if itemsize == sizeof(int):       return b"I"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(long):      return b"L"
 *         if itemsize == sizeof(long long): return b"Q"  # ~> long
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(int)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"I");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":44
 *         if itemsize == sizeof(short):     return b"H"
 *         if itemsize == sizeof(int):       return b"I"
 *         if itemsize == sizeof(long):      return b"L"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(long long): return b"Q"  # ~> long
 *     if typekind == c'f':
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(long)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"L");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":45
 *         if itemsize == sizeof(int):       return b"I"
 *         if itemsize == sizeof(long):      return b"L"
 *         if itemsize == sizeof(long long): return b"Q"  # ~> long             # <<<<<<<<<<<<<<
 *     if typekind == c'f':
 *         if itemsize == sizeof(float)//2:    return b"e"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(PY_LONG_LONG)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"Q");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":40
 *         if itemsize == sizeof(long):      return b"l"
 *         if itemsize == sizeof(long long): return b"q"  # ~> long
 *     if typekind == c'u':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(char):      return b"B"
 *         if itemsize == sizeof(short):     return b"H"
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":46
 *         if itemsize == sizeof(long):      return b"L"
 *         if itemsize == sizeof(long long): return b"Q"  # ~> long
 *     if typekind == c'f':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(float)//2:    return b"e"
 *         if itemsize == sizeof(float):       return b"f"
 */
  __pyx_t_1 = (__pyx_v_typekind == 'f');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":47
 *         if itemsize == sizeof(long long): return b"Q"  # ~> long
 *     if typekind == c'f':
 *         if itemsize == sizeof(float)//2:    return b"e"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(float):       return b"f"
 *         if itemsize == sizeof(double):      return b"d"
 */
    __pyx_t_1 = (__pyx_v_itemsize == ((sizeof(float)) / 2));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"e");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":48
 *     if typekind == c'f':
 *         if itemsize == sizeof(float)//2:    return b"e"
 *         if itemsize == sizeof(float):       return b"f"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(double):      return b"d"
 *         if itemsize == sizeof(long double): return b"g"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(float)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"f");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":49
 *         if itemsize == sizeof(float)//2:    return b"e"
 *         if itemsize == sizeof(float):       return b"f"
 *         if itemsize == sizeof(double):      return b"d"             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(long double): return b"g"
 *     if typekind == c'c':
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(double)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"d");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":50
 *         if itemsize == sizeof(float):       return b"f"
 *         if itemsize == sizeof(double):      return b"d"
 *         if itemsize == sizeof(long double): return b"g"             # <<<<<<<<<<<<<<
 *     if typekind == c'c':
 *         if itemsize == 2*sizeof(float)//2:    return b"Ze"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (sizeof(long double)));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"g");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":46
 *         if itemsize == sizeof(long):      return b"L"
 *         if itemsize == sizeof(long long): return b"Q"  # ~> long
 *     if typekind == c'f':             # <<<<<<<<<<<<<<
 *         if itemsize == sizeof(float)//2:    return b"e"
 *         if itemsize == sizeof(float):       return b"f"
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":51
 *         if itemsize == sizeof(double):      return b"d"
 *         if itemsize == sizeof(long double): return b"g"
 *     if typekind == c'c':             # <<<<<<<<<<<<<<
 *         if itemsize == 2*sizeof(float)//2:    return b"Ze"
 *         if itemsize == 2*sizeof(float):       return b"Zf"
 */
  __pyx_t_1 = (__pyx_v_typekind == 'c');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":52
 *         if itemsize == sizeof(long double): return b"g"
 *     if typekind == c'c':
 *         if itemsize == 2*sizeof(float)//2:    return b"Ze"             # <<<<<<<<<<<<<<
 *         if itemsize == 2*sizeof(float):       return b"Zf"
 *         if itemsize == 2*sizeof(double):      return b"Zd"
 */
    __pyx_t_1 = (__pyx_v_itemsize == ((2 * (sizeof(float))) / 2));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"Ze");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":53
 *     if typekind == c'c':
 *         if itemsize == 2*sizeof(float)//2:    return b"Ze"
 *         if itemsize == 2*sizeof(float):       return b"Zf"             # <<<<<<<<<<<<<<
 *         if itemsize == 2*sizeof(double):      return b"Zd"
 *         if itemsize == 2*sizeof(long double): return b"Zg"
 */
    __pyx_t_1 = (__pyx_v_itemsize == (2 * (sizeof(float))));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"Zf");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":54
 *         if itemsize == 2*sizeof(float)//2:    return b"Ze"
 *         if itemsize == 2*sizeof(float):       return b"Zf"
 *         if itemsize == 2*sizeof(double):      return b"Zd"             # <<<<<<<<<<<<<<
 *         if itemsize == 2*sizeof(long double): return b"Zg"
 *     return BYTE_FMT
 */
    __pyx_t_1 = (__pyx_v_itemsize == (2 * (sizeof(double))));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"Zd");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":55
 *         if itemsize == 2*sizeof(float):       return b"Zf"
 *         if itemsize == 2*sizeof(double):      return b"Zd"
 *         if itemsize == 2*sizeof(long double): return b"Zg"             # <<<<<<<<<<<<<<
 *     return BYTE_FMT
 * 
 */
    __pyx_t_1 = (__pyx_v_itemsize == (2 * (sizeof(long double))));
    if (__pyx_t_1) {
      __pyx_r = ((char *)"Zg");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":51
 *         if itemsize == sizeof(double):      return b"d"
 *         if itemsize == sizeof(long double): return b"g"
 *     if typekind == c'c':             # <<<<<<<<<<<<<<
 *         if itemsize == 2*sizeof(float)//2:    return b"Ze"
 *         if itemsize == 2*sizeof(float):       return b"Zf"
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":56
 *         if itemsize == 2*sizeof(double):      return b"Zd"
 *         if itemsize == 2*sizeof(long double): return b"Zg"
 *     return BYTE_FMT             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_v_6mpi4py_3MPI_BYTE_FMT;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":28
 *     return 1
 * 
 * cdef inline char* cuda_get_format(             # <<<<<<<<<<<<<<
 *     char typekind,
 *     Py_ssize_t itemsize,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ascaibuf.pxi":60
 * # -----------------------------------------------------------------------------
 * 
 * cdef int Py_CheckCAIBuffer(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     try:    return <bint>hasattr(obj, '__cuda_array_interface__')
 *     except: return 0  # ~> uncovered  # noqa
 */

static int __pyx_f_6mpi4py_3MPI_Py_CheckCAIBuffer(PyObject *__pyx_v_obj) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_CheckCAIBuffer", 1);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":61
 * 
 * cdef int Py_CheckCAIBuffer(object obj) noexcept:
 *     try:    return <bint>hasattr(obj, '__cuda_array_interface__')             # <<<<<<<<<<<<<<
 *     except: return 0  # ~> uncovered  # noqa
 * 
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {
      __pyx_t_4 = __Pyx_HasAttr(__pyx_v_obj, __pyx_n_s_cuda_array_interface); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(9, 61, __pyx_L3_error)
      __pyx_r = __pyx_t_4;
      goto __pyx_L7_try_return;
    }
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":62
 * cdef int Py_CheckCAIBuffer(object obj) noexcept:
 *     try:    return <bint>hasattr(obj, '__cuda_array_interface__')
 *     except: return 0  # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef int Py_GetCAIBuffer(object obj, Py_buffer *view, int flags) except -1:
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Py_CheckCAIBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(9, 62, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __pyx_r = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_except_return;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":61
 * 
 * cdef int Py_CheckCAIBuffer(object obj) noexcept:
 *     try:    return <bint>hasattr(obj, '__cuda_array_interface__')             # <<<<<<<<<<<<<<
 *     except: return 0  # ~> uncovered  # noqa
 * 
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":60
 * # -----------------------------------------------------------------------------
 * 
 * cdef int Py_CheckCAIBuffer(object obj) noexcept:             # <<<<<<<<<<<<<<
 *     try:    return <bint>hasattr(obj, '__cuda_array_interface__')
 *     except: return 0  # ~> uncovered  # noqa
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.Py_CheckCAIBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ascaibuf.pxi":64
 *     except: return 0  # ~> uncovered  # noqa
 * 
 * cdef int Py_GetCAIBuffer(object obj, Py_buffer *view, int flags) except -1:             # <<<<<<<<<<<<<<
 *     cdef dict cuda_array_interface
 *     cdef tuple data
 */

static int __pyx_f_6mpi4py_3MPI_Py_GetCAIBuffer(PyObject *__pyx_v_obj, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  PyObject *__pyx_v_cuda_array_interface = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_typestr = 0;
  PyObject *__pyx_v_shape = 0;
  PyObject *__pyx_v_strides = 0;
  PyObject *__pyx_v_descr = 0;
  PyObject *__pyx_v_dev_ptr = 0;
  PyObject *__pyx_v_mask = 0;
  void *__pyx_v_buf;
  int __pyx_v_readonly;
  Py_ssize_t __pyx_v_s;
  Py_ssize_t __pyx_v_size;
  Py_ssize_t __pyx_v_itemsize;
  char *__pyx_v_format;
  char __pyx_v_byteorder;
  char __pyx_v_typekind;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_t_12;
  void *__pyx_t_13;
  long __pyx_t_14;
  Py_UCS4 __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Py_GetCAIBuffer", 1);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":72
 *     cdef list descr
 *     cdef object dev_ptr, mask
 *     cdef void *buf = NULL             # <<<<<<<<<<<<<<
 *     cdef bint readonly = 0
 *     cdef Py_ssize_t s, size = 1
 */
  __pyx_v_buf = NULL;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":73
 *     cdef object dev_ptr, mask
 *     cdef void *buf = NULL
 *     cdef bint readonly = 0             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t s, size = 1
 *     cdef Py_ssize_t itemsize = 1
 */
  __pyx_v_readonly = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":74
 *     cdef void *buf = NULL
 *     cdef bint readonly = 0
 *     cdef Py_ssize_t s, size = 1             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t itemsize = 1
 *     cdef char *format = BYTE_FMT
 */
  __pyx_v_size = 1;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":75
 *     cdef bint readonly = 0
 *     cdef Py_ssize_t s, size = 1
 *     cdef Py_ssize_t itemsize = 1             # <<<<<<<<<<<<<<
 *     cdef char *format = BYTE_FMT
 *     cdef char byteorder = c'|'
 */
  __pyx_v_itemsize = 1;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":76
 *     cdef Py_ssize_t s, size = 1
 *     cdef Py_ssize_t itemsize = 1
 *     cdef char *format = BYTE_FMT             # <<<<<<<<<<<<<<
 *     cdef char byteorder = c'|'
 *     cdef char typekind = c'u'
 */
  __pyx_v_format = __pyx_v_6mpi4py_3MPI_BYTE_FMT;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":77
 *     cdef Py_ssize_t itemsize = 1
 *     cdef char *format = BYTE_FMT
 *     cdef char byteorder = c'|'             # <<<<<<<<<<<<<<
 *     cdef char typekind = c'u'
 * 
 */
  __pyx_v_byteorder = '|';

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":78
 *     cdef char *format = BYTE_FMT
 *     cdef char byteorder = c'|'
 *     cdef char typekind = c'u'             # <<<<<<<<<<<<<<
 * 
 *     try:
 */
  __pyx_v_typekind = 'u';

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":80
 *     cdef char typekind = c'u'
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         cuda_array_interface = obj.__cuda_array_interface__
 *     except AttributeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":81
 * 
 *     try:
 *         cuda_array_interface = obj.__cuda_array_interface__             # <<<<<<<<<<<<<<
 *     except AttributeError:
 *         raise NotImplementedError("missing CUDA array interface")
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_cuda_array_interface); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 81, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_4))) __PYX_ERR(9, 81, __pyx_L3_error)
      __pyx_v_cuda_array_interface = ((PyObject*)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":80
 *     cdef char typekind = c'u'
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         cuda_array_interface = obj.__cuda_array_interface__
 *     except AttributeError:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":82
 *     try:
 *         cuda_array_interface = obj.__cuda_array_interface__
 *     except AttributeError:             # <<<<<<<<<<<<<<
 *         raise NotImplementedError("missing CUDA array interface")
 * 
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.Py_GetCAIBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(9, 82, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":83
 *         cuda_array_interface = obj.__cuda_array_interface__
 *     except AttributeError:
 *         raise NotImplementedError("missing CUDA array interface")             # <<<<<<<<<<<<<<
 * 
 *     # mandatory
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 83, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(9, 83, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":80
 *     cdef char typekind = c'u'
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         cuda_array_interface = obj.__cuda_array_interface__
 *     except AttributeError:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":86
 * 
 *     # mandatory
 *     data = cuda_array_interface['data']             # <<<<<<<<<<<<<<
 *     typestr = cuda_array_interface['typestr']
 *     shape = cuda_array_interface['shape']
 */
  if (unlikely(__pyx_v_cuda_array_interface == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 86, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_cuda_array_interface, __pyx_n_s_data); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_7))) __PYX_ERR(9, 86, __pyx_L1_error)
  __pyx_v_data = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":87
 *     # mandatory
 *     data = cuda_array_interface['data']
 *     typestr = cuda_array_interface['typestr']             # <<<<<<<<<<<<<<
 *     shape = cuda_array_interface['shape']
 * 
 */
  if (unlikely(__pyx_v_cuda_array_interface == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 87, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_cuda_array_interface, __pyx_n_s_typestr); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(9, 87, __pyx_L1_error)
  __pyx_v_typestr = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":88
 *     data = cuda_array_interface['data']
 *     typestr = cuda_array_interface['typestr']
 *     shape = cuda_array_interface['shape']             # <<<<<<<<<<<<<<
 * 
 *     # optional
 */
  if (unlikely(__pyx_v_cuda_array_interface == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 88, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_cuda_array_interface, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_7))) __PYX_ERR(9, 88, __pyx_L1_error)
  __pyx_v_shape = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":91
 * 
 *     # optional
 *     strides = cuda_array_interface.get('strides')             # <<<<<<<<<<<<<<
 *     descr = cuda_array_interface.get('descr')
 *     mask = cuda_array_interface.get('mask')
 */
  if (unlikely(__pyx_v_cuda_array_interface == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(9, 91, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_cuda_array_interface, __pyx_n_s_strides, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(PyTuple_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_7))) __PYX_ERR(9, 91, __pyx_L1_error)
  __pyx_v_strides = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":92
 *     # optional
 *     strides = cuda_array_interface.get('strides')
 *     descr = cuda_array_interface.get('descr')             # <<<<<<<<<<<<<<
 *     mask = cuda_array_interface.get('mask')
 * 
 */
  if (unlikely(__pyx_v_cuda_array_interface == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(9, 92, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_cuda_array_interface, __pyx_n_s_descr, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (!(likely(PyList_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_7))) __PYX_ERR(9, 92, __pyx_L1_error)
  __pyx_v_descr = ((PyObject*)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":93
 *     strides = cuda_array_interface.get('strides')
 *     descr = cuda_array_interface.get('descr')
 *     mask = cuda_array_interface.get('mask')             # <<<<<<<<<<<<<<
 * 
 *     dev_ptr, readonly = data
 */
  if (unlikely(__pyx_v_cuda_array_interface == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(9, 93, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_cuda_array_interface, __pyx_n_s_mask, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_v_mask = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":95
 *     mask = cuda_array_interface.get('mask')
 * 
 *     dev_ptr, readonly = data             # <<<<<<<<<<<<<<
 *     for s in shape: size *= s
 *     if dev_ptr is None and size == 0: dev_ptr = 0
 */
  if (likely(__pyx_v_data != Py_None)) {
    PyObject* sequence = __pyx_v_data;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(9, 95, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_t_6);
    #else
    __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    #endif
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(9, 95, __pyx_L1_error)
  }
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_dev_ptr = __pyx_t_7;
  __pyx_t_7 = 0;
  __pyx_v_readonly = __pyx_t_9;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":96
 * 
 *     dev_ptr, readonly = data
 *     for s in shape: size *= s             # <<<<<<<<<<<<<<
 *     if dev_ptr is None and size == 0: dev_ptr = 0
 *     buf = PyLong_AsVoidPtr(dev_ptr)
 */
  if (unlikely(__pyx_v_shape == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(9, 96, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_v_shape; __Pyx_INCREF(__pyx_t_6);
  __pyx_t_10 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(9, 96, __pyx_L1_error)
      #endif
      if (__pyx_t_10 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(9, 96, __pyx_L1_error)
    #else
    __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    #endif
    __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_7); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(9, 96, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_s = __pyx_t_11;
    __pyx_v_size = (__pyx_v_size * __pyx_v_s);
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":97
 *     dev_ptr, readonly = data
 *     for s in shape: size *= s
 *     if dev_ptr is None and size == 0: dev_ptr = 0             # <<<<<<<<<<<<<<
 *     buf = PyLong_AsVoidPtr(dev_ptr)
 *     byteorder = <char>ord(typestr[0:1])
 */
  __pyx_t_12 = (__pyx_v_dev_ptr == Py_None);
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_12 = (__pyx_v_size == 0);
  __pyx_t_9 = __pyx_t_12;
  __pyx_L15_bool_binop_done:;
  if (__pyx_t_9) {
    __Pyx_INCREF(__pyx_int_0);
    __Pyx_DECREF_SET(__pyx_v_dev_ptr, __pyx_int_0);
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":98
 *     for s in shape: size *= s
 *     if dev_ptr is None and size == 0: dev_ptr = 0
 *     buf = PyLong_AsVoidPtr(dev_ptr)             # <<<<<<<<<<<<<<
 *     byteorder = <char>ord(typestr[0:1])
 *     typekind = <char>ord(typestr[1:2])
 */
  __pyx_t_13 = PyLong_AsVoidPtr(__pyx_v_dev_ptr); if (unlikely(__pyx_t_13 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(9, 98, __pyx_L1_error)
  __pyx_v_buf = __pyx_t_13;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":99
 *     if dev_ptr is None and size == 0: dev_ptr = 0
 *     buf = PyLong_AsVoidPtr(dev_ptr)
 *     byteorder = <char>ord(typestr[0:1])             # <<<<<<<<<<<<<<
 *     typekind = <char>ord(typestr[1:2])
 *     itemsize = <Py_ssize_t>int(typestr[2:])
 */
  if (unlikely(__pyx_v_typestr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 99, __pyx_L1_error)
  }
  __pyx_t_6 = PySequence_GetSlice(__pyx_v_typestr, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_14 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_14 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(9, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_byteorder = ((char)__pyx_t_14);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":100
 *     buf = PyLong_AsVoidPtr(dev_ptr)
 *     byteorder = <char>ord(typestr[0:1])
 *     typekind = <char>ord(typestr[1:2])             # <<<<<<<<<<<<<<
 *     itemsize = <Py_ssize_t>int(typestr[2:])
 *     format = cuda_get_format(typekind, itemsize)
 */
  if (unlikely(__pyx_v_typestr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 100, __pyx_L1_error)
  }
  __pyx_t_6 = PySequence_GetSlice(__pyx_v_typestr, 1, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_14 = __Pyx_PyObject_Ord(__pyx_t_6); if (unlikely(__pyx_t_14 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(9, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_typekind = ((char)__pyx_t_14);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":101
 *     byteorder = <char>ord(typestr[0:1])
 *     typekind = <char>ord(typestr[1:2])
 *     itemsize = <Py_ssize_t>int(typestr[2:])             # <<<<<<<<<<<<<<
 *     format = cuda_get_format(typekind, itemsize)
 * 
 */
  if (unlikely(__pyx_v_typestr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 101, __pyx_L1_error)
  }
  __pyx_t_6 = PySequence_GetSlice(__pyx_v_typestr, 2, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_PyNumber_Int(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_t_7); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(9, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_itemsize = ((Py_ssize_t)__pyx_t_10);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":102
 *     typekind = <char>ord(typestr[1:2])
 *     itemsize = <Py_ssize_t>int(typestr[2:])
 *     format = cuda_get_format(typekind, itemsize)             # <<<<<<<<<<<<<<
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 */
  __pyx_v_format = __pyx_f_6mpi4py_3MPI_cuda_get_format(__pyx_v_typekind, __pyx_v_itemsize);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":104
 *     format = cuda_get_format(typekind, itemsize)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         if byteorder == c'<':  # little-endian
 *             if not is_little_endian():
 */
  __pyx_t_9 = ((__pyx_v_flags & PyBUF_FORMAT) == PyBUF_FORMAT);
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":105
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         if byteorder == c'<':  # little-endian             # <<<<<<<<<<<<<<
 *             if not is_little_endian():
 *                 raise BufferError(                  # ~> big-endian
 */
    __pyx_t_9 = (__pyx_v_byteorder == '<');
    if (__pyx_t_9) {

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":106
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         if byteorder == c'<':  # little-endian
 *             if not is_little_endian():             # <<<<<<<<<<<<<<
 *                 raise BufferError(                  # ~> big-endian
 *                     f"__cuda_array_interface__: "   # ~> big-endian
 */
      __pyx_t_9 = (!(__pyx_f_6mpi4py_3MPI_is_little_endian() != 0));
      if (unlikely(__pyx_t_9)) {

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":108
 *             if not is_little_endian():
 *                 raise BufferError(                  # ~> big-endian
 *                     f"__cuda_array_interface__: "   # ~> big-endian             # <<<<<<<<<<<<<<
 *                     f"typestr {typestr!r} "         # ~> big-endian
 *                     f"with non-native byte order")  # ~> big-endian
 */
        __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_10 = 0;
        __pyx_t_15 = 127;
        __Pyx_INCREF(__pyx_kp_u_cuda_array_interface___typestr);
        __pyx_t_10 += 34;
        __Pyx_GIVEREF(__pyx_kp_u_cuda_array_interface___typestr);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_kp_u_cuda_array_interface___typestr);

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":109
 *                 raise BufferError(                  # ~> big-endian
 *                     f"__cuda_array_interface__: "   # ~> big-endian
 *                     f"typestr {typestr!r} "         # ~> big-endian             # <<<<<<<<<<<<<<
 *                     f"with non-native byte order")  # ~> big-endian
 *         elif byteorder == c'>':  # big-endian
 */
        __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typestr), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 109, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
        __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u_with_non_native_byte_order);
        __pyx_t_10 += 27;
        __Pyx_GIVEREF(__pyx_kp_u_with_non_native_byte_order);
        PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_kp_u_with_non_native_byte_order);

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":108
 *             if not is_little_endian():
 *                 raise BufferError(                  # ~> big-endian
 *                     f"__cuda_array_interface__: "   # ~> big-endian             # <<<<<<<<<<<<<<
 *                     f"typestr {typestr!r} "         # ~> big-endian
 *                     f"with non-native byte order")  # ~> big-endian
 */
        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, __pyx_t_10, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 108, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":107
 *         if byteorder == c'<':  # little-endian
 *             if not is_little_endian():
 *                 raise BufferError(                  # ~> big-endian             # <<<<<<<<<<<<<<
 *                     f"__cuda_array_interface__: "   # ~> big-endian
 *                     f"typestr {typestr!r} "         # ~> big-endian
 */
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_BufferError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 107, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __PYX_ERR(9, 107, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":106
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         if byteorder == c'<':  # little-endian
 *             if not is_little_endian():             # <<<<<<<<<<<<<<
 *                 raise BufferError(                  # ~> big-endian
 *                     f"__cuda_array_interface__: "   # ~> big-endian
 */
      }

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":105
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         if byteorder == c'<':  # little-endian             # <<<<<<<<<<<<<<
 *             if not is_little_endian():
 *                 raise BufferError(                  # ~> big-endian
 */
      goto __pyx_L18;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":111
 *                     f"typestr {typestr!r} "         # ~> big-endian
 *                     f"with non-native byte order")  # ~> big-endian
 *         elif byteorder == c'>':  # big-endian             # <<<<<<<<<<<<<<
 *             if not is_big_endian():
 *                 raise BufferError(                  # ~> little-endian
 */
    __pyx_t_9 = (__pyx_v_byteorder == '>');
    if (__pyx_t_9) {

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":112
 *                     f"with non-native byte order")  # ~> big-endian
 *         elif byteorder == c'>':  # big-endian
 *             if not is_big_endian():             # <<<<<<<<<<<<<<
 *                 raise BufferError(                  # ~> little-endian
 *                     f"__cuda_array_interface__: "   # ~> little-endian
 */
      __pyx_t_9 = (!(__pyx_f_6mpi4py_3MPI_is_big_endian() != 0));
      if (unlikely(__pyx_t_9)) {

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":114
 *             if not is_big_endian():
 *                 raise BufferError(                  # ~> little-endian
 *                     f"__cuda_array_interface__: "   # ~> little-endian             # <<<<<<<<<<<<<<
 *                     f"typestr {typestr!r} "         # ~> little-endian
 *                     f"with non-native byte order")  # ~> little-endian
 */
        __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_10 = 0;
        __pyx_t_15 = 127;
        __Pyx_INCREF(__pyx_kp_u_cuda_array_interface___typestr);
        __pyx_t_10 += 34;
        __Pyx_GIVEREF(__pyx_kp_u_cuda_array_interface___typestr);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_kp_u_cuda_array_interface___typestr);

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":115
 *                 raise BufferError(                  # ~> little-endian
 *                     f"__cuda_array_interface__: "   # ~> little-endian
 *                     f"typestr {typestr!r} "         # ~> little-endian             # <<<<<<<<<<<<<<
 *                     f"with non-native byte order")  # ~> little-endian
 *         elif byteorder != c'|':
 */
        __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typestr), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 115, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
        __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u_with_non_native_byte_order);
        __pyx_t_10 += 27;
        __Pyx_GIVEREF(__pyx_kp_u_with_non_native_byte_order);
        PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_kp_u_with_non_native_byte_order);

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":114
 *             if not is_big_endian():
 *                 raise BufferError(                  # ~> little-endian
 *                     f"__cuda_array_interface__: "   # ~> little-endian             # <<<<<<<<<<<<<<
 *                     f"typestr {typestr!r} "         # ~> little-endian
 *                     f"with non-native byte order")  # ~> little-endian
 */
        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, __pyx_t_10, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 114, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":113
 *         elif byteorder == c'>':  # big-endian
 *             if not is_big_endian():
 *                 raise BufferError(                  # ~> little-endian             # <<<<<<<<<<<<<<
 *                     f"__cuda_array_interface__: "   # ~> little-endian
 *                     f"typestr {typestr!r} "         # ~> little-endian
 */
        __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_BufferError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 113, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __PYX_ERR(9, 113, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/ascaibuf.pxi":112
 *                     f"with non-native byte order")  # ~> big-endian
 *         elif byteorder == c'>':  # big-endian
 *             if not is_big_endian():             # <<<<<<<<<<<<<<
 *                 raise BufferError(                  # ~> little-endian
 *                     f"__cuda_array_interface__: "   # ~> little-endian
 */
      }

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":111
 *                     f"typestr {typestr!r} "         # ~> big-endian
 *                     f"with non-native byte order")  # ~> big-endian
 *         elif byteorder == c'>':  # big-endian             # <<<<<<<<<<<<<<
 *             if not is_big_endian():
 *                 raise BufferError(                  # ~> little-endian
 */
      goto __pyx_L18;
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":117
 *                     f"typestr {typestr!r} "         # ~> little-endian
 *                     f"with non-native byte order")  # ~> little-endian
 *         elif byteorder != c'|':             # <<<<<<<<<<<<<<
 *             raise BufferError(
 *                 f"__cuda_array_interface__: "
 */
    __pyx_t_9 = (__pyx_v_byteorder != '|');
    if (unlikely(__pyx_t_9)) {

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":119
 *         elif byteorder != c'|':
 *             raise BufferError(
 *                 f"__cuda_array_interface__: "             # <<<<<<<<<<<<<<
 *                 f"typestr {typestr!r} "
 *                 f"with unrecognized byte order")
 */
      __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = 0;
      __pyx_t_15 = 127;
      __Pyx_INCREF(__pyx_kp_u_cuda_array_interface___typestr);
      __pyx_t_10 += 34;
      __Pyx_GIVEREF(__pyx_kp_u_cuda_array_interface___typestr);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_kp_u_cuda_array_interface___typestr);

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":120
 *             raise BufferError(
 *                 f"__cuda_array_interface__: "
 *                 f"typestr {typestr!r} "             # <<<<<<<<<<<<<<
 *                 f"with unrecognized byte order")
 *     if mask is not None:
 */
      __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_typestr), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 120, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_kp_u_with_unrecognized_byte_order);
      __pyx_t_10 += 29;
      __Pyx_GIVEREF(__pyx_kp_u_with_unrecognized_byte_order);
      PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_kp_u_with_unrecognized_byte_order);

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":119
 *         elif byteorder != c'|':
 *             raise BufferError(
 *                 f"__cuda_array_interface__: "             # <<<<<<<<<<<<<<
 *                 f"typestr {typestr!r} "
 *                 f"with unrecognized byte order")
 */
      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, __pyx_t_10, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":118
 *                     f"with non-native byte order")  # ~> little-endian
 *         elif byteorder != c'|':
 *             raise BufferError(             # <<<<<<<<<<<<<<
 *                 f"__cuda_array_interface__: "
 *                 f"typestr {typestr!r} "
 */
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_BufferError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 118, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(9, 118, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":117
 *                     f"typestr {typestr!r} "         # ~> little-endian
 *                     f"with non-native byte order")  # ~> little-endian
 *         elif byteorder != c'|':             # <<<<<<<<<<<<<<
 *             raise BufferError(
 *                 f"__cuda_array_interface__: "
 */
    }
    __pyx_L18:;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":104
 *     format = cuda_get_format(typekind, itemsize)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         if byteorder == c'<':  # little-endian
 *             if not is_little_endian():
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":122
 *                 f"typestr {typestr!r} "
 *                 f"with unrecognized byte order")
 *     if mask is not None:             # <<<<<<<<<<<<<<
 *         raise BufferError(
 *             "__cuda_array_interface__: "
 */
  __pyx_t_9 = (__pyx_v_mask != Py_None);
  if (unlikely(__pyx_t_9)) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":123
 *                 f"with unrecognized byte order")
 *     if mask is not None:
 *         raise BufferError(             # <<<<<<<<<<<<<<
 *             "__cuda_array_interface__: "
 *             "cannot handle masked arrays"
 */
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_Raise(__pyx_t_7, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __PYX_ERR(9, 123, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":122
 *                 f"typestr {typestr!r} "
 *                 f"with unrecognized byte order")
 *     if mask is not None:             # <<<<<<<<<<<<<<
 *         raise BufferError(
 *             "__cuda_array_interface__: "
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":127
 *             "cannot handle masked arrays"
 *         )
 *     if size < 0:             # <<<<<<<<<<<<<<
 *         raise BufferError(
 *             f"__cuda_array_interface__: "
 */
  __pyx_t_9 = (__pyx_v_size < 0);
  if (unlikely(__pyx_t_9)) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":129
 *     if size < 0:
 *         raise BufferError(
 *             f"__cuda_array_interface__: "             # <<<<<<<<<<<<<<
 *             f"buffer with negative size "
 *             f"(shape:{shape}, size:{size})"
 */
    __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_10 = 0;
    __pyx_t_15 = 127;
    __Pyx_INCREF(__pyx_kp_u_cuda_array_interface___buffer);
    __pyx_t_10 += 59;
    __Pyx_GIVEREF(__pyx_kp_u_cuda_array_interface___buffer);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_kp_u_cuda_array_interface___buffer);

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":131
 *             f"__cuda_array_interface__: "
 *             f"buffer with negative size "
 *             f"(shape:{shape}, size:{size})"             # <<<<<<<<<<<<<<
 *         )
 *     if (
 */
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_shape, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
    __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u_size);
    __pyx_t_10 += 7;
    __Pyx_GIVEREF(__pyx_kp_u_size);
    PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_kp_u_size);
    __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u__17);
    __pyx_t_10 += 1;
    __Pyx_GIVEREF(__pyx_kp_u__17);
    PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_kp_u__17);

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":129
 *     if size < 0:
 *         raise BufferError(
 *             f"__cuda_array_interface__: "             # <<<<<<<<<<<<<<
 *             f"buffer with negative size "
 *             f"(shape:{shape}, size:{size})"
 */
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_7, 5, __pyx_t_10, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":128
 *         )
 *     if size < 0:
 *         raise BufferError(             # <<<<<<<<<<<<<<
 *             f"__cuda_array_interface__: "
 *             f"buffer with negative size "
 */
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_BufferError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_7, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __PYX_ERR(9, 128, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":127
 *             "cannot handle masked arrays"
 *         )
 *     if size < 0:             # <<<<<<<<<<<<<<
 *         raise BufferError(
 *             f"__cuda_array_interface__: "
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":134
 *         )
 *     if (
 *         strides is not None and             # <<<<<<<<<<<<<<
 *         not cuda_is_contig(shape, strides, itemsize, c'C') and
 *         not cuda_is_contig(shape, strides, itemsize, c'F')
 */
  __pyx_t_12 = (__pyx_v_strides != ((PyObject*)Py_None));
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L24_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":135
 *     if (
 *         strides is not None and
 *         not cuda_is_contig(shape, strides, itemsize, c'C') and             # <<<<<<<<<<<<<<
 *         not cuda_is_contig(shape, strides, itemsize, c'F')
 *     ):
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_cuda_is_contig(__pyx_v_shape, __pyx_v_strides, __pyx_v_itemsize, 'C'); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 135, __pyx_L1_error)
  __pyx_t_12 = (!(__pyx_t_5 != 0));
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L24_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":136
 *         strides is not None and
 *         not cuda_is_contig(shape, strides, itemsize, c'C') and
 *         not cuda_is_contig(shape, strides, itemsize, c'F')             # <<<<<<<<<<<<<<
 *     ):
 *         raise BufferError(
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_cuda_is_contig(__pyx_v_shape, __pyx_v_strides, __pyx_v_itemsize, 'F'); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 136, __pyx_L1_error)
  __pyx_t_12 = (!(__pyx_t_5 != 0));
  __pyx_t_9 = __pyx_t_12;
  __pyx_L24_bool_binop_done:;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":133
 *             f"(shape:{shape}, size:{size})"
 *         )
 *     if (             # <<<<<<<<<<<<<<
 *         strides is not None and
 *         not cuda_is_contig(shape, strides, itemsize, c'C') and
 */
  if (unlikely(__pyx_t_9)) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":139
 *     ):
 *         raise BufferError(
 *             f"__cuda_array_interface__: "             # <<<<<<<<<<<<<<
 *             f"buffer is not contiguous "
 *             f"(shape:{shape}, strides:{strides}, itemsize:{itemsize})"
 */
    __pyx_t_7 = PyTuple_New(7); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_10 = 0;
    __pyx_t_15 = 127;
    __Pyx_INCREF(__pyx_kp_u_cuda_array_interface___buffer_2);
    __pyx_t_10 += 58;
    __Pyx_GIVEREF(__pyx_kp_u_cuda_array_interface___buffer_2);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_kp_u_cuda_array_interface___buffer_2);

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":141
 *             f"__cuda_array_interface__: "
 *             f"buffer is not contiguous "
 *             f"(shape:{shape}, strides:{strides}, itemsize:{itemsize})"             # <<<<<<<<<<<<<<
 *         )
 *     if  descr is not None and (len(descr) != 1 or descr[0] != ('', typestr)):
 */
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_shape, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
    __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u_strides_2);
    __pyx_t_10 += 10;
    __Pyx_GIVEREF(__pyx_kp_u_strides_2);
    PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_kp_u_strides_2);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_strides, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
    __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u_itemsize);
    __pyx_t_10 += 11;
    __Pyx_GIVEREF(__pyx_kp_u_itemsize);
    PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_kp_u_itemsize);
    __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_itemsize, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_7, 5, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u__17);
    __pyx_t_10 += 1;
    __Pyx_GIVEREF(__pyx_kp_u__17);
    PyTuple_SET_ITEM(__pyx_t_7, 6, __pyx_kp_u__17);

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":139
 *     ):
 *         raise BufferError(
 *             f"__cuda_array_interface__: "             # <<<<<<<<<<<<<<
 *             f"buffer is not contiguous "
 *             f"(shape:{shape}, strides:{strides}, itemsize:{itemsize})"
 */
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_7, 7, __pyx_t_10, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":138
 *         not cuda_is_contig(shape, strides, itemsize, c'F')
 *     ):
 *         raise BufferError(             # <<<<<<<<<<<<<<
 *             f"__cuda_array_interface__: "
 *             f"buffer is not contiguous "
 */
    __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_BufferError, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_7, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __PYX_ERR(9, 138, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":133
 *             f"(shape:{shape}, size:{size})"
 *         )
 *     if (             # <<<<<<<<<<<<<<
 *         strides is not None and
 *         not cuda_is_contig(shape, strides, itemsize, c'C') and
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":143
 *             f"(shape:{shape}, strides:{strides}, itemsize:{itemsize})"
 *         )
 *     if  descr is not None and (len(descr) != 1 or descr[0] != ('', typestr)):             # <<<<<<<<<<<<<<
 *         PyErr_WarnFormat(
 *             RuntimeWarning, 1,
 */
  __pyx_t_12 = (__pyx_v_descr != ((PyObject*)Py_None));
  if (__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L28_bool_binop_done;
  }
  if (unlikely(__pyx_v_descr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(9, 143, __pyx_L1_error)
  }
  __pyx_t_10 = __Pyx_PyList_GET_SIZE(__pyx_v_descr); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(9, 143, __pyx_L1_error)
  __pyx_t_12 = (__pyx_t_10 != 1);
  if (!__pyx_t_12) {
  } else {
    __pyx_t_9 = __pyx_t_12;
    goto __pyx_L28_bool_binop_done;
  }
  if (unlikely(__pyx_v_descr == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(9, 143, __pyx_L1_error)
  }
  __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_descr, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_n_s_);
  __Pyx_GIVEREF(__pyx_n_s_);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_)) __PYX_ERR(9, 143, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_typestr);
  __Pyx_GIVEREF(__pyx_v_typestr);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_typestr)) __PYX_ERR(9, 143, __pyx_L1_error);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_7, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(9, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9 = __pyx_t_12;
  __pyx_L28_bool_binop_done:;
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":144
 *         )
 *     if  descr is not None and (len(descr) != 1 or descr[0] != ('', typestr)):
 *         PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *             RuntimeWarning, 1,
 *             b"__cuda_array_interface__: %s",
 */
    __pyx_t_5 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"__cuda_array_interface__: %s"), ((char *)"ignoring 'descr' key")); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 144, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":143
 *             f"(shape:{shape}, strides:{strides}, itemsize:{itemsize})"
 *         )
 *     if  descr is not None and (len(descr) != 1 or descr[0] != ('', typestr)):             # <<<<<<<<<<<<<<
 *         PyErr_WarnFormat(
 *             RuntimeWarning, 1,
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":150
 *         )
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError("Object is not writable")  # ~> pypy
 * 
 */
  if (PyMPI_RUNTIME_PYPY) {
  } else {
    __pyx_t_9 = PyMPI_RUNTIME_PYPY;
    goto __pyx_L32_bool_binop_done;
  }
  if (__pyx_v_readonly) {
  } else {
    __pyx_t_9 = __pyx_v_readonly;
    goto __pyx_L32_bool_binop_done;
  }
  __pyx_t_12 = ((__pyx_v_flags & PyBUF_WRITABLE) == PyBUF_WRITABLE);
  __pyx_t_9 = __pyx_t_12;
  __pyx_L32_bool_binop_done:;
  if (unlikely(__pyx_t_9)) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":151
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError("Object is not writable")  # ~> pypy             # <<<<<<<<<<<<<<
 * 
 *     PyBuffer_FillInfo(view, obj, buf, size*itemsize, readonly, flags)
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(9, 151, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":150
 *         )
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):             # <<<<<<<<<<<<<<
 *         raise BufferError("Object is not writable")  # ~> pypy
 * 
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":153
 *         raise BufferError("Object is not writable")  # ~> pypy
 * 
 *     PyBuffer_FillInfo(view, obj, buf, size*itemsize, readonly, flags)             # <<<<<<<<<<<<<<
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 */
  __pyx_t_5 = PyBuffer_FillInfo(__pyx_v_view, __pyx_v_obj, __pyx_v_buf, (__pyx_v_size * __pyx_v_itemsize), __pyx_v_readonly, __pyx_v_flags); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 153, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":155
 *     PyBuffer_FillInfo(view, obj, buf, size*itemsize, readonly, flags)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         view.format = format
 *         if view.format != BYTE_FMT:
 */
  __pyx_t_9 = ((__pyx_v_flags & PyBUF_FORMAT) == PyBUF_FORMAT);
  if (__pyx_t_9) {

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":156
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format             # <<<<<<<<<<<<<<
 *         if view.format != BYTE_FMT:
 *             view.itemsize = itemsize
 */
    __pyx_v_view->format = __pyx_v_format;

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":157
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format
 *         if view.format != BYTE_FMT:             # <<<<<<<<<<<<<<
 *             view.itemsize = itemsize
 * 
 */
    __pyx_t_9 = (__pyx_v_view->format != __pyx_v_6mpi4py_3MPI_BYTE_FMT);
    if (__pyx_t_9) {

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":158
 *         view.format = format
 *         if view.format != BYTE_FMT:
 *             view.itemsize = itemsize             # <<<<<<<<<<<<<<
 * 
 *     return <int> kDLCUDA
 */
      __pyx_v_view->itemsize = __pyx_v_itemsize;

      /* "src/mpi4py/MPI.src/ascaibuf.pxi":157
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:
 *         view.format = format
 *         if view.format != BYTE_FMT:             # <<<<<<<<<<<<<<
 *             view.itemsize = itemsize
 * 
 */
    }

    /* "src/mpi4py/MPI.src/ascaibuf.pxi":155
 *     PyBuffer_FillInfo(view, obj, buf, size*itemsize, readonly, flags)
 * 
 *     if (flags & PyBUF_FORMAT) == PyBUF_FORMAT:             # <<<<<<<<<<<<<<
 *         view.format = format
 *         if view.format != BYTE_FMT:
 */
  }

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":160
 *             view.itemsize = itemsize
 * 
 *     return <int> kDLCUDA             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = ((int)__pyx_e_6mpi4py_3MPI_kDLCUDA);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":64
 *     except: return 0  # ~> uncovered  # noqa
 * 
 * cdef int Py_GetCAIBuffer(object obj, Py_buffer *view, int flags) except -1:             # <<<<<<<<<<<<<<
 *     cdef dict cuda_array_interface
 *     cdef tuple data
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.Py_GetCAIBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cuda_array_interface);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_typestr);
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_XDECREF(__pyx_v_strides);
  __Pyx_XDECREF(__pyx_v_descr);
  __Pyx_XDECREF(__pyx_v_dev_ptr);
  __Pyx_XDECREF(__pyx_v_mask);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":60
 * include "ascaibuf.pxi"
 * 
 * cdef int PyMPI_GetBuffer(object obj, Py_buffer *view, int flags) except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         return PyObject_GetBuffer(obj, view, flags)
 */

static int __pyx_f_6mpi4py_3MPI_PyMPI_GetBuffer(PyObject *__pyx_v_obj, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_GetBuffer", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":61
 * 
 * cdef int PyMPI_GetBuffer(object obj, Py_buffer *view, int flags) except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":62
 * cdef int PyMPI_GetBuffer(object obj, Py_buffer *view, int flags) except -1:
 *     try:
 *         return PyObject_GetBuffer(obj, view, flags)             # <<<<<<<<<<<<<<
 *     except BaseException:
 *         try:
 */
      __pyx_t_4 = PyObject_GetBuffer(__pyx_v_obj, __pyx_v_view, __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 62, __pyx_L3_error)
      __pyx_r = __pyx_t_4;
      goto __pyx_L7_try_return;

      /* "src/mpi4py/MPI.src/asbuffer.pxi":61
 * 
 * cdef int PyMPI_GetBuffer(object obj, Py_buffer *view, int flags) except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:
 */
    }
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":63
 *     try:
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:             # <<<<<<<<<<<<<<
 *         try:
 *             return Py_GetDLPackBuffer(obj, view, flags)
 */
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI.PyMPI_GetBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(0, 63, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/asbuffer.pxi":64
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetDLPackBuffer(obj, view, flags)
 *         except NotImplementedError:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/asbuffer.pxi":65
 *     except BaseException:
 *         try:
 *             return Py_GetDLPackBuffer(obj, view, flags)             # <<<<<<<<<<<<<<
 *         except NotImplementedError:
 *             pass
 */
          __pyx_t_4 = __pyx_f_6mpi4py_3MPI_Py_GetDLPackBuffer(__pyx_v_obj, __pyx_v_view, __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 65, __pyx_L11_error)
          __pyx_r = __pyx_t_4;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L15_try_return;

          /* "src/mpi4py/MPI.src/asbuffer.pxi":64
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetDLPackBuffer(obj, view, flags)
 *         except NotImplementedError:
 */
        }
        __pyx_L11_error:;

        /* "src/mpi4py/MPI.src/asbuffer.pxi":66
 *         try:
 *             return Py_GetDLPackBuffer(obj, view, flags)
 *         except NotImplementedError:             # <<<<<<<<<<<<<<
 *             pass
 *         except BaseException:
 */
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NotImplementedError);
        if (__pyx_t_4) {
          __Pyx_ErrRestore(0,0,0);
          goto __pyx_L12_exception_handled;
        }

        /* "src/mpi4py/MPI.src/asbuffer.pxi":68
 *         except NotImplementedError:
 *             pass
 *         except BaseException:             # <<<<<<<<<<<<<<
 *             raise
 *         try:
 */
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
        if (__pyx_t_4) {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_GetBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(0, 68, __pyx_L13_except_error)
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);

          /* "src/mpi4py/MPI.src/asbuffer.pxi":69
 *             pass
 *         except BaseException:
 *             raise             # <<<<<<<<<<<<<<
 *         try:
 *             return Py_GetCAIBuffer(obj, view, flags)
 */
          __Pyx_GIVEREF(__pyx_t_11);
          __Pyx_GIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; 
          __PYX_ERR(0, 69, __pyx_L13_except_error)
        }
        goto __pyx_L13_except_error;

        /* "src/mpi4py/MPI.src/asbuffer.pxi":64
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetDLPackBuffer(obj, view, flags)
 *         except NotImplementedError:
 */
        __pyx_L13_except_error:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L5_except_error;
        __pyx_L15_try_return:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L6_except_return;
        __pyx_L12_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      }

      /* "src/mpi4py/MPI.src/asbuffer.pxi":70
 *         except BaseException:
 *             raise
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetCAIBuffer(obj, view, flags)
 *         except NotImplementedError:
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/asbuffer.pxi":71
 *             raise
 *         try:
 *             return Py_GetCAIBuffer(obj, view, flags)             # <<<<<<<<<<<<<<
 *         except NotImplementedError:
 *             pass
 */
          __pyx_t_4 = __pyx_f_6mpi4py_3MPI_Py_GetCAIBuffer(__pyx_v_obj, __pyx_v_view, __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 71, __pyx_L21_error)
          __pyx_r = __pyx_t_4;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L25_try_return;

          /* "src/mpi4py/MPI.src/asbuffer.pxi":70
 *         except BaseException:
 *             raise
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetCAIBuffer(obj, view, flags)
 *         except NotImplementedError:
 */
        }
        __pyx_L21_error:;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;

        /* "src/mpi4py/MPI.src/asbuffer.pxi":72
 *         try:
 *             return Py_GetCAIBuffer(obj, view, flags)
 *         except NotImplementedError:             # <<<<<<<<<<<<<<
 *             pass
 *         except BaseException:
 */
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NotImplementedError);
        if (__pyx_t_4) {
          __Pyx_ErrRestore(0,0,0);
          goto __pyx_L22_exception_handled;
        }

        /* "src/mpi4py/MPI.src/asbuffer.pxi":74
 *         except NotImplementedError:
 *             pass
 *         except BaseException:             # <<<<<<<<<<<<<<
 *             raise
 *         raise
 */
        __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
        if (__pyx_t_4) {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_GetBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11) < 0) __PYX_ERR(0, 74, __pyx_L23_except_error)
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_11);

          /* "src/mpi4py/MPI.src/asbuffer.pxi":75
 *             pass
 *         except BaseException:
 *             raise             # <<<<<<<<<<<<<<
 *         raise
 * 
 */
          __Pyx_GIVEREF(__pyx_t_13);
          __Pyx_GIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_ErrRestoreWithState(__pyx_t_13, __pyx_t_12, __pyx_t_11);
          __pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_11 = 0; 
          __PYX_ERR(0, 75, __pyx_L23_except_error)
        }
        goto __pyx_L23_except_error;

        /* "src/mpi4py/MPI.src/asbuffer.pxi":70
 *         except BaseException:
 *             raise
 *         try:             # <<<<<<<<<<<<<<
 *             return Py_GetCAIBuffer(obj, view, flags)
 *         except NotImplementedError:
 */
        __pyx_L23_except_error:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        goto __pyx_L5_except_error;
        __pyx_L25_try_return:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
        goto __pyx_L6_except_return;
        __pyx_L22_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_9, __pyx_t_8);
      }

      /* "src/mpi4py/MPI.src/asbuffer.pxi":76
 *         except BaseException:
 *             raise
 *         raise             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
      __PYX_ERR(0, 76, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":61
 * 
 * cdef int PyMPI_GetBuffer(object obj, Py_buffer *view, int flags) except -1:
 *     try:             # <<<<<<<<<<<<<<
 *         return PyObject_GetBuffer(obj, view, flags)
 *     except BaseException:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":60
 * include "ascaibuf.pxi"
 * 
 * cdef int PyMPI_GetBuffer(object obj, Py_buffer *view, int flags) except -1:             # <<<<<<<<<<<<<<
 *     try:
 *         return PyObject_GetBuffer(obj, view, flags)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_GetBuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":100
 * 
 * 
 * cdef inline int check_cpu_accessible(int kind) except -1:             # <<<<<<<<<<<<<<
 *     cdef unsigned device_type = <unsigned> kind
 *     if device_type == 0              : return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_check_cpu_accessible(int __pyx_v_kind) {
  unsigned int __pyx_v_device_type;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_cpu_accessible", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":101
 * 
 * cdef inline int check_cpu_accessible(int kind) except -1:
 *     cdef unsigned device_type = <unsigned> kind             # <<<<<<<<<<<<<<
 *     if device_type == 0              : return 0
 *     if device_type == kDLCPU         : return 0
 */
  __pyx_v_device_type = ((unsigned int)__pyx_v_kind);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":102
 * cdef inline int check_cpu_accessible(int kind) except -1:
 *     cdef unsigned device_type = <unsigned> kind
 *     if device_type == 0              : return 0             # <<<<<<<<<<<<<<
 *     if device_type == kDLCPU         : return 0
 *     if device_type == kDLCUDAHost    : return 0  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_device_type == 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":103
 *     cdef unsigned device_type = <unsigned> kind
 *     if device_type == 0              : return 0
 *     if device_type == kDLCPU         : return 0             # <<<<<<<<<<<<<<
 *     if device_type == kDLCUDAHost    : return 0  # ~> uncovered
 *     if device_type == kDLROCMHost    : return 0  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLCPU);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":104
 *     if device_type == 0              : return 0
 *     if device_type == kDLCPU         : return 0
 *     if device_type == kDLCUDAHost    : return 0  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if device_type == kDLROCMHost    : return 0  # ~> uncovered
 *     if device_type == kDLCUDAManaged : return 0  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLCUDAHost);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":105
 *     if device_type == kDLCPU         : return 0
 *     if device_type == kDLCUDAHost    : return 0  # ~> uncovered
 *     if device_type == kDLROCMHost    : return 0  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if device_type == kDLCUDAManaged : return 0  # ~> uncovered
 *     raise BufferError("buffer is not CPU-accessible")
 */
  __pyx_t_1 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLROCMHost);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":106
 *     if device_type == kDLCUDAHost    : return 0  # ~> uncovered
 *     if device_type == kDLROCMHost    : return 0  # ~> uncovered
 *     if device_type == kDLCUDAManaged : return 0  # ~> uncovered             # <<<<<<<<<<<<<<
 *     raise BufferError("buffer is not CPU-accessible")
 * 
 */
  __pyx_t_1 = (__pyx_v_device_type == __pyx_e_6mpi4py_3MPI_kDLCUDAManaged);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":107
 *     if device_type == kDLROCMHost    : return 0  # ~> uncovered
 *     if device_type == kDLCUDAManaged : return 0  # ~> uncovered
 *     raise BufferError("buffer is not CPU-accessible")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(0, 107, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":100
 * 
 * 
 * cdef inline int check_cpu_accessible(int kind) except -1:             # <<<<<<<<<<<<<<
 *     cdef unsigned device_type = <unsigned> kind
 *     if device_type == 0              : return 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.check_cpu_accessible", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":119
 *     cdef int       kind
 * 
 *     def __cinit__(self, *args):             # <<<<<<<<<<<<<<
 *         if args:
 *             self.kind = PyMPI_GetBuffer(args[0], &self.view, PyBUF_SIMPLE)
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6buffer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6buffer_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer___cinit__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self), __pyx_v_args);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6buffer___cinit__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_args) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":120
 * 
 *     def __cinit__(self, *args):
 *         if args:             # <<<<<<<<<<<<<<
 *             self.kind = PyMPI_GetBuffer(args[0], &self.view, PyBUF_SIMPLE)
 *         else:
 */
  __pyx_t_1 = (PyTuple_GET_SIZE(__pyx_v_args) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":121
 *     def __cinit__(self, *args):
 *         if args:
 *             self.kind = PyMPI_GetBuffer(args[0], &self.view, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *         else:
 *             PyBuffer_FillInfo(&self.view, <object>NULL,
 */
    __pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_args, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_GetBuffer(__pyx_t_2, (&__pyx_v_self->view), PyBUF_SIMPLE); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 121, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_self->kind = __pyx_t_3;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":120
 * 
 *     def __cinit__(self, *args):
 *         if args:             # <<<<<<<<<<<<<<
 *             self.kind = PyMPI_GetBuffer(args[0], &self.view, PyBUF_SIMPLE)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":123
 *             self.kind = PyMPI_GetBuffer(args[0], &self.view, PyBUF_SIMPLE)
 *         else:
 *             PyBuffer_FillInfo(&self.view, <object>NULL,             # <<<<<<<<<<<<<<
 *                               NULL, 0, 0, PyBUF_SIMPLE)
 * 
 */
  /*else*/ {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":124
 *         else:
 *             PyBuffer_FillInfo(&self.view, <object>NULL,
 *                               NULL, 0, 0, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    __pyx_t_3 = PyBuffer_FillInfo((&__pyx_v_self->view), ((PyObject *)NULL), NULL, 0, 0, PyBUF_SIMPLE); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 123, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":119
 *     cdef int       kind
 * 
 *     def __cinit__(self, *args):             # <<<<<<<<<<<<<<
 *         if args:
 *             self.kind = PyMPI_GetBuffer(args[0], &self.view, PyBUF_SIMPLE)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":126
 *                               NULL, 0, 0, PyBUF_SIMPLE)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(&self.view)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_6buffer_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_6buffer_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_6buffer_2__dealloc__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_6buffer_2__dealloc__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {

  /* "src/mpi4py/MPI.src/asbuffer.pxi":127
 * 
 *     def __dealloc__(self):
 *         PyBuffer_Release(&self.view)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  PyBuffer_Release((&__pyx_v_self->view));

  /* "src/mpi4py/MPI.src/asbuffer.pxi":126
 *                               NULL, 0, 0, PyBUF_SIMPLE)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         PyBuffer_Release(&self.view)
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":129
 *         PyBuffer_Release(&self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_5allocate(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6buffer_4allocate, "allocate(nbytes: int, clear: bool = False) -> buffer\nBuffer allocation.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_5allocate = {"allocate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_5allocate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_4allocate};
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_5allocate(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Aint __pyx_v_nbytes;
  int __pyx_v_clear;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("allocate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbytes,&__pyx_n_s_clear,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbytes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 129, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_clear);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 129, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "allocate") < 0)) __PYX_ERR(0, 129, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_nbytes = __Pyx_PyInt_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_nbytes == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_clear = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_clear == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 132, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":132
 *     def allocate(
 *         Aint nbytes: int,
 *         bint clear: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> buffer:
 *         """Buffer allocation."""
 */
      __pyx_v_clear = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("allocate", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 129, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.buffer.allocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_4allocate(__pyx_v_nbytes, __pyx_v_clear);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":129
 *         PyBuffer_Release(&self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_4allocate(MPI_Aint __pyx_v_nbytes, int __pyx_v_clear) {
  void *__pyx_v_addr;
  Py_ssize_t __pyx_v_size;
  PyObject *__pyx_v_ob = 0;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allocate", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":135
 *     ) -> buffer:
 *         """Buffer allocation."""
 *         cdef void *addr = NULL             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:
 */
  __pyx_v_addr = NULL;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":136
 *         """Buffer allocation."""
 *         cdef void *addr = NULL
 *         cdef Py_ssize_t size = nbytes             # <<<<<<<<<<<<<<
 *         if size < 0:
 *             raise ValueError("expecting non-negative size")
 */
  __pyx_v_size = __pyx_v_nbytes;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":137
 *         cdef void *addr = NULL
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("expecting non-negative size")
 *         cdef object ob = rawalloc(size, 1, clear, &addr)
 */
  __pyx_t_1 = (__pyx_v_size < 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":138
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:
 *             raise ValueError("expecting non-negative size")             # <<<<<<<<<<<<<<
 *         cdef object ob = rawalloc(size, 1, clear, &addr)
 *         cdef buffer buf = <buffer>New(buffer)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 138, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":137
 *         cdef void *addr = NULL
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("expecting non-negative size")
 *         cdef object ob = rawalloc(size, 1, clear, &addr)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":139
 *         if size < 0:
 *             raise ValueError("expecting non-negative size")
 *         cdef object ob = rawalloc(size, 1, clear, &addr)             # <<<<<<<<<<<<<<
 *         cdef buffer buf = <buffer>New(buffer)
 *         PyBuffer_FillInfo(&buf.view, ob, addr, size, 0, PyBUF_SIMPLE)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_rawalloc(__pyx_v_size, 1, __pyx_v_clear, (&__pyx_v_addr))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":140
 *             raise ValueError("expecting non-negative size")
 *         cdef object ob = rawalloc(size, 1, clear, &addr)
 *         cdef buffer buf = <buffer>New(buffer)             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(&buf.view, ob, addr, size, 0, PyBUF_SIMPLE)
 *         return buf
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":141
 *         cdef object ob = rawalloc(size, 1, clear, &addr)
 *         cdef buffer buf = <buffer>New(buffer)
 *         PyBuffer_FillInfo(&buf.view, ob, addr, size, 0, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *         return buf
 * 
 */
  __pyx_t_4 = PyBuffer_FillInfo((&__pyx_v_buf->view), __pyx_v_ob, __pyx_v_addr, __pyx_v_size, 0, PyBUF_SIMPLE); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 141, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":142
 *         cdef buffer buf = <buffer>New(buffer)
 *         PyBuffer_FillInfo(&buf.view, ob, addr, size, 0, PyBUF_SIMPLE)
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __pyx_r = ((PyObject *)__pyx_v_buf);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":129
 *         PyBuffer_Release(&self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.allocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":144
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def frombuffer(
 *         obj: Buffer,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_7frombuffer(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6buffer_6frombuffer, "frombuffer(obj: Buffer, readonly: bool = False) -> buffer\nBuffer from buffer-like object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_7frombuffer = {"frombuffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_7frombuffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_6frombuffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_7frombuffer(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_readonly;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("frombuffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_readonly,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 144, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_readonly);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "frombuffer") < 0)) __PYX_ERR(0, 144, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_readonly = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_readonly == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 147, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":147
 *     def frombuffer(
 *         obj: Buffer,
 *         bint readonly: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> buffer:
 *         """Buffer from buffer-like object."""
 */
      __pyx_v_readonly = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("frombuffer", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.buffer.frombuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_6frombuffer(__pyx_v_obj, __pyx_v_readonly);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":144
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def frombuffer(
 *         obj: Buffer,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_6frombuffer(PyObject *__pyx_v_obj, int __pyx_v_readonly) {
  int __pyx_v_flags;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("frombuffer", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":150
 *     ) -> buffer:
 *         """Buffer from buffer-like object."""
 *         cdef int flags = PyBUF_SIMPLE             # <<<<<<<<<<<<<<
 *         if not readonly: flags |= PyBUF_WRITABLE
 *         cdef buffer buf = <buffer>New(buffer)
 */
  __pyx_v_flags = PyBUF_SIMPLE;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":151
 *         """Buffer from buffer-like object."""
 *         cdef int flags = PyBUF_SIMPLE
 *         if not readonly: flags |= PyBUF_WRITABLE             # <<<<<<<<<<<<<<
 *         cdef buffer buf = <buffer>New(buffer)
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, flags)
 */
  __pyx_t_1 = (!__pyx_v_readonly);
  if (__pyx_t_1) {
    __pyx_v_flags = (__pyx_v_flags | PyBUF_WRITABLE);
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":152
 *         cdef int flags = PyBUF_SIMPLE
 *         if not readonly: flags |= PyBUF_WRITABLE
 *         cdef buffer buf = <buffer>New(buffer)             # <<<<<<<<<<<<<<
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, flags)
 *         buf.view.readonly = readonly
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":153
 *         if not readonly: flags |= PyBUF_WRITABLE
 *         cdef buffer buf = <buffer>New(buffer)
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, flags)             # <<<<<<<<<<<<<<
 *         buf.view.readonly = readonly
 *         return buf
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_GetBuffer(__pyx_v_obj, (&__pyx_v_buf->view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 153, __pyx_L1_error)
  __pyx_v_buf->kind = __pyx_t_4;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":154
 *         cdef buffer buf = <buffer>New(buffer)
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, flags)
 *         buf.view.readonly = readonly             # <<<<<<<<<<<<<<
 *         return buf
 * 
 */
  __pyx_v_buf->view.readonly = __pyx_v_readonly;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":155
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, flags)
 *         buf.view.readonly = readonly
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __pyx_r = ((PyObject *)__pyx_v_buf);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":144
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def frombuffer(
 *         obj: Buffer,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.frombuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":157
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_9fromaddress(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6buffer_8fromaddress, "fromaddress(address: int, nbytes: int, readonly: bool = False) -> buffer\nBuffer from address and size in bytes.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_9fromaddress = {"fromaddress", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_9fromaddress, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_8fromaddress};
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_9fromaddress(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_address = 0;
  MPI_Aint __pyx_v_nbytes;
  int __pyx_v_readonly;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromaddress (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_nbytes,&__pyx_n_s_readonly,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_address)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbytes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fromaddress", 0, 2, 3, 1); __PYX_ERR(0, 157, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_readonly);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 157, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromaddress") < 0)) __PYX_ERR(0, 157, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_address = values[0];
    __pyx_v_nbytes = __Pyx_PyInt_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_nbytes == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(0, 160, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_readonly = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_readonly == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":161
 *         address: int,
 *         Aint nbytes: int,
 *         bint readonly: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> buffer:
 *         """Buffer from address and size in bytes."""
 */
      __pyx_v_readonly = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromaddress", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 157, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.buffer.fromaddress", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_8fromaddress(__pyx_v_address, __pyx_v_nbytes, __pyx_v_readonly);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":157
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_8fromaddress(PyObject *__pyx_v_address, MPI_Aint __pyx_v_nbytes, int __pyx_v_readonly) {
  void *__pyx_v_addr;
  Py_ssize_t __pyx_v_size;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromaddress", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":164
 *     ) -> buffer:
 *         """Buffer from address and size in bytes."""
 *         cdef void *addr = PyLong_AsVoidPtr(address)             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:
 */
  __pyx_t_1 = PyLong_AsVoidPtr(__pyx_v_address); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 164, __pyx_L1_error)
  __pyx_v_addr = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":165
 *         """Buffer from address and size in bytes."""
 *         cdef void *addr = PyLong_AsVoidPtr(address)
 *         cdef Py_ssize_t size = nbytes             # <<<<<<<<<<<<<<
 *         if size < 0:
 *             raise ValueError("expecting non-negative buffer length")
 */
  __pyx_v_size = __pyx_v_nbytes;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":166
 *         cdef void *addr = PyLong_AsVoidPtr(address)
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("expecting non-negative buffer length")
 *         elif size > 0 and addr == NULL:
 */
  __pyx_t_2 = (__pyx_v_size < 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":167
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:
 *             raise ValueError("expecting non-negative buffer length")             # <<<<<<<<<<<<<<
 *         elif size > 0 and addr == NULL:
 *             raise ValueError("expecting non-NULL address")
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 167, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":166
 *         cdef void *addr = PyLong_AsVoidPtr(address)
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("expecting non-negative buffer length")
 *         elif size > 0 and addr == NULL:
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":168
 *         if size < 0:
 *             raise ValueError("expecting non-negative buffer length")
 *         elif size > 0 and addr == NULL:             # <<<<<<<<<<<<<<
 *             raise ValueError("expecting non-NULL address")
 *         cdef buffer buf = <buffer>New(buffer)
 */
  __pyx_t_4 = (__pyx_v_size > 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_addr == NULL);
  __pyx_t_2 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":169
 *             raise ValueError("expecting non-negative buffer length")
 *         elif size > 0 and addr == NULL:
 *             raise ValueError("expecting non-NULL address")             # <<<<<<<<<<<<<<
 *         cdef buffer buf = <buffer>New(buffer)
 *         PyBuffer_FillInfo(&buf.view, <object>NULL,
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 169, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":168
 *         if size < 0:
 *             raise ValueError("expecting non-negative buffer length")
 *         elif size > 0 and addr == NULL:             # <<<<<<<<<<<<<<
 *             raise ValueError("expecting non-NULL address")
 *         cdef buffer buf = <buffer>New(buffer)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":170
 *         elif size > 0 and addr == NULL:
 *             raise ValueError("expecting non-NULL address")
 *         cdef buffer buf = <buffer>New(buffer)             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(&buf.view, <object>NULL,
 *                           addr, size, readonly, PyBUF_SIMPLE)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":171
 *             raise ValueError("expecting non-NULL address")
 *         cdef buffer buf = <buffer>New(buffer)
 *         PyBuffer_FillInfo(&buf.view, <object>NULL,             # <<<<<<<<<<<<<<
 *                           addr, size, readonly, PyBUF_SIMPLE)
 *         return buf
 */
  __pyx_t_6 = PyBuffer_FillInfo((&__pyx_v_buf->view), ((PyObject *)NULL), __pyx_v_addr, __pyx_v_size, __pyx_v_readonly, PyBUF_SIMPLE); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 171, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":173
 *         PyBuffer_FillInfo(&buf.view, <object>NULL,
 *                           addr, size, readonly, PyBUF_SIMPLE)
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     # properties
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __pyx_r = ((PyObject *)__pyx_v_buf);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":157
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.fromaddress", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":179
 *     property address:
 *         """Buffer address."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return PyLong_FromVoidPtr(self.view.buf)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_7address_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_7address_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_7address___get__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_7address___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":180
 *         """Buffer address."""
 *         def __get__(self) -> int:
 *             return PyLong_FromVoidPtr(self.view.buf)             # <<<<<<<<<<<<<<
 * 
 *     # memoryview properties
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_self->view.buf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":179
 *     property address:
 *         """Buffer address."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return PyLong_FromVoidPtr(self.view.buf)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.address.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":186
 *     property obj:
 *         """Object exposing buffer."""
 *         def __get__(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *             if self.view.obj == NULL: return None
 *             return <object>self.view.obj
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_3obj_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_3obj_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_3obj___get__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_3obj___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":187
 *         """Object exposing buffer."""
 *         def __get__(self) -> Buffer | None:
 *             if self.view.obj == NULL: return None             # <<<<<<<<<<<<<<
 *             return <object>self.view.obj
 * 
 */
  __pyx_t_1 = (__pyx_v_self->view.obj == NULL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":188
 *         def __get__(self) -> Buffer | None:
 *             if self.view.obj == NULL: return None
 *             return <object>self.view.obj             # <<<<<<<<<<<<<<
 * 
 *     property nbytes:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->view.obj));
  __pyx_r = ((PyObject *)__pyx_v_self->view.obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":186
 *     property obj:
 *         """Object exposing buffer."""
 *         def __get__(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *             if self.view.obj == NULL: return None
 *             return <object>self.view.obj
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":192
 *     property nbytes:
 *         """Buffer size (in bytes)."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.view.len
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_6nbytes_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_6nbytes___get__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_6nbytes___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":193
 *         """Buffer size (in bytes)."""
 *         def __get__(self) -> int:
 *             return self.view.len             # <<<<<<<<<<<<<<
 * 
 *     property readonly:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":192
 *     property nbytes:
 *         """Buffer size (in bytes)."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.view.len
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":197
 *     property readonly:
 *         """Buffer is read-only."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.view.readonly
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_8readonly_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_8readonly_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_8readonly___get__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_8readonly___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":198
 *         """Buffer is read-only."""
 *         def __get__(self) -> bool:
 *             return self.view.readonly             # <<<<<<<<<<<<<<
 * 
 *     property format:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->view.readonly); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":197
 *     property readonly:
 *         """Buffer is read-only."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.view.readonly
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.readonly.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":202
 *     property format:
 *         """Format of each element."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             if self.view.format != NULL:
 *                 return pystr(self.view.format)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_6format_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_6format_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_6format___get__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_6format___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":203
 *         """Format of each element."""
 *         def __get__(self) -> str:
 *             if self.view.format != NULL:             # <<<<<<<<<<<<<<
 *                 return pystr(self.view.format)
 *             return pystr(BYTE_FMT)
 */
  __pyx_t_1 = (__pyx_v_self->view.format != NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":204
 *         def __get__(self) -> str:
 *             if self.view.format != NULL:
 *                 return pystr(self.view.format)             # <<<<<<<<<<<<<<
 *             return pystr(BYTE_FMT)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_self->view.format); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":203
 *         """Format of each element."""
 *         def __get__(self) -> str:
 *             if self.view.format != NULL:             # <<<<<<<<<<<<<<
 *                 return pystr(self.view.format)
 *             return pystr(BYTE_FMT)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":205
 *             if self.view.format != NULL:
 *                 return pystr(self.view.format)
 *             return pystr(BYTE_FMT)             # <<<<<<<<<<<<<<
 * 
 *     property itemsize:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_6mpi4py_3MPI_BYTE_FMT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":202
 *     property format:
 *         """Format of each element."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             if self.view.format != NULL:
 *                 return pystr(self.view.format)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.format.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":209
 *     property itemsize:
 *         """Size (in bytes) of each element."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.view.itemsize
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_8itemsize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_8itemsize_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_8itemsize___get__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_8itemsize___get__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":210
 *         """Size (in bytes) of each element."""
 *         def __get__(self) -> int:
 *             return self.view.itemsize             # <<<<<<<<<<<<<<
 * 
 *     # memoryview methods
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":209
 *     property itemsize:
 *         """Size (in bytes) of each element."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.view.itemsize
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.itemsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":214
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_11cast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6buffer_10cast, "cast(self, format: str, shape: list[int] | tuple[int, ...] = ...) -> memoryview\n\n        Cast to a `memoryview` with new format or shape.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_11cast = {"cast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_11cast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_10cast};
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_11cast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_format = 0;
  PyObject *__pyx_v_shape = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cast (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format,&__pyx_n_s_shape,0};

    /* "src/mpi4py/MPI.src/asbuffer.pxi":217
 *         self,
 *         format: str,
 *         shape: list[int] | tuple[int, ...] = ...,             # <<<<<<<<<<<<<<
 *     ) -> memoryview:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_Ellipsis));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_format)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shape);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 214, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "cast") < 0)) __PYX_ERR(0, 214, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_format = values[0];
    __pyx_v_shape = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cast", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 214, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.buffer.cast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_10cast(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self), __pyx_v_format, __pyx_v_shape);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":214
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_10cast(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_format, PyObject *__pyx_v_shape) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cast", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":222
 *         Cast to a `memoryview` with new format or shape.
 *         """
 *         check_cpu_accessible(self.kind)             # <<<<<<<<<<<<<<
 *         if shape is Ellipsis:
 *             return PyMemoryView_FromObject(self).cast(format)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_check_cpu_accessible(__pyx_v_self->kind); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 222, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":223
 *         """
 *         check_cpu_accessible(self.kind)
 *         if shape is Ellipsis:             # <<<<<<<<<<<<<<
 *             return PyMemoryView_FromObject(self).cast(format)
 *         else:
 */
  __pyx_t_2 = (__pyx_v_shape == __pyx_builtin_Ellipsis);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":224
 *         check_cpu_accessible(self.kind)
 *         if shape is Ellipsis:
 *             return PyMemoryView_FromObject(self).cast(format)             # <<<<<<<<<<<<<<
 *         else:
 *             return PyMemoryView_FromObject(self).cast(format, shape)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = PyMemoryView_FromObject(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_cast); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_format};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":223
 *         """
 *         check_cpu_accessible(self.kind)
 *         if shape is Ellipsis:             # <<<<<<<<<<<<<<
 *             return PyMemoryView_FromObject(self).cast(format)
 *         else:
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":226
 *             return PyMemoryView_FromObject(self).cast(format)
 *         else:
 *             return PyMemoryView_FromObject(self).cast(format, shape)             # <<<<<<<<<<<<<<
 * 
 *     def tobytes(self, order: str | None = None) -> bytes:
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = PyMemoryView_FromObject(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_cast); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_format, __pyx_v_shape};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":214
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.cast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":228
 *             return PyMemoryView_FromObject(self).cast(format, shape)
 * 
 *     def tobytes(self, order: str | None = None) -> bytes:             # <<<<<<<<<<<<<<
 *         """Return the data in the buffer as a byte string."""
 *         <void> order  # unused
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_13tobytes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6buffer_12tobytes, "tobytes(self, order: str | None = None) -> bytes\nReturn the data in the buffer as a byte string.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_13tobytes = {"tobytes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_13tobytes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_12tobytes};
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_13tobytes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_order = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("tobytes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_order,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_order);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 228, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "tobytes") < 0)) __PYX_ERR(0, 228, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_order = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("tobytes", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 228, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.buffer.tobytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_12tobytes(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self), __pyx_v_order);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_12tobytes(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_order) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tobytes", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":230
 *     def tobytes(self, order: str | None = None) -> bytes:
 *         """Return the data in the buffer as a byte string."""
 *         <void> order  # unused             # <<<<<<<<<<<<<<
 *         check_cpu_accessible(self.kind)
 *         return PyBytes_FromStringAndSize(<char*>self.view.buf, self.view.len)
 */
  ((void)__pyx_v_order);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":231
 *         """Return the data in the buffer as a byte string."""
 *         <void> order  # unused
 *         check_cpu_accessible(self.kind)             # <<<<<<<<<<<<<<
 *         return PyBytes_FromStringAndSize(<char*>self.view.buf, self.view.len)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_check_cpu_accessible(__pyx_v_self->kind); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 231, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":232
 *         <void> order  # unused
 *         check_cpu_accessible(self.kind)
 *         return PyBytes_FromStringAndSize(<char*>self.view.buf, self.view.len)             # <<<<<<<<<<<<<<
 * 
 *     def toreadonly(self) -> buffer:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyBytes_FromStringAndSize(((char *)__pyx_v_self->view.buf), __pyx_v_self->view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":228
 *             return PyMemoryView_FromObject(self).cast(format, shape)
 * 
 *     def tobytes(self, order: str | None = None) -> bytes:             # <<<<<<<<<<<<<<
 *         """Return the data in the buffer as a byte string."""
 *         <void> order  # unused
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.tobytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":234
 *         return PyBytes_FromStringAndSize(<char*>self.view.buf, self.view.len)
 * 
 *     def toreadonly(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """Return a readonly version of the buffer object."""
 *         cdef object obj = self
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_15toreadonly(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6buffer_14toreadonly, "toreadonly(self) -> buffer\nReturn a readonly version of the buffer object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_15toreadonly = {"toreadonly", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_15toreadonly, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_14toreadonly};
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_15toreadonly(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("toreadonly (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("toreadonly", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "toreadonly", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_14toreadonly(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_14toreadonly(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_v_obj = 0;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("toreadonly", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":236
 *     def toreadonly(self) -> buffer:
 *         """Return a readonly version of the buffer object."""
 *         cdef object obj = self             # <<<<<<<<<<<<<<
 *         if self.view.obj != NULL:
 *             obj = <object>self.view.obj
 */
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_obj = ((PyObject *)__pyx_v_self);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":237
 *         """Return a readonly version of the buffer object."""
 *         cdef object obj = self
 *         if self.view.obj != NULL:             # <<<<<<<<<<<<<<
 *             obj = <object>self.view.obj
 *         cdef buffer buf = <buffer>New(buffer)
 */
  __pyx_t_1 = (__pyx_v_self->view.obj != NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":238
 *         cdef object obj = self
 *         if self.view.obj != NULL:
 *             obj = <object>self.view.obj             # <<<<<<<<<<<<<<
 *         cdef buffer buf = <buffer>New(buffer)
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, PyBUF_SIMPLE)
 */
    __pyx_t_2 = ((PyObject *)__pyx_v_self->view.obj);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":237
 *         """Return a readonly version of the buffer object."""
 *         cdef object obj = self
 *         if self.view.obj != NULL:             # <<<<<<<<<<<<<<
 *             obj = <object>self.view.obj
 *         cdef buffer buf = <buffer>New(buffer)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":239
 *         if self.view.obj != NULL:
 *             obj = <object>self.view.obj
 *         cdef buffer buf = <buffer>New(buffer)             # <<<<<<<<<<<<<<
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, PyBUF_SIMPLE)
 *         buf.view.readonly = 1
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":240
 *             obj = <object>self.view.obj
 *         cdef buffer buf = <buffer>New(buffer)
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *         buf.view.readonly = 1
 *         return buf
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_GetBuffer(__pyx_v_obj, (&__pyx_v_buf->view), PyBUF_SIMPLE); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 240, __pyx_L1_error)
  __pyx_v_buf->kind = __pyx_t_4;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":241
 *         cdef buffer buf = <buffer>New(buffer)
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, PyBUF_SIMPLE)
 *         buf.view.readonly = 1             # <<<<<<<<<<<<<<
 *         return buf
 * 
 */
  __pyx_v_buf->view.readonly = 1;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":242
 *         buf.kind = PyMPI_GetBuffer(obj, &buf.view, PyBUF_SIMPLE)
 *         buf.view.readonly = 1
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     def release(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __pyx_r = ((PyObject *)__pyx_v_buf);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":234
 *         return PyBytes_FromStringAndSize(<char*>self.view.buf, self.view.len)
 * 
 *     def toreadonly(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """Return a readonly version of the buffer object."""
 *         cdef object obj = self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.toreadonly", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":244
 *         return buf
 * 
 *     def release(self) -> None:             # <<<<<<<<<<<<<<
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyBuffer_Release(&self.view)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_17release(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6buffer_16release, "release(self) -> None\nRelease the underlying buffer exposed by the buffer object.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6buffer_17release = {"release", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_17release, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_16release};
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_17release(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("release (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("release", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "release", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_16release(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_16release(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("release", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":246
 *     def release(self) -> None:
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyBuffer_Release(&self.view)             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(&self.view, <object>NULL,
 *                           NULL, 0, 0, PyBUF_SIMPLE)
 */
  PyBuffer_Release((&__pyx_v_self->view));

  /* "src/mpi4py/MPI.src/asbuffer.pxi":247
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyBuffer_Release(&self.view)
 *         PyBuffer_FillInfo(&self.view, <object>NULL,             # <<<<<<<<<<<<<<
 *                           NULL, 0, 0, PyBUF_SIMPLE)
 *         self.kind = 0
 */
  __pyx_t_1 = PyBuffer_FillInfo((&__pyx_v_self->view), ((PyObject *)NULL), NULL, 0, 0, PyBUF_SIMPLE); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 247, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":249
 *         PyBuffer_FillInfo(&self.view, <object>NULL,
 *                           NULL, 0, 0, PyBUF_SIMPLE)
 *         self.kind = 0             # <<<<<<<<<<<<<<
 * 
 *     # buffer interface (PEP 3118)
 */
  __pyx_v_self->kind = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":244
 *         return buf
 * 
 *     def release(self) -> None:             # <<<<<<<<<<<<<<
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyBuffer_Release(&self.view)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.buffer.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":253
 *     # buffer interface (PEP 3118)
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, self,
 *                           self.view.buf, self.view.len,
 */

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_6buffer_19__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_6buffer_19__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_18__getbuffer__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self), ((Py_buffer *)__pyx_v_view), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6buffer_18__getbuffer__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (unlikely(__pyx_v_view == NULL)) {
    PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    return -1;
  }
  __pyx_v_view->obj = NULL;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":254
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         PyBuffer_FillInfo(view, self,             # <<<<<<<<<<<<<<
 *                           self.view.buf, self.view.len,
 *                           self.view.readonly, flags)
 */
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)__pyx_v_self), __pyx_v_self->view.buf, __pyx_v_self->view.len, __pyx_v_self->view.readonly, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 254, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":253
 *     # buffer interface (PEP 3118)
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, self,
 *                           self.view.buf, self.view.len,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.buffer.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  Py_CLEAR(__pyx_v_view->obj);
  goto __pyx_L2;
  __pyx_L0:;
  __pyx_L2:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":260
 *     # sequence interface (basic)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.view.len
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_6mpi4py_3MPI_6buffer_21__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_6mpi4py_3MPI_6buffer_21__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_20__len__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_6mpi4py_3MPI_6buffer_20__len__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self) {
  Py_ssize_t __pyx_r;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":261
 * 
 *     def __len__(self):
 *         return self.view.len             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, object item):
 */
  __pyx_r = __pyx_v_self->view.len;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":260
 *     # sequence interface (basic)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.view.len
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":263
 *         return self.view.len
 * 
 *     def __getitem__(self, object item):             # <<<<<<<<<<<<<<
 *         check_cpu_accessible(self.kind)
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6buffer_23__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_22__getitem__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self), ((PyObject *)__pyx_v_item));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6buffer_22__getitem__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_item) {
  Py_ssize_t __pyx_v_start;
  Py_ssize_t __pyx_v_stop;
  Py_ssize_t __pyx_v_step;
  Py_ssize_t __pyx_v_slen;
  unsigned char *__pyx_v_buf;
  Py_ssize_t __pyx_v_blen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":264
 * 
 *     def __getitem__(self, object item):
 *         check_cpu_accessible(self.kind)             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_check_cpu_accessible(__pyx_v_self->kind); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 264, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":265
 *     def __getitem__(self, object item):
 *         check_cpu_accessible(self.kind)
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0             # <<<<<<<<<<<<<<
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 *         cdef Py_ssize_t blen = self.view.len
 */
  __pyx_v_start = 0;
  __pyx_v_stop = 0;
  __pyx_v_step = 1;
  __pyx_v_slen = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":266
 *         check_cpu_accessible(self.kind)
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t blen = self.view.len
 *         if PyIndex_Check(item):
 */
  __pyx_v_buf = ((unsigned char *)__pyx_v_self->view.buf);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":267
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 *         cdef Py_ssize_t blen = self.view.len             # <<<<<<<<<<<<<<
 *         if PyIndex_Check(item):
 *             start = PyNumber_AsSsize_t(item, IndexError)
 */
  __pyx_t_2 = __pyx_v_self->view.len;
  __pyx_v_blen = __pyx_t_2;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":268
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 *         cdef Py_ssize_t blen = self.view.len
 *         if PyIndex_Check(item):             # <<<<<<<<<<<<<<
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 */
  __pyx_t_3 = (PyIndex_Check(__pyx_v_item) != 0);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":269
 *         cdef Py_ssize_t blen = self.view.len
 *         if PyIndex_Check(item):
 *             start = PyNumber_AsSsize_t(item, IndexError)             # <<<<<<<<<<<<<<
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:
 */
    __pyx_t_2 = PyNumber_AsSsize_t(__pyx_v_item, __pyx_builtin_IndexError); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 269, __pyx_L1_error)
    __pyx_v_start = __pyx_t_2;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":270
 *         if PyIndex_Check(item):
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen             # <<<<<<<<<<<<<<
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")
 */
    __pyx_t_3 = (__pyx_v_start < 0);
    if (__pyx_t_3) {
      __pyx_v_start = (__pyx_v_start + __pyx_v_blen);
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":271
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:             # <<<<<<<<<<<<<<
 *                 raise IndexError("index out of range")
 *             return <long>buf[start]
 */
    __pyx_t_4 = (__pyx_v_start < 0);
    if (!__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_4 = (__pyx_v_start >= __pyx_v_blen);
    __pyx_t_3 = __pyx_t_4;
    __pyx_L6_bool_binop_done:;
    if (unlikely(__pyx_t_3)) {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":272
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")             # <<<<<<<<<<<<<<
 *             return <long>buf[start]
 *         elif PySlice_Check(item):
 */
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 272, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 272, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":271
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:             # <<<<<<<<<<<<<<
 *                 raise IndexError("index out of range")
 *             return <long>buf[start]
 */
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":273
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")
 *             return <long>buf[start]             # <<<<<<<<<<<<<<
 *         elif PySlice_Check(item):
 *             # PySlice_Unpack(item, &start, &stop, &step)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyInt_From_long(((long)(__pyx_v_buf[__pyx_v_start]))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":268
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 *         cdef Py_ssize_t blen = self.view.len
 *         if PyIndex_Check(item):             # <<<<<<<<<<<<<<
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":274
 *                 raise IndexError("index out of range")
 *             return <long>buf[start]
 *         elif PySlice_Check(item):             # <<<<<<<<<<<<<<
 *             # PySlice_Unpack(item, &start, &stop, &step)
 *             # slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 */
  __pyx_t_3 = (PySlice_Check(__pyx_v_item) != 0);
  if (likely(__pyx_t_3)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":277
 *             # PySlice_Unpack(item, &start, &stop, &step)
 *             # slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)             # <<<<<<<<<<<<<<
 *             if step != 1: raise IndexError("slice with step not supported")
 *             return tobuffer(self, buf+start, slen, self.view.readonly)
 */
    __pyx_t_1 = PySlice_GetIndicesEx(__pyx_v_item, __pyx_v_blen, (&__pyx_v_start), (&__pyx_v_stop), (&__pyx_v_step), (&__pyx_v_slen)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 277, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":278
 *             # slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")             # <<<<<<<<<<<<<<
 *             return tobuffer(self, buf+start, slen, self.view.readonly)
 *         else:
 */
    __pyx_t_3 = (__pyx_v_step != 1);
    if (unlikely(__pyx_t_3)) {
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 278, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 278, __pyx_L1_error)
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":279
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")
 *             return tobuffer(self, buf+start, slen, self.view.readonly)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError("index must be integer or slice")
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = ((PyObject *)__pyx_f_6mpi4py_3MPI_tobuffer(((PyObject *)__pyx_v_self), (__pyx_v_buf + __pyx_v_start), __pyx_v_slen, __pyx_v_self->view.readonly)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":274
 *                 raise IndexError("index out of range")
 *             return <long>buf[start]
 *         elif PySlice_Check(item):             # <<<<<<<<<<<<<<
 *             # PySlice_Unpack(item, &start, &stop, &step)
 *             # slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":281
 *             return tobuffer(self, buf+start, slen, self.view.readonly)
 *         else:
 *             raise TypeError("index must be integer or slice")             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, object item, object value):
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(0, 281, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":263
 *         return self.view.len
 * 
 *     def __getitem__(self, object item):             # <<<<<<<<<<<<<<
 *         check_cpu_accessible(self.kind)
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":283
 *             raise TypeError("index must be integer or slice")
 * 
 *     def __setitem__(self, object item, object value):             # <<<<<<<<<<<<<<
 *         check_cpu_accessible(self.kind)
 *         if self.view.readonly:
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6buffer_25__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6buffer_25__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6buffer_24__setitem__(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_self), ((PyObject *)__pyx_v_item), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6buffer_24__setitem__(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_self, PyObject *__pyx_v_item, PyObject *__pyx_v_value) {
  Py_ssize_t __pyx_v_start;
  Py_ssize_t __pyx_v_stop;
  Py_ssize_t __pyx_v_step;
  Py_ssize_t __pyx_v_slen;
  unsigned char *__pyx_v_buf;
  Py_ssize_t __pyx_v_blen;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_inbuf = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  unsigned char __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setitem__", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":284
 * 
 *     def __setitem__(self, object item, object value):
 *         check_cpu_accessible(self.kind)             # <<<<<<<<<<<<<<
 *         if self.view.readonly:
 *             raise TypeError("buffer is read-only")
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_check_cpu_accessible(__pyx_v_self->kind); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 284, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":285
 *     def __setitem__(self, object item, object value):
 *         check_cpu_accessible(self.kind)
 *         if self.view.readonly:             # <<<<<<<<<<<<<<
 *             raise TypeError("buffer is read-only")
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 */
  if (unlikely(__pyx_v_self->view.readonly)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":286
 *         check_cpu_accessible(self.kind)
 *         if self.view.readonly:
 *             raise TypeError("buffer is read-only")             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 286, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":285
 *     def __setitem__(self, object item, object value):
 *         check_cpu_accessible(self.kind)
 *         if self.view.readonly:             # <<<<<<<<<<<<<<
 *             raise TypeError("buffer is read-only")
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":287
 *         if self.view.readonly:
 *             raise TypeError("buffer is read-only")
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0             # <<<<<<<<<<<<<<
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 *         cdef Py_ssize_t blen = self.view.len
 */
  __pyx_v_start = 0;
  __pyx_v_stop = 0;
  __pyx_v_step = 1;
  __pyx_v_slen = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":288
 *             raise TypeError("buffer is read-only")
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t blen = self.view.len
 *         cdef buffer inbuf
 */
  __pyx_v_buf = ((unsigned char *)__pyx_v_self->view.buf);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":289
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 *         cdef Py_ssize_t blen = self.view.len             # <<<<<<<<<<<<<<
 *         cdef buffer inbuf
 *         if PyIndex_Check(item):
 */
  __pyx_t_3 = __pyx_v_self->view.len;
  __pyx_v_blen = __pyx_t_3;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":291
 *         cdef Py_ssize_t blen = self.view.len
 *         cdef buffer inbuf
 *         if PyIndex_Check(item):             # <<<<<<<<<<<<<<
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 */
  __pyx_t_4 = (PyIndex_Check(__pyx_v_item) != 0);
  if (__pyx_t_4) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":292
 *         cdef buffer inbuf
 *         if PyIndex_Check(item):
 *             start = PyNumber_AsSsize_t(item, IndexError)             # <<<<<<<<<<<<<<
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:
 */
    __pyx_t_3 = PyNumber_AsSsize_t(__pyx_v_item, __pyx_builtin_IndexError); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 292, __pyx_L1_error)
    __pyx_v_start = __pyx_t_3;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":293
 *         if PyIndex_Check(item):
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen             # <<<<<<<<<<<<<<
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")
 */
    __pyx_t_4 = (__pyx_v_start < 0);
    if (__pyx_t_4) {
      __pyx_v_start = (__pyx_v_start + __pyx_v_blen);
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":294
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:             # <<<<<<<<<<<<<<
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value
 */
    __pyx_t_5 = (__pyx_v_start < 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_start >= __pyx_v_blen);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L7_bool_binop_done:;
    if (unlikely(__pyx_t_4)) {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":295
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")             # <<<<<<<<<<<<<<
 *             buf[start] = <unsigned char>value
 *         elif PySlice_Check(item):
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(0, 295, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":294
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:             # <<<<<<<<<<<<<<
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value
 */
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":296
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value             # <<<<<<<<<<<<<<
 *         elif PySlice_Check(item):
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 */
    __pyx_t_6 = __Pyx_PyInt_As_unsigned_char(__pyx_v_value); if (unlikely((__pyx_t_6 == (unsigned char)-1) && PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error)
    (__pyx_v_buf[__pyx_v_start]) = ((unsigned char)__pyx_t_6);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":291
 *         cdef Py_ssize_t blen = self.view.len
 *         cdef buffer inbuf
 *         if PyIndex_Check(item):             # <<<<<<<<<<<<<<
 *             start = PyNumber_AsSsize_t(item, IndexError)
 *             if start < 0: start += blen
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":297
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value
 *         elif PySlice_Check(item):             # <<<<<<<<<<<<<<
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")
 */
  __pyx_t_4 = (PySlice_Check(__pyx_v_item) != 0);
  if (likely(__pyx_t_4)) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":298
 *             buf[start] = <unsigned char>value
 *         elif PySlice_Check(item):
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)             # <<<<<<<<<<<<<<
 *             if step != 1: raise IndexError("slice with step not supported")
 *             if PyIndex_Check(value):
 */
    __pyx_t_1 = PySlice_GetIndicesEx(__pyx_v_item, __pyx_v_blen, (&__pyx_v_start), (&__pyx_v_stop), (&__pyx_v_step), (&__pyx_v_slen)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 298, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asbuffer.pxi":299
 *         elif PySlice_Check(item):
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")             # <<<<<<<<<<<<<<
 *             if PyIndex_Check(value):
 *                 <void>memset(buf+start, <unsigned char>value, <size_t>slen)
 */
    __pyx_t_4 = (__pyx_v_step != 1);
    if (unlikely(__pyx_t_4)) {
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_IndexError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(0, 299, __pyx_L1_error)
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":300
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")
 *             if PyIndex_Check(value):             # <<<<<<<<<<<<<<
 *                 <void>memset(buf+start, <unsigned char>value, <size_t>slen)
 *             else:
 */
    __pyx_t_4 = (PyIndex_Check(__pyx_v_value) != 0);
    if (__pyx_t_4) {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":301
 *             if step != 1: raise IndexError("slice with step not supported")
 *             if PyIndex_Check(value):
 *                 <void>memset(buf+start, <unsigned char>value, <size_t>slen)             # <<<<<<<<<<<<<<
 *             else:
 *                 inbuf = getbuffer(value, 1, 0)
 */
      __pyx_t_6 = __Pyx_PyInt_As_unsigned_char(__pyx_v_value); if (unlikely((__pyx_t_6 == (unsigned char)-1) && PyErr_Occurred())) __PYX_ERR(0, 301, __pyx_L1_error)
      ((void)memset((__pyx_v_buf + __pyx_v_start), ((unsigned char)__pyx_t_6), ((size_t)__pyx_v_slen)));

      /* "src/mpi4py/MPI.src/asbuffer.pxi":300
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")
 *             if PyIndex_Check(value):             # <<<<<<<<<<<<<<
 *                 <void>memset(buf+start, <unsigned char>value, <size_t>slen)
 *             else:
 */
      goto __pyx_L10;
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":303
 *                 <void>memset(buf+start, <unsigned char>value, <size_t>slen)
 *             else:
 *                 inbuf = getbuffer(value, 1, 0)             # <<<<<<<<<<<<<<
 *                 if inbuf.view.len != slen:
 *                     raise ValueError("slice length does not match buffer")
 */
    /*else*/ {
      __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_value, 1, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_inbuf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/asbuffer.pxi":304
 *             else:
 *                 inbuf = getbuffer(value, 1, 0)
 *                 if inbuf.view.len != slen:             # <<<<<<<<<<<<<<
 *                     raise ValueError("slice length does not match buffer")
 *                 <void>memmove(buf+start, inbuf.view.buf, <size_t>slen)
 */
      __pyx_t_4 = (__pyx_v_inbuf->view.len != __pyx_v_slen);
      if (unlikely(__pyx_t_4)) {

        /* "src/mpi4py/MPI.src/asbuffer.pxi":305
 *                 inbuf = getbuffer(value, 1, 0)
 *                 if inbuf.view.len != slen:
 *                     raise ValueError("slice length does not match buffer")             # <<<<<<<<<<<<<<
 *                 <void>memmove(buf+start, inbuf.view.buf, <size_t>slen)
 *         else:
 */
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(0, 305, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/asbuffer.pxi":304
 *             else:
 *                 inbuf = getbuffer(value, 1, 0)
 *                 if inbuf.view.len != slen:             # <<<<<<<<<<<<<<
 *                     raise ValueError("slice length does not match buffer")
 *                 <void>memmove(buf+start, inbuf.view.buf, <size_t>slen)
 */
      }

      /* "src/mpi4py/MPI.src/asbuffer.pxi":306
 *                 if inbuf.view.len != slen:
 *                     raise ValueError("slice length does not match buffer")
 *                 <void>memmove(buf+start, inbuf.view.buf, <size_t>slen)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError("index must be integer or slice")
 */
      ((void)memmove((__pyx_v_buf + __pyx_v_start), __pyx_v_inbuf->view.buf, ((size_t)__pyx_v_slen)));
    }
    __pyx_L10:;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":297
 *                 raise IndexError("index out of range")
 *             buf[start] = <unsigned char>value
 *         elif PySlice_Check(item):             # <<<<<<<<<<<<<<
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":308
 *                 <void>memmove(buf+start, inbuf.view.buf, <size_t>slen)
 *         else:
 *             raise TypeError("index must be integer or slice")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 308, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 308, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":283
 *             raise TypeError("index must be integer or slice")
 * 
 *     def __setitem__(self, object item, object value):             # <<<<<<<<<<<<<<
 *         check_cpu_accessible(self.kind)
 *         if self.view.readonly:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.buffer.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_inbuf);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":315
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline buffer newbuffer():             # <<<<<<<<<<<<<<
 *     return <buffer>New(buffer)
 * 
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_newbuffer(void) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("newbuffer", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":316
 * 
 * cdef inline buffer newbuffer():
 *     return <buffer>New(buffer)             # <<<<<<<<<<<<<<
 * 
 * cdef inline buffer getbuffer(object ob, bint readonly, bint format):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1));
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":315
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline buffer newbuffer():             # <<<<<<<<<<<<<<
 *     return <buffer>New(buffer)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.newbuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":318
 *     return <buffer>New(buffer)
 * 
 * cdef inline buffer getbuffer(object ob, bint readonly, bint format):             # <<<<<<<<<<<<<<
 *     cdef buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_getbuffer(PyObject *__pyx_v_ob, int __pyx_v_readonly, int __pyx_v_format) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  int __pyx_v_flags;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getbuffer", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":319
 * 
 * cdef inline buffer getbuffer(object ob, bint readonly, bint format):
 *     cdef buffer buf = newbuffer()             # <<<<<<<<<<<<<<
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_newbuffer()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":320
 * cdef inline buffer getbuffer(object ob, bint readonly, bint format):
 *     cdef buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 */
  __pyx_v_flags = PyBUF_ANY_CONTIGUOUS;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":321
 *     cdef buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_WRITABLE
 *     if format:
 */
  __pyx_t_2 = (!__pyx_v_readonly);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":322
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE             # <<<<<<<<<<<<<<
 *     if format:
 *         flags |= PyBUF_FORMAT
 */
    __pyx_v_flags = (__pyx_v_flags | PyBUF_WRITABLE);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":321
 *     cdef buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_WRITABLE
 *     if format:
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":323
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 *     if format:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_FORMAT
 *     buf.kind = PyMPI_GetBuffer(ob, &buf.view, flags)
 */
  if (__pyx_v_format) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":324
 *         flags |= PyBUF_WRITABLE
 *     if format:
 *         flags |= PyBUF_FORMAT             # <<<<<<<<<<<<<<
 *     buf.kind = PyMPI_GetBuffer(ob, &buf.view, flags)
 *     return buf
 */
    __pyx_v_flags = (__pyx_v_flags | PyBUF_FORMAT);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":323
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 *     if format:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_FORMAT
 *     buf.kind = PyMPI_GetBuffer(ob, &buf.view, flags)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":325
 *     if format:
 *         flags |= PyBUF_FORMAT
 *     buf.kind = PyMPI_GetBuffer(ob, &buf.view, flags)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_GetBuffer(__pyx_v_ob, (&__pyx_v_buf->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 325, __pyx_L1_error)
  __pyx_v_buf->kind = __pyx_t_3;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":326
 *         flags |= PyBUF_FORMAT
 *     buf.kind = PyMPI_GetBuffer(ob, &buf.view, flags)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef inline buffer asbuffer(object ob, void **base, MPI_Aint *size, bint ro):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":318
 *     return <buffer>New(buffer)
 * 
 * cdef inline buffer getbuffer(object ob, bint readonly, bint format):             # <<<<<<<<<<<<<<
 *     cdef buffer buf = newbuffer()
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.getbuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":328
 *     return buf
 * 
 * cdef inline buffer asbuffer(object ob, void **base, MPI_Aint *size, bint ro):             # <<<<<<<<<<<<<<
 *     cdef buffer buf
 *     if type(ob) is buffer:
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_asbuffer(PyObject *__pyx_v_ob, void **__pyx_v_base, MPI_Aint *__pyx_v_size, int __pyx_v_ro) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  void *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asbuffer", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":330
 * cdef inline buffer asbuffer(object ob, void **base, MPI_Aint *size, bint ro):
 *     cdef buffer buf
 *     if type(ob) is buffer:             # <<<<<<<<<<<<<<
 *         buf = <buffer> ob
 *         if buf.view.readonly and not ro:
 */
  __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_ob)) == ((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":331
 *     cdef buffer buf
 *     if type(ob) is buffer:
 *         buf = <buffer> ob             # <<<<<<<<<<<<<<
 *         if buf.view.readonly and not ro:
 *             raise BufferError("Object is not writable")
 */
    __pyx_t_2 = __pyx_v_ob;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/asbuffer.pxi":332
 *     if type(ob) is buffer:
 *         buf = <buffer> ob
 *         if buf.view.readonly and not ro:             # <<<<<<<<<<<<<<
 *             raise BufferError("Object is not writable")
 *     else:
 */
    if (__pyx_v_buf->view.readonly) {
    } else {
      __pyx_t_1 = __pyx_v_buf->view.readonly;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = (!__pyx_v_ro);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":333
 *         buf = <buffer> ob
 *         if buf.view.readonly and not ro:
 *             raise BufferError("Object is not writable")             # <<<<<<<<<<<<<<
 *     else:
 *         buf = getbuffer(ob, ro, 0)
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_BufferError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(0, 333, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":332
 *     if type(ob) is buffer:
 *         buf = <buffer> ob
 *         if buf.view.readonly and not ro:             # <<<<<<<<<<<<<<
 *             raise BufferError("Object is not writable")
 *     else:
 */
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":330
 * cdef inline buffer asbuffer(object ob, void **base, MPI_Aint *size, bint ro):
 *     cdef buffer buf
 *     if type(ob) is buffer:             # <<<<<<<<<<<<<<
 *         buf = <buffer> ob
 *         if buf.view.readonly and not ro:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":335
 *             raise BufferError("Object is not writable")
 *     else:
 *         buf = getbuffer(ob, ro, 0)             # <<<<<<<<<<<<<<
 *     if base != NULL: base[0] = buf.view.buf
 *     if size != NULL: size[0] = buf.view.len
 */
  /*else*/ {
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_ob, __pyx_v_ro, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":336
 *     else:
 *         buf = getbuffer(ob, ro, 0)
 *     if base != NULL: base[0] = buf.view.buf             # <<<<<<<<<<<<<<
 *     if size != NULL: size[0] = buf.view.len
 *     return buf
 */
  __pyx_t_1 = (__pyx_v_base != NULL);
  if (__pyx_t_1) {
    __pyx_t_4 = __pyx_v_buf->view.buf;
    (__pyx_v_base[0]) = __pyx_t_4;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":337
 *         buf = getbuffer(ob, ro, 0)
 *     if base != NULL: base[0] = buf.view.buf
 *     if size != NULL: size[0] = buf.view.len             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_1 = (__pyx_v_size != NULL);
  if (__pyx_t_1) {
    __pyx_t_5 = __pyx_v_buf->view.len;
    (__pyx_v_size[0]) = __pyx_t_5;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":338
 *     if base != NULL: base[0] = buf.view.buf
 *     if size != NULL: size[0] = buf.view.len
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef inline buffer asbuffer_r(object ob, void **base, MPI_Aint *size):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":328
 *     return buf
 * 
 * cdef inline buffer asbuffer(object ob, void **base, MPI_Aint *size, bint ro):             # <<<<<<<<<<<<<<
 *     cdef buffer buf
 *     if type(ob) is buffer:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.asbuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":340
 *     return buf
 * 
 * cdef inline buffer asbuffer_r(object ob, void **base, MPI_Aint *size):             # <<<<<<<<<<<<<<
 *     return asbuffer(ob, base, size, 1)
 * 
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_asbuffer_r(PyObject *__pyx_v_ob, void **__pyx_v_base, MPI_Aint *__pyx_v_size) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asbuffer_r", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":341
 * 
 * cdef inline buffer asbuffer_r(object ob, void **base, MPI_Aint *size):
 *     return asbuffer(ob, base, size, 1)             # <<<<<<<<<<<<<<
 * 
 * cdef inline buffer asbuffer_w(object ob, void **base, MPI_Aint *size):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer(__pyx_v_ob, __pyx_v_base, __pyx_v_size, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":340
 *     return buf
 * 
 * cdef inline buffer asbuffer_r(object ob, void **base, MPI_Aint *size):             # <<<<<<<<<<<<<<
 *     return asbuffer(ob, base, size, 1)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.asbuffer_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":343
 *     return asbuffer(ob, base, size, 1)
 * 
 * cdef inline buffer asbuffer_w(object ob, void **base, MPI_Aint *size):             # <<<<<<<<<<<<<<
 *     return asbuffer(ob, base, size, 0)
 * 
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_asbuffer_w(PyObject *__pyx_v_ob, void **__pyx_v_base, MPI_Aint *__pyx_v_size) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asbuffer_w", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":344
 * 
 * cdef inline buffer asbuffer_w(object ob, void **base, MPI_Aint *size):
 *     return asbuffer(ob, base, size, 0)             # <<<<<<<<<<<<<<
 * 
 * cdef inline buffer tobuffer(object ob, void *base, MPI_Aint size, bint ro):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer(__pyx_v_ob, __pyx_v_base, __pyx_v_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":343
 *     return asbuffer(ob, base, size, 1)
 * 
 * cdef inline buffer asbuffer_w(object ob, void **base, MPI_Aint *size):             # <<<<<<<<<<<<<<
 *     return asbuffer(ob, base, size, 0)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.asbuffer_w", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":346
 *     return asbuffer(ob, base, size, 0)
 * 
 * cdef inline buffer tobuffer(object ob, void *base, MPI_Aint size, bint ro):             # <<<<<<<<<<<<<<
 *     if size < 0: raise ValueError("expecting non-negative buffer length")
 *     cdef buffer buf = newbuffer()
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_tobuffer(PyObject *__pyx_v_ob, void *__pyx_v_base, MPI_Aint __pyx_v_size, int __pyx_v_ro) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tobuffer", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":347
 * 
 * cdef inline buffer tobuffer(object ob, void *base, MPI_Aint size, bint ro):
 *     if size < 0: raise ValueError("expecting non-negative buffer length")             # <<<<<<<<<<<<<<
 *     cdef buffer buf = newbuffer()
 *     PyBuffer_FillInfo(&buf.view, ob, base, size, ro, PyBUF_SIMPLE)
 */
  __pyx_t_1 = (__pyx_v_size < 0);
  if (unlikely(__pyx_t_1)) {
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 347, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":348
 * cdef inline buffer tobuffer(object ob, void *base, MPI_Aint size, bint ro):
 *     if size < 0: raise ValueError("expecting non-negative buffer length")
 *     cdef buffer buf = newbuffer()             # <<<<<<<<<<<<<<
 *     PyBuffer_FillInfo(&buf.view, ob, base, size, ro, PyBUF_SIMPLE)
 *     return buf
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_newbuffer()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":349
 *     if size < 0: raise ValueError("expecting non-negative buffer length")
 *     cdef buffer buf = newbuffer()
 *     PyBuffer_FillInfo(&buf.view, ob, base, size, ro, PyBUF_SIMPLE)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_3 = PyBuffer_FillInfo((&__pyx_v_buf->view), __pyx_v_ob, __pyx_v_base, __pyx_v_size, __pyx_v_ro, PyBUF_SIMPLE); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 349, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":350
 *     cdef buffer buf = newbuffer()
 *     PyBuffer_FillInfo(&buf.view, ob, base, size, ro, PyBUF_SIMPLE)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef inline buffer mpibuf(void *base, MPI_Count count):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":346
 *     return asbuffer(ob, base, size, 0)
 * 
 * cdef inline buffer tobuffer(object ob, void *base, MPI_Aint size, bint ro):             # <<<<<<<<<<<<<<
 *     if size < 0: raise ValueError("expecting non-negative buffer length")
 *     cdef buffer buf = newbuffer()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.tobuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":352
 *     return buf
 * 
 * cdef inline buffer mpibuf(void *base, MPI_Count count):             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint size = <MPI_Aint>count
 *     cdef int neq = (count != <MPI_Count>size)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_f_6mpi4py_3MPI_mpibuf(void *__pyx_v_base, MPI_Count __pyx_v_count) {
  MPI_Aint __pyx_v_size;
  int __pyx_v_neq;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpibuf", 1);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":353
 * 
 * cdef inline buffer mpibuf(void *base, MPI_Count count):
 *     cdef MPI_Aint size = <MPI_Aint>count             # <<<<<<<<<<<<<<
 *     cdef int neq = (count != <MPI_Count>size)
 *     if neq: raise OverflowError("length {count} does not fit in 'MPI_Aint'")
 */
  __pyx_v_size = ((MPI_Aint)__pyx_v_count);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":354
 * cdef inline buffer mpibuf(void *base, MPI_Count count):
 *     cdef MPI_Aint size = <MPI_Aint>count
 *     cdef int neq = (count != <MPI_Count>size)             # <<<<<<<<<<<<<<
 *     if neq: raise OverflowError("length {count} does not fit in 'MPI_Aint'")
 *     return tobuffer(<object>NULL, base, size, 0)
 */
  __pyx_v_neq = (__pyx_v_count != ((MPI_Count)__pyx_v_size));

  /* "src/mpi4py/MPI.src/asbuffer.pxi":355
 *     cdef MPI_Aint size = <MPI_Aint>count
 *     cdef int neq = (count != <MPI_Count>size)
 *     if neq: raise OverflowError("length {count} does not fit in 'MPI_Aint'")             # <<<<<<<<<<<<<<
 *     return tobuffer(<object>NULL, base, size, 0)
 * 
 */
  __pyx_t_1 = (__pyx_v_neq != 0);
  if (unlikely(__pyx_t_1)) {
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 355, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":356
 *     cdef int neq = (count != <MPI_Count>size)
 *     if neq: raise OverflowError("length {count} does not fit in 'MPI_Aint'")
 *     return tobuffer(<object>NULL, base, size, 0)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object aspybuffer(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_tobuffer(((PyObject *)NULL), __pyx_v_base, __pyx_v_size, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":352
 *     return buf
 * 
 * cdef inline buffer mpibuf(void *base, MPI_Count count):             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint size = <MPI_Aint>count
 *     cdef int neq = (count != <MPI_Count>size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.mpibuf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asbuffer.pxi":358
 *     return tobuffer(<object>NULL, base, size, 0)
 * 
 * cdef inline object aspybuffer(             # <<<<<<<<<<<<<<
 *     object obj,
 *     void **base,
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_aspybuffer(PyObject *__pyx_v_obj, void **__pyx_v_base, MPI_Aint *__pyx_v_size, int __pyx_v_readonly, char const *__pyx_v_format) {
  int __pyx_v_buftype;
  Py_buffer __pyx_v_view;
  int __pyx_v_flags;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_UCS4 __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  void *__pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("aspybuffer", 0);
  __Pyx_INCREF(__pyx_v_obj);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":365
 *     const char format[],
 * ):
 *     cdef int buftype = PyBUF_READ if readonly else PyBUF_WRITE             # <<<<<<<<<<<<<<
 *     obj = PyMemoryView_GetContiguous(obj, buftype, c'A')
 *     cdef Py_buffer view
 */
  if (__pyx_v_readonly) {
    __pyx_t_1 = PyBUF_READ;
  } else {
    __pyx_t_1 = PyBUF_WRITE;
  }
  __pyx_v_buftype = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":366
 * ):
 *     cdef int buftype = PyBUF_READ if readonly else PyBUF_WRITE
 *     obj = PyMemoryView_GetContiguous(obj, buftype, c'A')             # <<<<<<<<<<<<<<
 *     cdef Py_buffer view
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 */
  __pyx_t_2 = PyMemoryView_GetContiguous(__pyx_v_obj, __pyx_v_buftype, 'A'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":368
 *     obj = PyMemoryView_GetContiguous(obj, buftype, c'A')
 *     cdef Py_buffer view
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS             # <<<<<<<<<<<<<<
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 */
  __pyx_v_flags = PyBUF_ANY_CONTIGUOUS;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":369
 *     cdef Py_buffer view
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_WRITABLE
 *     if format != NULL:
 */
  __pyx_t_3 = (!__pyx_v_readonly);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":370
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE             # <<<<<<<<<<<<<<
 *     if format != NULL:
 *         flags |= PyBUF_FORMAT
 */
    __pyx_v_flags = (__pyx_v_flags | PyBUF_WRITABLE);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":369
 *     cdef Py_buffer view
 *     cdef int flags = PyBUF_ANY_CONTIGUOUS
 *     if not readonly:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_WRITABLE
 *     if format != NULL:
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":371
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 *     if format != NULL:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBuffer(obj, &view, flags)
 */
  __pyx_t_3 = (__pyx_v_format != NULL);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":372
 *         flags |= PyBUF_WRITABLE
 *     if format != NULL:
 *         flags |= PyBUF_FORMAT             # <<<<<<<<<<<<<<
 *     PyObject_GetBuffer(obj, &view, flags)
 *     if format != NULL and view.format != NULL:
 */
    __pyx_v_flags = (__pyx_v_flags | PyBUF_FORMAT);

    /* "src/mpi4py/MPI.src/asbuffer.pxi":371
 *     if not readonly:
 *         flags |= PyBUF_WRITABLE
 *     if format != NULL:             # <<<<<<<<<<<<<<
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBuffer(obj, &view, flags)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":373
 *     if format != NULL:
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBuffer(obj, &view, flags)             # <<<<<<<<<<<<<<
 *     if format != NULL and view.format != NULL:
 *         if strncmp(format, view.format, 4) != 0:
 */
  __pyx_t_4 = PyObject_GetBuffer(__pyx_v_obj, (&__pyx_v_view), __pyx_v_flags); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 373, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":374
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBuffer(obj, &view, flags)
 *     if format != NULL and view.format != NULL:             # <<<<<<<<<<<<<<
 *         if strncmp(format, view.format, 4) != 0:
 *             PyBuffer_Release(&view)
 */
  __pyx_t_5 = (__pyx_v_format != NULL);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_view.format != NULL);
  __pyx_t_3 = __pyx_t_5;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/asbuffer.pxi":375
 *     PyObject_GetBuffer(obj, &view, flags)
 *     if format != NULL and view.format != NULL:
 *         if strncmp(format, view.format, 4) != 0:             # <<<<<<<<<<<<<<
 *             PyBuffer_Release(&view)
 *             raise ValueError(
 */
    __pyx_t_3 = (strncmp(__pyx_v_format, __pyx_v_view.format, 4) != 0);
    if (unlikely(__pyx_t_3)) {

      /* "src/mpi4py/MPI.src/asbuffer.pxi":376
 *     if format != NULL and view.format != NULL:
 *         if strncmp(format, view.format, 4) != 0:
 *             PyBuffer_Release(&view)             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"expecting buffer with format {pystr(format)!r}, "
 */
      PyBuffer_Release((&__pyx_v_view));

      /* "src/mpi4py/MPI.src/asbuffer.pxi":378
 *             PyBuffer_Release(&view)
 *             raise ValueError(
 *                 f"expecting buffer with format {pystr(format)!r}, "             # <<<<<<<<<<<<<<
 *                 f"got {pystr(view.format)!r}")
 *     if base != NULL: base[0] = view.buf
 */
      __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = 0;
      __pyx_t_7 = 127;
      __Pyx_INCREF(__pyx_kp_u_expecting_buffer_with_format);
      __pyx_t_6 += 29;
      __Pyx_GIVEREF(__pyx_kp_u_expecting_buffer_with_format);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_expecting_buffer_with_format);
      __pyx_t_8 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_format); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_8), __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_7;
      __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_9);
      __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_kp_u_got);
      __pyx_t_6 += 6;
      __Pyx_GIVEREF(__pyx_kp_u_got);
      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_got);

      /* "src/mpi4py/MPI.src/asbuffer.pxi":379
 *             raise ValueError(
 *                 f"expecting buffer with format {pystr(format)!r}, "
 *                 f"got {pystr(view.format)!r}")             # <<<<<<<<<<<<<<
 *     if base != NULL: base[0] = view.buf
 *     if size != NULL: size[0] = view.len // view.itemsize
 */
      __pyx_t_9 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_view.format); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_9), __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7;
      __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "src/mpi4py/MPI.src/asbuffer.pxi":378
 *             PyBuffer_Release(&view)
 *             raise ValueError(
 *                 f"expecting buffer with format {pystr(format)!r}, "             # <<<<<<<<<<<<<<
 *                 f"got {pystr(view.format)!r}")
 *     if base != NULL: base[0] = view.buf
 */
      __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 378, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/asbuffer.pxi":377
 *         if strncmp(format, view.format, 4) != 0:
 *             PyBuffer_Release(&view)
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"expecting buffer with format {pystr(format)!r}, "
 *                 f"got {pystr(view.format)!r}")
 */
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 377, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(0, 377, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asbuffer.pxi":375
 *     PyObject_GetBuffer(obj, &view, flags)
 *     if format != NULL and view.format != NULL:
 *         if strncmp(format, view.format, 4) != 0:             # <<<<<<<<<<<<<<
 *             PyBuffer_Release(&view)
 *             raise ValueError(
 */
    }

    /* "src/mpi4py/MPI.src/asbuffer.pxi":374
 *         flags |= PyBUF_FORMAT
 *     PyObject_GetBuffer(obj, &view, flags)
 *     if format != NULL and view.format != NULL:             # <<<<<<<<<<<<<<
 *         if strncmp(format, view.format, 4) != 0:
 *             PyBuffer_Release(&view)
 */
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":380
 *                 f"expecting buffer with format {pystr(format)!r}, "
 *                 f"got {pystr(view.format)!r}")
 *     if base != NULL: base[0] = view.buf             # <<<<<<<<<<<<<<
 *     if size != NULL: size[0] = view.len // view.itemsize
 *     PyBuffer_Release(&view)
 */
  __pyx_t_3 = (__pyx_v_base != NULL);
  if (__pyx_t_3) {
    __pyx_t_10 = __pyx_v_view.buf;
    (__pyx_v_base[0]) = __pyx_t_10;
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":381
 *                 f"got {pystr(view.format)!r}")
 *     if base != NULL: base[0] = view.buf
 *     if size != NULL: size[0] = view.len // view.itemsize             # <<<<<<<<<<<<<<
 *     PyBuffer_Release(&view)
 *     return obj
 */
  __pyx_t_3 = (__pyx_v_size != NULL);
  if (__pyx_t_3) {
    (__pyx_v_size[0]) = (__pyx_v_view.len / __pyx_v_view.itemsize);
  }

  /* "src/mpi4py/MPI.src/asbuffer.pxi":382
 *     if base != NULL: base[0] = view.buf
 *     if size != NULL: size[0] = view.len // view.itemsize
 *     PyBuffer_Release(&view)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  PyBuffer_Release((&__pyx_v_view));

  /* "src/mpi4py/MPI.src/asbuffer.pxi":383
 *     if size != NULL: size[0] = view.len // view.itemsize
 *     PyBuffer_Release(&view)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":358
 *     return tobuffer(<object>NULL, base, size, 0)
 * 
 * cdef inline object aspybuffer(             # <<<<<<<<<<<<<<
 *     object obj,
 *     void **base,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.aspybuffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":9
 *     Py_ssize_t PySequence_Size(object) except -1
 * 
 * cdef inline int is_integral(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     if not PyIndex_Check(ob):    return 0
 *     if not PySequence_Check(ob): return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_integral(PyObject *__pyx_v_ob) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_integral", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":10
 * 
 * cdef inline int is_integral(object ob) noexcept:
 *     if not PyIndex_Check(ob):    return 0             # <<<<<<<<<<<<<<
 *     if not PySequence_Check(ob): return 1
 *     try: PySequence_Size(ob)
 */
  __pyx_t_1 = (!(PyIndex_Check(__pyx_v_ob) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":11
 * cdef inline int is_integral(object ob) noexcept:
 *     if not PyIndex_Check(ob):    return 0
 *     if not PySequence_Check(ob): return 1             # <<<<<<<<<<<<<<
 *     try: PySequence_Size(ob)
 *     except: pass  # noqa
 */
  __pyx_t_1 = (!(PySequence_Check(__pyx_v_ob) != 0));
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":12
 *     if not PyIndex_Check(ob):    return 0
 *     if not PySequence_Check(ob): return 1
 *     try: PySequence_Size(ob)             # <<<<<<<<<<<<<<
 *     except: pass  # noqa
 *     else: return 0
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {
      __pyx_t_5 = PySequence_Size(__pyx_v_ob); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1L))) __PYX_ERR(10, 12, __pyx_L5_error)
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":14
 *     try: PySequence_Size(ob)
 *     except: pass  # noqa
 *     else: return 0             # <<<<<<<<<<<<<<
 *     try: PyNumber_Index(ob)
 *     except: return 0  # noqa
 */
    /*else:*/ {
      __pyx_r = 0;
      goto __pyx_L8_except_return;
    }
    __pyx_L5_error:;

    /* "src/mpi4py/MPI.src/asarray.pxi":13
 *     if not PySequence_Check(ob): return 1
 *     try: PySequence_Size(ob)
 *     except: pass  # noqa             # <<<<<<<<<<<<<<
 *     else: return 0
 *     try: PyNumber_Index(ob)
 */
    /*except:*/ {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L6_exception_handled;
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":12
 *     if not PyIndex_Check(ob):    return 0
 *     if not PySequence_Check(ob): return 1
 *     try: PySequence_Size(ob)             # <<<<<<<<<<<<<<
 *     except: pass  # noqa
 *     else: return 0
 */
    __pyx_L8_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
    __pyx_L6_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":15
 *     except: pass  # noqa
 *     else: return 0
 *     try: PyNumber_Index(ob)             # <<<<<<<<<<<<<<
 *     except: return 0  # noqa
 *     else: return 1
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_2);
    /*try:*/ {
      __pyx_t_6 = PyNumber_Index(__pyx_v_ob); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 15, __pyx_L11_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":17
 *     try: PyNumber_Index(ob)
 *     except: return 0  # noqa
 *     else: return 1             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
    /*else:*/ {
      __pyx_r = 1;
      goto __pyx_L14_except_return;
    }
    __pyx_L11_error:;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":16
 *     else: return 0
 *     try: PyNumber_Index(ob)
 *     except: return 0  # noqa             # <<<<<<<<<<<<<<
 *     else: return 1
 * 
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.is_integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(10, 16, __pyx_L13_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __pyx_r = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L14_except_return;
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":15
 *     except: pass  # noqa
 *     else: return 0
 *     try: PyNumber_Index(ob)             # <<<<<<<<<<<<<<
 *     except: return 0  # noqa
 *     else: return 1
 */
    __pyx_L13_except_error:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
    goto __pyx_L1_error;
    __pyx_L14_except_return:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_3, __pyx_t_2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":9
 *     Py_ssize_t PySequence_Size(object) except -1
 * 
 * cdef inline int is_integral(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     if not PyIndex_Check(ob):    return 0
 *     if not PySequence_Check(ob): return 1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_WriteUnraisable("mpi4py.MPI.is_integral", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":33
 *     MPI_Count
 * 
 * cdef inline int chklength(Py_ssize_t size) except -1:             # <<<<<<<<<<<<<<
 *     cdef int overflow = (size > (<Py_ssize_t>INT_MAX))
 *     if overflow: raise OverflowError("length {size} larger than {INT_MAX}")
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_chklength(Py_ssize_t __pyx_v_size) {
  int __pyx_v_overflow;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chklength", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":34
 * 
 * cdef inline int chklength(Py_ssize_t size) except -1:
 *     cdef int overflow = (size > (<Py_ssize_t>INT_MAX))             # <<<<<<<<<<<<<<
 *     if overflow: raise OverflowError("length {size} larger than {INT_MAX}")
 *     return 0
 */
  __pyx_v_overflow = (__pyx_v_size > ((Py_ssize_t)INT_MAX));

  /* "src/mpi4py/MPI.src/asarray.pxi":35
 * cdef inline int chklength(Py_ssize_t size) except -1:
 *     cdef int overflow = (size > (<Py_ssize_t>INT_MAX))
 *     if overflow: raise OverflowError("length {size} larger than {INT_MAX}")             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_overflow != 0);
  if (unlikely(__pyx_t_1)) {
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(10, 35, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":36
 *     cdef int overflow = (size > (<Py_ssize_t>INT_MAX))
 *     if overflow: raise OverflowError("length {size} larger than {INT_MAX}")
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":33
 *     MPI_Count
 * 
 * cdef inline int chklength(Py_ssize_t size) except -1:             # <<<<<<<<<<<<<<
 *     cdef int overflow = (size > (<Py_ssize_t>INT_MAX))
 *     if overflow: raise OverflowError("length {size} larger than {INT_MAX}")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.chklength", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":38
 *     return 0
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     return allocate(n, sizeof(integral_t), p)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(Py_ssize_t __pyx_v_n, int **__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0newarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":39
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):
 *     return allocate(n, sizeof(integral_t), p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_n, (sizeof(int)), __pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":38
 *     return 0
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     return allocate(n, sizeof(integral_t), p)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.newarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_newarray(Py_ssize_t __pyx_v_n, MPI_Aint **__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1newarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":39
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):
 *     return allocate(n, sizeof(integral_t), p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_n, (sizeof(MPI_Aint)), __pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":38
 *     return 0
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     return allocate(n, sizeof(integral_t), p)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.newarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(Py_ssize_t __pyx_v_n, MPI_Count **__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2newarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":39
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):
 *     return allocate(n, sizeof(integral_t), p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_n, (sizeof(MPI_Count)), __pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":38
 *     return 0
 * 
 * cdef inline object newarray(Py_ssize_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     return allocate(n, sizeof(integral_t), p)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.newarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":41
 *     return allocate(n, sizeof(integral_t), p)
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(PyObject *__pyx_v_ob, int *__pyx_v_n, int **__pyx_v_p) {
  Py_ssize_t __pyx_v_size;
  int *__pyx_v_base;
  PyObject *__pyx_v_mem = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_0getarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":42
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)             # <<<<<<<<<<<<<<
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ob); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 42, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":43
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)             # <<<<<<<<<<<<<<
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_chklength(__pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asarray.pxi":44
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL             # <<<<<<<<<<<<<<
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":45
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 */
  __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_base)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_mem = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":46
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 */
  __pyx_t_1 = __pyx_v_size;
  __pyx_t_4 = __pyx_t_1;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/asarray.pxi":47
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])             # <<<<<<<<<<<<<<
 *     n[0] = <count_t> size
 *     p[0] = base
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_ob, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyNumber_Index(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    (__pyx_v_base[__pyx_v_i]) = __pyx_t_2;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":48
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size             # <<<<<<<<<<<<<<
 *     p[0] = base
 *     return mem
 */
  (__pyx_v_n[0]) = ((int)__pyx_v_size);

  /* "src/mpi4py/MPI.src/asarray.pxi":49
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 *     p[0] = base             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_base;

  /* "src/mpi4py/MPI.src/asarray.pxi":50
 *     n[0] = <count_t> size
 *     p[0] = base
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":41
 *     return allocate(n, sizeof(integral_t), p)
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.getarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_0_1__pyx_f_6mpi4py_3MPI_getarray(PyObject *__pyx_v_ob, int *__pyx_v_n, MPI_Aint **__pyx_v_p) {
  Py_ssize_t __pyx_v_size;
  MPI_Aint *__pyx_v_base;
  PyObject *__pyx_v_mem = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  MPI_Aint __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_1getarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":42
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)             # <<<<<<<<<<<<<<
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ob); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 42, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":43
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)             # <<<<<<<<<<<<<<
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_chklength(__pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asarray.pxi":44
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL             # <<<<<<<<<<<<<<
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":45
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 */
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_base)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_mem = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":46
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 */
  __pyx_t_1 = __pyx_v_size;
  __pyx_t_4 = __pyx_t_1;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/asarray.pxi":47
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])             # <<<<<<<<<<<<<<
 *     n[0] = <count_t> size
 *     p[0] = base
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_ob, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyNumber_Index(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyInt_As_MPI_Aint(__pyx_t_6); if (unlikely((__pyx_t_7 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    (__pyx_v_base[__pyx_v_i]) = __pyx_t_7;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":48
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size             # <<<<<<<<<<<<<<
 *     p[0] = base
 *     return mem
 */
  (__pyx_v_n[0]) = ((int)__pyx_v_size);

  /* "src/mpi4py/MPI.src/asarray.pxi":49
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 *     p[0] = base             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_base;

  /* "src/mpi4py/MPI.src/asarray.pxi":50
 *     n[0] = <count_t> size
 *     p[0] = base
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":41
 *     return allocate(n, sizeof(integral_t), p)
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.getarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_getarray(PyObject *__pyx_v_ob, int *__pyx_v_n, MPI_Count **__pyx_v_p) {
  Py_ssize_t __pyx_v_size;
  MPI_Count *__pyx_v_base;
  PyObject *__pyx_v_mem = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  MPI_Count __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_2getarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":42
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)             # <<<<<<<<<<<<<<
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ob); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 42, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":43
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)             # <<<<<<<<<<<<<<
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_chklength(__pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asarray.pxi":44
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL             # <<<<<<<<<<<<<<
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":45
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 */
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_base)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_mem = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":46
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 */
  __pyx_t_1 = __pyx_v_size;
  __pyx_t_4 = __pyx_t_1;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/asarray.pxi":47
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])             # <<<<<<<<<<<<<<
 *     n[0] = <count_t> size
 *     p[0] = base
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_ob, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = PyNumber_Index(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyInt_As_MPI_Count(__pyx_t_6); if (unlikely((__pyx_t_7 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    (__pyx_v_base[__pyx_v_i]) = __pyx_t_7;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":48
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size             # <<<<<<<<<<<<<<
 *     p[0] = base
 *     return mem
 */
  (__pyx_v_n[0]) = ((int)__pyx_v_size);

  /* "src/mpi4py/MPI.src/asarray.pxi":49
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 *     p[0] = base             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_base;

  /* "src/mpi4py/MPI.src/asarray.pxi":50
 *     n[0] = <count_t> size
 *     p[0] = base
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":41
 *     return allocate(n, sizeof(integral_t), p)
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.getarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1_0__pyx_f_6mpi4py_3MPI_getarray(PyObject *__pyx_v_ob, MPI_Count *__pyx_v_n, int **__pyx_v_p) {
  Py_ssize_t __pyx_v_size;
  int *__pyx_v_base;
  PyObject *__pyx_v_mem = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1_0getarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":42
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)             # <<<<<<<<<<<<<<
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ob); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 42, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":44
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL             # <<<<<<<<<<<<<<
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":45
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_base)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_mem = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":46
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 */
  __pyx_t_1 = __pyx_v_size;
  __pyx_t_3 = __pyx_t_1;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/asarray.pxi":47
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])             # <<<<<<<<<<<<<<
 *     n[0] = <count_t> size
 *     p[0] = base
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ob, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyNumber_Index(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    (__pyx_v_base[__pyx_v_i]) = __pyx_t_6;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":48
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size             # <<<<<<<<<<<<<<
 *     p[0] = base
 *     return mem
 */
  (__pyx_v_n[0]) = ((MPI_Count)__pyx_v_size);

  /* "src/mpi4py/MPI.src/asarray.pxi":49
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 *     p[0] = base             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_base;

  /* "src/mpi4py/MPI.src/asarray.pxi":50
 *     n[0] = <count_t> size
 *     p[0] = base
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":41
 *     return allocate(n, sizeof(integral_t), p)
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.getarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1_1__pyx_f_6mpi4py_3MPI_getarray(PyObject *__pyx_v_ob, MPI_Count *__pyx_v_n, MPI_Aint **__pyx_v_p) {
  Py_ssize_t __pyx_v_size;
  MPI_Aint *__pyx_v_base;
  PyObject *__pyx_v_mem = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  MPI_Aint __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1_1getarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":42
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)             # <<<<<<<<<<<<<<
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ob); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 42, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":44
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL             # <<<<<<<<<<<<<<
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":45
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 */
  __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_base)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_mem = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":46
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 */
  __pyx_t_1 = __pyx_v_size;
  __pyx_t_3 = __pyx_t_1;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/asarray.pxi":47
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])             # <<<<<<<<<<<<<<
 *     n[0] = <count_t> size
 *     p[0] = base
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ob, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyNumber_Index(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_MPI_Aint(__pyx_t_5); if (unlikely((__pyx_t_6 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    (__pyx_v_base[__pyx_v_i]) = __pyx_t_6;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":48
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size             # <<<<<<<<<<<<<<
 *     p[0] = base
 *     return mem
 */
  (__pyx_v_n[0]) = ((MPI_Count)__pyx_v_size);

  /* "src/mpi4py/MPI.src/asarray.pxi":49
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 *     p[0] = base             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_base;

  /* "src/mpi4py/MPI.src/asarray.pxi":50
 *     n[0] = <count_t> size
 *     p[0] = base
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":41
 *     return allocate(n, sizeof(integral_t), p)
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.getarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(PyObject *__pyx_v_ob, MPI_Count *__pyx_v_n, MPI_Count **__pyx_v_p) {
  Py_ssize_t __pyx_v_size;
  MPI_Count *__pyx_v_base;
  PyObject *__pyx_v_mem = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  MPI_Count __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1_2getarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":42
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):
 *     cdef Py_ssize_t size = len(ob)             # <<<<<<<<<<<<<<
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ob); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 42, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":44
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL             # <<<<<<<<<<<<<<
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":45
 *     if count_t is int: chklength(size)
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 */
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_base)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_mem = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":46
 *     cdef integral_t *base = NULL
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 */
  __pyx_t_1 = __pyx_v_size;
  __pyx_t_3 = __pyx_t_1;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/asarray.pxi":47
 *     cdef object mem = newarray(size, &base)
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])             # <<<<<<<<<<<<<<
 *     n[0] = <count_t> size
 *     p[0] = base
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ob, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyNumber_Index(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_MPI_Count(__pyx_t_5); if (unlikely((__pyx_t_6 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(10, 47, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    (__pyx_v_base[__pyx_v_i]) = __pyx_t_6;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":48
 *     for i in range(size):
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size             # <<<<<<<<<<<<<<
 *     p[0] = base
 *     return mem
 */
  (__pyx_v_n[0]) = ((MPI_Count)__pyx_v_size);

  /* "src/mpi4py/MPI.src/asarray.pxi":49
 *         base[i] = PyNumber_Index(ob[i])
 *     n[0] = <count_t> size
 *     p[0] = base             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_base;

  /* "src/mpi4py/MPI.src/asarray.pxi":50
 *     n[0] = <count_t> size
 *     p[0] = base
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":41
 *     return allocate(n, sizeof(integral_t), p)
 * 
 * cdef inline object getarray(object ob, count_t *n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(ob)
 *     if count_t is int: chklength(size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.getarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":52
 *     return mem
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(PyObject *__pyx_v_ob, int __pyx_v_n, int **__pyx_v_p) {
  int __pyx_v_size;
  PyObject *__pyx_v_mem = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_0chkarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":53
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0             # <<<<<<<<<<<<<<
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":54
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)             # <<<<<<<<<<<<<<
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_ob, (&__pyx_v_size), __pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  __pyx_t_2 = (__pyx_v_n != __pyx_v_size);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asarray.pxi":56
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
    __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = 0;
    __pyx_t_4 = 127;
    __Pyx_INCREF(__pyx_kp_u_expecting);
    __pyx_t_3 += 10;
    __Pyx_GIVEREF(__pyx_kp_u_expecting);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_expecting);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_kp_u_items_got);
    __pyx_t_3 += 12;
    __Pyx_GIVEREF(__pyx_kp_u_items_got);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_items_got);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(10, 56, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":57
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":52
 *     return mem
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.chkarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_0_1__pyx_f_6mpi4py_3MPI_chkarray(PyObject *__pyx_v_ob, int __pyx_v_n, MPI_Aint **__pyx_v_p) {
  int __pyx_v_size;
  PyObject *__pyx_v_mem = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_1chkarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":53
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0             # <<<<<<<<<<<<<<
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":54
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)             # <<<<<<<<<<<<<<
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 */
  __pyx_t_1 = __pyx_fuse_0_1__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_ob, (&__pyx_v_size), __pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  __pyx_t_2 = (__pyx_v_n != __pyx_v_size);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asarray.pxi":56
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
    __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = 0;
    __pyx_t_4 = 127;
    __Pyx_INCREF(__pyx_kp_u_expecting);
    __pyx_t_3 += 10;
    __Pyx_GIVEREF(__pyx_kp_u_expecting);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_expecting);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_kp_u_items_got);
    __pyx_t_3 += 12;
    __Pyx_GIVEREF(__pyx_kp_u_items_got);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_items_got);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(10, 56, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":57
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":52
 *     return mem
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.chkarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_chkarray(PyObject *__pyx_v_ob, int __pyx_v_n, MPI_Count **__pyx_v_p) {
  int __pyx_v_size;
  PyObject *__pyx_v_mem = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0_2chkarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":53
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0             # <<<<<<<<<<<<<<
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":54
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)             # <<<<<<<<<<<<<<
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 */
  __pyx_t_1 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_ob, (&__pyx_v_size), __pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  __pyx_t_2 = (__pyx_v_n != __pyx_v_size);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asarray.pxi":56
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
    __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = 0;
    __pyx_t_4 = 127;
    __Pyx_INCREF(__pyx_kp_u_expecting);
    __pyx_t_3 += 10;
    __Pyx_GIVEREF(__pyx_kp_u_expecting);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_expecting);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_kp_u_items_got);
    __pyx_t_3 += 12;
    __Pyx_GIVEREF(__pyx_kp_u_items_got);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_items_got);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(10, 56, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":57
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":52
 *     return mem
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.chkarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_chkarray(PyObject *__pyx_v_ob, MPI_Count __pyx_v_n, MPI_Count **__pyx_v_p) {
  MPI_Count __pyx_v_size;
  PyObject *__pyx_v_mem = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1_2chkarray", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":53
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0             # <<<<<<<<<<<<<<
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":54
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)             # <<<<<<<<<<<<<<
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_ob, (&__pyx_v_size), __pyx_v_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  __pyx_t_2 = (__pyx_v_n != __pyx_v_size);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asarray.pxi":56
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
    __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = 0;
    __pyx_t_4 = 127;
    __Pyx_INCREF(__pyx_kp_u_expecting);
    __pyx_t_3 += 10;
    __Pyx_GIVEREF(__pyx_kp_u_expecting);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_expecting);
    __pyx_t_5 = __Pyx_PyInt_From_MPI_Count(__pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4;
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u_items_got);
    __pyx_t_3 += 12;
    __Pyx_GIVEREF(__pyx_kp_u_items_got);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_items_got);
    __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(10, 56, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asarray.pxi":55
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 *     if n != size:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":57
 *     if n != size:
 *         raise ValueError(f"expecting {n} items, got {size}")
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":52
 *     return mem
 * 
 * cdef inline object chkarray(object ob, count_t n, integral_t **p):             # <<<<<<<<<<<<<<
 *     cdef count_t size = 0
 *     cdef object mem = getarray(ob, &size, p)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.chkarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":61
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object asarray_Datatype(             # <<<<<<<<<<<<<<
 *     object sequence, MPI_Count size, MPI_Datatype **p,
 * ):
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Datatype(PyObject *__pyx_v_sequence, MPI_Count __pyx_v_size, MPI_Datatype **__pyx_v_p) {
  MPI_Datatype *__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  MPI_Count __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  MPI_Count __pyx_t_8;
  MPI_Count __pyx_t_9;
  MPI_Count __pyx_t_10;
  MPI_Datatype __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_Datatype", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":64
 *     object sequence, MPI_Count size, MPI_Datatype **p,
 * ):
 *     cdef MPI_Datatype *array = NULL             # <<<<<<<<<<<<<<
 *     if size != len(sequence):
 *         raise ValueError(f"expecting {size} items, got {len(sequence)}")
 */
  __pyx_v_array = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":65
 * ):
 *     cdef MPI_Datatype *array = NULL
 *     if size != len(sequence):             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef object ob = allocate(size, sizeof(MPI_Datatype), &array)
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 65, __pyx_L1_error)
  __pyx_t_2 = (__pyx_v_size != __pyx_t_1);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asarray.pxi":66
 *     cdef MPI_Datatype *array = NULL
 *     if size != len(sequence):
 *         raise ValueError(f"expecting {size} items, got {len(sequence)}")             # <<<<<<<<<<<<<<
 *     cdef object ob = allocate(size, sizeof(MPI_Datatype), &array)
 *     for i in range(size):
 */
    __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_4 = 127;
    __Pyx_INCREF(__pyx_kp_u_expecting);
    __pyx_t_1 += 10;
    __Pyx_GIVEREF(__pyx_kp_u_expecting);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_expecting);
    __pyx_t_5 = __Pyx_PyInt_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4;
    __pyx_t_1 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u_items_got);
    __pyx_t_1 += 12;
    __Pyx_GIVEREF(__pyx_kp_u_items_got);
    PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_items_got);
    __pyx_t_7 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(10, 66, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_7, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 4, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(10, 66, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asarray.pxi":65
 * ):
 *     cdef MPI_Datatype *array = NULL
 *     if size != len(sequence):             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef object ob = allocate(size, sizeof(MPI_Datatype), &array)
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":67
 *     if size != len(sequence):
 *         raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef object ob = allocate(size, sizeof(MPI_Datatype), &array)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         array[i] = (<Datatype?>sequence[i]).ob_mpi
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_size, (sizeof(MPI_Datatype)), (&__pyx_v_array))); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_ob = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":68
 *         raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef object ob = allocate(size, sizeof(MPI_Datatype), &array)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         array[i] = (<Datatype?>sequence[i]).ob_mpi
 *     p[0] = array
 */
  __pyx_t_8 = __pyx_v_size;
  __pyx_t_9 = __pyx_t_8;
  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
    __pyx_v_i = __pyx_t_10;

    /* "src/mpi4py/MPI.src/asarray.pxi":69
 *     cdef object ob = allocate(size, sizeof(MPI_Datatype), &array)
 *     for i in range(size):
 *         array[i] = (<Datatype?>sequence[i]).ob_mpi             # <<<<<<<<<<<<<<
 *     p[0] = array
 *     return ob
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, MPI_Count, 1, __Pyx_PyInt_From_MPI_Count, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(10, 69, __pyx_L1_error)
    __pyx_t_11 = ((struct PyMPIDatatypeObject *)__pyx_t_3)->ob_mpi;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    (__pyx_v_array[__pyx_v_i]) = __pyx_t_11;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":70
 *     for i in range(size):
 *         array[i] = (<Datatype?>sequence[i]).ob_mpi
 *     p[0] = array             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "src/mpi4py/MPI.src/asarray.pxi":71
 *         array[i] = (<Datatype?>sequence[i]).ob_mpi
 *     p[0] = array
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_Info(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":61
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object asarray_Datatype(             # <<<<<<<<<<<<<<
 *     object sequence, MPI_Count size, MPI_Datatype **p,
 * ):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":73
 *     return ob
 * 
 * cdef inline object asarray_Info(             # <<<<<<<<<<<<<<
 *     object sequence, MPI_Count size, MPI_Info **p,
 * ):
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_Info(PyObject *__pyx_v_sequence, MPI_Count __pyx_v_size, MPI_Info **__pyx_v_p) {
  MPI_Info *__pyx_v_array;
  MPI_Info __pyx_v_info;
  PyObject *__pyx_v_ob = 0;
  MPI_Count __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  MPI_Info __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  MPI_Count __pyx_t_5;
  MPI_Count __pyx_t_6;
  MPI_Count __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_UCS4 __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  Py_ssize_t __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_Info", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":76
 *     object sequence, MPI_Count size, MPI_Info **p,
 * ):
 *     cdef MPI_Info *array = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Info info = MPI_INFO_NULL
 *     cdef object ob
 */
  __pyx_v_array = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":77
 * ):
 *     cdef MPI_Info *array = NULL
 *     cdef MPI_Info info = MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *     cdef object ob
 *     if sequence is None or isinstance(sequence, Info):
 */
  __pyx_v_info = MPI_INFO_NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":79
 *     cdef MPI_Info info = MPI_INFO_NULL
 *     cdef object ob
 *     if sequence is None or isinstance(sequence, Info):             # <<<<<<<<<<<<<<
 *         if sequence is not None:
 *             info = (<Info?>sequence).ob_mpi
 */
  __pyx_t_2 = (__pyx_v_sequence == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_sequence, __pyx_ptype_6mpi4py_3MPI_Info); 
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":80
 *     cdef object ob
 *     if sequence is None or isinstance(sequence, Info):
 *         if sequence is not None:             # <<<<<<<<<<<<<<
 *             info = (<Info?>sequence).ob_mpi
 *         ob = allocate(size, sizeof(MPI_Info), &array)
 */
    __pyx_t_1 = (__pyx_v_sequence != Py_None);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/asarray.pxi":81
 *     if sequence is None or isinstance(sequence, Info):
 *         if sequence is not None:
 *             info = (<Info?>sequence).ob_mpi             # <<<<<<<<<<<<<<
 *         ob = allocate(size, sizeof(MPI_Info), &array)
 *         for i in range(size):
 */
      if (!(likely(__Pyx_TypeTest(__pyx_v_sequence, __pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(10, 81, __pyx_L1_error)
      __pyx_t_3 = ((struct PyMPIInfoObject *)__pyx_v_sequence)->ob_mpi;
      __pyx_v_info = __pyx_t_3;

      /* "src/mpi4py/MPI.src/asarray.pxi":80
 *     cdef object ob
 *     if sequence is None or isinstance(sequence, Info):
 *         if sequence is not None:             # <<<<<<<<<<<<<<
 *             info = (<Info?>sequence).ob_mpi
 *         ob = allocate(size, sizeof(MPI_Info), &array)
 */
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":82
 *         if sequence is not None:
 *             info = (<Info?>sequence).ob_mpi
 *         ob = allocate(size, sizeof(MPI_Info), &array)             # <<<<<<<<<<<<<<
 *         for i in range(size):
 *             array[i] = info
 */
    __pyx_t_4 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_size, (sizeof(MPI_Info)), (&__pyx_v_array))); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_ob = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":83
 *             info = (<Info?>sequence).ob_mpi
 *         ob = allocate(size, sizeof(MPI_Info), &array)
 *         for i in range(size):             # <<<<<<<<<<<<<<
 *             array[i] = info
 *     else:
 */
    __pyx_t_5 = __pyx_v_size;
    __pyx_t_6 = __pyx_t_5;
    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
      __pyx_v_i = __pyx_t_7;

      /* "src/mpi4py/MPI.src/asarray.pxi":84
 *         ob = allocate(size, sizeof(MPI_Info), &array)
 *         for i in range(size):
 *             array[i] = info             # <<<<<<<<<<<<<<
 *     else:
 *         if size != len(sequence):
 */
      (__pyx_v_array[__pyx_v_i]) = __pyx_v_info;
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":79
 *     cdef MPI_Info info = MPI_INFO_NULL
 *     cdef object ob
 *     if sequence is None or isinstance(sequence, Info):             # <<<<<<<<<<<<<<
 *         if sequence is not None:
 *             info = (<Info?>sequence).ob_mpi
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":86
 *             array[i] = info
 *     else:
 *         if size != len(sequence):             # <<<<<<<<<<<<<<
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *         ob = allocate(size, sizeof(MPI_Datatype), &array)
 */
  /*else*/ {
    __pyx_t_8 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(10, 86, __pyx_L1_error)
    __pyx_t_1 = (__pyx_v_size != __pyx_t_8);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/asarray.pxi":87
 *     else:
 *         if size != len(sequence):
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")             # <<<<<<<<<<<<<<
 *         ob = allocate(size, sizeof(MPI_Datatype), &array)
 *         for i in range(size):
 */
      __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = 0;
      __pyx_t_9 = 127;
      __Pyx_INCREF(__pyx_kp_u_expecting);
      __pyx_t_8 += 10;
      __Pyx_GIVEREF(__pyx_kp_u_expecting);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_expecting);
      __pyx_t_10 = __Pyx_PyInt_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_10, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_9 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_9) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_9;
      __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_11);
      __pyx_t_11 = 0;
      __Pyx_INCREF(__pyx_kp_u_items_got);
      __pyx_t_8 += 12;
      __Pyx_GIVEREF(__pyx_kp_u_items_got);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_items_got);
      __pyx_t_12 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(10, 87, __pyx_L1_error)
      __pyx_t_11 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_12, 0, ' ', 'd'); if (unlikely(!__pyx_t_11)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_8 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_11);
      __pyx_t_11 = 0;
      __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(10, 87, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asarray.pxi":86
 *             array[i] = info
 *     else:
 *         if size != len(sequence):             # <<<<<<<<<<<<<<
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *         ob = allocate(size, sizeof(MPI_Datatype), &array)
 */
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":88
 *         if size != len(sequence):
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *         ob = allocate(size, sizeof(MPI_Datatype), &array)             # <<<<<<<<<<<<<<
 *         for i in range(size):
 *             array[i] = (<Info?>sequence[i]).ob_mpi
 */
    __pyx_t_4 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_size, (sizeof(MPI_Datatype)), (&__pyx_v_array))); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_ob = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":89
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *         ob = allocate(size, sizeof(MPI_Datatype), &array)
 *         for i in range(size):             # <<<<<<<<<<<<<<
 *             array[i] = (<Info?>sequence[i]).ob_mpi
 *     p[0] = array
 */
    __pyx_t_5 = __pyx_v_size;
    __pyx_t_6 = __pyx_t_5;
    for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
      __pyx_v_i = __pyx_t_7;

      /* "src/mpi4py/MPI.src/asarray.pxi":90
 *         ob = allocate(size, sizeof(MPI_Datatype), &array)
 *         for i in range(size):
 *             array[i] = (<Info?>sequence[i]).ob_mpi             # <<<<<<<<<<<<<<
 *     p[0] = array
 *     return ob
 */
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, MPI_Count, 1, __Pyx_PyInt_From_MPI_Count, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 90, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(10, 90, __pyx_L1_error)
      __pyx_t_3 = ((struct PyMPIInfoObject *)__pyx_t_4)->ob_mpi;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      (__pyx_v_array[__pyx_v_i]) = __pyx_t_3;
    }
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/asarray.pxi":91
 *         for i in range(size):
 *             array[i] = (<Info?>sequence[i]).ob_mpi
 *     p[0] = array             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "src/mpi4py/MPI.src/asarray.pxi":92
 *             array[i] = (<Info?>sequence[i]).ob_mpi
 *     p[0] = array
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":73
 *     return ob
 * 
 * cdef inline object asarray_Info(             # <<<<<<<<<<<<<<
 *     object sequence, MPI_Count size, MPI_Info **p,
 * ):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_Info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":96
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int is_string(object obj):             # <<<<<<<<<<<<<<
 *     return isinstance(obj, str) or isinstance(obj, bytes)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_string(PyObject *__pyx_v_obj) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/asarray.pxi":97
 * 
 * cdef inline int is_string(object obj):
 *     return isinstance(obj, str) or isinstance(obj, bytes)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asstring(object ob, char *s[]):
 */
  __pyx_t_2 = PyString_Check(__pyx_v_obj); 
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_2 = PyBytes_Check(__pyx_v_obj); 
  __pyx_t_1 = __pyx_t_2;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":96
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int is_string(object obj):             # <<<<<<<<<<<<<<
 *     return isinstance(obj, str) or isinstance(obj, bytes)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":99
 *     return isinstance(obj, str) or isinstance(obj, bytes)
 * 
 * cdef inline object asstring(object ob, char *s[]):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t n = 0
 *     cdef char *p = NULL, *q = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asstring(PyObject *__pyx_v_ob, char **__pyx_v_s) {
  Py_ssize_t __pyx_v_n;
  char *__pyx_v_p;
  char *__pyx_v_q;
  PyObject *__pyx_v_mem = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asstring", 0);
  __Pyx_INCREF(__pyx_v_ob);

  /* "src/mpi4py/MPI.src/asarray.pxi":100
 * 
 * cdef inline object asstring(object ob, char *s[]):
 *     cdef Py_ssize_t n = 0             # <<<<<<<<<<<<<<
 *     cdef char *p = NULL, *q = NULL
 *     ob = asmpistr(ob, &p)
 */
  __pyx_v_n = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":101
 * cdef inline object asstring(object ob, char *s[]):
 *     cdef Py_ssize_t n = 0
 *     cdef char *p = NULL, *q = NULL             # <<<<<<<<<<<<<<
 *     ob = asmpistr(ob, &p)
 *     PyBytes_AsStringAndSize(ob, &p, &n)
 */
  __pyx_v_p = NULL;
  __pyx_v_q = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":102
 *     cdef Py_ssize_t n = 0
 *     cdef char *p = NULL, *q = NULL
 *     ob = asmpistr(ob, &p)             # <<<<<<<<<<<<<<
 *     PyBytes_AsStringAndSize(ob, &p, &n)
 *     cdef object mem = allocate(n+1, sizeof(char), &q)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_ob, (&__pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_ob, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":103
 *     cdef char *p = NULL, *q = NULL
 *     ob = asmpistr(ob, &p)
 *     PyBytes_AsStringAndSize(ob, &p, &n)             # <<<<<<<<<<<<<<
 *     cdef object mem = allocate(n+1, sizeof(char), &q)
 *     <void>memcpy(q, p, <size_t>n)
 */
  __pyx_t_2 = PyBytes_AsStringAndSize(__pyx_v_ob, (&__pyx_v_p), (&__pyx_v_n)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(10, 103, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asarray.pxi":104
 *     ob = asmpistr(ob, &p)
 *     PyBytes_AsStringAndSize(ob, &p, &n)
 *     cdef object mem = allocate(n+1, sizeof(char), &q)             # <<<<<<<<<<<<<<
 *     <void>memcpy(q, p, <size_t>n)
 *     q[n] = 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n + 1), (sizeof(char)), (&__pyx_v_q))); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":105
 *     PyBytes_AsStringAndSize(ob, &p, &n)
 *     cdef object mem = allocate(n+1, sizeof(char), &q)
 *     <void>memcpy(q, p, <size_t>n)             # <<<<<<<<<<<<<<
 *     q[n] = 0
 *     s[0] = q
 */
  ((void)memcpy(__pyx_v_q, __pyx_v_p, ((size_t)__pyx_v_n)));

  /* "src/mpi4py/MPI.src/asarray.pxi":106
 *     cdef object mem = allocate(n+1, sizeof(char), &q)
 *     <void>memcpy(q, p, <size_t>n)
 *     q[n] = 0             # <<<<<<<<<<<<<<
 *     s[0] = q
 *     return mem
 */
  (__pyx_v_q[__pyx_v_n]) = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":107
 *     <void>memcpy(q, p, <size_t>n)
 *     q[n] = 0
 *     s[0] = q             # <<<<<<<<<<<<<<
 *     return mem
 * 
 */
  (__pyx_v_s[0]) = __pyx_v_q;

  /* "src/mpi4py/MPI.src/asarray.pxi":108
 *     q[n] = 0
 *     s[0] = q
 *     return mem             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_str(object sequence, char ***p):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mem);
  __pyx_r = __pyx_v_mem;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":99
 *     return isinstance(obj, str) or isinstance(obj, bytes)
 * 
 * cdef inline object asstring(object ob, char *s[]):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t n = 0
 *     cdef char *p = NULL, *q = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.asstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem);
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":110
 *     return mem
 * 
 * cdef inline object asarray_str(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *     cdef char** array = NULL
 *     cdef Py_ssize_t size = len(sequence)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_str(PyObject *__pyx_v_sequence, char ***__pyx_v_p) {
  char **__pyx_v_array;
  Py_ssize_t __pyx_v_size;
  PyObject *__pyx_v_ob = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_str", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":111
 * 
 * cdef inline object asarray_str(object sequence, char ***p):
 *     cdef char** array = NULL             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t size = len(sequence)
 *     cdef object ob = allocate(size+1, sizeof(char*), &array)
 */
  __pyx_v_array = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":112
 * cdef inline object asarray_str(object sequence, char ***p):
 *     cdef char** array = NULL
 *     cdef Py_ssize_t size = len(sequence)             # <<<<<<<<<<<<<<
 *     cdef object ob = allocate(size+1, sizeof(char*), &array)
 *     for i in range(size):
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(10, 112, __pyx_L1_error)
  __pyx_v_size = __pyx_t_1;

  /* "src/mpi4py/MPI.src/asarray.pxi":113
 *     cdef char** array = NULL
 *     cdef Py_ssize_t size = len(sequence)
 *     cdef object ob = allocate(size+1, sizeof(char*), &array)             # <<<<<<<<<<<<<<
 *     for i in range(size):
 *         sequence[i] = asstring(sequence[i], &array[i])
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate((__pyx_v_size + 1), (sizeof(char *)), (&__pyx_v_array))); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ob = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":114
 *     cdef Py_ssize_t size = len(sequence)
 *     cdef object ob = allocate(size+1, sizeof(char*), &array)
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         sequence[i] = asstring(sequence[i], &array[i])
 *     array[size] = NULL
 */
  __pyx_t_1 = __pyx_v_size;
  __pyx_t_3 = __pyx_t_1;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/asarray.pxi":115
 *     cdef object ob = allocate(size+1, sizeof(char*), &array)
 *     for i in range(size):
 *         sequence[i] = asstring(sequence[i], &array[i])             # <<<<<<<<<<<<<<
 *     array[size] = NULL
 *     p[0] = array
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_asstring(__pyx_t_2, (&(__pyx_v_array[__pyx_v_i]))); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely((__Pyx_SetItemInt(__pyx_v_sequence, __pyx_v_i, __pyx_t_5, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0))) __PYX_ERR(10, 115, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":116
 *     for i in range(size):
 *         sequence[i] = asstring(sequence[i], &array[i])
 *     array[size] = NULL             # <<<<<<<<<<<<<<
 *     p[0] = array
 *     return (sequence, ob)
 */
  (__pyx_v_array[__pyx_v_size]) = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":117
 *         sequence[i] = asstring(sequence[i], &array[i])
 *     array[size] = NULL
 *     p[0] = array             # <<<<<<<<<<<<<<
 *     return (sequence, ob)
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "src/mpi4py/MPI.src/asarray.pxi":118
 *     array[size] = NULL
 *     p[0] = array
 *     return (sequence, ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_sequence);
  __Pyx_GIVEREF(__pyx_v_sequence);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_sequence)) __PYX_ERR(10, 118, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_ob);
  __Pyx_GIVEREF(__pyx_v_ob);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ob)) __PYX_ERR(10, 118, __pyx_L1_error);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":110
 *     return mem
 * 
 * cdef inline object asarray_str(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *     cdef char** array = NULL
 *     cdef Py_ssize_t size = len(sequence)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":120
 *     return (sequence, ob)
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *     if sequence is None:
 *         p[0] = MPI_ARGV_NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argv(PyObject *__pyx_v_sequence, char ***__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_argv", 0);
  __Pyx_INCREF(__pyx_v_sequence);

  /* "src/mpi4py/MPI.src/asarray.pxi":121
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):
 *     if sequence is None:             # <<<<<<<<<<<<<<
 *         p[0] = MPI_ARGV_NULL
 *         return None
 */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":122
 * cdef inline object asarray_argv(object sequence, char ***p):
 *     if sequence is None:
 *         p[0] = MPI_ARGV_NULL             # <<<<<<<<<<<<<<
 *         return None
 *     if is_string(sequence):
 */
    (__pyx_v_p[0]) = MPI_ARGV_NULL;

    /* "src/mpi4py/MPI.src/asarray.pxi":123
 *     if sequence is None:
 *         p[0] = MPI_ARGV_NULL
 *         return None             # <<<<<<<<<<<<<<
 *     if is_string(sequence):
 *         sequence = [sequence]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asarray.pxi":121
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):
 *     if sequence is None:             # <<<<<<<<<<<<<<
 *         p[0] = MPI_ARGV_NULL
 *         return None
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":124
 *         p[0] = MPI_ARGV_NULL
 *         return None
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         sequence = [sequence]
 *     else:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_string(__pyx_v_sequence); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(10, 124, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":125
 *         return None
 *     if is_string(sequence):
 *         sequence = [sequence]             # <<<<<<<<<<<<<<
 *     else:
 *         sequence = list(sequence)
 */
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_sequence);
    __Pyx_GIVEREF(__pyx_v_sequence);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_sequence)) __PYX_ERR(10, 125, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":124
 *         p[0] = MPI_ARGV_NULL
 *         return None
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         sequence = [sequence]
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":127
 *         sequence = [sequence]
 *     else:
 *         sequence = list(sequence)             # <<<<<<<<<<<<<<
 *     return asarray_str(sequence, p)
 * 
 */
  /*else*/ {
    __pyx_t_3 = PySequence_List(__pyx_v_sequence); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/asarray.pxi":128
 *     else:
 *         sequence = list(sequence)
 *     return asarray_str(sequence, p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_str(__pyx_v_sequence, __pyx_v_p); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":120
 *     return (sequence, ob)
 * 
 * cdef inline object asarray_argv(object sequence, char ***p):             # <<<<<<<<<<<<<<
 *     if sequence is None:
 *         p[0] = MPI_ARGV_NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_argv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sequence);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":130
 *     return asarray_str(sequence, p)
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):             # <<<<<<<<<<<<<<
 *     if is_string(sequence):
 *         raise ValueError("expecting a sequence of strings")
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_cmds(PyObject *__pyx_v_sequence, int *__pyx_v_count, char ***__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_cmds", 0);
  __Pyx_INCREF(__pyx_v_sequence);

  /* "src/mpi4py/MPI.src/asarray.pxi":131
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         raise ValueError("expecting a sequence of strings")
 *     sequence = list(sequence)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_string(__pyx_v_sequence); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(10, 131, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/asarray.pxi":132
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 *     if is_string(sequence):
 *         raise ValueError("expecting a sequence of strings")             # <<<<<<<<<<<<<<
 *     sequence = list(sequence)
 *     count[0] = <int>len(sequence)
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(10, 132, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/asarray.pxi":131
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         raise ValueError("expecting a sequence of strings")
 *     sequence = list(sequence)
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":133
 *     if is_string(sequence):
 *         raise ValueError("expecting a sequence of strings")
 *     sequence = list(sequence)             # <<<<<<<<<<<<<<
 *     count[0] = <int>len(sequence)
 *     return asarray_str(sequence, p)
 */
  __pyx_t_3 = PySequence_List(__pyx_v_sequence); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":134
 *         raise ValueError("expecting a sequence of strings")
 *     sequence = list(sequence)
 *     count[0] = <int>len(sequence)             # <<<<<<<<<<<<<<
 *     return asarray_str(sequence, p)
 * 
 */
  __pyx_t_4 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(10, 134, __pyx_L1_error)
  (__pyx_v_count[0]) = ((int)__pyx_t_4);

  /* "src/mpi4py/MPI.src/asarray.pxi":135
 *     sequence = list(sequence)
 *     count[0] = <int>len(sequence)
 *     return asarray_str(sequence, p)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_argvs(object sequence, int size, char ****p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_str(__pyx_v_sequence, __pyx_v_p); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":130
 *     return asarray_str(sequence, p)
 * 
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):             # <<<<<<<<<<<<<<
 *     if is_string(sequence):
 *         raise ValueError("expecting a sequence of strings")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_cmds", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sequence);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":137
 *     return asarray_str(sequence, p)
 * 
 * cdef inline object asarray_argvs(object sequence, int size, char ****p):             # <<<<<<<<<<<<<<
 *     if sequence is None:
 *         p[0] = MPI_ARGVS_NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_argvs(PyObject *__pyx_v_sequence, int __pyx_v_size, char ****__pyx_v_p) {
  char ***__pyx_v_array;
  PyObject *__pyx_v_ob = 0;
  PyObject *__pyx_v_argv = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_UCS4 __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_argvs", 0);
  __Pyx_INCREF(__pyx_v_sequence);

  /* "src/mpi4py/MPI.src/asarray.pxi":138
 * 
 * cdef inline object asarray_argvs(object sequence, int size, char ****p):
 *     if sequence is None:             # <<<<<<<<<<<<<<
 *         p[0] = MPI_ARGVS_NULL
 *         return None
 */
  __pyx_t_1 = (__pyx_v_sequence == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":139
 * cdef inline object asarray_argvs(object sequence, int size, char ****p):
 *     if sequence is None:
 *         p[0] = MPI_ARGVS_NULL             # <<<<<<<<<<<<<<
 *         return None
 *     if is_string(sequence):
 */
    (__pyx_v_p[0]) = MPI_ARGVS_NULL;

    /* "src/mpi4py/MPI.src/asarray.pxi":140
 *     if sequence is None:
 *         p[0] = MPI_ARGVS_NULL
 *         return None             # <<<<<<<<<<<<<<
 *     if is_string(sequence):
 *         sequence = [sequence] * size
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/asarray.pxi":138
 * 
 * cdef inline object asarray_argvs(object sequence, int size, char ****p):
 *     if sequence is None:             # <<<<<<<<<<<<<<
 *         p[0] = MPI_ARGVS_NULL
 *         return None
 */
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":141
 *         p[0] = MPI_ARGVS_NULL
 *         return None
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         sequence = [sequence] * size
 *     else:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_string(__pyx_v_sequence); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(10, 141, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":142
 *         return None
 *     if is_string(sequence):
 *         sequence = [sequence] * size             # <<<<<<<<<<<<<<
 *     else:
 *         sequence = list(sequence)
 */
    __pyx_t_3 = PyList_New(1 * ((__pyx_v_size<0) ? 0:__pyx_v_size)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    { Py_ssize_t __pyx_temp;
      for (__pyx_temp=0; __pyx_temp < __pyx_v_size; __pyx_temp++) {
        __Pyx_INCREF(__pyx_v_sequence);
        __Pyx_GIVEREF(__pyx_v_sequence);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_3, __pyx_temp, __pyx_v_sequence)) __PYX_ERR(10, 142, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":141
 *         p[0] = MPI_ARGVS_NULL
 *         return None
 *     if is_string(sequence):             # <<<<<<<<<<<<<<
 *         sequence = [sequence] * size
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":144
 *         sequence = [sequence] * size
 *     else:
 *         sequence = list(sequence)             # <<<<<<<<<<<<<<
 *         if size != len(sequence):
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 */
  /*else*/ {
    __pyx_t_3 = PySequence_List(__pyx_v_sequence); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_sequence, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":145
 *     else:
 *         sequence = list(sequence)
 *         if size != len(sequence):             # <<<<<<<<<<<<<<
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef char*** array = NULL
 */
    __pyx_t_4 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(10, 145, __pyx_L1_error)
    __pyx_t_1 = (__pyx_v_size != __pyx_t_4);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/asarray.pxi":146
 *         sequence = list(sequence)
 *         if size != len(sequence):
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")             # <<<<<<<<<<<<<<
 *     cdef char*** array = NULL
 *     cdef object ob = allocate(size+1, sizeof(char**), &array)
 */
      __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 0;
      __pyx_t_5 = 127;
      __Pyx_INCREF(__pyx_kp_u_expecting);
      __pyx_t_4 += 10;
      __Pyx_GIVEREF(__pyx_kp_u_expecting);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_expecting);
      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_size, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_kp_u_items_got);
      __pyx_t_4 += 12;
      __Pyx_GIVEREF(__pyx_kp_u_items_got);
      PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u_items_got);
      __pyx_t_7 = PyObject_Length(__pyx_v_sequence); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(10, 146, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_7, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 4, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(10, 146, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/asarray.pxi":145
 *     else:
 *         sequence = list(sequence)
 *         if size != len(sequence):             # <<<<<<<<<<<<<<
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef char*** array = NULL
 */
    }
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/asarray.pxi":147
 *         if size != len(sequence):
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef char*** array = NULL             # <<<<<<<<<<<<<<
 *     cdef object ob = allocate(size+1, sizeof(char**), &array)
 *     cdef object argv
 */
  __pyx_v_array = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":148
 *             raise ValueError(f"expecting {size} items, got {len(sequence)}")
 *     cdef char*** array = NULL
 *     cdef object ob = allocate(size+1, sizeof(char**), &array)             # <<<<<<<<<<<<<<
 *     cdef object argv
 *     for i in range(size):
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate((__pyx_v_size + 1), (sizeof(char **)), (&__pyx_v_array))); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_ob = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/asarray.pxi":150
 *     cdef object ob = allocate(size+1, sizeof(char**), &array)
 *     cdef object argv
 *     for i in range(size):             # <<<<<<<<<<<<<<
 *         argv = sequence[i]
 *         if argv is None: argv = []
 */
  __pyx_t_2 = __pyx_v_size;
  __pyx_t_8 = __pyx_t_2;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
    __pyx_v_i = __pyx_t_9;

    /* "src/mpi4py/MPI.src/asarray.pxi":151
 *     cdef object argv
 *     for i in range(size):
 *         argv = sequence[i]             # <<<<<<<<<<<<<<
 *         if argv is None: argv = []
 *         sequence[i] = asarray_argv(argv, &array[i])
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_sequence, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_argv, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":152
 *     for i in range(size):
 *         argv = sequence[i]
 *         if argv is None: argv = []             # <<<<<<<<<<<<<<
 *         sequence[i] = asarray_argv(argv, &array[i])
 *     array[size] = NULL
 */
    __pyx_t_1 = (__pyx_v_argv == Py_None);
    if (__pyx_t_1) {
      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_argv, __pyx_t_3);
      __pyx_t_3 = 0;
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":153
 *         argv = sequence[i]
 *         if argv is None: argv = []
 *         sequence[i] = asarray_argv(argv, &array[i])             # <<<<<<<<<<<<<<
 *     array[size] = NULL
 *     p[0] = array
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_argv(__pyx_v_argv, (&(__pyx_v_array[__pyx_v_i]))); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely((__Pyx_SetItemInt(__pyx_v_sequence, __pyx_v_i, __pyx_t_3, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0))) __PYX_ERR(10, 153, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":154
 *         if argv is None: argv = []
 *         sequence[i] = asarray_argv(argv, &array[i])
 *     array[size] = NULL             # <<<<<<<<<<<<<<
 *     p[0] = array
 *     return (sequence, ob)
 */
  (__pyx_v_array[__pyx_v_size]) = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":155
 *         sequence[i] = asarray_argv(argv, &array[i])
 *     array[size] = NULL
 *     p[0] = array             # <<<<<<<<<<<<<<
 *     return (sequence, ob)
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "src/mpi4py/MPI.src/asarray.pxi":156
 *     array[size] = NULL
 *     p[0] = array
 *     return (sequence, ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object asarray_nprocs(object sequence, int size, int **p):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_sequence);
  __Pyx_GIVEREF(__pyx_v_sequence);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_sequence)) __PYX_ERR(10, 156, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_ob);
  __Pyx_GIVEREF(__pyx_v_ob);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_ob)) __PYX_ERR(10, 156, __pyx_L1_error);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":137
 *     return asarray_str(sequence, p)
 * 
 * cdef inline object asarray_argvs(object sequence, int size, char ****p):             # <<<<<<<<<<<<<<
 *     if sequence is None:
 *         p[0] = MPI_ARGVS_NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_argvs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XDECREF(__pyx_v_argv);
  __Pyx_XDECREF(__pyx_v_sequence);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/asarray.pxi":158
 *     return (sequence, ob)
 * 
 * cdef inline object asarray_nprocs(object sequence, int size, int **p):             # <<<<<<<<<<<<<<
 *     cdef object ob
 *     cdef int *array = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_nprocs(PyObject *__pyx_v_sequence, int __pyx_v_size, int **__pyx_v_p) {
  PyObject *__pyx_v_ob = 0;
  int *__pyx_v_array;
  int __pyx_v_value;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_nprocs", 1);

  /* "src/mpi4py/MPI.src/asarray.pxi":160
 * cdef inline object asarray_nprocs(object sequence, int size, int **p):
 *     cdef object ob
 *     cdef int *array = NULL             # <<<<<<<<<<<<<<
 *     cdef int value = 1
 *     if sequence is None or is_integral(sequence):
 */
  __pyx_v_array = NULL;

  /* "src/mpi4py/MPI.src/asarray.pxi":161
 *     cdef object ob
 *     cdef int *array = NULL
 *     cdef int value = 1             # <<<<<<<<<<<<<<
 *     if sequence is None or is_integral(sequence):
 *         if sequence is not None:
 */
  __pyx_v_value = 1;

  /* "src/mpi4py/MPI.src/asarray.pxi":162
 *     cdef int *array = NULL
 *     cdef int value = 1
 *     if sequence is None or is_integral(sequence):             # <<<<<<<<<<<<<<
 *         if sequence is not None:
 *             value = sequence
 */
  __pyx_t_2 = (__pyx_v_sequence == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_sequence) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/asarray.pxi":163
 *     cdef int value = 1
 *     if sequence is None or is_integral(sequence):
 *         if sequence is not None:             # <<<<<<<<<<<<<<
 *             value = sequence
 *         ob = newarray(size, &array)
 */
    __pyx_t_1 = (__pyx_v_sequence != Py_None);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/asarray.pxi":164
 *     if sequence is None or is_integral(sequence):
 *         if sequence is not None:
 *             value = sequence             # <<<<<<<<<<<<<<
 *         ob = newarray(size, &array)
 *         for i in range(size):
 */
      __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_sequence); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 164, __pyx_L1_error)
      __pyx_v_value = __pyx_t_3;

      /* "src/mpi4py/MPI.src/asarray.pxi":163
 *     cdef int value = 1
 *     if sequence is None or is_integral(sequence):
 *         if sequence is not None:             # <<<<<<<<<<<<<<
 *             value = sequence
 *         ob = newarray(size, &array)
 */
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":165
 *         if sequence is not None:
 *             value = sequence
 *         ob = newarray(size, &array)             # <<<<<<<<<<<<<<
 *         for i in range(size):
 *             array[i] = value
 */
    __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_array)); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_ob = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/asarray.pxi":166
 *             value = sequence
 *         ob = newarray(size, &array)
 *         for i in range(size):             # <<<<<<<<<<<<<<
 *             array[i] = value
 *     else:
 */
    __pyx_t_3 = __pyx_v_size;
    __pyx_t_5 = __pyx_t_3;
    for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
      __pyx_v_i = __pyx_t_6;

      /* "src/mpi4py/MPI.src/asarray.pxi":167
 *         ob = newarray(size, &array)
 *         for i in range(size):
 *             array[i] = value             # <<<<<<<<<<<<<<
 *     else:
 *         ob = chkarray(sequence, size, &array)
 */
      (__pyx_v_array[__pyx_v_i]) = __pyx_v_value;
    }

    /* "src/mpi4py/MPI.src/asarray.pxi":162
 *     cdef int *array = NULL
 *     cdef int value = 1
 *     if sequence is None or is_integral(sequence):             # <<<<<<<<<<<<<<
 *         if sequence is not None:
 *             value = sequence
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/asarray.pxi":169
 *             array[i] = value
 *     else:
 *         ob = chkarray(sequence, size, &array)             # <<<<<<<<<<<<<<
 *     p[0] = array
 *     return ob
 */
  /*else*/ {
    __pyx_t_4 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_sequence, __pyx_v_size, (&__pyx_v_array)); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_ob = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/asarray.pxi":170
 *     else:
 *         ob = chkarray(sequence, size, &array)
 *     p[0] = array             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  (__pyx_v_p[0]) = __pyx_v_array;

  /* "src/mpi4py/MPI.src/asarray.pxi":171
 *         ob = chkarray(sequence, size, &array)
 *     p[0] = array
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob);
  __pyx_r = __pyx_v_ob;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/asarray.pxi":158
 *     return (sequence, ob)
 * 
 * cdef inline object asarray_nprocs(object sequence, int size, int **p):             # <<<<<<<<<<<<<<
 *     cdef object ob
 *     cdef int *array = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_nprocs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":19
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object New(type cls):             # <<<<<<<<<<<<<<
 *     return cls.__new__(cls)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_New(PyTypeObject *__pyx_v_cls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("New", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":20
 * 
 * cdef inline object New(type cls):
 *     return cls.__new__(cls)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(((PyObject *)__pyx_v_cls) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object.__new__(X): X is not a type object (NoneType)");
    __PYX_ERR(1, 20, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_tp_new(((PyObject *)__pyx_v_cls), __pyx_empty_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":19
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object New(type cls):             # <<<<<<<<<<<<<<
 *     return cls.__new__(cls)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

static CYTHON_INLINE MPI_Datatype __pyx_fuse_0__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Datatype __pyx_v__) {
  MPI_Datatype __pyx_v_null;
  MPI_Datatype __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":39
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Request    : null = MPI_REQUEST_NULL
 *     if handle_t is MPI_Message    : null = MPI_MESSAGE_NULL
 */
  __pyx_v_null = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Request __pyx_fuse_1__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Request __pyx_v__) {
  MPI_Request __pyx_v_null;
  MPI_Request __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":40
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 *     if handle_t is MPI_Request    : null = MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Message    : null = MPI_MESSAGE_NULL
 *     if handle_t is MPI_Op         : null = MPI_OP_NULL
 */
  __pyx_v_null = MPI_REQUEST_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Message __pyx_fuse_2__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Message __pyx_v__) {
  MPI_Message __pyx_v_null;
  MPI_Message __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":41
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 *     if handle_t is MPI_Request    : null = MPI_REQUEST_NULL
 *     if handle_t is MPI_Message    : null = MPI_MESSAGE_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Op         : null = MPI_OP_NULL
 *     if handle_t is MPI_Group      : null = MPI_GROUP_NULL
 */
  __pyx_v_null = MPI_MESSAGE_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Op __pyx_fuse_3__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Op __pyx_v__) {
  MPI_Op __pyx_v_null;
  MPI_Op __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":42
 *     if handle_t is MPI_Request    : null = MPI_REQUEST_NULL
 *     if handle_t is MPI_Message    : null = MPI_MESSAGE_NULL
 *     if handle_t is MPI_Op         : null = MPI_OP_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Group      : null = MPI_GROUP_NULL
 *     if handle_t is MPI_Info       : null = MPI_INFO_NULL
 */
  __pyx_v_null = MPI_OP_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Group __pyx_fuse_4__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Group __pyx_v__) {
  MPI_Group __pyx_v_null;
  MPI_Group __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":43
 *     if handle_t is MPI_Message    : null = MPI_MESSAGE_NULL
 *     if handle_t is MPI_Op         : null = MPI_OP_NULL
 *     if handle_t is MPI_Group      : null = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Info       : null = MPI_INFO_NULL
 *     if handle_t is MPI_Errhandler : null = MPI_ERRHANDLER_NULL
 */
  __pyx_v_null = MPI_GROUP_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Info __pyx_fuse_5__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Info __pyx_v__) {
  MPI_Info __pyx_v_null;
  MPI_Info __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":44
 *     if handle_t is MPI_Op         : null = MPI_OP_NULL
 *     if handle_t is MPI_Group      : null = MPI_GROUP_NULL
 *     if handle_t is MPI_Info       : null = MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Errhandler : null = MPI_ERRHANDLER_NULL
 *     if handle_t is MPI_Session    : null = MPI_SESSION_NULL
 */
  __pyx_v_null = MPI_INFO_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Errhandler __pyx_fuse_6__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Errhandler __pyx_v__) {
  MPI_Errhandler __pyx_v_null;
  MPI_Errhandler __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":45
 *     if handle_t is MPI_Group      : null = MPI_GROUP_NULL
 *     if handle_t is MPI_Info       : null = MPI_INFO_NULL
 *     if handle_t is MPI_Errhandler : null = MPI_ERRHANDLER_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Session    : null = MPI_SESSION_NULL
 *     if handle_t is MPI_Comm       : null = MPI_COMM_NULL
 */
  __pyx_v_null = MPI_ERRHANDLER_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Session __pyx_fuse_7__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Session __pyx_v__) {
  MPI_Session __pyx_v_null;
  MPI_Session __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":46
 *     if handle_t is MPI_Info       : null = MPI_INFO_NULL
 *     if handle_t is MPI_Errhandler : null = MPI_ERRHANDLER_NULL
 *     if handle_t is MPI_Session    : null = MPI_SESSION_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Comm       : null = MPI_COMM_NULL
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 */
  __pyx_v_null = MPI_SESSION_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Comm __pyx_fuse_8__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Comm __pyx_v__) {
  MPI_Comm __pyx_v_null;
  MPI_Comm __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":47
 *     if handle_t is MPI_Errhandler : null = MPI_ERRHANDLER_NULL
 *     if handle_t is MPI_Session    : null = MPI_SESSION_NULL
 *     if handle_t is MPI_Comm       : null = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 */
  __pyx_v_null = MPI_COMM_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_Win __pyx_fuse_9__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_Win __pyx_v__) {
  MPI_Win __pyx_v_null;
  MPI_Win __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":48
 *     if handle_t is MPI_Session    : null = MPI_SESSION_NULL
 *     if handle_t is MPI_Comm       : null = MPI_COMM_NULL
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null
 */
  __pyx_v_null = MPI_WIN_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE MPI_File __pyx_fuse_10__pyx_f_6mpi4py_3MPI_mpinull(CYTHON_UNUSED MPI_File __pyx_v__) {
  MPI_File __pyx_v_null;
  MPI_File __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":49
 *     if handle_t is MPI_Comm       : null = MPI_COMM_NULL
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL             # <<<<<<<<<<<<<<
 *     return null
 * 
 */
  __pyx_v_null = MPI_FILE_NULL;

  /* "src/mpi4py/MPI.src/objmodel.pxi":50
 *     if handle_t is MPI_Win        : null = MPI_WIN_NULL
 *     if handle_t is MPI_File       : null = MPI_FILE_NULL
 *     return null             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_null;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":37
 *     MPI_File
 * 
 * cdef inline handle_t mpinull(handle_t _) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef handle_t null
 *     if handle_t is MPI_Datatype   : null = MPI_DATATYPE_NULL
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":52
 *     return null
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_DATATYPE_NULL           : return 1
 *     if arg == MPI_PACKED                  : return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_named_Datatype(MPI_Datatype __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":53
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 *     if arg == MPI_DATATYPE_NULL           : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_PACKED                  : return 1
 *     if arg == MPI_BYTE                    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":54
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:
 *     if arg == MPI_DATATYPE_NULL           : return 1
 *     if arg == MPI_PACKED                  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_BYTE                    : return 1
 *     if arg == MPI_AINT                    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_PACKED);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":55
 *     if arg == MPI_DATATYPE_NULL           : return 1
 *     if arg == MPI_PACKED                  : return 1
 *     if arg == MPI_BYTE                    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_AINT                    : return 1
 *     if arg == MPI_OFFSET                  : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_BYTE);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":56
 *     if arg == MPI_PACKED                  : return 1
 *     if arg == MPI_BYTE                    : return 1
 *     if arg == MPI_AINT                    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_OFFSET                  : return 1
 *     if arg == MPI_COUNT                   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_AINT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":57
 *     if arg == MPI_BYTE                    : return 1
 *     if arg == MPI_AINT                    : return 1
 *     if arg == MPI_OFFSET                  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COUNT                   : return 1
 *     if arg == MPI_CHAR                    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_OFFSET);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":58
 *     if arg == MPI_AINT                    : return 1
 *     if arg == MPI_OFFSET                  : return 1
 *     if arg == MPI_COUNT                   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_CHAR                    : return 1
 *     if arg == MPI_WCHAR                   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COUNT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":59
 *     if arg == MPI_OFFSET                  : return 1
 *     if arg == MPI_COUNT                   : return 1
 *     if arg == MPI_CHAR                    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_WCHAR                   : return 1
 *     if arg == MPI_SIGNED_CHAR             : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_CHAR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":60
 *     if arg == MPI_COUNT                   : return 1
 *     if arg == MPI_CHAR                    : return 1
 *     if arg == MPI_WCHAR                   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_SIGNED_CHAR             : return 1
 *     if arg == MPI_SHORT                   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_WCHAR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":61
 *     if arg == MPI_CHAR                    : return 1
 *     if arg == MPI_WCHAR                   : return 1
 *     if arg == MPI_SIGNED_CHAR             : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_SHORT                   : return 1
 *     if arg == MPI_INT                     : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_SIGNED_CHAR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":62
 *     if arg == MPI_WCHAR                   : return 1
 *     if arg == MPI_SIGNED_CHAR             : return 1
 *     if arg == MPI_SHORT                   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INT                     : return 1
 *     if arg == MPI_LONG                    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_SHORT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":63
 *     if arg == MPI_SIGNED_CHAR             : return 1
 *     if arg == MPI_SHORT                   : return 1
 *     if arg == MPI_INT                     : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LONG                    : return 1
 *     if arg == MPI_LONG_LONG               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":64
 *     if arg == MPI_SHORT                   : return 1
 *     if arg == MPI_INT                     : return 1
 *     if arg == MPI_LONG                    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LONG_LONG               : return 1
 *     if arg == MPI_UNSIGNED_CHAR           : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LONG);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":65
 *     if arg == MPI_INT                     : return 1
 *     if arg == MPI_LONG                    : return 1
 *     if arg == MPI_LONG_LONG               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UNSIGNED_CHAR           : return 1
 *     if arg == MPI_UNSIGNED_SHORT          : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LONG_LONG);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":66
 *     if arg == MPI_LONG                    : return 1
 *     if arg == MPI_LONG_LONG               : return 1
 *     if arg == MPI_UNSIGNED_CHAR           : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UNSIGNED_SHORT          : return 1
 *     if arg == MPI_UNSIGNED                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UNSIGNED_CHAR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":67
 *     if arg == MPI_LONG_LONG               : return 1
 *     if arg == MPI_UNSIGNED_CHAR           : return 1
 *     if arg == MPI_UNSIGNED_SHORT          : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UNSIGNED                : return 1
 *     if arg == MPI_UNSIGNED_LONG           : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UNSIGNED_SHORT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":68
 *     if arg == MPI_UNSIGNED_CHAR           : return 1
 *     if arg == MPI_UNSIGNED_SHORT          : return 1
 *     if arg == MPI_UNSIGNED                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UNSIGNED_LONG           : return 1
 *     if arg == MPI_UNSIGNED_LONG_LONG      : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UNSIGNED);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":69
 *     if arg == MPI_UNSIGNED_SHORT          : return 1
 *     if arg == MPI_UNSIGNED                : return 1
 *     if arg == MPI_UNSIGNED_LONG           : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UNSIGNED_LONG_LONG      : return 1
 *     if arg == MPI_FLOAT                   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UNSIGNED_LONG);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":70
 *     if arg == MPI_UNSIGNED                : return 1
 *     if arg == MPI_UNSIGNED_LONG           : return 1
 *     if arg == MPI_UNSIGNED_LONG_LONG      : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_FLOAT                   : return 1
 *     if arg == MPI_DOUBLE                  : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UNSIGNED_LONG_LONG);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":71
 *     if arg == MPI_UNSIGNED_LONG           : return 1
 *     if arg == MPI_UNSIGNED_LONG_LONG      : return 1
 *     if arg == MPI_FLOAT                   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_DOUBLE                  : return 1
 *     if arg == MPI_LONG_DOUBLE             : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_FLOAT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":72
 *     if arg == MPI_UNSIGNED_LONG_LONG      : return 1
 *     if arg == MPI_FLOAT                   : return 1
 *     if arg == MPI_DOUBLE                  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LONG_DOUBLE             : return 1
 *     if arg == MPI_C_BOOL                  : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_DOUBLE);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":73
 *     if arg == MPI_FLOAT                   : return 1
 *     if arg == MPI_DOUBLE                  : return 1
 *     if arg == MPI_LONG_DOUBLE             : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_C_BOOL                  : return 1
 *     if arg == MPI_INT8_T                  : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LONG_DOUBLE);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":74
 *     if arg == MPI_DOUBLE                  : return 1
 *     if arg == MPI_LONG_DOUBLE             : return 1
 *     if arg == MPI_C_BOOL                  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INT8_T                  : return 1
 *     if arg == MPI_INT16_T                 : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_C_BOOL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":75
 *     if arg == MPI_LONG_DOUBLE             : return 1
 *     if arg == MPI_C_BOOL                  : return 1
 *     if arg == MPI_INT8_T                  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INT16_T                 : return 1
 *     if arg == MPI_INT32_T                 : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INT8_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":76
 *     if arg == MPI_C_BOOL                  : return 1
 *     if arg == MPI_INT8_T                  : return 1
 *     if arg == MPI_INT16_T                 : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INT32_T                 : return 1
 *     if arg == MPI_INT64_T                 : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INT16_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":77
 *     if arg == MPI_INT8_T                  : return 1
 *     if arg == MPI_INT16_T                 : return 1
 *     if arg == MPI_INT32_T                 : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INT64_T                 : return 1
 *     if arg == MPI_UINT8_T                 : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INT32_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":78
 *     if arg == MPI_INT16_T                 : return 1
 *     if arg == MPI_INT32_T                 : return 1
 *     if arg == MPI_INT64_T                 : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UINT8_T                 : return 1
 *     if arg == MPI_UINT16_T                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INT64_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":79
 *     if arg == MPI_INT32_T                 : return 1
 *     if arg == MPI_INT64_T                 : return 1
 *     if arg == MPI_UINT8_T                 : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UINT16_T                : return 1
 *     if arg == MPI_UINT32_T                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UINT8_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":80
 *     if arg == MPI_INT64_T                 : return 1
 *     if arg == MPI_UINT8_T                 : return 1
 *     if arg == MPI_UINT16_T                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UINT32_T                : return 1
 *     if arg == MPI_UINT64_T                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UINT16_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":81
 *     if arg == MPI_UINT8_T                 : return 1
 *     if arg == MPI_UINT16_T                : return 1
 *     if arg == MPI_UINT32_T                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_UINT64_T                : return 1
 *     if arg == MPI_C_COMPLEX               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UINT32_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":82
 *     if arg == MPI_UINT16_T                : return 1
 *     if arg == MPI_UINT32_T                : return 1
 *     if arg == MPI_UINT64_T                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_C_COMPLEX               : return 1
 *     if arg == MPI_C_FLOAT_COMPLEX         : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_UINT64_T);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":83
 *     if arg == MPI_UINT32_T                : return 1
 *     if arg == MPI_UINT64_T                : return 1
 *     if arg == MPI_C_COMPLEX               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_C_FLOAT_COMPLEX         : return 1
 *     if arg == MPI_C_DOUBLE_COMPLEX        : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_C_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":84
 *     if arg == MPI_UINT64_T                : return 1
 *     if arg == MPI_C_COMPLEX               : return 1
 *     if arg == MPI_C_FLOAT_COMPLEX         : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_C_DOUBLE_COMPLEX        : return 1
 *     if arg == MPI_C_LONG_DOUBLE_COMPLEX   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_C_FLOAT_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":85
 *     if arg == MPI_C_COMPLEX               : return 1
 *     if arg == MPI_C_FLOAT_COMPLEX         : return 1
 *     if arg == MPI_C_DOUBLE_COMPLEX        : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_C_LONG_DOUBLE_COMPLEX   : return 1
 *     if arg == MPI_CXX_BOOL                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_C_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":86
 *     if arg == MPI_C_FLOAT_COMPLEX         : return 1
 *     if arg == MPI_C_DOUBLE_COMPLEX        : return 1
 *     if arg == MPI_C_LONG_DOUBLE_COMPLEX   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_CXX_BOOL                : return 1
 *     if arg == MPI_CXX_FLOAT_COMPLEX       : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_C_LONG_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":87
 *     if arg == MPI_C_DOUBLE_COMPLEX        : return 1
 *     if arg == MPI_C_LONG_DOUBLE_COMPLEX   : return 1
 *     if arg == MPI_CXX_BOOL                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_CXX_FLOAT_COMPLEX       : return 1
 *     if arg == MPI_CXX_DOUBLE_COMPLEX      : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_CXX_BOOL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":88
 *     if arg == MPI_C_LONG_DOUBLE_COMPLEX   : return 1
 *     if arg == MPI_CXX_BOOL                : return 1
 *     if arg == MPI_CXX_FLOAT_COMPLEX       : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_CXX_DOUBLE_COMPLEX      : return 1
 *     if arg == MPI_CXX_LONG_DOUBLE_COMPLEX : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_CXX_FLOAT_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":89
 *     if arg == MPI_CXX_BOOL                : return 1
 *     if arg == MPI_CXX_FLOAT_COMPLEX       : return 1
 *     if arg == MPI_CXX_DOUBLE_COMPLEX      : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_CXX_LONG_DOUBLE_COMPLEX : return 1
 *     if arg == MPI_SHORT_INT               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_CXX_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":90
 *     if arg == MPI_CXX_FLOAT_COMPLEX       : return 1
 *     if arg == MPI_CXX_DOUBLE_COMPLEX      : return 1
 *     if arg == MPI_CXX_LONG_DOUBLE_COMPLEX : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_SHORT_INT               : return 1
 *     if arg == MPI_2INT                    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_CXX_LONG_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":91
 *     if arg == MPI_CXX_DOUBLE_COMPLEX      : return 1
 *     if arg == MPI_CXX_LONG_DOUBLE_COMPLEX : return 1
 *     if arg == MPI_SHORT_INT               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_2INT                    : return 1
 *     if arg == MPI_LONG_INT                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_SHORT_INT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":92
 *     if arg == MPI_CXX_LONG_DOUBLE_COMPLEX : return 1
 *     if arg == MPI_SHORT_INT               : return 1
 *     if arg == MPI_2INT                    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LONG_INT                : return 1
 *     if arg == MPI_FLOAT_INT               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_2INT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":93
 *     if arg == MPI_SHORT_INT               : return 1
 *     if arg == MPI_2INT                    : return 1
 *     if arg == MPI_LONG_INT                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_FLOAT_INT               : return 1
 *     if arg == MPI_DOUBLE_INT              : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LONG_INT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":94
 *     if arg == MPI_2INT                    : return 1
 *     if arg == MPI_LONG_INT                : return 1
 *     if arg == MPI_FLOAT_INT               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_DOUBLE_INT              : return 1
 *     if arg == MPI_LONG_DOUBLE_INT         : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_FLOAT_INT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":95
 *     if arg == MPI_LONG_INT                : return 1
 *     if arg == MPI_FLOAT_INT               : return 1
 *     if arg == MPI_DOUBLE_INT              : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LONG_DOUBLE_INT         : return 1
 *     if arg == MPI_CHARACTER               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_DOUBLE_INT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":96
 *     if arg == MPI_FLOAT_INT               : return 1
 *     if arg == MPI_DOUBLE_INT              : return 1
 *     if arg == MPI_LONG_DOUBLE_INT         : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_CHARACTER               : return 1
 *     if arg == MPI_LOGICAL                 : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LONG_DOUBLE_INT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":97
 *     if arg == MPI_DOUBLE_INT              : return 1
 *     if arg == MPI_LONG_DOUBLE_INT         : return 1
 *     if arg == MPI_CHARACTER               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LOGICAL                 : return 1
 *     if arg == MPI_INTEGER                 : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_CHARACTER);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":98
 *     if arg == MPI_LONG_DOUBLE_INT         : return 1
 *     if arg == MPI_CHARACTER               : return 1
 *     if arg == MPI_LOGICAL                 : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INTEGER                 : return 1
 *     if arg == MPI_REAL                    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LOGICAL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":99
 *     if arg == MPI_CHARACTER               : return 1
 *     if arg == MPI_LOGICAL                 : return 1
 *     if arg == MPI_INTEGER                 : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_REAL                    : return 1
 *     if arg == MPI_DOUBLE_PRECISION        : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INTEGER);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":100
 *     if arg == MPI_LOGICAL                 : return 1
 *     if arg == MPI_INTEGER                 : return 1
 *     if arg == MPI_REAL                    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_DOUBLE_PRECISION        : return 1
 *     if arg == MPI_COMPLEX                 : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_REAL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":101
 *     if arg == MPI_INTEGER                 : return 1
 *     if arg == MPI_REAL                    : return 1
 *     if arg == MPI_DOUBLE_PRECISION        : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMPLEX                 : return 1
 *     if arg == MPI_DOUBLE_COMPLEX          : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_DOUBLE_PRECISION);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":102
 *     if arg == MPI_REAL                    : return 1
 *     if arg == MPI_DOUBLE_PRECISION        : return 1
 *     if arg == MPI_COMPLEX                 : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_DOUBLE_COMPLEX          : return 1
 *     if arg == MPI_LOGICAL1                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":103
 *     if arg == MPI_DOUBLE_PRECISION        : return 1
 *     if arg == MPI_COMPLEX                 : return 1
 *     if arg == MPI_DOUBLE_COMPLEX          : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LOGICAL1                : return 1
 *     if arg == MPI_LOGICAL2                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":104
 *     if arg == MPI_COMPLEX                 : return 1
 *     if arg == MPI_DOUBLE_COMPLEX          : return 1
 *     if arg == MPI_LOGICAL1                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LOGICAL2                : return 1
 *     if arg == MPI_LOGICAL4                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LOGICAL1);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":105
 *     if arg == MPI_DOUBLE_COMPLEX          : return 1
 *     if arg == MPI_LOGICAL1                : return 1
 *     if arg == MPI_LOGICAL2                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LOGICAL4                : return 1
 *     if arg == MPI_LOGICAL8                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LOGICAL2);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":106
 *     if arg == MPI_LOGICAL1                : return 1
 *     if arg == MPI_LOGICAL2                : return 1
 *     if arg == MPI_LOGICAL4                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LOGICAL8                : return 1
 *     if arg == MPI_INTEGER1                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LOGICAL4);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":107
 *     if arg == MPI_LOGICAL2                : return 1
 *     if arg == MPI_LOGICAL4                : return 1
 *     if arg == MPI_LOGICAL8                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INTEGER1                : return 1
 *     if arg == MPI_INTEGER2                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LOGICAL8);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":108
 *     if arg == MPI_LOGICAL4                : return 1
 *     if arg == MPI_LOGICAL8                : return 1
 *     if arg == MPI_INTEGER1                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INTEGER2                : return 1
 *     if arg == MPI_INTEGER4                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INTEGER1);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":109
 *     if arg == MPI_LOGICAL8                : return 1
 *     if arg == MPI_INTEGER1                : return 1
 *     if arg == MPI_INTEGER2                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INTEGER4                : return 1
 *     if arg == MPI_INTEGER8                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INTEGER2);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":110
 *     if arg == MPI_INTEGER1                : return 1
 *     if arg == MPI_INTEGER2                : return 1
 *     if arg == MPI_INTEGER4                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INTEGER8                : return 1
 *     if arg == MPI_INTEGER16               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INTEGER4);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":111
 *     if arg == MPI_INTEGER2                : return 1
 *     if arg == MPI_INTEGER4                : return 1
 *     if arg == MPI_INTEGER8                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INTEGER16               : return 1
 *     if arg == MPI_REAL2                   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INTEGER8);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":112
 *     if arg == MPI_INTEGER4                : return 1
 *     if arg == MPI_INTEGER8                : return 1
 *     if arg == MPI_INTEGER16               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_REAL2                   : return 1
 *     if arg == MPI_REAL4                   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INTEGER16);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":113
 *     if arg == MPI_INTEGER8                : return 1
 *     if arg == MPI_INTEGER16               : return 1
 *     if arg == MPI_REAL2                   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_REAL4                   : return 1
 *     if arg == MPI_REAL8                   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_REAL2);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":114
 *     if arg == MPI_INTEGER16               : return 1
 *     if arg == MPI_REAL2                   : return 1
 *     if arg == MPI_REAL4                   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_REAL8                   : return 1
 *     if arg == MPI_REAL16                  : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_REAL4);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":115
 *     if arg == MPI_REAL2                   : return 1
 *     if arg == MPI_REAL4                   : return 1
 *     if arg == MPI_REAL8                   : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_REAL16                  : return 1
 *     if arg == MPI_COMPLEX4                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_REAL8);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":116
 *     if arg == MPI_REAL4                   : return 1
 *     if arg == MPI_REAL8                   : return 1
 *     if arg == MPI_REAL16                  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMPLEX4                : return 1
 *     if arg == MPI_COMPLEX8                : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_REAL16);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":117
 *     if arg == MPI_REAL8                   : return 1
 *     if arg == MPI_REAL16                  : return 1
 *     if arg == MPI_COMPLEX4                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMPLEX8                : return 1
 *     if arg == MPI_COMPLEX16               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMPLEX4);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":118
 *     if arg == MPI_REAL16                  : return 1
 *     if arg == MPI_COMPLEX4                : return 1
 *     if arg == MPI_COMPLEX8                : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMPLEX16               : return 1
 *     if arg == MPI_COMPLEX32               : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMPLEX8);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":119
 *     if arg == MPI_COMPLEX4                : return 1
 *     if arg == MPI_COMPLEX8                : return 1
 *     if arg == MPI_COMPLEX16               : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMPLEX32               : return 1
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMPLEX16);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":120
 *     if arg == MPI_COMPLEX8                : return 1
 *     if arg == MPI_COMPLEX16               : return 1
 *     if arg == MPI_COMPLEX32               : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMPLEX32);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":121
 *     if arg == MPI_COMPLEX16               : return 1
 *     if arg == MPI_COMPLEX32               : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Datatype(MPI_Datatype arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":52
 *     return null
 * 
 * cdef inline int named_Datatype(MPI_Datatype arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_DATATYPE_NULL           : return 1
 *     if arg == MPI_PACKED                  : return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":123
 *     return 0
 * 
 * cdef inline int predef_Datatype(MPI_Datatype arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if named_Datatype(arg): return 1
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Datatype(MPI_Datatype __pyx_v_arg) {
  MPI_Count __pyx_v_ni;
  MPI_Count __pyx_v_na;
  MPI_Count __pyx_v_nc;
  MPI_Count __pyx_v_nd;
  int __pyx_v_combiner;
  int __pyx_v_ierr;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":124
 * 
 * cdef inline int predef_Datatype(MPI_Datatype arg) noexcept nogil:
 *     if named_Datatype(arg): return 1             # <<<<<<<<<<<<<<
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     cdef int combiner = MPI_UNDEFINED
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_named_Datatype(__pyx_v_arg) != 0);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":125
 * cdef inline int predef_Datatype(MPI_Datatype arg) noexcept nogil:
 *     if named_Datatype(arg): return 1
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0             # <<<<<<<<<<<<<<
 *     cdef int combiner = MPI_UNDEFINED
 *     cdef int ierr = MPI_Type_get_envelope_c(
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nc = 0;
  __pyx_v_nd = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":126
 *     if named_Datatype(arg): return 1
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     cdef int combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_Type_get_envelope_c(
 *         arg, &ni, &na, &nc, &nd, &combiner)
 */
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/objmodel.pxi":127
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     cdef int combiner = MPI_UNDEFINED
 *     cdef int ierr = MPI_Type_get_envelope_c(             # <<<<<<<<<<<<<<
 *         arg, &ni, &na, &nc, &nd, &combiner)
 *     if ierr != MPI_SUCCESS: return 0  # XXX Error?
 */
  __pyx_v_ierr = MPI_Type_get_envelope_c(__pyx_v_arg, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nc), (&__pyx_v_nd), (&__pyx_v_combiner));

  /* "src/mpi4py/MPI.src/objmodel.pxi":129
 *     cdef int ierr = MPI_Type_get_envelope_c(
 *         arg, &ni, &na, &nc, &nd, &combiner)
 *     if ierr != MPI_SUCCESS: return 0  # XXX Error?             # <<<<<<<<<<<<<<
 *     return (
 *         combiner == MPI_COMBINER_NAMED       or
 */
  __pyx_t_1 = (__pyx_v_ierr != MPI_SUCCESS);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":131
 *     if ierr != MPI_SUCCESS: return 0  # XXX Error?
 *     return (
 *         combiner == MPI_COMBINER_NAMED       or             # <<<<<<<<<<<<<<
 *         combiner == MPI_COMBINER_VALUE_INDEX or
 *         combiner == MPI_COMBINER_F90_INTEGER or
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_NAMED);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __pyx_t_1;
    goto __pyx_L5_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":132
 *     return (
 *         combiner == MPI_COMBINER_NAMED       or
 *         combiner == MPI_COMBINER_VALUE_INDEX or             # <<<<<<<<<<<<<<
 *         combiner == MPI_COMBINER_F90_INTEGER or
 *         combiner == MPI_COMBINER_F90_REAL    or
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_VALUE_INDEX);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __pyx_t_1;
    goto __pyx_L5_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":133
 *         combiner == MPI_COMBINER_NAMED       or
 *         combiner == MPI_COMBINER_VALUE_INDEX or
 *         combiner == MPI_COMBINER_F90_INTEGER or             # <<<<<<<<<<<<<<
 *         combiner == MPI_COMBINER_F90_REAL    or
 *         combiner == MPI_COMBINER_F90_COMPLEX
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_INTEGER);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __pyx_t_1;
    goto __pyx_L5_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":134
 *         combiner == MPI_COMBINER_VALUE_INDEX or
 *         combiner == MPI_COMBINER_F90_INTEGER or
 *         combiner == MPI_COMBINER_F90_REAL    or             # <<<<<<<<<<<<<<
 *         combiner == MPI_COMBINER_F90_COMPLEX
 *     )
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_REAL);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __pyx_t_1;
    goto __pyx_L5_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":135
 *         combiner == MPI_COMBINER_F90_INTEGER or
 *         combiner == MPI_COMBINER_F90_REAL    or
 *         combiner == MPI_COMBINER_F90_COMPLEX             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_COMPLEX);
  __pyx_t_2 = __pyx_t_1;
  __pyx_L5_bool_binop_done:;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":123
 *     return 0
 * 
 * cdef inline int predef_Datatype(MPI_Datatype arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if named_Datatype(arg): return 1
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":138
 *     )
 * 
 * cdef inline int predef_Request(MPI_Request arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_REQUEST_NULL : return 1
 *     return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Request(MPI_Request __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":139
 * 
 * cdef inline int predef_Request(MPI_Request arg) noexcept nogil:
 *     if arg == MPI_REQUEST_NULL : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_REQUEST_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":140
 * cdef inline int predef_Request(MPI_Request arg) noexcept nogil:
 *     if arg == MPI_REQUEST_NULL : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Message(MPI_Message arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":138
 *     )
 * 
 * cdef inline int predef_Request(MPI_Request arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_REQUEST_NULL : return 1
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":142
 *     return 0
 * 
 * cdef inline int predef_Message(MPI_Message arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_MESSAGE_NULL    : return 1
 *     if arg == MPI_MESSAGE_NO_PROC : return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Message(MPI_Message __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":143
 * 
 * cdef inline int predef_Message(MPI_Message arg) noexcept nogil:
 *     if arg == MPI_MESSAGE_NULL    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_MESSAGE_NO_PROC : return 1
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_MESSAGE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":144
 * cdef inline int predef_Message(MPI_Message arg) noexcept nogil:
 *     if arg == MPI_MESSAGE_NULL    : return 1
 *     if arg == MPI_MESSAGE_NO_PROC : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_MESSAGE_NO_PROC);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":145
 *     if arg == MPI_MESSAGE_NULL    : return 1
 *     if arg == MPI_MESSAGE_NO_PROC : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Op(MPI_Op arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":142
 *     return 0
 * 
 * cdef inline int predef_Message(MPI_Message arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_MESSAGE_NULL    : return 1
 *     if arg == MPI_MESSAGE_NO_PROC : return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":147
 *     return 0
 * 
 * cdef inline int predef_Op(MPI_Op arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_OP_NULL : return 1
 *     if arg == MPI_MAX     : return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Op(MPI_Op __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":148
 * 
 * cdef inline int predef_Op(MPI_Op arg) noexcept nogil:
 *     if arg == MPI_OP_NULL : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_MAX     : return 1
 *     if arg == MPI_MIN     : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_OP_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":149
 * cdef inline int predef_Op(MPI_Op arg) noexcept nogil:
 *     if arg == MPI_OP_NULL : return 1
 *     if arg == MPI_MAX     : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_MIN     : return 1
 *     if arg == MPI_SUM     : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_MAX);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":150
 *     if arg == MPI_OP_NULL : return 1
 *     if arg == MPI_MAX     : return 1
 *     if arg == MPI_MIN     : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_SUM     : return 1
 *     if arg == MPI_PROD    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_MIN);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":151
 *     if arg == MPI_MAX     : return 1
 *     if arg == MPI_MIN     : return 1
 *     if arg == MPI_SUM     : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_PROD    : return 1
 *     if arg == MPI_LAND    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_SUM);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":152
 *     if arg == MPI_MIN     : return 1
 *     if arg == MPI_SUM     : return 1
 *     if arg == MPI_PROD    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LAND    : return 1
 *     if arg == MPI_BAND    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_PROD);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":153
 *     if arg == MPI_SUM     : return 1
 *     if arg == MPI_PROD    : return 1
 *     if arg == MPI_LAND    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_BAND    : return 1
 *     if arg == MPI_LOR     : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LAND);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":154
 *     if arg == MPI_PROD    : return 1
 *     if arg == MPI_LAND    : return 1
 *     if arg == MPI_BAND    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LOR     : return 1
 *     if arg == MPI_BOR     : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_BAND);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":155
 *     if arg == MPI_LAND    : return 1
 *     if arg == MPI_BAND    : return 1
 *     if arg == MPI_LOR     : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_BOR     : return 1
 *     if arg == MPI_LXOR    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LOR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":156
 *     if arg == MPI_BAND    : return 1
 *     if arg == MPI_LOR     : return 1
 *     if arg == MPI_BOR     : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_LXOR    : return 1
 *     if arg == MPI_BXOR    : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_BOR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":157
 *     if arg == MPI_LOR     : return 1
 *     if arg == MPI_BOR     : return 1
 *     if arg == MPI_LXOR    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_BXOR    : return 1
 *     if arg == MPI_MAXLOC  : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_LXOR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":158
 *     if arg == MPI_BOR     : return 1
 *     if arg == MPI_LXOR    : return 1
 *     if arg == MPI_BXOR    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_MAXLOC  : return 1
 *     if arg == MPI_MINLOC  : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_BXOR);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":159
 *     if arg == MPI_LXOR    : return 1
 *     if arg == MPI_BXOR    : return 1
 *     if arg == MPI_MAXLOC  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_MINLOC  : return 1
 *     if arg == MPI_REPLACE : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_MAXLOC);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":160
 *     if arg == MPI_BXOR    : return 1
 *     if arg == MPI_MAXLOC  : return 1
 *     if arg == MPI_MINLOC  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_REPLACE : return 1
 *     if arg == MPI_NO_OP   : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_MINLOC);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":161
 *     if arg == MPI_MAXLOC  : return 1
 *     if arg == MPI_MINLOC  : return 1
 *     if arg == MPI_REPLACE : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_NO_OP   : return 1
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_REPLACE);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":162
 *     if arg == MPI_MINLOC  : return 1
 *     if arg == MPI_REPLACE : return 1
 *     if arg == MPI_NO_OP   : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_NO_OP);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":163
 *     if arg == MPI_REPLACE : return 1
 *     if arg == MPI_NO_OP   : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Group(MPI_Group arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":147
 *     return 0
 * 
 * cdef inline int predef_Op(MPI_Op arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_OP_NULL : return 1
 *     if arg == MPI_MAX     : return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":165
 *     return 0
 * 
 * cdef inline int predef_Group(MPI_Group arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_GROUP_NULL  : return 1
 *     if arg == MPI_GROUP_EMPTY : return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Group(MPI_Group __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":166
 * 
 * cdef inline int predef_Group(MPI_Group arg) noexcept nogil:
 *     if arg == MPI_GROUP_NULL  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_GROUP_EMPTY : return 1
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_GROUP_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":167
 * cdef inline int predef_Group(MPI_Group arg) noexcept nogil:
 *     if arg == MPI_GROUP_NULL  : return 1
 *     if arg == MPI_GROUP_EMPTY : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_GROUP_EMPTY);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":168
 *     if arg == MPI_GROUP_NULL  : return 1
 *     if arg == MPI_GROUP_EMPTY : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Info(MPI_Info arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":165
 *     return 0
 * 
 * cdef inline int predef_Group(MPI_Group arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_GROUP_NULL  : return 1
 *     if arg == MPI_GROUP_EMPTY : return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":170
 *     return 0
 * 
 * cdef inline int predef_Info(MPI_Info arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_INFO_NULL : return 1
 *     if arg == MPI_INFO_ENV  : return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Info(MPI_Info __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":171
 * 
 * cdef inline int predef_Info(MPI_Info arg) noexcept nogil:
 *     if arg == MPI_INFO_NULL : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_INFO_ENV  : return 1
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INFO_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":172
 * cdef inline int predef_Info(MPI_Info arg) noexcept nogil:
 *     if arg == MPI_INFO_NULL : return 1
 *     if arg == MPI_INFO_ENV  : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_INFO_ENV);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":173
 *     if arg == MPI_INFO_NULL : return 1
 *     if arg == MPI_INFO_ENV  : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Errhandler(MPI_Errhandler arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":170
 *     return 0
 * 
 * cdef inline int predef_Info(MPI_Info arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_INFO_NULL : return 1
 *     if arg == MPI_INFO_ENV  : return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":175
 *     return 0
 * 
 * cdef inline int predef_Errhandler(MPI_Errhandler arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_ERRHANDLER_NULL  : return 1
 *     if arg == MPI_ERRORS_RETURN    : return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Errhandler(MPI_Errhandler __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":176
 * 
 * cdef inline int predef_Errhandler(MPI_Errhandler arg) noexcept nogil:
 *     if arg == MPI_ERRHANDLER_NULL  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_ERRORS_RETURN    : return 1
 *     if arg == MPI_ERRORS_ABORT     : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_ERRHANDLER_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":177
 * cdef inline int predef_Errhandler(MPI_Errhandler arg) noexcept nogil:
 *     if arg == MPI_ERRHANDLER_NULL  : return 1
 *     if arg == MPI_ERRORS_RETURN    : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_ERRORS_ABORT     : return 1
 *     if arg == MPI_ERRORS_ARE_FATAL : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_ERRORS_RETURN);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":178
 *     if arg == MPI_ERRHANDLER_NULL  : return 1
 *     if arg == MPI_ERRORS_RETURN    : return 1
 *     if arg == MPI_ERRORS_ABORT     : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_ERRORS_ARE_FATAL : return 1
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_ERRORS_ABORT);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":179
 *     if arg == MPI_ERRORS_RETURN    : return 1
 *     if arg == MPI_ERRORS_ABORT     : return 1
 *     if arg == MPI_ERRORS_ARE_FATAL : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_ERRORS_ARE_FATAL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":180
 *     if arg == MPI_ERRORS_ABORT     : return 1
 *     if arg == MPI_ERRORS_ARE_FATAL : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Session(MPI_Session arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":175
 *     return 0
 * 
 * cdef inline int predef_Errhandler(MPI_Errhandler arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_ERRHANDLER_NULL  : return 1
 *     if arg == MPI_ERRORS_RETURN    : return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":182
 *     return 0
 * 
 * cdef inline int predef_Session(MPI_Session arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_SESSION_NULL : return 1
 *     return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Session(MPI_Session __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":183
 * 
 * cdef inline int predef_Session(MPI_Session arg) noexcept nogil:
 *     if arg == MPI_SESSION_NULL : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_SESSION_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":184
 * cdef inline int predef_Session(MPI_Session arg) noexcept nogil:
 *     if arg == MPI_SESSION_NULL : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Comm(MPI_Comm arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":182
 *     return 0
 * 
 * cdef inline int predef_Session(MPI_Session arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_SESSION_NULL : return 1
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":186
 *     return 0
 * 
 * cdef inline int predef_Comm(MPI_Comm arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_NULL  : return 1
 *     if arg == MPI_COMM_SELF  : return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Comm(MPI_Comm __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":187
 * 
 * cdef inline int predef_Comm(MPI_Comm arg) noexcept nogil:
 *     if arg == MPI_COMM_NULL  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_SELF  : return 1
 *     if arg == MPI_COMM_WORLD : return 1
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":188
 * cdef inline int predef_Comm(MPI_Comm arg) noexcept nogil:
 *     if arg == MPI_COMM_NULL  : return 1
 *     if arg == MPI_COMM_SELF  : return 1             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_WORLD : return 1
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMM_SELF);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":189
 *     if arg == MPI_COMM_NULL  : return 1
 *     if arg == MPI_COMM_SELF  : return 1
 *     if arg == MPI_COMM_WORLD : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMM_WORLD);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":190
 *     if arg == MPI_COMM_SELF  : return 1
 *     if arg == MPI_COMM_WORLD : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_Win(MPI_Win arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":186
 *     return 0
 * 
 * cdef inline int predef_Comm(MPI_Comm arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_NULL  : return 1
 *     if arg == MPI_COMM_SELF  : return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":192
 *     return 0
 * 
 * cdef inline int predef_Win(MPI_Win arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_WIN_NULL : return 1
 *     return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_Win(MPI_Win __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":193
 * 
 * cdef inline int predef_Win(MPI_Win arg) noexcept nogil:
 *     if arg == MPI_WIN_NULL : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_WIN_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":194
 * cdef inline int predef_Win(MPI_Win arg) noexcept nogil:
 *     if arg == MPI_WIN_NULL : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predef_File(MPI_File arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":192
 *     return 0
 * 
 * cdef inline int predef_Win(MPI_Win arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_WIN_NULL : return 1
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":196
 *     return 0
 * 
 * cdef inline int predef_File(MPI_File arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_FILE_NULL : return 1
 *     return 0
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_predef_File(MPI_File __pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":197
 * 
 * cdef inline int predef_File(MPI_File arg) noexcept nogil:
 *     if arg == MPI_FILE_NULL : return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_FILE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":198
 * cdef inline int predef_File(MPI_File arg) noexcept nogil:
 *     if arg == MPI_FILE_NULL : return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":196
 *     return 0
 * 
 * cdef inline int predef_File(MPI_File arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if arg == MPI_FILE_NULL : return 1
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_predefined(MPI_Datatype __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":202
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 *     if handle_t is MPI_Message    : result = predef_Message(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Datatype(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_predefined(MPI_Request __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":203
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Message    : result = predef_Message(arg)
 *     if handle_t is MPI_Op         : result = predef_Op(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Request(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_predefined(MPI_Message __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":204
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 *     if handle_t is MPI_Message    : result = predef_Message(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Op         : result = predef_Op(arg)
 *     if handle_t is MPI_Group      : result = predef_Group(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Message(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_predefined(MPI_Op __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":205
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 *     if handle_t is MPI_Message    : result = predef_Message(arg)
 *     if handle_t is MPI_Op         : result = predef_Op(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Group      : result = predef_Group(arg)
 *     if handle_t is MPI_Info       : result = predef_Info(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Op(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_predefined(MPI_Group __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":206
 *     if handle_t is MPI_Message    : result = predef_Message(arg)
 *     if handle_t is MPI_Op         : result = predef_Op(arg)
 *     if handle_t is MPI_Group      : result = predef_Group(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Info       : result = predef_Info(arg)
 *     if handle_t is MPI_Errhandler : result = predef_Errhandler(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Group(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_predefined(MPI_Info __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":207
 *     if handle_t is MPI_Op         : result = predef_Op(arg)
 *     if handle_t is MPI_Group      : result = predef_Group(arg)
 *     if handle_t is MPI_Info       : result = predef_Info(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Errhandler : result = predef_Errhandler(arg)
 *     if handle_t is MPI_Session    : result = predef_Session(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Info(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_predefined(MPI_Errhandler __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":208
 *     if handle_t is MPI_Group      : result = predef_Group(arg)
 *     if handle_t is MPI_Info       : result = predef_Info(arg)
 *     if handle_t is MPI_Errhandler : result = predef_Errhandler(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Session    : result = predef_Session(arg)
 *     if handle_t is MPI_Comm       : result = predef_Comm(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Errhandler(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_predefined(MPI_Session __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":209
 *     if handle_t is MPI_Info       : result = predef_Info(arg)
 *     if handle_t is MPI_Errhandler : result = predef_Errhandler(arg)
 *     if handle_t is MPI_Session    : result = predef_Session(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Comm       : result = predef_Comm(arg)
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Session(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_predefined(MPI_Comm __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":210
 *     if handle_t is MPI_Errhandler : result = predef_Errhandler(arg)
 *     if handle_t is MPI_Session    : result = predef_Session(arg)
 *     if handle_t is MPI_Comm       : result = predef_Comm(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Comm(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_predefined(MPI_Win __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":211
 *     if handle_t is MPI_Session    : result = predef_Session(arg)
 *     if handle_t is MPI_Comm       : result = predef_Comm(arg)
 *     if handle_t is MPI_Win        : result = predef_Win(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_Win(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_predefined(MPI_File __pyx_v_arg) {
  int __pyx_v_result;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":201
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:
 *     cdef int result = 0             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 *     if handle_t is MPI_Request    : result = predef_Request(arg)
 */
  __pyx_v_result = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":212
 *     if handle_t is MPI_Comm       : result = predef_Comm(arg)
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __pyx_v_result = __pyx_f_6mpi4py_3MPI_predef_File(__pyx_v_arg);

  /* "src/mpi4py/MPI.src/objmodel.pxi":213
 *     if handle_t is MPI_Win        : result = predef_Win(arg)
 *     if handle_t is MPI_File       : result = predef_File(arg)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":200
 *     return 0
 * 
 * cdef inline int predefined(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int result = 0
 *     if handle_t is MPI_Datatype   : result = predef_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_named(MPI_Datatype __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":217
 * cdef inline int named(handle_t arg) noexcept nogil:
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)             # <<<<<<<<<<<<<<
 *     else:
 *         return predefined(arg)
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_named_Datatype(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_named(MPI_Request __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_named(MPI_Message __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_named(MPI_Op __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_named(MPI_Group __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_named(MPI_Info __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_named(MPI_Errhandler __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_named(MPI_Session __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_named(MPI_Comm __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_named(MPI_Win __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_named(MPI_File __pyx_v_arg) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":219
 *         return named_Datatype(arg)
 *     else:
 *         return predefined(arg)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":215
 *     return result
 * 
 * cdef inline int named(handle_t arg) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype:
 *         return named_Datatype(arg)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIDatatypeObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_Datatype __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_arg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Request __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__pyx_fuse_1cinit", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":252
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Message:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_3 = __pyx_v_arg->ob_buf;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->ob_buf);
  __Pyx_DECREF(__pyx_v_self->ob_buf);
  __pyx_v_self->ob_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIMessageObject *__pyx_v_self, struct PyMPIMessageObject *__pyx_v_arg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Message __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__pyx_fuse_2cinit", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":254
 *         self.ob_buf = arg.ob_buf
 *     if PyMPIClass is Message:
 *         self.ob_buf = arg.ob_buf             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Op:
 *         op_user_cpy(self, arg)
 */
  __pyx_t_3 = __pyx_v_arg->ob_buf;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->ob_buf);
  __Pyx_DECREF(__pyx_v_self->ob_buf);
  __pyx_v_self->ob_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIOpObject *__pyx_v_self, struct PyMPIOpObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_Op __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":256
 *         self.ob_buf = arg.ob_buf
 *     if PyMPIClass is Op:
 *         op_user_cpy(self, arg)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_op_user_cpy(__pyx_v_self, __pyx_v_arg); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 256, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.cinit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIGroupObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_Group __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIInfoObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_Info __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIErrhandlerObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_Errhandler __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_cinit(struct PyMPISessionObject *__pyx_v_self, struct PyMPISessionObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_Session __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_cinit(struct PyMPICommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_Comm __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIWinObject *__pyx_v_self, struct PyMPIWinObject *__pyx_v_arg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Win __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  __Pyx_RefNannySetupContext("__pyx_fuse_9cinit", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":258
 *         op_user_cpy(self, arg)
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_3 = __pyx_v_arg->ob_mem;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->ob_mem);
  __Pyx_DECREF(__pyx_v_self->ob_mem);
  __pyx_v_self->ob_mem = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_cinit(struct PyMPIFileObject *__pyx_v_self, struct PyMPIFileObject *__pyx_v_arg) {
  int __pyx_r;
  int __pyx_t_1;
  MPI_File __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":247
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":248
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY             # <<<<<<<<<<<<<<
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_READY);

  /* "src/mpi4py/MPI.src/objmodel.pxi":249
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0             # <<<<<<<<<<<<<<
 *     self.ob_mpi = arg.ob_mpi
 *     if PyMPIClass is Request:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_arg) == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":250
 *     self.flags |= PyMPI_FLAGS_READY
 *     if arg is None: return 0
 *     self.ob_mpi = arg.ob_mpi             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.ob_buf = arg.ob_buf
 */
  __pyx_t_2 = __pyx_v_arg->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":259
 *     if PyMPIClass is Win:
 *         self.ob_mem = arg.ob_mem
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":246
 *     enum: PyMPI_FLAGS_TEMP
 * 
 * cdef inline int cinit(PyMPIClass self, PyMPIClass arg) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     self.flags |= PyMPI_FLAGS_READY
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":261
 *     return 0
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not predefined(self.ob_mpi):
 *         self.flags |= PyMPI_FLAGS_TEMP
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_marktemp(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":262
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 *     if not predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         self.flags |= PyMPI_FLAGS_TEMP
 *     return 0
 */
  __pyx_t_1 = (!(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":263
 * cdef inline int marktemp(PyMPIClass self) except -1:
 *     if not predefined(self.ob_mpi):
 *         self.flags |= PyMPI_FLAGS_TEMP             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_v_self->flags = (__pyx_v_self->flags | PyMPI_FLAGS_TEMP);

    /* "src/mpi4py/MPI.src/objmodel.pxi":262
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:
 *     if not predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         self.flags |= PyMPI_FLAGS_TEMP
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":264
 *     if not predefined(self.ob_mpi):
 *         self.flags |= PyMPI_FLAGS_TEMP
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":261
 *     return 0
 * 
 * cdef inline int marktemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not predefined(self.ob_mpi):
 *         self.flags |= PyMPI_FLAGS_TEMP
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_0__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":272
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 272, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.freetemp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_1__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_2__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_3__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_4__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_5__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_6__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_7__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_8__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_9__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_freetemp(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/objmodel.pxi":269
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_10__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":270
 * cdef inline int freetemp(PyMPIClass self) except -1:
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":273
 *     if PyMPIClass is Datatype:
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":268
 * 
 * @cython.linetrace(False)
 * cdef inline int freetemp(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi): return 0
 *     if not mpi_active(): return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_0__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Datatype), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_1__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Request), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_2__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Message), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_3__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Op), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_4__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Group), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_5__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Info), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_6__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Errhandler), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_7__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Session), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_8__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Comm), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_9__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_Win), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_dealloc(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":278
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 */
  __pyx_t_1 = (!((__pyx_v_self->flags & PyMPI_FLAGS_READY) != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":279
 * cdef inline int dealloc(PyMPIClass self) except -1:
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0             # <<<<<<<<<<<<<<
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":280
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)             # <<<<<<<<<<<<<<
 *     if self.flags: return 0  # TODO: this always return
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_TEMP) != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_freetemp(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 280, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":281
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 *     if (self.flags & PyMPI_FLAGS_TEMP ): return freetemp(self)
 *     if self.flags: return 0  # TODO: this always return             # <<<<<<<<<<<<<<
 * 
 *     if not mpi_active(): return 0
 */
  __pyx_t_1 = (__pyx_v_self->flags != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":283
 *     if self.flags: return 0  # TODO: this always return
 * 
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":284
 * 
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0             # <<<<<<<<<<<<<<
 *     PyErr_WarnFormat(
 *         RuntimeWarning, 1,
 */
  __pyx_t_1 = (__pyx_fuse_10__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":285
 *     if not mpi_active(): return 0
 *     if predefined(self.ob_mpi): return 0
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         RuntimeWarning, 1,
 *         b"collecting object with %.200U handle %p",
 */
  __pyx_t_2 = PyErr_WarnFormat(__pyx_builtin_RuntimeWarning, 1, ((char *)"collecting object with %.200U handle %p"), ((PyObject *)__pyx_n_s_MPI_File), ((void *)((Py_uintptr_t)__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":277
 * 
 * @cython.linetrace(False)
 * cdef inline int dealloc(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if not (self.flags & PyMPI_FLAGS_READY): return 0
 *     if (self.flags & PyMPI_FLAGS_CONST): return 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIDatatypeObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIDatatypeObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIRequestObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIRequestObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIRequestObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIMessageObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIMessageObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIMessageObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIOpObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIOpObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIGroupObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIGroupObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIInfoObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIInfoObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIErrhandlerObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIErrhandlerObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIErrhandlerObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPISessionObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPISessionObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPICommObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPICommObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIWinObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIWinObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_richcmp(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10richcmp", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":301
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi == ((struct PyMPIFileObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":302
 * cdef inline object richcmp(PyMPIClass self, object other, int op):
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_self->ob_mpi != ((struct PyMPIFileObject *)__pyx_v_other)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":303
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 303, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":304
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 304, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":305
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__30);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":300
 *     enum: Py_GE
 * 
 * cdef inline object richcmp(PyMPIClass self, object other, int op):             # <<<<<<<<<<<<<<
 *     if op == Py_EQ: return (self.ob_mpi == (<PyMPIClass>other).ob_mpi)
 *     if op == Py_NE: return (self.ob_mpi != (<PyMPIClass>other).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.richcmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_0__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_1__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_2__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_3__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_4__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_5__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_6__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_7__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_8__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_9__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_nonnull(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":308
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:
 *     return self.ob_mpi != mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = (__pyx_v_self->ob_mpi != __pyx_fuse_10__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":307
 *     raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 * cdef inline int nonnull(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return self.ob_mpi != mpinull(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

static CYTHON_INLINE PyTypeObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_class(MPI_Datatype __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":317
 *     <void> handle  # unused
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Request    : result = Request
 *     if handle_t is MPI_Message    : result = Message
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_class(MPI_Request __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":318
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Message    : result = Message
 *     if handle_t is MPI_Op         : result = Op
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_class(MPI_Message __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":319
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 *     if handle_t is MPI_Message    : result = Message             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Op         : result = Op
 *     if handle_t is MPI_Group      : result = Group
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_class(MPI_Op __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":320
 *     if handle_t is MPI_Request    : result = Request
 *     if handle_t is MPI_Message    : result = Message
 *     if handle_t is MPI_Op         : result = Op             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Group      : result = Group
 *     if handle_t is MPI_Info       : result = Info
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_class(MPI_Group __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":321
 *     if handle_t is MPI_Message    : result = Message
 *     if handle_t is MPI_Op         : result = Op
 *     if handle_t is MPI_Group      : result = Group             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Info       : result = Info
 *     if handle_t is MPI_Errhandler : result = Errhandler
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_class(MPI_Info __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":322
 *     if handle_t is MPI_Op         : result = Op
 *     if handle_t is MPI_Group      : result = Group
 *     if handle_t is MPI_Info       : result = Info             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Errhandler : result = Errhandler
 *     if handle_t is MPI_Session    : result = Session
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_class(MPI_Errhandler __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":323
 *     if handle_t is MPI_Group      : result = Group
 *     if handle_t is MPI_Info       : result = Info
 *     if handle_t is MPI_Errhandler : result = Errhandler             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Session    : result = Session
 *     if handle_t is MPI_Comm       : result = Comm
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_class(MPI_Session __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":324
 *     if handle_t is MPI_Info       : result = Info
 *     if handle_t is MPI_Errhandler : result = Errhandler
 *     if handle_t is MPI_Session    : result = Session             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Comm       : result = Comm
 *     if handle_t is MPI_Win        : result = Win
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_class(MPI_Comm __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_8def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":325
 *     if handle_t is MPI_Errhandler : result = Errhandler
 *     if handle_t is MPI_Session    : result = Session
 *     if handle_t is MPI_Comm       : result = Comm             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_class(MPI_Win __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_9def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":326
 *     if handle_t is MPI_Session    : result = Session
 *     if handle_t is MPI_Comm       : result = Comm
 *     if handle_t is MPI_Win        : result = Win             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_File       : result = File
 *     return result
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyTypeObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_class(MPI_File __pyx_v_handle) {
  PyTypeObject *__pyx_v_result = 0;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_10def_class", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":315
 * 
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused             # <<<<<<<<<<<<<<
 *     cdef type result = None
 *     if handle_t is MPI_Datatype   : result = Datatype
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/objmodel.pxi":316
 * cdef inline type def_class(handle_t handle):
 *     <void> handle  # unused
 *     cdef type result = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : result = Datatype
 *     if handle_t is MPI_Request    : result = Request
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_result = ((PyTypeObject*)Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":327
 *     if handle_t is MPI_Comm       : result = Comm
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_File);
  __Pyx_DECREF_SET(__pyx_v_result, __pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/objmodel.pxi":328
 *     if handle_t is MPI_Win        : result = Win
 *     if handle_t is MPI_File       : result = File
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef inline int def_register(
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":314
 * cdef dict def_registry = {}
 * 
 * cdef inline type def_class(handle_t handle):             # <<<<<<<<<<<<<<
 *     <void> handle  # unused
 *     cdef type result = None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_register(MPI_Datatype __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_register(MPI_Request __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_register(MPI_Message __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_register(MPI_Op __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_register(MPI_Group __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_register(MPI_Info __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_register(MPI_Errhandler __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_register(MPI_Session __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_register(MPI_Comm __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_register(MPI_Win __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_register(MPI_File __pyx_v_handle, PyObject *__pyx_v_pyobj, PyObject *__pyx_v_name) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10def_register", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":335
 *     object   name,
 * ) except -1:
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":336
 * ) except -1:
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
    __PYX_ERR(1, 336, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 336, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":337
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  __pyx_t_2 = (__pyx_v_registry == ((PyObject*)Py_None));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":339
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:
 *         registry = def_registry[cls] = {}             # <<<<<<<<<<<<<<
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
    if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 339, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls), __pyx_t_1) < 0))) __PYX_ERR(1, 339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":338
 *     cdef dict registry = def_registry.get(cls)
 *     cdef object key = <Py_uintptr_t> handle
 *     if registry is None:             # <<<<<<<<<<<<<<
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(1, 340, __pyx_L1_error)
  }
  __pyx_t_2 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_registry, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 340, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":341
 *         registry = def_registry[cls] = {}
 *     if key not in registry:
 *         registry[key] = (pyobj, name)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_pyobj);
    __Pyx_GIVEREF(__pyx_v_pyobj);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_pyobj)) __PYX_ERR(1, 341, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name)) __PYX_ERR(1, 341, __pyx_L1_error);
    if (unlikely(__pyx_v_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(1, 341, __pyx_L1_error)
    }
    if (unlikely((PyDict_SetItem(__pyx_v_registry, __pyx_v_key, __pyx_t_1) < 0))) __PYX_ERR(1, 341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":340
 *     if registry is None:
 *         registry = def_registry[cls] = {}
 *     if key not in registry:             # <<<<<<<<<<<<<<
 *         registry[key] = (pyobj, name)
 *     return 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":342
 *     if key not in registry:
 *         registry[key] = (pyobj, name)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_lookup(handle_t handle):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":330
 *     return result
 * 
 * cdef inline int def_register(             # <<<<<<<<<<<<<<
 *     handle_t handle,
 *     object   pyobj,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_register", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Datatype __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Request __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Message __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Op __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Group __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Info __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Errhandler __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Session __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Comm __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_lookup(MPI_Win __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_lookup(MPI_File __pyx_v_handle) {
  PyTypeObject *__pyx_v_cls = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10def_lookup", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":345
 * 
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)             # <<<<<<<<<<<<<<
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_class(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":346
 * cdef inline object def_lookup(handle_t handle):
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]             # <<<<<<<<<<<<<<
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_def_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 346, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject *)__pyx_v_cls)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(1, 346, __pyx_L1_error)
  __pyx_v_registry = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":347
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle             # <<<<<<<<<<<<<<
 *     return registry[key]
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":348
 *     cdef dict registry = def_registry[cls]
 *     cdef object key = <Py_uintptr_t> handle
 *     return registry[key]             # <<<<<<<<<<<<<<
 * 
 * cdef __newobj__ = None
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 348, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_registry, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":344
 *     return 0
 * 
 * cdef inline object def_lookup(handle_t handle):             # <<<<<<<<<<<<<<
 *     cdef type cls = def_class(handle)
 *     cdef dict registry = def_registry[cls]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIMessageObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIOpObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIErrhandlerObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_reduce(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_v_pyobj = 0;
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10def_reduce", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":355
 * cdef inline object def_reduce(PyMPIClass self):
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))
 */
  __pyx_t_1 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_lookup(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 355, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(1, 355, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_pyobj = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":356
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name             # <<<<<<<<<<<<<<
 *     return (__newobj__, (type(self), pyobj))
 * 
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_self) == __pyx_v_pyobj);
  if (__pyx_t_6) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_name);
    __pyx_r = __pyx_v_name;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":357
 *     pyobj, name = def_lookup(self.ob_mpi)
 *     if self is pyobj: return name
 *     return (__newobj__, (type(self), pyobj))             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_pyobj);
  __Pyx_GIVEREF(__pyx_v_pyobj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_pyobj)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(1, 357, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(1, 357, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":353
 * from copyreg import __newobj__
 * 
 * cdef inline object def_reduce(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     cdef object pyobj, name
 *     pyobj, name = def_lookup(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.def_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyobj);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_1__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIMessageObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_2__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_4__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIErrhandlerObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_6__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_7__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_8__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_9__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_reduce_default(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10reduce_default", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  __pyx_t_1 = (__pyx_fuse_10__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":361
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":360
 * 
 * cdef inline object reduce_default(PyMPIClass self):
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":362
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 362, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":363
 *         return def_reduce(self)
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(1, 363, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":364
 *     cdef str mod = type(self).__module__
 *     cdef str cls = type(self).__name__
 *     raise ValueError(f"cannot serialize '{mod}.{cls}' instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u_cannot_serialize);
  __pyx_t_3 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_cannot_serialize);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_cannot_serialize);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__2);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_INCREF(__pyx_kp_u_instance);
  __pyx_t_3 += 10;
  __Pyx_GIVEREF(__pyx_kp_u_instance);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u_instance);
  __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(1, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":359
 *     return (__newobj__, (type(self), pyobj))
 * 
 * cdef inline object reduce_default(PyMPIClass self):             # <<<<<<<<<<<<<<
 *     if named(self.ob_mpi):
 *         return def_reduce(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_default", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_0__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIDatatypeObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_1__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIRequestObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_2__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIMessageObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_3__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIOpObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_4__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIGroupObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_5__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIInfoObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_6__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIErrhandlerObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_7__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPISessionObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_8__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPICommObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_9__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIWinObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE Py_uintptr_t __pyx_fuse_10__pyx_f_6mpi4py_3MPI_tohandle(struct PyMPIFileObject *__pyx_v_self) {
  Py_uintptr_t __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":369
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:
 *     return <Py_uintptr_t> self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object fromhandle(handle_t arg):
 */
  __pyx_r = ((Py_uintptr_t)__pyx_v_self->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":368
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline Py_uintptr_t tohandle(PyMPIClass self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Datatype __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":373
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 *     if handle_t is MPI_Message    : obj = PyMPIMessage_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIDatatype_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Request __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":374
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Message    : obj = PyMPIMessage_New(arg)
 *     if handle_t is MPI_Op         : obj = PyMPIOp_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIRequest_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Message __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":375
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 *     if handle_t is MPI_Message    : obj = PyMPIMessage_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Op         : obj = PyMPIOp_New(arg)
 *     if handle_t is MPI_Group      : obj = PyMPIGroup_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIMessage_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_3__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Op __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":376
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 *     if handle_t is MPI_Message    : obj = PyMPIMessage_New(arg)
 *     if handle_t is MPI_Op         : obj = PyMPIOp_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Group      : obj = PyMPIGroup_New(arg)
 *     if handle_t is MPI_Info       : obj = PyMPIInfo_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIOp_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_4__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Group __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":377
 *     if handle_t is MPI_Message    : obj = PyMPIMessage_New(arg)
 *     if handle_t is MPI_Op         : obj = PyMPIOp_New(arg)
 *     if handle_t is MPI_Group      : obj = PyMPIGroup_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Info       : obj = PyMPIInfo_New(arg)
 *     if handle_t is MPI_Errhandler : obj = PyMPIErrhandler_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIGroup_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_5__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Info __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":378
 *     if handle_t is MPI_Op         : obj = PyMPIOp_New(arg)
 *     if handle_t is MPI_Group      : obj = PyMPIGroup_New(arg)
 *     if handle_t is MPI_Info       : obj = PyMPIInfo_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Errhandler : obj = PyMPIErrhandler_New(arg)
 *     if handle_t is MPI_Session    : obj = PyMPISession_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIInfo_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_6__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Errhandler __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":379
 *     if handle_t is MPI_Group      : obj = PyMPIGroup_New(arg)
 *     if handle_t is MPI_Info       : obj = PyMPIInfo_New(arg)
 *     if handle_t is MPI_Errhandler : obj = PyMPIErrhandler_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Session    : obj = PyMPISession_New(arg)
 *     if handle_t is MPI_Comm       : obj = PyMPIComm_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_7__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Session __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":380
 *     if handle_t is MPI_Info       : obj = PyMPIInfo_New(arg)
 *     if handle_t is MPI_Errhandler : obj = PyMPIErrhandler_New(arg)
 *     if handle_t is MPI_Session    : obj = PyMPISession_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Comm       : obj = PyMPIComm_New(arg)
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPISession_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_8__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Comm __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":381
 *     if handle_t is MPI_Errhandler : obj = PyMPIErrhandler_New(arg)
 *     if handle_t is MPI_Session    : obj = PyMPISession_New(arg)
 *     if handle_t is MPI_Comm       : obj = PyMPIComm_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIComm_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_9__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Win __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":382
 *     if handle_t is MPI_Session    : obj = PyMPISession_New(arg)
 *     if handle_t is MPI_Comm       : obj = PyMPIComm_New(arg)
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIWin_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_10__pyx_f_6mpi4py_3MPI_fromhandle(MPI_File __pyx_v_arg) {
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10fromhandle", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":372
 * 
 * cdef inline object fromhandle(handle_t arg):
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 *     if handle_t is MPI_Request    : obj = PyMPIRequest_New(arg)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/objmodel.pxi":383
 *     if handle_t is MPI_Comm       : obj = PyMPIComm_New(arg)
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIFile_New(__pyx_v_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":384
 *     if handle_t is MPI_Win        : obj = PyMPIWin_New(arg)
 *     if handle_t is MPI_File       : obj = PyMPIFile_New(arg)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":371
 *     return <Py_uintptr_t> self.ob_mpi
 * 
 * cdef inline object fromhandle(handle_t arg):             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     if handle_t is MPI_Datatype   : obj = PyMPIDatatype_New(arg)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_nullify(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_nullify(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_nullify(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/objmodel.pxi":389
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/objmodel.pxi":390
 * cdef inline int nullify(PyMPIClass self) except -1:
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":388
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int nullify(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     self.ob_mpi = mpinull(self.ob_mpi)
 *     return 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_0__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":397
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Request:
 *         self.Free()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_1__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":399
 *         self.Free()
 *     if PyMPIClass is Request:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Message:
 *         pass
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_2__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_3__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":403
 *         pass
 *     if PyMPIClass is Op:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Group:
 *         self.Free()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_4callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_4__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":405
 *         self.Free()
 *     if PyMPIClass is Group:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Info:
 *         self.Free()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_5callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_5__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":407
 *         self.Free()
 *     if PyMPIClass is Info:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Errhandler:
 *         self.Free()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_6callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":409
 *         self.Free()
 *     if PyMPIClass is Errhandler:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Session:
 *         self.Finalize()
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_callfree(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_7callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_7__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":411
 *         self.Free()
 *     if PyMPIClass is Session:
 *         self.Finalize()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Comm:
 *         self.Free()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Finalize); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_callfree(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_8callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_8__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":413
 *         self.Finalize()
 *     if PyMPIClass is Comm:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Win:
 *         self.Free()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 413, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_9callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_9__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":415
 *         self.Free()
 *     if PyMPIClass is Win:
 *         self.Free()             # <<<<<<<<<<<<<<
 *     if PyMPIClass is File:
 *         self.Close()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Free); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_callfree(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_10callfree", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  __pyx_t_1 = (__pyx_fuse_10__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":395
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 *             return nullify(self)             # <<<<<<<<<<<<<<
 *     if PyMPIClass is Datatype:
 *         self.Free()
 */
    __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 395, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":394
 * cdef inline int callfree(PyMPIClass self) except -1:
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):             # <<<<<<<<<<<<<<
 *             return nullify(self)
 *     if PyMPIClass is Datatype:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":417
 *         self.Free()
 *     if PyMPIClass is File:
 *         self.Close()             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Close); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":418
 *     if PyMPIClass is File:
 *         self.Close()
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":392
 *     return 0
 * 
 * cdef inline int callfree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     if PyMPIClass is not Errhandler:
 *         if predefined(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.callfree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_0__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_1__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_2__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_3__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_4__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_4__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_5__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_5__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":433
 *         PyMPIClass is Session or
 *         PyMPIClass is Errhandler
 *     ) and mpi_version >= 4:             # <<<<<<<<<<<<<<
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_mpi_version >= 4);

  /* "src/mpi4py/MPI.src/objmodel.pxi":429
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 *     if (             # <<<<<<<<<<<<<<
 *         PyMPIClass is Info or
 *         PyMPIClass is Session or
 */
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":434
 *         PyMPIClass is Errhandler
 *     ) and mpi_version >= 4:
 *         return callfree(self)             # <<<<<<<<<<<<<<
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 */
    __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 434, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":429
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 *     if (             # <<<<<<<<<<<<<<
 *         PyMPIClass is Info or
 *         PyMPIClass is Session or
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_6__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_6__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":433
 *         PyMPIClass is Session or
 *         PyMPIClass is Errhandler
 *     ) and mpi_version >= 4:             # <<<<<<<<<<<<<<
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_mpi_version >= 4);

  /* "src/mpi4py/MPI.src/objmodel.pxi":429
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 *     if (             # <<<<<<<<<<<<<<
 *         PyMPIClass is Info or
 *         PyMPIClass is Session or
 */
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":434
 *         PyMPIClass is Errhandler
 *     ) and mpi_version >= 4:
 *         return callfree(self)             # <<<<<<<<<<<<<<
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 */
    __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 434, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":429
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 *     if (             # <<<<<<<<<<<<<<
 *         PyMPIClass is Info or
 *         PyMPIClass is Session or
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_7__pyx_f_6mpi4py_3MPI_safefree(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_7__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":433
 *         PyMPIClass is Session or
 *         PyMPIClass is Errhandler
 *     ) and mpi_version >= 4:             # <<<<<<<<<<<<<<
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_mpi_version >= 4);

  /* "src/mpi4py/MPI.src/objmodel.pxi":429
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 *     if (             # <<<<<<<<<<<<<<
 *         PyMPIClass is Info or
 *         PyMPIClass is Session or
 */
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":434
 *         PyMPIClass is Errhandler
 *     ) and mpi_version >= 4:
 *         return callfree(self)             # <<<<<<<<<<<<<<
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 */
    __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 434, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":429
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 *     if (             # <<<<<<<<<<<<<<
 *         PyMPIClass is Info or
 *         PyMPIClass is Session or
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_8__pyx_f_6mpi4py_3MPI_safefree(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_8__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_9__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_9__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_10__pyx_f_6mpi4py_3MPI_safefree(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  __pyx_t_1 = ((__pyx_v_self->flags & PyMPI_FLAGS_CONST) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":423
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 *         return 0             # <<<<<<<<<<<<<<
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":422
 * cdef inline int safefree(PyMPIClass self) except -1:
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:             # <<<<<<<<<<<<<<
 *         return 0
 *     # skip freeing objects with null handles
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == __pyx_fuse_10__pyx_f_6mpi4py_3MPI_mpinull(__pyx_v_self->ob_mpi));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":426
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):
 *         return 0             # <<<<<<<<<<<<<<
 *     # since MPI-4, some objects can be freeded
 *     # before/after the world model init/finalize
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":425
 *         return 0
 *     # skip freeing objects with null handles
 *     if self.ob_mpi == mpinull(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return 0
 *     # since MPI-4, some objects can be freeded
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":437
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():
 *         return nullify(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *     # can safely free object
 *     return callfree(self)
 */
    __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_nullify(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 437, __pyx_L1_error)
    __pyx_r = __pyx_t_2;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":436
 *         return callfree(self)
 *     # skip freeing before/after init/finalize
 *     if not mpi_active():             # <<<<<<<<<<<<<<
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":439
 *         return nullify(self)  # ~> uncovered
 *     # can safely free object
 *     return callfree(self)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_callfree(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":420
 *     return 0
 * 
 * cdef inline int safefree(PyMPIClass self) except -1:             # <<<<<<<<<<<<<<
 *     # skip freeing module constant objects
 *     if self.flags & PyMPI_FLAGS_CONST:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.safefree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":445
 * # Status
 * 
 * cdef inline MPI_Status *arg_Status(object status) except? NULL:             # <<<<<<<<<<<<<<
 *     if status is None: return MPI_STATUS_IGNORE
 *     return &((<Status?>status).ob_mpi)
 */

static CYTHON_INLINE MPI_Status *__pyx_f_6mpi4py_3MPI_arg_Status(PyObject *__pyx_v_status) {
  MPI_Status *__pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":446
 * 
 * cdef inline MPI_Status *arg_Status(object status) except? NULL:
 *     if status is None: return MPI_STATUS_IGNORE             # <<<<<<<<<<<<<<
 *     return &((<Status?>status).ob_mpi)
 * 
 */
  __pyx_t_1 = (__pyx_v_status == Py_None);
  if (__pyx_t_1) {
    __pyx_r = MPI_STATUS_IGNORE;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":447
 * cdef inline MPI_Status *arg_Status(object status) except? NULL:
 *     if status is None: return MPI_STATUS_IGNORE
 *     return &((<Status?>status).ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_status, __pyx_ptype_6mpi4py_3MPI_Status)))) __PYX_ERR(1, 447, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIStatusObject *)__pyx_v_status)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":445
 * # Status
 * 
 * cdef inline MPI_Status *arg_Status(object status) except? NULL:             # <<<<<<<<<<<<<<
 *     if status is None: return MPI_STATUS_IGNORE
 *     return &((<Status?>status).ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.arg_Status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":453
 * # Datatype
 * 
 * cdef inline Datatype def_Datatype(MPI_Datatype arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_Datatype __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIDatatypeObject *__pyx_v_obj = 0;
  struct PyMPIDatatypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Datatype", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":454
 * 
 * cdef inline Datatype def_Datatype(MPI_Datatype arg, object name):
 *     cdef Datatype obj = Datatype.__new__(Datatype)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Datatype(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Datatype), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 454, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":455
 * cdef inline Datatype def_Datatype(MPI_Datatype arg, object name):
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":456
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":457
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 457, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":458
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef inline Datatype ref_Datatype(MPI_Datatype arg):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":453
 * # Datatype
 * 
 * cdef inline Datatype def_Datatype(MPI_Datatype arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":460
 *     return obj
 * 
 * cdef inline Datatype ref_Datatype(MPI_Datatype arg):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_ref_Datatype(MPI_Datatype __pyx_v_arg) {
  struct PyMPIDatatypeObject *__pyx_v_obj = 0;
  struct PyMPIDatatypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ref_Datatype", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":461
 * 
 * cdef inline Datatype ref_Datatype(MPI_Datatype arg):
 *     cdef Datatype obj = Datatype.__new__(Datatype)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     if not predefined(arg):
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Datatype(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Datatype), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 461, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":462
 * cdef inline Datatype ref_Datatype(MPI_Datatype arg):
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     if not predefined(arg):
 *         obj.flags |= 0  # TODO
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":463
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 *     if not predefined(arg):             # <<<<<<<<<<<<<<
 *         obj.flags |= 0  # TODO
 *     return obj
 */
  __pyx_t_2 = (!(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_arg) != 0));
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":464
 *     obj.ob_mpi = arg
 *     if not predefined(arg):
 *         obj.flags |= 0  # TODO             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
    __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

    /* "src/mpi4py/MPI.src/objmodel.pxi":463
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 *     if not predefined(arg):             # <<<<<<<<<<<<<<
 *         obj.flags |= 0  # TODO
 *     return obj
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":465
 *     if not predefined(arg):
 *         obj.flags |= 0  # TODO
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_Datatype(Datatype self):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":460
 *     return obj
 * 
 * cdef inline Datatype ref_Datatype(MPI_Datatype arg):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.ref_Datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":467
 *     return obj
 * 
 * cdef inline object reduce_Datatype(Datatype self):             # <<<<<<<<<<<<<<
 *     # named
 *     if named(self.ob_mpi):
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_reduce_Datatype(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_v_basetype = 0;
  PyObject *__pyx_v_combiner = 0;
  PyObject *__pyx_v_params = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  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;
  __Pyx_RefNannySetupContext("reduce_Datatype", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":469
 * cdef inline object reduce_Datatype(Datatype self):
 *     # named
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     # predefined and user-defined
 */
  __pyx_t_1 = (__pyx_fuse_0__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":470
 *     # named
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     # predefined and user-defined
 *     cdef object basetype, combiner, params
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 470, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":469
 * cdef inline object reduce_Datatype(Datatype self):
 *     # named
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     # predefined and user-defined
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":473
 *     # predefined and user-defined
 *     cdef object basetype, combiner, params
 *     basetype, combiner, params = datatype_decode(self, True)             # <<<<<<<<<<<<<<
 *     return (_datatype_create, (basetype, combiner, params, True))
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_datatype_decode(__pyx_v_self, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(__pyx_t_2 != Py_None)) {
    PyObject* sequence = __pyx_t_2;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(1, 473, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
    __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
    __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); 
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_5);
    #else
    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 473, __pyx_L1_error)
  }
  __pyx_v_basetype = __pyx_t_3;
  __pyx_t_3 = 0;
  __pyx_v_combiner = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_v_params = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":474
 *     cdef object basetype, combiner, params
 *     basetype, combiner, params = datatype_decode(self, True)
 *     return (_datatype_create, (basetype, combiner, params, True))             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_datatype_create); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_basetype);
  __Pyx_GIVEREF(__pyx_v_basetype);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_basetype)) __PYX_ERR(1, 474, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_combiner);
  __Pyx_GIVEREF(__pyx_v_combiner);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_combiner)) __PYX_ERR(1, 474, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_params);
  __Pyx_GIVEREF(__pyx_v_params);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_params)) __PYX_ERR(1, 474, __pyx_L1_error);
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 3, Py_True)) __PYX_ERR(1, 474, __pyx_L1_error);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(1, 474, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(1, 474, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":467
 *     return obj
 * 
 * cdef inline object reduce_Datatype(Datatype self):             # <<<<<<<<<<<<<<
 *     # named
 *     if named(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_Datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_basetype);
  __Pyx_XDECREF(__pyx_v_combiner);
  __Pyx_XDECREF(__pyx_v_params);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":480
 * # Request
 * 
 * cdef inline Request def_Request(MPI_Request arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIRequestObject *__pyx_f_6mpi4py_3MPI_def_Request(MPI_Request __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIRequestObject *__pyx_v_obj = 0;
  struct PyMPIRequestObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Request", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":481
 * 
 * cdef inline Request def_Request(MPI_Request arg, object name):
 *     cdef Request obj = Request.__new__(Request)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Request(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Request), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 481, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":482
 * cdef inline Request def_Request(MPI_Request arg, object name):
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":483
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":484
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 484, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":485
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":480
 * # Request
 * 
 * cdef inline Request def_Request(MPI_Request arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Request", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":491
 * # Message
 * 
 * cdef inline Message def_Message(MPI_Message arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIMessageObject *__pyx_f_6mpi4py_3MPI_def_Message(MPI_Message __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIMessageObject *__pyx_v_obj = 0;
  struct PyMPIMessageObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Message", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":492
 * 
 * cdef inline Message def_Message(MPI_Message arg, object name):
 *     cdef Message obj = Message.__new__(Message)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Message(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Message), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 492, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIMessageObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":493
 * cdef inline Message def_Message(MPI_Message arg, object name):
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":494
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":495
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 495, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":496
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":491
 * # Message
 * 
 * cdef inline Message def_Message(MPI_Message arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":504
 * cdef dict def_op = {}
 * 
 * cdef inline Op def_Op(MPI_Op arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIOpObject *__pyx_f_6mpi4py_3MPI_def_Op(MPI_Op __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIOpObject *__pyx_v_obj = 0;
  struct PyMPIOpObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Op", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":505
 * 
 * cdef inline Op def_Op(MPI_Op arg, object name):
 *     cdef Op obj = Op.__new__(Op)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Op(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Op), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 505, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIOpObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":506
 * cdef inline Op def_Op(MPI_Op arg, object name):
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":507
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":508
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 508, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":509
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_Op(Op self):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":504
 * cdef dict def_op = {}
 * 
 * cdef inline Op def_Op(MPI_Op arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Op", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":511
 *     return obj
 * 
 * cdef inline object reduce_Op(Op self):             # <<<<<<<<<<<<<<
 *     # predefined
 *     if named(self.ob_mpi):
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_reduce_Op(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_v_index;
  PyObject *__pyx_v_function = 0;
  PyObject *__pyx_v_commute = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reduce_Op", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":513
 * cdef inline object reduce_Op(Op self):
 *     # predefined
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     # user-defined
 */
  __pyx_t_1 = (__pyx_fuse_3__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":514
 *     # predefined
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     # user-defined
 *     cdef int index = op_user_id_get(self)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":513
 * cdef inline object reduce_Op(Op self):
 *     # predefined
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     # user-defined
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":516
 *         return def_reduce(self)
 *     # user-defined
 *     cdef int index = op_user_id_get(self)             # <<<<<<<<<<<<<<
 *     if index == 0:
 *         raise ValueError("cannot pickle user-defined reduction operation")
 */
  __pyx_v_index = __pyx_f_6mpi4py_3MPI_op_user_id_get(__pyx_v_self);

  /* "src/mpi4py/MPI.src/objmodel.pxi":517
 *     # user-defined
 *     cdef int index = op_user_id_get(self)
 *     if index == 0:             # <<<<<<<<<<<<<<
 *         raise ValueError("cannot pickle user-defined reduction operation")
 *     cdef object function = op_user_registry[index]
 */
  __pyx_t_1 = (__pyx_v_index == 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":518
 *     cdef int index = op_user_id_get(self)
 *     if index == 0:
 *         raise ValueError("cannot pickle user-defined reduction operation")             # <<<<<<<<<<<<<<
 *     cdef object function = op_user_registry[index]
 *     cdef object commute = self.Is_commutative()
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(1, 518, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/objmodel.pxi":517
 *     # user-defined
 *     cdef int index = op_user_id_get(self)
 *     if index == 0:             # <<<<<<<<<<<<<<
 *         raise ValueError("cannot pickle user-defined reduction operation")
 *     cdef object function = op_user_registry[index]
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":519
 *     if index == 0:
 *         raise ValueError("cannot pickle user-defined reduction operation")
 *     cdef object function = op_user_registry[index]             # <<<<<<<<<<<<<<
 *     cdef object commute = self.Is_commutative()
 *     return (type(self).Create, (function, commute,))
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_op_user_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(1, 519, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_function = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":520
 *         raise ValueError("cannot pickle user-defined reduction operation")
 *     cdef object function = op_user_registry[index]
 *     cdef object commute = self.Is_commutative()             # <<<<<<<<<<<<<<
 *     return (type(self).Create, (function, commute,))
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Is_commutative); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_v_commute = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":521
 *     cdef object function = op_user_registry[index]
 *     cdef object commute = self.Is_commutative()
 *     return (type(self).Create, (function, commute,))             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_Create); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_function);
  __Pyx_GIVEREF(__pyx_v_function);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_function)) __PYX_ERR(1, 521, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_commute);
  __Pyx_GIVEREF(__pyx_v_commute);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_commute)) __PYX_ERR(1, 521, __pyx_L1_error);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(1, 521, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(1, 521, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":511
 *     return obj
 * 
 * cdef inline object reduce_Op(Op self):             # <<<<<<<<<<<<<<
 *     # predefined
 *     if named(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_Op", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_function);
  __Pyx_XDECREF(__pyx_v_commute);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":527
 * # Group
 * 
 * cdef inline Group def_Group(MPI_Group arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIGroupObject *__pyx_f_6mpi4py_3MPI_def_Group(MPI_Group __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIGroupObject *__pyx_v_obj = 0;
  struct PyMPIGroupObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Group", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":528
 * 
 * cdef inline Group def_Group(MPI_Group arg, object name):
 *     cdef Group obj = Group.__new__(Group)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Group(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Group), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 528, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":529
 * cdef inline Group def_Group(MPI_Group arg, object name):
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":530
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":531
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 531, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":532
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":527
 * # Group
 * 
 * cdef inline Group def_Group(MPI_Group arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":538
 * # Info
 * 
 * cdef inline Info def_Info(MPI_Info arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIInfoObject *__pyx_f_6mpi4py_3MPI_def_Info(MPI_Info __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIInfoObject *__pyx_v_obj = 0;
  struct PyMPIInfoObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Info", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":539
 * 
 * cdef inline Info def_Info(MPI_Info arg, object name):
 *     cdef Info obj = Info.__new__(Info)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Info(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Info), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 539, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":540
 * cdef inline Info def_Info(MPI_Info arg, object name):
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":541
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":542
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 542, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":543
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":538
 * # Info
 * 
 * cdef inline Info def_Info(MPI_Info arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":549
 *     const MPI_Info _info_null "MPI_INFO_NULL"
 * 
 * cdef inline MPI_Info arg_Info(object obj) except? _info_null:             # <<<<<<<<<<<<<<
 *     if obj is None: return MPI_INFO_NULL
 *     return (<Info?>obj).ob_mpi
 */

static CYTHON_INLINE MPI_Info __pyx_f_6mpi4py_3MPI_arg_Info(PyObject *__pyx_v_obj) {
  MPI_Info __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":550
 * 
 * cdef inline MPI_Info arg_Info(object obj) except? _info_null:
 *     if obj is None: return MPI_INFO_NULL             # <<<<<<<<<<<<<<
 *     return (<Info?>obj).ob_mpi
 * 
 */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
    __pyx_r = MPI_INFO_NULL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":551
 * cdef inline MPI_Info arg_Info(object obj) except? _info_null:
 *     if obj is None: return MPI_INFO_NULL
 *     return (<Info?>obj).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * cdef inline object reduce_Info(Info self):
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_obj, __pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(1, 551, __pyx_L1_error)
  __pyx_r = ((struct PyMPIInfoObject *)__pyx_v_obj)->ob_mpi;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":549
 *     const MPI_Info _info_null "MPI_INFO_NULL"
 * 
 * cdef inline MPI_Info arg_Info(object obj) except? _info_null:             # <<<<<<<<<<<<<<
 *     if obj is None: return MPI_INFO_NULL
 *     return (<Info?>obj).ob_mpi
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.arg_Info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = MPI_INFO_NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":553
 *     return (<Info?>obj).ob_mpi
 * 
 * cdef inline object reduce_Info(Info self):             # <<<<<<<<<<<<<<
 *     # predefined
 *     if named(self.ob_mpi):
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_reduce_Info(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reduce_Info", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":555
 * cdef inline object reduce_Info(Info self):
 *     # predefined
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     # user-defined
 */
  __pyx_t_1 = (__pyx_fuse_5__pyx_f_6mpi4py_3MPI_named(__pyx_v_self->ob_mpi) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":556
 *     # predefined
 *     if named(self.ob_mpi):
 *         return def_reduce(self)             # <<<<<<<<<<<<<<
 *     # user-defined
 *     return (type(self).Create, (self.items(),))
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_def_reduce(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":555
 * cdef inline object reduce_Info(Info self):
 *     # predefined
 *     if named(self.ob_mpi):             # <<<<<<<<<<<<<<
 *         return def_reduce(self)
 *     # user-defined
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":558
 *         return def_reduce(self)
 *     # user-defined
 *     return (type(self).Create, (self.items(),))             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_Create); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3)) __PYX_ERR(1, 558, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(1, 558, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(1, 558, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":553
 *     return (<Info?>obj).ob_mpi
 * 
 * cdef inline object reduce_Info(Info self):             # <<<<<<<<<<<<<<
 *     # predefined
 *     if named(self.ob_mpi):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.reduce_Info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":564
 * # Errhandler
 * 
 * cdef inline Errhandler def_Errhandler(MPI_Errhandler arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIErrhandlerObject *__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_Errhandler __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIErrhandlerObject *__pyx_v_obj = 0;
  struct PyMPIErrhandlerObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Errhandler", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":565
 * 
 * cdef inline Errhandler def_Errhandler(MPI_Errhandler arg, object name):
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Errhandler(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 565, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":566
 * cdef inline Errhandler def_Errhandler(MPI_Errhandler arg, object name):
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":567
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":568
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 568, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":569
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef extern from *:
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":564
 * # Errhandler
 * 
 * cdef inline Errhandler def_Errhandler(MPI_Errhandler arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":574
 *     const MPI_Errhandler _errhandler_null "MPI_ERRHANDLER_NULL"
 * 
 * cdef inline MPI_Errhandler arg_Errhandler(object obj) except? _errhandler_null:             # <<<<<<<<<<<<<<
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi
 *     cdef int opt = options.errors
 */

static CYTHON_INLINE MPI_Errhandler __pyx_f_6mpi4py_3MPI_arg_Errhandler(PyObject *__pyx_v_obj) {
  int __pyx_v_opt;
  MPI_Errhandler __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":575
 * 
 * cdef inline MPI_Errhandler arg_Errhandler(object obj) except? _errhandler_null:
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi             # <<<<<<<<<<<<<<
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 */
  __pyx_t_1 = (__pyx_v_obj != Py_None);
  if (__pyx_t_1) {
    if (!(likely(__Pyx_TypeTest(__pyx_v_obj, __pyx_ptype_6mpi4py_3MPI_Errhandler)))) __PYX_ERR(1, 575, __pyx_L1_error)
    __pyx_r = ((struct PyMPIErrhandlerObject *)__pyx_v_obj)->ob_mpi;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":576
 * cdef inline MPI_Errhandler arg_Errhandler(object obj) except? _errhandler_null:
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi
 *     cdef int opt = options.errors             # <<<<<<<<<<<<<<
 *     if   opt == 0: pass
 *     elif opt == 1: return MPI_ERRORS_RETURN
 */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_options.errors;
  __pyx_v_opt = __pyx_t_2;

  /* "src/mpi4py/MPI.src/objmodel.pxi":577
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi
 *     cdef int opt = options.errors
 *     if   opt == 0: pass             # <<<<<<<<<<<<<<
 *     elif opt == 1: return MPI_ERRORS_RETURN
 *     elif opt == 2: return MPI_ERRORS_ABORT
 */
  __pyx_t_1 = (__pyx_v_opt == 0);
  if (__pyx_t_1) {
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":578
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 *     elif opt == 1: return MPI_ERRORS_RETURN             # <<<<<<<<<<<<<<
 *     elif opt == 2: return MPI_ERRORS_ABORT
 *     elif opt == 3: return MPI_ERRORS_ARE_FATAL
 */
  __pyx_t_1 = (__pyx_v_opt == 1);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERRORS_RETURN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":579
 *     if   opt == 0: pass
 *     elif opt == 1: return MPI_ERRORS_RETURN
 *     elif opt == 2: return MPI_ERRORS_ABORT             # <<<<<<<<<<<<<<
 *     elif opt == 3: return MPI_ERRORS_ARE_FATAL
 *     return MPI_ERRORS_ARE_FATAL
 */
  __pyx_t_1 = (__pyx_v_opt == 2);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERRORS_ABORT;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":580
 *     elif opt == 1: return MPI_ERRORS_RETURN
 *     elif opt == 2: return MPI_ERRORS_ABORT
 *     elif opt == 3: return MPI_ERRORS_ARE_FATAL             # <<<<<<<<<<<<<<
 *     return MPI_ERRORS_ARE_FATAL
 * 
 */
  __pyx_t_1 = (__pyx_v_opt == 3);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERRORS_ARE_FATAL;
    goto __pyx_L0;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/objmodel.pxi":581
 *     elif opt == 2: return MPI_ERRORS_ABORT
 *     elif opt == 3: return MPI_ERRORS_ARE_FATAL
 *     return MPI_ERRORS_ARE_FATAL             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = MPI_ERRORS_ARE_FATAL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":574
 *     const MPI_Errhandler _errhandler_null "MPI_ERRHANDLER_NULL"
 * 
 * cdef inline MPI_Errhandler arg_Errhandler(object obj) except? _errhandler_null:             # <<<<<<<<<<<<<<
 *     if obj is not None: return (<Errhandler?>obj).ob_mpi
 *     cdef int opt = options.errors
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.arg_Errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = MPI_ERRHANDLER_NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":587
 * # Session
 * 
 * cdef inline Session def_Session(MPI_Session arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPISessionObject *__pyx_f_6mpi4py_3MPI_def_Session(MPI_Session __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPISessionObject *__pyx_v_obj = 0;
  struct PyMPISessionObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Session", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":588
 * 
 * cdef inline Session def_Session(MPI_Session arg, object name):
 *     cdef Session obj = Session.__new__(Session)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Session(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Session), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 588, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPISessionObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":589
 * cdef inline Session def_Session(MPI_Session arg, object name):
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":590
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":591
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 591, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":592
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":587
 * # Session
 * 
 * cdef inline Session def_Session(MPI_Session arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Session", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":598
 * # Comm
 * 
 * cdef inline type CommType(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_NULL:
 *         return Comm
 */

static CYTHON_INLINE PyTypeObject *__pyx_f_6mpi4py_3MPI_CommType(MPI_Comm __pyx_v_arg) {
  int __pyx_v_inter;
  int __pyx_v_topo;
  PyTypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("CommType", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":599
 * 
 * cdef inline type CommType(MPI_Comm arg):
 *     if arg == MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *         return Comm
 *     if arg == MPI_COMM_SELF:
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMM_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":600
 * cdef inline type CommType(MPI_Comm arg):
 *     if arg == MPI_COMM_NULL:
 *         return Comm             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_SELF:
 *         return Intracomm
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Comm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":599
 * 
 * cdef inline type CommType(MPI_Comm arg):
 *     if arg == MPI_COMM_NULL:             # <<<<<<<<<<<<<<
 *         return Comm
 *     if arg == MPI_COMM_SELF:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":601
 *     if arg == MPI_COMM_NULL:
 *         return Comm
 *     if arg == MPI_COMM_SELF:             # <<<<<<<<<<<<<<
 *         return Intracomm
 *     if arg == MPI_COMM_WORLD:
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMM_SELF);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":602
 *         return Comm
 *     if arg == MPI_COMM_SELF:
 *         return Intracomm             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_WORLD:
 *         return Intracomm
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Intracomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":601
 *     if arg == MPI_COMM_NULL:
 *         return Comm
 *     if arg == MPI_COMM_SELF:             # <<<<<<<<<<<<<<
 *         return Intracomm
 *     if arg == MPI_COMM_WORLD:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":603
 *     if arg == MPI_COMM_SELF:
 *         return Intracomm
 *     if arg == MPI_COMM_WORLD:             # <<<<<<<<<<<<<<
 *         return Intracomm
 *     cdef int inter = 0
 */
  __pyx_t_1 = (__pyx_v_arg == MPI_COMM_WORLD);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":604
 *         return Intracomm
 *     if arg == MPI_COMM_WORLD:
 *         return Intracomm             # <<<<<<<<<<<<<<
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(arg, &inter) )
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Intracomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":603
 *     if arg == MPI_COMM_SELF:
 *         return Intracomm
 *     if arg == MPI_COMM_WORLD:             # <<<<<<<<<<<<<<
 *         return Intracomm
 *     cdef int inter = 0
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":605
 *     if arg == MPI_COMM_WORLD:
 *         return Intracomm
 *     cdef int inter = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":606
 *         return Intracomm
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(arg, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         return Intercomm
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_arg, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 606, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":607
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         return Intercomm
 *     cdef int topo  = MPI_UNDEFINED
 */
  __pyx_t_1 = (__pyx_v_inter != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":608
 *     CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *     if inter:
 *         return Intercomm             # <<<<<<<<<<<<<<
 *     cdef int topo  = MPI_UNDEFINED
 *     CHKERR( MPI_Topo_test(arg, &topo) )
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Intercomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":607
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(arg, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         return Intercomm
 *     cdef int topo  = MPI_UNDEFINED
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":609
 *     if inter:
 *         return Intercomm
 *     cdef int topo  = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Topo_test(arg, &topo) )
 *     if topo == MPI_UNDEFINED:
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/objmodel.pxi":610
 *         return Intercomm
 *     cdef int topo  = MPI_UNDEFINED
 *     CHKERR( MPI_Topo_test(arg, &topo) )             # <<<<<<<<<<<<<<
 *     if topo == MPI_UNDEFINED:
 *         return Intracomm
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_arg, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 610, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":611
 *     cdef int topo  = MPI_UNDEFINED
 *     CHKERR( MPI_Topo_test(arg, &topo) )
 *     if topo == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *         return Intracomm
 *     if topo == MPI_CART:
 */
  __pyx_t_1 = (__pyx_v_topo == MPI_UNDEFINED);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":612
 *     CHKERR( MPI_Topo_test(arg, &topo) )
 *     if topo == MPI_UNDEFINED:
 *         return Intracomm             # <<<<<<<<<<<<<<
 *     if topo == MPI_CART:
 *         return Cartcomm
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Intracomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":611
 *     cdef int topo  = MPI_UNDEFINED
 *     CHKERR( MPI_Topo_test(arg, &topo) )
 *     if topo == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *         return Intracomm
 *     if topo == MPI_CART:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":613
 *     if topo == MPI_UNDEFINED:
 *         return Intracomm
 *     if topo == MPI_CART:             # <<<<<<<<<<<<<<
 *         return Cartcomm
 *     if topo == MPI_GRAPH:
 */
  __pyx_t_1 = (__pyx_v_topo == MPI_CART);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":614
 *         return Intracomm
 *     if topo == MPI_CART:
 *         return Cartcomm             # <<<<<<<<<<<<<<
 *     if topo == MPI_GRAPH:
 *         return Graphcomm
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Cartcomm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Cartcomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":613
 *     if topo == MPI_UNDEFINED:
 *         return Intracomm
 *     if topo == MPI_CART:             # <<<<<<<<<<<<<<
 *         return Cartcomm
 *     if topo == MPI_GRAPH:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":615
 *     if topo == MPI_CART:
 *         return Cartcomm
 *     if topo == MPI_GRAPH:             # <<<<<<<<<<<<<<
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:
 */
  __pyx_t_1 = (__pyx_v_topo == MPI_GRAPH);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":616
 *         return Cartcomm
 *     if topo == MPI_GRAPH:
 *         return Graphcomm             # <<<<<<<<<<<<<<
 *     if topo == MPI_DIST_GRAPH:
 *         return Distgraphcomm
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Graphcomm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Graphcomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":615
 *     if topo == MPI_CART:
 *         return Cartcomm
 *     if topo == MPI_GRAPH:             # <<<<<<<<<<<<<<
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":617
 *     if topo == MPI_GRAPH:
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *         return Distgraphcomm
 *     return Comm  # ~> unreachable
 */
  __pyx_t_1 = (__pyx_v_topo == MPI_DIST_GRAPH);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":618
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:
 *         return Distgraphcomm             # <<<<<<<<<<<<<<
 *     return Comm  # ~> unreachable
 * 
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);
    __pyx_r = __pyx_ptype_6mpi4py_3MPI_Distgraphcomm;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":617
 *     if topo == MPI_GRAPH:
 *         return Graphcomm
 *     if topo == MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *         return Distgraphcomm
 *     return Comm  # ~> unreachable
 */
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":619
 *     if topo == MPI_DIST_GRAPH:
 *         return Distgraphcomm
 *     return Comm  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 * cdef inline Comm def_Comm(MPI_Comm arg, object name):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_r = __pyx_ptype_6mpi4py_3MPI_Comm;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":598
 * # Comm
 * 
 * cdef inline type CommType(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     if arg == MPI_COMM_NULL:
 *         return Comm
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.CommType", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":621
 *     return Comm  # ~> unreachable
 * 
 * cdef inline Comm def_Comm(MPI_Comm arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Comm obj = Comm.__new__(Comm)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPICommObject *__pyx_f_6mpi4py_3MPI_def_Comm(MPI_Comm __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPICommObject *__pyx_v_obj = 0;
  struct PyMPICommObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Comm", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":622
 * 
 * cdef inline Comm def_Comm(MPI_Comm arg, object name):
 *     cdef Comm obj = Comm.__new__(Comm)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Comm(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Comm), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPICommObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":623
 * cdef inline Comm def_Comm(MPI_Comm arg, object name):
 *     cdef Comm obj = Comm.__new__(Comm)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":624
 *     cdef Comm obj = Comm.__new__(Comm)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":625
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 625, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":626
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef inline Intracomm def_Intracomm(MPI_Comm arg, object name):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":621
 *     return Comm  # ~> unreachable
 * 
 * cdef inline Comm def_Comm(MPI_Comm arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Comm obj = Comm.__new__(Comm)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Comm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":628
 *     return obj
 * 
 * cdef inline Intracomm def_Intracomm(MPI_Comm arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Intracomm obj = Intracomm.__new__(Intracomm)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIIntracommObject *__pyx_f_6mpi4py_3MPI_def_Intracomm(MPI_Comm __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIIntracommObject *__pyx_v_obj = 0;
  struct PyMPIIntracommObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Intracomm", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":629
 * 
 * cdef inline Intracomm def_Intracomm(MPI_Comm arg, object name):
 *     cdef Intracomm obj = Intracomm.__new__(Intracomm)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Intracomm(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 629, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":630
 * cdef inline Intracomm def_Intracomm(MPI_Comm arg, object name):
 *     cdef Intracomm obj = Intracomm.__new__(Intracomm)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->__pyx_base.ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":631
 *     cdef Intracomm obj = Intracomm.__new__(Intracomm)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->__pyx_base.flags = (__pyx_v_obj->__pyx_base.flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":632
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 632, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":633
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef inline Intercomm def_Intercomm(MPI_Comm arg):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":628
 *     return obj
 * 
 * cdef inline Intracomm def_Intracomm(MPI_Comm arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Intracomm obj = Intracomm.__new__(Intracomm)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Intracomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":635
 *     return obj
 * 
 * cdef inline Intercomm def_Intercomm(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     cdef Intercomm obj = Intercomm.__new__(Intercomm)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIIntercommObject *__pyx_f_6mpi4py_3MPI_def_Intercomm(MPI_Comm __pyx_v_arg) {
  struct PyMPIIntercommObject *__pyx_v_obj = 0;
  struct PyMPIIntercommObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Intercomm", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":636
 * 
 * cdef inline Intercomm def_Intercomm(MPI_Comm arg):
 *     cdef Intercomm obj = Intercomm.__new__(Intercomm)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Intercomm(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 636, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIIntercommObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":637
 * cdef inline Intercomm def_Intercomm(MPI_Comm arg):
 *     cdef Intercomm obj = Intercomm.__new__(Intercomm)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     return obj
 */
  __pyx_v_obj->__pyx_base.ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":638
 *     cdef Intercomm obj = Intercomm.__new__(Intercomm)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->__pyx_base.flags = (__pyx_v_obj->__pyx_base.flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":639
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":635
 *     return obj
 * 
 * cdef inline Intercomm def_Intercomm(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     cdef Intercomm obj = Intercomm.__new__(Intercomm)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Intercomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":645
 * # Win
 * 
 * cdef inline Win def_Win(MPI_Win arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIWinObject *__pyx_f_6mpi4py_3MPI_def_Win(MPI_Win __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIWinObject *__pyx_v_obj = 0;
  struct PyMPIWinObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_Win", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":646
 * 
 * cdef inline Win def_Win(MPI_Win arg, object name):
 *     cdef Win obj = Win.__new__(Win)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Win(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Win), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 646, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIWinObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":647
 * cdef inline Win def_Win(MPI_Win arg, object name):
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":648
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":649
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 649, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":650
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":645
 * # Win
 * 
 * cdef inline Win def_Win(MPI_Win arg, object name):             # <<<<<<<<<<<<<<
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_Win", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/objmodel.pxi":656
 * # File
 * 
 * cdef inline File def_File(MPI_File arg, object name):             # <<<<<<<<<<<<<<
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg
 */

static CYTHON_INLINE struct PyMPIFileObject *__pyx_f_6mpi4py_3MPI_def_File(MPI_File __pyx_v_arg, PyObject *__pyx_v_name) {
  struct PyMPIFileObject *__pyx_v_obj = 0;
  struct PyMPIFileObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("def_File", 1);

  /* "src/mpi4py/MPI.src/objmodel.pxi":657
 * 
 * cdef inline File def_File(MPI_File arg, object name):
 *     cdef File obj = File.__new__(File)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_File(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_File), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 657, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIFileObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":658
 * cdef inline File def_File(MPI_File arg, object name):
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/objmodel.pxi":659
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST             # <<<<<<<<<<<<<<
 *     def_register(arg, obj, name)
 *     return obj
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | PyMPI_FLAGS_CONST);

  /* "src/mpi4py/MPI.src/objmodel.pxi":660
 *     obj.ob_mpi = arg
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_def_register(__pyx_v_arg, ((PyObject *)__pyx_v_obj), __pyx_v_name); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 660, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":661
 *     obj.flags |= PyMPI_FLAGS_CONST
 *     def_register(arg, obj, name)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":656
 * # File
 * 
 * cdef inline File def_File(MPI_File arg, object name):             # <<<<<<<<<<<<<<
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.def_File", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":20
 *     cdef object lock
 * 
 *     def __cinit__(self, copy_fn, delete_fn, nopython):             # <<<<<<<<<<<<<<
 *         if copy_fn   is False: copy_fn   = None
 *         if delete_fn is False: delete_fn = None
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_delete_fn = 0;
  PyObject *__pyx_v_nopython = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_copy_fn,&__pyx_n_s_delete_fn,&__pyx_n_s_nopython,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_copy_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 20, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_delete_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(6, 20, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nopython)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(6, 20, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(6, 20, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
    }
    __pyx_v_copy_fn = values[0];
    __pyx_v_delete_fn = values[1];
    __pyx_v_nopython = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(6, 20, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._p_keyval.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self), __pyx_v_copy_fn, __pyx_v_delete_fn, __pyx_v_nopython);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9_p_keyval___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);
  __Pyx_INCREF(__pyx_v_copy_fn);
  __Pyx_INCREF(__pyx_v_delete_fn);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":21
 * 
 *     def __cinit__(self, copy_fn, delete_fn, nopython):
 *         if copy_fn   is False: copy_fn   = None             # <<<<<<<<<<<<<<
 *         if delete_fn is False: delete_fn = None
 *         if delete_fn is True:  delete_fn = None
 */
  __pyx_t_1 = (__pyx_v_copy_fn == Py_False);
  if (__pyx_t_1) {
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_copy_fn, Py_None);
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":22
 *     def __cinit__(self, copy_fn, delete_fn, nopython):
 *         if copy_fn   is False: copy_fn   = None
 *         if delete_fn is False: delete_fn = None             # <<<<<<<<<<<<<<
 *         if delete_fn is True:  delete_fn = None
 *         self.copy_fn   = copy_fn
 */
  __pyx_t_1 = (__pyx_v_delete_fn == Py_False);
  if (__pyx_t_1) {
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_delete_fn, Py_None);
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":23
 *         if copy_fn   is False: copy_fn   = None
 *         if delete_fn is False: delete_fn = None
 *         if delete_fn is True:  delete_fn = None             # <<<<<<<<<<<<<<
 *         self.copy_fn   = copy_fn
 *         self.delete_fn = delete_fn
 */
  __pyx_t_1 = (__pyx_v_delete_fn == Py_True);
  if (__pyx_t_1) {
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_delete_fn, Py_None);
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":24
 *         if delete_fn is False: delete_fn = None
 *         if delete_fn is True:  delete_fn = None
 *         self.copy_fn   = copy_fn             # <<<<<<<<<<<<<<
 *         self.delete_fn = delete_fn
 *         self.nopython  = nopython
 */
  __Pyx_INCREF(__pyx_v_copy_fn);
  __Pyx_GIVEREF(__pyx_v_copy_fn);
  __Pyx_GOTREF(__pyx_v_self->copy_fn);
  __Pyx_DECREF(__pyx_v_self->copy_fn);
  __pyx_v_self->copy_fn = __pyx_v_copy_fn;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":25
 *         if delete_fn is True:  delete_fn = None
 *         self.copy_fn   = copy_fn
 *         self.delete_fn = delete_fn             # <<<<<<<<<<<<<<
 *         self.nopython  = nopython
 *         self.ierr = MPI_SUCCESS
 */
  __Pyx_INCREF(__pyx_v_delete_fn);
  __Pyx_GIVEREF(__pyx_v_delete_fn);
  __Pyx_GOTREF(__pyx_v_self->delete_fn);
  __Pyx_DECREF(__pyx_v_self->delete_fn);
  __pyx_v_self->delete_fn = __pyx_v_delete_fn;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":26
 *         self.copy_fn   = copy_fn
 *         self.delete_fn = delete_fn
 *         self.nopython  = nopython             # <<<<<<<<<<<<<<
 *         self.ierr = MPI_SUCCESS
 *         self.lock = RLock()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_nopython); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 26, __pyx_L1_error)
  __pyx_v_self->nopython = __pyx_t_1;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":27
 *         self.delete_fn = delete_fn
 *         self.nopython  = nopython
 *         self.ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         self.lock = RLock()
 * 
 */
  __pyx_v_self->ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":28
 *         self.nopython  = nopython
 *         self.ierr = MPI_SUCCESS
 *         self.lock = RLock()             # <<<<<<<<<<<<<<
 * 
 * cdef object keyval_lock_type = Lock()
 */
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_RLock);
  __pyx_t_3 = __pyx_v_6mpi4py_3MPI_RLock; __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->lock);
  __Pyx_DECREF(__pyx_v_self->lock);
  __pyx_v_self->lock = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":20
 *     cdef object lock
 * 
 *     def __cinit__(self, copy_fn, delete_fn, nopython):             # <<<<<<<<<<<<<<
 *         if copy_fn   is False: copy_fn   = None
 *         if delete_fn is False: delete_fn = None
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_keyval.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_copy_fn);
  __Pyx_XDECREF(__pyx_v_delete_fn);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":14
 * cdef class _p_keyval:
 * 
 *     cdef public object copy_fn             # <<<<<<<<<<<<<<
 *     cdef public object delete_fn
 *     cdef public bint   nopython
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn___get__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn___get__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->copy_fn);
  __pyx_r = __pyx_v_self->copy_fn;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn_2__set__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn_2__set__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->copy_fn);
  __Pyx_DECREF(__pyx_v_self->copy_fn);
  __pyx_v_self->copy_fn = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn_4__del__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_7copy_fn_4__del__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->copy_fn);
  __Pyx_DECREF(__pyx_v_self->copy_fn);
  __pyx_v_self->copy_fn = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":15
 * 
 *     cdef public object copy_fn
 *     cdef public object delete_fn             # <<<<<<<<<<<<<<
 *     cdef public bint   nopython
 *     cdef int    ierr
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn___get__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn___get__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->delete_fn);
  __pyx_r = __pyx_v_self->delete_fn;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn_2__set__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn_2__set__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 1);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->delete_fn);
  __Pyx_DECREF(__pyx_v_self->delete_fn);
  __pyx_v_self->delete_fn = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn_4__del__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_9delete_fn_4__del__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->delete_fn);
  __Pyx_DECREF(__pyx_v_self->delete_fn);
  __pyx_v_self->delete_fn = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":16
 *     cdef public object copy_fn
 *     cdef public object delete_fn
 *     cdef public bint   nopython             # <<<<<<<<<<<<<<
 *     cdef int    ierr
 *     cdef object lock
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9_p_keyval_8nopython_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9_p_keyval_8nopython_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_8nopython___get__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9_p_keyval_8nopython___get__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->nopython); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_keyval.nopython.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_8nopython_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9_p_keyval_8nopython_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_keyval_8nopython_2__set__(((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9_p_keyval_8nopython_2__set__(struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 16, __pyx_L1_error)
  __pyx_v_self->nopython = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_keyval.nopython.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":52
 * 
 * 
 * cdef inline object PyMPI_attr_call(             # <<<<<<<<<<<<<<
 *     object function,
 *     PyMPI_attr_type hdl,
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(PyObject *__pyx_v_function, MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  PyObject *__pyx_v_handle = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  char const *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_call", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":61
 *     cdef object result
 *     if PyMPI_attr_type is MPI_Datatype:
 *         handle = fromhandle(hdl)             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Comm:
 *         handle = fromhandle(hdl)
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_fromhandle(__pyx_v_hdl); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_handle = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":66
 *     if PyMPI_attr_type is MPI_Win:
 *         handle = fromhandle(hdl)
 *     try:             # <<<<<<<<<<<<<<
 *         result = function(handle, keyval, attrval)
 *     finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":67
 *         handle = fromhandle(hdl)
 *     try:
 *         result = function(handle, keyval, attrval)             # <<<<<<<<<<<<<<
 *     finally:
 *         if False: pass
 */
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 67, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_function);
    __pyx_t_3 = __pyx_v_function; __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_handle, __pyx_t_2, __pyx_v_attrval};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 67, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":69
 *         result = function(handle, keyval, attrval)
 *     finally:
 *         if False: pass             # <<<<<<<<<<<<<<
 *         elif PyMPI_attr_type is MPI_Datatype:
 *             (<Datatype>handle).ob_mpi = MPI_DATATYPE_NULL
 */
  /*finally:*/ {
    /*normal exit:*/{

      /* "src/mpi4py/MPI.src/attrimpl.pxi":71
 *         if False: pass
 *         elif PyMPI_attr_type is MPI_Datatype:
 *             (<Datatype>handle).ob_mpi = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         elif PyMPI_attr_type is MPI_Comm:
 *             (<Comm>handle).ob_mpi = MPI_COMM_NULL
 */
      ((struct PyMPIDatatypeObject *)__pyx_v_handle)->ob_mpi = MPI_DATATYPE_NULL;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
      {
        ((struct PyMPIDatatypeObject *)__pyx_v_handle)->ob_mpi = MPI_DATATYPE_NULL;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":76
 *         elif PyMPI_attr_type is MPI_Win:
 *             (<Win>handle).ob_mpi = MPI_WIN_NULL
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":52
 * 
 * 
 * cdef inline object PyMPI_attr_call(             # <<<<<<<<<<<<<<
 *     object function,
 *     PyMPI_attr_type hdl,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(PyObject *__pyx_v_function, MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  PyObject *__pyx_v_handle = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  char const *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_call", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":63
 *         handle = fromhandle(hdl)
 *     if PyMPI_attr_type is MPI_Comm:
 *         handle = fromhandle(hdl)             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Win:
 *         handle = fromhandle(hdl)
 */
  __pyx_t_1 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_fromhandle(__pyx_v_hdl); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_handle = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":66
 *     if PyMPI_attr_type is MPI_Win:
 *         handle = fromhandle(hdl)
 *     try:             # <<<<<<<<<<<<<<
 *         result = function(handle, keyval, attrval)
 *     finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":67
 *         handle = fromhandle(hdl)
 *     try:
 *         result = function(handle, keyval, attrval)             # <<<<<<<<<<<<<<
 *     finally:
 *         if False: pass
 */
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 67, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_function);
    __pyx_t_3 = __pyx_v_function; __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_handle, __pyx_t_2, __pyx_v_attrval};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 67, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":69
 *         result = function(handle, keyval, attrval)
 *     finally:
 *         if False: pass             # <<<<<<<<<<<<<<
 *         elif PyMPI_attr_type is MPI_Datatype:
 *             (<Datatype>handle).ob_mpi = MPI_DATATYPE_NULL
 */
  /*finally:*/ {
    /*normal exit:*/{

      /* "src/mpi4py/MPI.src/attrimpl.pxi":73
 *             (<Datatype>handle).ob_mpi = MPI_DATATYPE_NULL
 *         elif PyMPI_attr_type is MPI_Comm:
 *             (<Comm>handle).ob_mpi = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 *         elif PyMPI_attr_type is MPI_Win:
 *             (<Win>handle).ob_mpi = MPI_WIN_NULL
 */
      ((struct PyMPICommObject *)__pyx_v_handle)->ob_mpi = MPI_COMM_NULL;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
      {
        ((struct PyMPICommObject *)__pyx_v_handle)->ob_mpi = MPI_COMM_NULL;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":76
 *         elif PyMPI_attr_type is MPI_Win:
 *             (<Win>handle).ob_mpi = MPI_WIN_NULL
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":52
 * 
 * 
 * cdef inline object PyMPI_attr_call(             # <<<<<<<<<<<<<<
 *     object function,
 *     PyMPI_attr_type hdl,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(PyObject *__pyx_v_function, MPI_Win __pyx_v_hdl, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  PyObject *__pyx_v_handle = 0;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  char const *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_call", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":65
 *         handle = fromhandle(hdl)
 *     if PyMPI_attr_type is MPI_Win:
 *         handle = fromhandle(hdl)             # <<<<<<<<<<<<<<
 *     try:
 *         result = function(handle, keyval, attrval)
 */
  __pyx_t_1 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_fromhandle(__pyx_v_hdl); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_handle = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":66
 *     if PyMPI_attr_type is MPI_Win:
 *         handle = fromhandle(hdl)
 *     try:             # <<<<<<<<<<<<<<
 *         result = function(handle, keyval, attrval)
 *     finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":67
 *         handle = fromhandle(hdl)
 *     try:
 *         result = function(handle, keyval, attrval)             # <<<<<<<<<<<<<<
 *     finally:
 *         if False: pass
 */
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 67, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_function);
    __pyx_t_3 = __pyx_v_function; __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_handle, __pyx_t_2, __pyx_v_attrval};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 67, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_result = __pyx_t_1;
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":69
 *         result = function(handle, keyval, attrval)
 *     finally:
 *         if False: pass             # <<<<<<<<<<<<<<
 *         elif PyMPI_attr_type is MPI_Datatype:
 *             (<Datatype>handle).ob_mpi = MPI_DATATYPE_NULL
 */
  /*finally:*/ {
    /*normal exit:*/{

      /* "src/mpi4py/MPI.src/attrimpl.pxi":75
 *             (<Comm>handle).ob_mpi = MPI_COMM_NULL
 *         elif PyMPI_attr_type is MPI_Win:
 *             (<Win>handle).ob_mpi = MPI_WIN_NULL             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
      ((struct PyMPIWinObject *)__pyx_v_handle)->ob_mpi = MPI_WIN_NULL;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
      {
        ((struct PyMPIWinObject *)__pyx_v_handle)->ob_mpi = MPI_WIN_NULL;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":76
 *         elif PyMPI_attr_type is MPI_Win:
 *             (<Win>handle).ob_mpi = MPI_WIN_NULL
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":52
 * 
 * 
 * cdef inline object PyMPI_attr_call(             # <<<<<<<<<<<<<<
 *     object function,
 *     PyMPI_attr_type hdl,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_handle);
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":79
 * 
 * 
 * cdef inline int PyMPI_attr_copy(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_v_p;
  PyObject *__pyx_v_attrval = 0;
  void **__pyx_v_outval;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  void *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_copy", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":87
 *     int *flag,
 * ) except -1:
 *     if flag != NULL: flag[0] = 0             # <<<<<<<<<<<<<<
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":88
 * ) except -1:
 *     if flag != NULL: flag[0] = 0
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":89
 *     if flag != NULL: flag[0] = 0
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0             # <<<<<<<<<<<<<<
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError
 */
  __pyx_t_1 = (__pyx_v_state->copy_fn == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":90
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython             # <<<<<<<<<<<<<<
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 */
  __pyx_v_p = (!__pyx_v_state->nopython);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":91
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError             # <<<<<<<<<<<<<<
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 */
  __pyx_t_3 = (__pyx_v_p != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_attrval_in == NULL);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {
    __Pyx_Raise(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), 0, 0, 0);
    __PYX_ERR(6, 91, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":93
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = ((PyObject *)__pyx_v_attrval_in);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_attrval = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L8;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":94
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)             # <<<<<<<<<<<<<<
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 */
  /*else*/ {
    __pyx_t_2 = PyLong_FromVoidPtr(__pyx_v_attrval_in); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_attrval = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L8:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":95
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 */
  __pyx_t_1 = (__pyx_v_state->copy_fn != Py_True);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":96
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)             # <<<<<<<<<<<<<<
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out
 */
    __pyx_t_2 = __pyx_v_state->copy_fn;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(__pyx_t_2, __pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_attrval, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":97
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0             # <<<<<<<<<<<<<<
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval
 */
    __pyx_t_1 = (__pyx_v_attrval == __pyx_builtin_NotImplemented);
    if (__pyx_t_1) {
      __pyx_r = 0;
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/attrimpl.pxi":95
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":98
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out             # <<<<<<<<<<<<<<
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 */
  __pyx_v_outval = ((void **)__pyx_v_attrval_out);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":99
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval             # <<<<<<<<<<<<<<
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    (__pyx_v_outval[0]) = ((void *)__pyx_v_attrval);
    goto __pyx_L11;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":100
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)
 */
  /*else*/ {
    __pyx_t_5 = PyLong_AsVoidPtr(__pyx_v_attrval); if (unlikely(__pyx_t_5 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(6, 100, __pyx_L1_error)
    (__pyx_v_outval[0]) = __pyx_t_5;
  }
  __pyx_L11:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":101
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1             # <<<<<<<<<<<<<<
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 1;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":102
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *     Py_INCREF(state)
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    Py_INCREF(__pyx_v_attrval);
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":103
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  Py_INCREF(((PyObject *)__pyx_v_state));

  /* "src/mpi4py/MPI.src/attrimpl.pxi":104
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":79
 * 
 * 
 * cdef inline int PyMPI_attr_copy(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_v_p;
  PyObject *__pyx_v_attrval = 0;
  void **__pyx_v_outval;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  void *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_copy", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":87
 *     int *flag,
 * ) except -1:
 *     if flag != NULL: flag[0] = 0             # <<<<<<<<<<<<<<
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":88
 * ) except -1:
 *     if flag != NULL: flag[0] = 0
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":89
 *     if flag != NULL: flag[0] = 0
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0             # <<<<<<<<<<<<<<
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError
 */
  __pyx_t_1 = (__pyx_v_state->copy_fn == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":90
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython             # <<<<<<<<<<<<<<
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 */
  __pyx_v_p = (!__pyx_v_state->nopython);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":91
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError             # <<<<<<<<<<<<<<
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 */
  __pyx_t_3 = (__pyx_v_p != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_attrval_in == NULL);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {
    __Pyx_Raise(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), 0, 0, 0);
    __PYX_ERR(6, 91, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":93
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = ((PyObject *)__pyx_v_attrval_in);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_attrval = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L8;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":94
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)             # <<<<<<<<<<<<<<
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 */
  /*else*/ {
    __pyx_t_2 = PyLong_FromVoidPtr(__pyx_v_attrval_in); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_attrval = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L8:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":95
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 */
  __pyx_t_1 = (__pyx_v_state->copy_fn != Py_True);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":96
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)             # <<<<<<<<<<<<<<
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out
 */
    __pyx_t_2 = __pyx_v_state->copy_fn;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(__pyx_t_2, __pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_attrval, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":97
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0             # <<<<<<<<<<<<<<
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval
 */
    __pyx_t_1 = (__pyx_v_attrval == __pyx_builtin_NotImplemented);
    if (__pyx_t_1) {
      __pyx_r = 0;
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/attrimpl.pxi":95
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":98
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out             # <<<<<<<<<<<<<<
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 */
  __pyx_v_outval = ((void **)__pyx_v_attrval_out);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":99
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval             # <<<<<<<<<<<<<<
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    (__pyx_v_outval[0]) = ((void *)__pyx_v_attrval);
    goto __pyx_L11;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":100
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)
 */
  /*else*/ {
    __pyx_t_5 = PyLong_AsVoidPtr(__pyx_v_attrval); if (unlikely(__pyx_t_5 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(6, 100, __pyx_L1_error)
    (__pyx_v_outval[0]) = __pyx_t_5;
  }
  __pyx_L11:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":101
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1             # <<<<<<<<<<<<<<
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 1;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":102
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *     Py_INCREF(state)
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    Py_INCREF(__pyx_v_attrval);
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":103
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  Py_INCREF(((PyObject *)__pyx_v_state));

  /* "src/mpi4py/MPI.src/attrimpl.pxi":104
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":79
 * 
 * 
 * cdef inline int PyMPI_attr_copy(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_v_p;
  PyObject *__pyx_v_attrval = 0;
  void **__pyx_v_outval;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  void *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_copy", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":87
 *     int *flag,
 * ) except -1:
 *     if flag != NULL: flag[0] = 0             # <<<<<<<<<<<<<<
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":88
 * ) except -1:
 *     if flag != NULL: flag[0] = 0
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":89
 *     if flag != NULL: flag[0] = 0
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0             # <<<<<<<<<<<<<<
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError
 */
  __pyx_t_1 = (__pyx_v_state->copy_fn == Py_None);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":90
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython             # <<<<<<<<<<<<<<
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 */
  __pyx_v_p = (!__pyx_v_state->nopython);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":91
 *     if state.copy_fn is None: return 0
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError             # <<<<<<<<<<<<<<
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 */
  __pyx_t_3 = (__pyx_v_p != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_attrval_in == NULL);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {
    __Pyx_Raise(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), 0, 0, 0);
    __PYX_ERR(6, 91, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":93
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    __pyx_t_2 = ((PyObject *)__pyx_v_attrval_in);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_attrval = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L8;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":94
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)             # <<<<<<<<<<<<<<
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 */
  /*else*/ {
    __pyx_t_2 = PyLong_FromVoidPtr(__pyx_v_attrval_in); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_attrval = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L8:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":95
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 */
  __pyx_t_1 = (__pyx_v_state->copy_fn != Py_True);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":96
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)             # <<<<<<<<<<<<<<
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out
 */
    __pyx_t_2 = __pyx_v_state->copy_fn;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(__pyx_t_2, __pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_attrval, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":97
 *     if state.copy_fn is not True:
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0             # <<<<<<<<<<<<<<
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval
 */
    __pyx_t_1 = (__pyx_v_attrval == __pyx_builtin_NotImplemented);
    if (__pyx_t_1) {
      __pyx_r = 0;
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/attrimpl.pxi":95
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     if state.copy_fn is not True:             # <<<<<<<<<<<<<<
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":98
 *         attrval = PyMPI_attr_call(state.copy_fn, hdl, keyval, attrval)
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out             # <<<<<<<<<<<<<<
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 */
  __pyx_v_outval = ((void **)__pyx_v_attrval_out);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":99
 *         if attrval is NotImplemented: return 0
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval             # <<<<<<<<<<<<<<
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    (__pyx_v_outval[0]) = ((void *)__pyx_v_attrval);
    goto __pyx_L11;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":100
 *     cdef void **outval = <void **>attrval_out
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)
 */
  /*else*/ {
    __pyx_t_5 = PyLong_AsVoidPtr(__pyx_v_attrval); if (unlikely(__pyx_t_5 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(6, 100, __pyx_L1_error)
    (__pyx_v_outval[0]) = __pyx_t_5;
  }
  __pyx_L11:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":101
 *     if p: outval[0] = <void *>attrval
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1             # <<<<<<<<<<<<<<
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 1;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":102
 *     else: outval[0] = PyLong_AsVoidPtr(attrval)
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *     Py_INCREF(state)
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_p != 0);
  if (__pyx_t_1) {
    Py_INCREF(__pyx_v_attrval);
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":103
 *     if flag != NULL: flag[0] = 1
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  Py_INCREF(((PyObject *)__pyx_v_state));

  /* "src/mpi4py/MPI.src/attrimpl.pxi":104
 *     if p: Py_INCREF(attrval)
 *     Py_INCREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":79
 * 
 * 
 * cdef inline int PyMPI_attr_copy(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":107
 * 
 * 
 * cdef inline int PyMPI_attr_delete(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval_in, void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_v_p;
  PyObject *__pyx_v_attrval = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  char const *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_delete", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":113
 *     void *extra_state,
 * ) except -1:
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":114
 * ) except -1:
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     cdef int p = not state.nopython             # <<<<<<<<<<<<<<
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 */
  __pyx_v_p = (!__pyx_v_state->nopython);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":115
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError             # <<<<<<<<<<<<<<
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 */
  __pyx_t_3 = (__pyx_v_p != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_attrval_in == NULL);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), 0, 0, 0);
    __PYX_ERR(6, 115, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":117
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 */
  __pyx_t_2 = (__pyx_v_p != 0);
  if (__pyx_t_2) {
    __pyx_t_1 = ((PyObject *)__pyx_v_attrval_in);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":118
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)             # <<<<<<<<<<<<<<
 *     try:
 *         if state.delete_fn is not None:
 */
  /*else*/ {
    __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_attrval_in); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":119
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:             # <<<<<<<<<<<<<<
 *         if state.delete_fn is not None:
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":120
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 *         if state.delete_fn is not None:             # <<<<<<<<<<<<<<
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 */
    __pyx_t_2 = (__pyx_v_state->delete_fn != Py_None);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":121
 *     try:
 *         if state.delete_fn is not None:
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)             # <<<<<<<<<<<<<<
 *     finally:
 *         if p: Py_DECREF(attrval)
 */
      __pyx_t_1 = __pyx_v_state->delete_fn;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(__pyx_t_1, __pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 121, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/attrimpl.pxi":120
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 *         if state.delete_fn is not None:             # <<<<<<<<<<<<<<
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 */
    }
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":123
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 *         if p: Py_DECREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_DECREF(state)
 *     return 0
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = (__pyx_v_p != 0);
      if (__pyx_t_2) {
        Py_DECREF(__pyx_v_attrval);
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":124
 *     finally:
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
      Py_DECREF(((PyObject *)__pyx_v_state));
      goto __pyx_L9;
    }
    __pyx_L8_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
      {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":123
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 *         if p: Py_DECREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_DECREF(state)
 *     return 0
 */
        __pyx_t_2 = (__pyx_v_p != 0);
        if (__pyx_t_2) {
          Py_DECREF(__pyx_v_attrval);
        }

        /* "src/mpi4py/MPI.src/attrimpl.pxi":124
 *     finally:
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
        Py_DECREF(((PyObject *)__pyx_v_state));
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      }
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
      goto __pyx_L1_error;
    }
    __pyx_L9:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":125
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":107
 * 
 * 
 * cdef inline int PyMPI_attr_delete(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval_in, void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_v_p;
  PyObject *__pyx_v_attrval = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  char const *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_delete", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":113
 *     void *extra_state,
 * ) except -1:
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":114
 * ) except -1:
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     cdef int p = not state.nopython             # <<<<<<<<<<<<<<
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 */
  __pyx_v_p = (!__pyx_v_state->nopython);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":115
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError             # <<<<<<<<<<<<<<
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 */
  __pyx_t_3 = (__pyx_v_p != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_attrval_in == NULL);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), 0, 0, 0);
    __PYX_ERR(6, 115, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":117
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 */
  __pyx_t_2 = (__pyx_v_p != 0);
  if (__pyx_t_2) {
    __pyx_t_1 = ((PyObject *)__pyx_v_attrval_in);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":118
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)             # <<<<<<<<<<<<<<
 *     try:
 *         if state.delete_fn is not None:
 */
  /*else*/ {
    __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_attrval_in); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":119
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:             # <<<<<<<<<<<<<<
 *         if state.delete_fn is not None:
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":120
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 *         if state.delete_fn is not None:             # <<<<<<<<<<<<<<
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 */
    __pyx_t_2 = (__pyx_v_state->delete_fn != Py_None);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":121
 *     try:
 *         if state.delete_fn is not None:
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)             # <<<<<<<<<<<<<<
 *     finally:
 *         if p: Py_DECREF(attrval)
 */
      __pyx_t_1 = __pyx_v_state->delete_fn;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(__pyx_t_1, __pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 121, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/attrimpl.pxi":120
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 *         if state.delete_fn is not None:             # <<<<<<<<<<<<<<
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 */
    }
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":123
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 *         if p: Py_DECREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_DECREF(state)
 *     return 0
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = (__pyx_v_p != 0);
      if (__pyx_t_2) {
        Py_DECREF(__pyx_v_attrval);
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":124
 *     finally:
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
      Py_DECREF(((PyObject *)__pyx_v_state));
      goto __pyx_L9;
    }
    __pyx_L8_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
      {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":123
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 *         if p: Py_DECREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_DECREF(state)
 *     return 0
 */
        __pyx_t_2 = (__pyx_v_p != 0);
        if (__pyx_t_2) {
          Py_DECREF(__pyx_v_attrval);
        }

        /* "src/mpi4py/MPI.src/attrimpl.pxi":124
 *     finally:
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
        Py_DECREF(((PyObject *)__pyx_v_state));
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      }
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
      goto __pyx_L1_error;
    }
    __pyx_L9:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":125
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":107
 * 
 * 
 * cdef inline int PyMPI_attr_delete(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval_in, void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_v_p;
  PyObject *__pyx_v_attrval = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  char const *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_delete", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":113
 *     void *extra_state,
 * ) except -1:
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":114
 * ) except -1:
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     cdef int p = not state.nopython             # <<<<<<<<<<<<<<
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 */
  __pyx_v_p = (!__pyx_v_state->nopython);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":115
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     cdef int p = not state.nopython
 *     if p and attrval_in == NULL: raise RuntimeError             # <<<<<<<<<<<<<<
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 */
  __pyx_t_3 = (__pyx_v_p != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_attrval_in == NULL);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), 0, 0, 0);
    __PYX_ERR(6, 115, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":117
 *     if p and attrval_in == NULL: raise RuntimeError
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in             # <<<<<<<<<<<<<<
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 */
  __pyx_t_2 = (__pyx_v_p != 0);
  if (__pyx_t_2) {
    __pyx_t_1 = ((PyObject *)__pyx_v_attrval_in);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L6;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":118
 *     cdef object attrval
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)             # <<<<<<<<<<<<<<
 *     try:
 *         if state.delete_fn is not None:
 */
  /*else*/ {
    __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_attrval_in); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_attrval = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":119
 *     if p: attrval = <object>attrval_in
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:             # <<<<<<<<<<<<<<
 *         if state.delete_fn is not None:
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":120
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 *         if state.delete_fn is not None:             # <<<<<<<<<<<<<<
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 */
    __pyx_t_2 = (__pyx_v_state->delete_fn != Py_None);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":121
 *     try:
 *         if state.delete_fn is not None:
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)             # <<<<<<<<<<<<<<
 *     finally:
 *         if p: Py_DECREF(attrval)
 */
      __pyx_t_1 = __pyx_v_state->delete_fn;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_4 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_call(__pyx_t_1, __pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 121, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/attrimpl.pxi":120
 *     else: attrval = PyLong_FromVoidPtr(attrval_in)
 *     try:
 *         if state.delete_fn is not None:             # <<<<<<<<<<<<<<
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 */
    }
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":123
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 *         if p: Py_DECREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_DECREF(state)
 *     return 0
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = (__pyx_v_p != 0);
      if (__pyx_t_2) {
        Py_DECREF(__pyx_v_attrval);
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":124
 *     finally:
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
      Py_DECREF(((PyObject *)__pyx_v_state));
      goto __pyx_L9;
    }
    __pyx_L8_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
      {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":123
 *             PyMPI_attr_call(state.delete_fn, hdl, keyval, attrval)
 *     finally:
 *         if p: Py_DECREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_DECREF(state)
 *     return 0
 */
        __pyx_t_2 = (__pyx_v_p != 0);
        if (__pyx_t_2) {
          Py_DECREF(__pyx_v_attrval);
        }

        /* "src/mpi4py/MPI.src/attrimpl.pxi":124
 *     finally:
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
        Py_DECREF(((PyObject *)__pyx_v_state));
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      }
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
      goto __pyx_L1_error;
    }
    __pyx_L9:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":125
 *         if p: Py_DECREF(attrval)
 *         Py_DECREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":107
 * 
 * 
 * cdef inline int PyMPI_attr_delete(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_attrval);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":128
 * 
 * 
 * cdef inline int PyMPI_attr_copy_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_copy_cb", 0);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":136
 *     int *flag,
 * ) noexcept with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":139
 *     cdef object exc
 *     try:
 *         PyMPI_attr_copy(             # <<<<<<<<<<<<<<
 *             hdl, keyval, extra_state,
 *             attrval_in, attrval_out, flag,
 */
      __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(6, 139, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":143
 *             attrval_in, attrval_out, flag,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0PyMPI_attr_copy_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 143, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":144
 *         )
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":143
 *             attrval_in, attrval_out, flag,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":145
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":128
 * 
 * 
 * cdef inline int PyMPI_attr_copy_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.PyMPI_attr_copy_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_copy_cb", 0);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":136
 *     int *flag,
 * ) noexcept with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":139
 *     cdef object exc
 *     try:
 *         PyMPI_attr_copy(             # <<<<<<<<<<<<<<
 *             hdl, keyval, extra_state,
 *             attrval_in, attrval_out, flag,
 */
      __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(6, 139, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":143
 *             attrval_in, attrval_out, flag,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1PyMPI_attr_copy_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 143, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":144
 *         )
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":143
 *             attrval_in, attrval_out, flag,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":145
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":128
 * 
 * 
 * cdef inline int PyMPI_attr_copy_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.PyMPI_attr_copy_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_copy_cb", 0);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":136
 *     int *flag,
 * ) noexcept with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":139
 *     cdef object exc
 *     try:
 *         PyMPI_attr_copy(             # <<<<<<<<<<<<<<
 *             hdl, keyval, extra_state,
 *             attrval_in, attrval_out, flag,
 */
      __pyx_t_4 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(6, 139, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":143
 *             attrval_in, attrval_out, flag,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_4) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2PyMPI_attr_copy_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 143, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":144
 *         )
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":143
 *             attrval_in, attrval_out, flag,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":138
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_copy(
 *             hdl, keyval, extra_state,
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":145
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":128
 * 
 * 
 * cdef inline int PyMPI_attr_copy_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.PyMPI_attr_copy_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":148
 * 
 * 
 * cdef inline int PyMPI_attr_delete_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_delete_cb", 0);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":154
 *     void *extra_state,
 * ) noexcept with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":156
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     state.ierr = MPI_SUCCESS
 *     try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":157
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     try:
 *         PyMPI_attr_delete(
 */
  __pyx_v_state->ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":159
 *     state.ierr = MPI_SUCCESS
 *     try:
 *         PyMPI_attr_delete(             # <<<<<<<<<<<<<<
 *             hdl, keyval, attrval, extra_state,
 *         )
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 159, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":162
 *             hdl, keyval, attrval, extra_state,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0PyMPI_attr_delete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 162, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":163
 *         )
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 *     return ierr
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/attrimpl.pxi":164
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_t_5 = __pyx_v_ierr;
        __pyx_t_8 = MPI_SUCCESS;
        __pyx_v_state->ierr = __pyx_t_5;
        __pyx_v_ierr = __pyx_t_8;
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":162
 *             hdl, keyval, attrval, extra_state,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":165
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":148
 * 
 * 
 * cdef inline int PyMPI_attr_delete_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.PyMPI_attr_delete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_delete_cb", 0);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":154
 *     void *extra_state,
 * ) noexcept with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":156
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     state.ierr = MPI_SUCCESS
 *     try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":157
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     try:
 *         PyMPI_attr_delete(
 */
  __pyx_v_state->ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":159
 *     state.ierr = MPI_SUCCESS
 *     try:
 *         PyMPI_attr_delete(             # <<<<<<<<<<<<<<
 *             hdl, keyval, attrval, extra_state,
 *         )
 */
      __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 159, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":162
 *             hdl, keyval, attrval, extra_state,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1PyMPI_attr_delete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 162, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":163
 *         )
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 *     return ierr
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/attrimpl.pxi":164
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_t_5 = __pyx_v_ierr;
        __pyx_t_8 = MPI_SUCCESS;
        __pyx_v_state->ierr = __pyx_t_5;
        __pyx_v_ierr = __pyx_t_8;
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":162
 *             hdl, keyval, attrval, extra_state,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":165
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":148
 * 
 * 
 * cdef inline int PyMPI_attr_delete_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.PyMPI_attr_delete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_delete_cb", 0);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":154
 *     void *extra_state,
 * ) noexcept with gil:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":156
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state             # <<<<<<<<<<<<<<
 *     state.ierr = MPI_SUCCESS
 *     try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":157
 *     cdef object exc
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     try:
 *         PyMPI_attr_delete(
 */
  __pyx_v_state->ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":159
 *     state.ierr = MPI_SUCCESS
 *     try:
 *         PyMPI_attr_delete(             # <<<<<<<<<<<<<<
 *             hdl, keyval, attrval, extra_state,
 *         )
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 159, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":162
 *             hdl, keyval, attrval, extra_state,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2PyMPI_attr_delete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 162, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/attrimpl.pxi":163
 *         )
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 *     return ierr
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/attrimpl.pxi":164
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_t_5 = __pyx_v_ierr;
        __pyx_t_8 = MPI_SUCCESS;
        __pyx_v_state->ierr = __pyx_t_5;
        __pyx_v_ierr = __pyx_t_8;
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":162
 *             hdl, keyval, attrval, extra_state,
 *         )
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":158
 *     cdef _p_keyval state = <_p_keyval>extra_state
 *     state.ierr = MPI_SUCCESS
 *     try:             # <<<<<<<<<<<<<<
 *         PyMPI_attr_delete(
 *             hdl, keyval, attrval, extra_state,
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":165
 *         ierr = PyMPI_HandleException(exc)
 *         state.ierr, ierr = ierr, MPI_SUCCESS
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":148
 * 
 * 
 * cdef inline int PyMPI_attr_delete_cb(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.PyMPI_attr_delete_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":169
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_copy_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static int MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":177
 *     int *flag,
 * ) noexcept nogil:
 *     if flag != NULL: flag[0] = 0             # <<<<<<<<<<<<<<
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":178
 * ) noexcept nogil:
 *     if flag != NULL: flag[0] = 0
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":179
 *     if flag != NULL: flag[0] = 0
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_attrval_out == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":180
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_copy_cb(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":181
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return PyMPI_attr_copy_cb(
 *         hdl, keyval, extra_state,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":182
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_copy_cb(             # <<<<<<<<<<<<<<
 *         hdl, keyval, extra_state,
 *         attrval_in, attrval_out, flag,
 */
  __pyx_r = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":169
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_copy_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static int MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":177
 *     int *flag,
 * ) noexcept nogil:
 *     if flag != NULL: flag[0] = 0             # <<<<<<<<<<<<<<
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":178
 * ) noexcept nogil:
 *     if flag != NULL: flag[0] = 0
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":179
 *     if flag != NULL: flag[0] = 0
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_attrval_out == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":180
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_copy_cb(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":181
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return PyMPI_attr_copy_cb(
 *         hdl, keyval, extra_state,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":182
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_copy_cb(             # <<<<<<<<<<<<<<
 *         hdl, keyval, extra_state,
 *         attrval_in, attrval_out, flag,
 */
  __pyx_r = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":169
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_copy_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static int MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_extra_state, void *__pyx_v_attrval_in, void *__pyx_v_attrval_out, int *__pyx_v_flag) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":177
 *     int *flag,
 * ) noexcept nogil:
 *     if flag != NULL: flag[0] = 0             # <<<<<<<<<<<<<<
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_flag != NULL);
  if (__pyx_t_1) {
    (__pyx_v_flag[0]) = 0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":178
 * ) noexcept nogil:
 *     if flag != NULL: flag[0] = 0
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":179
 *     if flag != NULL: flag[0] = 0
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_attrval_out == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":180
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_copy_cb(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":181
 *     if attrval_out == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return PyMPI_attr_copy_cb(
 *         hdl, keyval, extra_state,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":182
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_copy_cb(             # <<<<<<<<<<<<<<
 *         hdl, keyval, extra_state,
 *         attrval_in, attrval_out, flag,
 */
  __pyx_r = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_cb(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_extra_state, __pyx_v_attrval_in, __pyx_v_attrval_out, __pyx_v_flag);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":169
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_copy_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":189
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_delete_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static int MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":195
 *     void *extra_state,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":196
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_delete_cb(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":197
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return PyMPI_attr_delete_cb(
 *         hdl, keyval, attrval, extra_state,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":198
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_delete_cb(             # <<<<<<<<<<<<<<
 *         hdl, keyval, attrval, extra_state,
 *     )
 */
  __pyx_r = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":189
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_delete_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static int MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":195
 *     void *extra_state,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":196
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_delete_cb(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":197
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return PyMPI_attr_delete_cb(
 *         hdl, keyval, attrval, extra_state,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":198
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_delete_cb(             # <<<<<<<<<<<<<<
 *         hdl, keyval, attrval, extra_state,
 *     )
 */
  __pyx_r = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":189
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_delete_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

static int MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":195
 *     void *extra_state,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":196
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_delete_cb(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":197
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return PyMPI_attr_delete_cb(
 *         hdl, keyval, attrval, extra_state,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":198
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return PyMPI_attr_delete_cb(             # <<<<<<<<<<<<<<
 *         hdl, keyval, attrval, extra_state,
 *     )
 */
  __pyx_r = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_cb(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval, __pyx_v_extra_state);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":189
 * 
 * @cython.callspec("MPIAPI")
 * cdef int PyMPI_attr_delete_fn(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":204
 * # ---
 * 
 * cdef inline _p_keyval PyMPI_attr_state_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_state_get", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":208
 *     int keyval,
 * ):
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":210
 *     <void> hdl  # unused
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_type.get(keyval)
 *     if PyMPI_attr_type is MPI_Comm:
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 210, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 210, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":211
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 *             return <_p_keyval>keyval_registry_type.get(keyval)             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:
 */
          __Pyx_XDECREF((PyObject *)__pyx_r);
          if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_type == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
            __PYX_ERR(6, 211, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 211, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_keyval_registry_type, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 211, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_INCREF((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_3));
          __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_3);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L11_try_return;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":210
 *     <void> hdl  # unused
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_type.get(keyval)
 *     if PyMPI_attr_type is MPI_Comm:
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0PyMPI_attr_state_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(6, 210, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 210, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 210, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(6, 210, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(6, 210, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__32, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 210, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_13 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__33, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 210, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __pyx_r = __pyx_t_13;
        __pyx_t_13 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":204
 * # ---
 * 
 * cdef inline _p_keyval PyMPI_attr_state_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_state_get", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":208
 *     int keyval,
 * ):
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":213
 *             return <_p_keyval>keyval_registry_type.get(keyval)
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_comm.get(keyval)
 *     if PyMPI_attr_type is MPI_Win:
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 213, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 213, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":214
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:
 *             return <_p_keyval>keyval_registry_comm.get(keyval)             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:
 */
          __Pyx_XDECREF((PyObject *)__pyx_r);
          if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_comm == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
            __PYX_ERR(6, 214, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 214, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_keyval_registry_comm, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 214, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_INCREF((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_3));
          __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_3);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L11_try_return;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":213
 *             return <_p_keyval>keyval_registry_type.get(keyval)
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_comm.get(keyval)
 *     if PyMPI_attr_type is MPI_Win:
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1PyMPI_attr_state_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(6, 213, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 213, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 213, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(6, 213, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(6, 213, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__34, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 213, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_13 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__35, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 213, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __pyx_r = __pyx_t_13;
        __pyx_t_13 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":204
 * # ---
 * 
 * cdef inline _p_keyval PyMPI_attr_state_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(MPI_Win __pyx_v_hdl, int __pyx_v_keyval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_state_get", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":208
 *     int keyval,
 * ):
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":216
 *             return <_p_keyval>keyval_registry_comm.get(keyval)
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_win.get(keyval)
 * 
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 216, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 216, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":217
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:
 *             return <_p_keyval>keyval_registry_win.get(keyval)             # <<<<<<<<<<<<<<
 * 
 * 
 */
          __Pyx_XDECREF((PyObject *)__pyx_r);
          if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_win == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
            __PYX_ERR(6, 217, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 217, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_6mpi4py_3MPI_keyval_registry_win, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 217, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_INCREF((PyObject *)((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_3));
          __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_3);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L11_try_return;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":216
 *             return <_p_keyval>keyval_registry_comm.get(keyval)
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_win.get(keyval)
 * 
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2PyMPI_attr_state_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(6, 216, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 216, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 216, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(6, 216, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(6, 216, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__36, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 216, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_13 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__37, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 216, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __pyx_r = __pyx_t_13;
        __pyx_t_13 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":204
 * # ---
 * 
 * cdef inline _p_keyval PyMPI_attr_state_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)Py_None); __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":220
 * 
 * 
 * cdef inline int PyMPI_attr_state_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_state_set", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":225
 *     _p_keyval state,
 * ) except -1:
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":227
 *     <void> hdl  # unused
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:             # <<<<<<<<<<<<<<
 *             keyval_registry_type[keyval] = state
 *     if PyMPI_attr_type is MPI_Comm:
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 227, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 227, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":228
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 *             keyval_registry_type[keyval] = state             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:
 */
          if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_type == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(6, 228, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 228, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_keyval_registry_type, __pyx_t_2, ((PyObject *)__pyx_v_state)) < 0))) __PYX_ERR(6, 228, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":227
 *     <void> hdl  # unused
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:             # <<<<<<<<<<<<<<
 *             keyval_registry_type[keyval] = state
 *     if PyMPI_attr_type is MPI_Comm:
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0PyMPI_attr_state_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(6, 227, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 227, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 227, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(6, 227, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(6, 227, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__38, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 227, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":235
 *         with keyval_lock_win:
 *             keyval_registry_win[keyval] = state
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":220
 * 
 * 
 * cdef inline int PyMPI_attr_state_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_state_set", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":225
 *     _p_keyval state,
 * ) except -1:
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":230
 *             keyval_registry_type[keyval] = state
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *             keyval_registry_comm[keyval] = state
 *     if PyMPI_attr_type is MPI_Win:
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 230, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 230, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":231
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:
 *             keyval_registry_comm[keyval] = state             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:
 */
          if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_comm == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(6, 231, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 231, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_keyval_registry_comm, __pyx_t_2, ((PyObject *)__pyx_v_state)) < 0))) __PYX_ERR(6, 231, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":230
 *             keyval_registry_type[keyval] = state
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *             keyval_registry_comm[keyval] = state
 *     if PyMPI_attr_type is MPI_Win:
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1PyMPI_attr_state_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(6, 230, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 230, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 230, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(6, 230, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(6, 230, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__39, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 230, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":235
 *         with keyval_lock_win:
 *             keyval_registry_win[keyval] = state
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":220
 * 
 * 
 * cdef inline int PyMPI_attr_state_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_state_set", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":225
 *     _p_keyval state,
 * ) except -1:
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":233
 *             keyval_registry_comm[keyval] = state
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:             # <<<<<<<<<<<<<<
 *             keyval_registry_win[keyval] = state
 *     return 0
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 233, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 233, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":234
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:
 *             keyval_registry_win[keyval] = state             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
          if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_win == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(6, 234, __pyx_L7_error)
          }
          __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 234, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_keyval_registry_win, __pyx_t_2, ((PyObject *)__pyx_v_state)) < 0))) __PYX_ERR(6, 234, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":233
 *             keyval_registry_comm[keyval] = state
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:             # <<<<<<<<<<<<<<
 *             keyval_registry_win[keyval] = state
 *     return 0
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2PyMPI_attr_state_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(6, 233, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 233, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 233, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(6, 233, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(6, 233, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__40, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 233, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":235
 *         with keyval_lock_win:
 *             keyval_registry_win[keyval] = state
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":220
 * 
 * 
 * cdef inline int PyMPI_attr_state_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":238
 * 
 * 
 * cdef inline int PyMPI_attr_state_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_state_del", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":242
 *     int keyval,
 * ) except -1:
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     try:
 *         if PyMPI_attr_type is MPI_Datatype:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":245
 *     try:
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_type[keyval]
 *         if PyMPI_attr_type is MPI_Comm:
 */
      /*with:*/ {
        __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 245, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 245, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 245, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/attrimpl.pxi":246
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 *                 del keyval_registry_type[keyval]             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Comm:
 *             with keyval_lock_comm:
 */
              if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_type == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(6, 246, __pyx_L13_error)
              }
              __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 246, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (unlikely((PyDict_DelItem(__pyx_v_6mpi4py_3MPI_keyval_registry_type, __pyx_t_5) < 0))) __PYX_ERR(6, 246, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

              /* "src/mpi4py/MPI.src/attrimpl.pxi":245
 *     try:
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_type[keyval]
 *         if PyMPI_attr_type is MPI_Comm:
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0PyMPI_attr_state_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 245, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_12 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 245, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_12);
              __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 245, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (__pyx_t_14 < 0) __PYX_ERR(6, 245, __pyx_L15_except_error)
              __pyx_t_15 = (!__pyx_t_14);
              if (unlikely(__pyx_t_15)) {
                __Pyx_GIVEREF(__pyx_t_5);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_7);
                __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(6, 245, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_4) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__41, NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 245, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":253
 *             with keyval_lock_win:
 *                 del keyval_registry_win[keyval]
 *     except KeyError:  # ~> uncovered             # <<<<<<<<<<<<<<
 *         pass
 *     return 0
 */
    __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_16) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":255
 *     except KeyError:  # ~> uncovered
 *         pass
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":238
 * 
 * 
 * cdef inline int PyMPI_attr_state_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_state_del", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":242
 *     int keyval,
 * ) except -1:
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     try:
 *         if PyMPI_attr_type is MPI_Datatype:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":248
 *                 del keyval_registry_type[keyval]
 *         if PyMPI_attr_type is MPI_Comm:
 *             with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_comm[keyval]
 *         if PyMPI_attr_type is MPI_Win:
 */
      /*with:*/ {
        __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 248, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 248, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 248, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/attrimpl.pxi":249
 *         if PyMPI_attr_type is MPI_Comm:
 *             with keyval_lock_comm:
 *                 del keyval_registry_comm[keyval]             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Win:
 *             with keyval_lock_win:
 */
              if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_comm == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(6, 249, __pyx_L13_error)
              }
              __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 249, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (unlikely((PyDict_DelItem(__pyx_v_6mpi4py_3MPI_keyval_registry_comm, __pyx_t_5) < 0))) __PYX_ERR(6, 249, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

              /* "src/mpi4py/MPI.src/attrimpl.pxi":248
 *                 del keyval_registry_type[keyval]
 *         if PyMPI_attr_type is MPI_Comm:
 *             with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_comm[keyval]
 *         if PyMPI_attr_type is MPI_Win:
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1PyMPI_attr_state_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 248, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_12 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 248, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_12);
              __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 248, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (__pyx_t_14 < 0) __PYX_ERR(6, 248, __pyx_L15_except_error)
              __pyx_t_15 = (!__pyx_t_14);
              if (unlikely(__pyx_t_15)) {
                __Pyx_GIVEREF(__pyx_t_5);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_7);
                __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(6, 248, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_4) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__42, NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 248, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":253
 *             with keyval_lock_win:
 *                 del keyval_registry_win[keyval]
 *     except KeyError:  # ~> uncovered             # <<<<<<<<<<<<<<
 *         pass
 *     return 0
 */
    __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_16) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":255
 *     except KeyError:  # ~> uncovered
 *         pass
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":238
 * 
 * 
 * cdef inline int PyMPI_attr_state_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_Win __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_state_del", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":242
 *     int keyval,
 * ) except -1:
 *     <void> hdl  # unused             # <<<<<<<<<<<<<<
 *     try:
 *         if PyMPI_attr_type is MPI_Datatype:
 */
  ((void)__pyx_v_hdl);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":251
 *                 del keyval_registry_comm[keyval]
 *         if PyMPI_attr_type is MPI_Win:
 *             with keyval_lock_win:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_win[keyval]
 *     except KeyError:  # ~> uncovered
 */
      /*with:*/ {
        __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 251, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 251, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 251, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/attrimpl.pxi":252
 *         if PyMPI_attr_type is MPI_Win:
 *             with keyval_lock_win:
 *                 del keyval_registry_win[keyval]             # <<<<<<<<<<<<<<
 *     except KeyError:  # ~> uncovered
 *         pass
 */
              if (unlikely(__pyx_v_6mpi4py_3MPI_keyval_registry_win == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(6, 252, __pyx_L13_error)
              }
              __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 252, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_5);
              if (unlikely((PyDict_DelItem(__pyx_v_6mpi4py_3MPI_keyval_registry_win, __pyx_t_5) < 0))) __PYX_ERR(6, 252, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

              /* "src/mpi4py/MPI.src/attrimpl.pxi":251
 *                 del keyval_registry_comm[keyval]
 *         if PyMPI_attr_type is MPI_Win:
 *             with keyval_lock_win:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_win[keyval]
 *     except KeyError:  # ~> uncovered
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2PyMPI_attr_state_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(6, 251, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_5);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_12 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 251, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_12);
              __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 251, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (__pyx_t_14 < 0) __PYX_ERR(6, 251, __pyx_L15_except_error)
              __pyx_t_15 = (!__pyx_t_14);
              if (unlikely(__pyx_t_15)) {
                __Pyx_GIVEREF(__pyx_t_5);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_7);
                __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(6, 251, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_4) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__43, NULL);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 251, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":253
 *             with keyval_lock_win:
 *                 del keyval_registry_win[keyval]
 *     except KeyError:  # ~> uncovered             # <<<<<<<<<<<<<<
 *         pass
 *     return 0
 */
    __pyx_t_16 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_16) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":243
 * ) except -1:
 *     <void> hdl  # unused
 *     try:             # <<<<<<<<<<<<<<
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":255
 *     except KeyError:  # ~> uncovered
 *         pass
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":238
 * 
 * 
 * cdef inline int PyMPI_attr_state_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_state_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":259
 * # ---
 * 
 * cdef inline object PyMPI_attr_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_get", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":264
 *     void *attrval,
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     if state is not None and not state.nopython:
 *         return <object>attrval
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":265
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         return <object>attrval
 *     else:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (!__pyx_v_state->nopython);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":266
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:
 *         return <object>attrval             # <<<<<<<<<<<<<<
 *     else:
 *         return PyLong_FromVoidPtr(attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    __pyx_r = ((PyObject *)__pyx_v_attrval);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":265
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         return <object>attrval
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":268
 *         return <object>attrval
 *     else:
 *         return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":259
 * # ---
 * 
 * cdef inline object PyMPI_attr_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_get", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":264
 *     void *attrval,
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     if state is not None and not state.nopython:
 *         return <object>attrval
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":265
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         return <object>attrval
 *     else:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (!__pyx_v_state->nopython);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":266
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:
 *         return <object>attrval             # <<<<<<<<<<<<<<
 *     else:
 *         return PyLong_FromVoidPtr(attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    __pyx_r = ((PyObject *)__pyx_v_attrval);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":265
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         return <object>attrval
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":268
 *         return <object>attrval
 *     else:
 *         return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":259
 * # ---
 * 
 * cdef inline object PyMPI_attr_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_get", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":264
 *     void *attrval,
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     if state is not None and not state.nopython:
 *         return <object>attrval
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":265
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         return <object>attrval
 *     else:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (!__pyx_v_state->nopython);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":266
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:
 *         return <object>attrval             # <<<<<<<<<<<<<<
 *     else:
 *         return PyLong_FromVoidPtr(attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_attrval));
    __pyx_r = ((PyObject *)__pyx_v_attrval);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/attrimpl.pxi":265
 * ):
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         return <object>attrval
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":268
 *         return <object>attrval
 *     else:
 *         return PyLong_FromVoidPtr(attrval)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_attrval); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":259
 * # ---
 * 
 * cdef inline object PyMPI_attr_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":271
 * 
 * 
 * cdef inline int PyMPI_set_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":277
 * ) except -1:
 *     if PyMPI_attr_type is MPI_Datatype:
 *         CHKERR( MPI_Type_set_attr(hdl, keyval, attrval) )             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Comm:
 *         CHKERR( MPI_Comm_set_attr(hdl, keyval, attrval) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_set_attr(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 277, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":282
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_set_attr(hdl, keyval, attrval) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_attr_set(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":271
 * 
 * 
 * cdef inline int PyMPI_set_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":279
 *         CHKERR( MPI_Type_set_attr(hdl, keyval, attrval) )
 *     if PyMPI_attr_type is MPI_Comm:
 *         CHKERR( MPI_Comm_set_attr(hdl, keyval, attrval) )             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_set_attr(hdl, keyval, attrval) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_attr(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 279, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":282
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_set_attr(hdl, keyval, attrval) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_attr_set(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":271
 * 
 * 
 * cdef inline int PyMPI_set_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, void *__pyx_v_attrval) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":281
 *         CHKERR( MPI_Comm_set_attr(hdl, keyval, attrval) )
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_set_attr(hdl, keyval, attrval) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_attr(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_attrval)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 281, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":282
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_set_attr(hdl, keyval, attrval) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_attr_set(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":271
 * 
 * 
 * cdef inline int PyMPI_set_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":284
 *     return 0
 * 
 * cdef inline int PyMPI_attr_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  void *__pyx_v_valptr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  void *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_set", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":289
 *     object attrval,
 * ) except -1:
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":290
 * ) except -1:
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL             # <<<<<<<<<<<<<<
 *     if state is not None and not state.nopython:
 *         valptr = <void *>attrval
 */
  __pyx_v_valptr = NULL;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":291
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         valptr = <void *>attrval
 *     else:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (!__pyx_v_state->nopython);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":292
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:
 *         valptr = <void *>attrval             # <<<<<<<<<<<<<<
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)
 */
    __pyx_v_valptr = ((void *)__pyx_v_attrval);

    /* "src/mpi4py/MPI.src/attrimpl.pxi":291
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         valptr = <void *>attrval
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":294
 *         valptr = <void *>attrval
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 */
  /*else*/ {
    __pyx_t_4 = PyLong_AsVoidPtr(__pyx_v_attrval); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(6, 294, __pyx_L1_error)
    __pyx_v_valptr = __pyx_t_4;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":295
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)             # <<<<<<<<<<<<<<
 *     if state is not None:
 *         if not state.nopython:
 */
  __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_valptr); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 295, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":296
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:             # <<<<<<<<<<<<<<
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":297
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 *         if not state.nopython:             # <<<<<<<<<<<<<<
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 */
    __pyx_t_2 = (!__pyx_v_state->nopython);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":298
 *     if state is not None:
 *         if not state.nopython:
 *             Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_INCREF(state)
 *     return 0
 */
      Py_INCREF(__pyx_v_attrval);

      /* "src/mpi4py/MPI.src/attrimpl.pxi":297
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 *         if not state.nopython:             # <<<<<<<<<<<<<<
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 */
    }

    /* "src/mpi4py/MPI.src/attrimpl.pxi":299
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    Py_INCREF(((PyObject *)__pyx_v_state));

    /* "src/mpi4py/MPI.src/attrimpl.pxi":296
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:             # <<<<<<<<<<<<<<
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":300
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_delete_attr(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":284
 *     return 0
 * 
 * cdef inline int PyMPI_attr_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  void *__pyx_v_valptr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  void *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_set", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":289
 *     object attrval,
 * ) except -1:
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":290
 * ) except -1:
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL             # <<<<<<<<<<<<<<
 *     if state is not None and not state.nopython:
 *         valptr = <void *>attrval
 */
  __pyx_v_valptr = NULL;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":291
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         valptr = <void *>attrval
 *     else:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (!__pyx_v_state->nopython);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":292
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:
 *         valptr = <void *>attrval             # <<<<<<<<<<<<<<
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)
 */
    __pyx_v_valptr = ((void *)__pyx_v_attrval);

    /* "src/mpi4py/MPI.src/attrimpl.pxi":291
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         valptr = <void *>attrval
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":294
 *         valptr = <void *>attrval
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 */
  /*else*/ {
    __pyx_t_4 = PyLong_AsVoidPtr(__pyx_v_attrval); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(6, 294, __pyx_L1_error)
    __pyx_v_valptr = __pyx_t_4;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":295
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)             # <<<<<<<<<<<<<<
 *     if state is not None:
 *         if not state.nopython:
 */
  __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_valptr); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 295, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":296
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:             # <<<<<<<<<<<<<<
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":297
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 *         if not state.nopython:             # <<<<<<<<<<<<<<
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 */
    __pyx_t_2 = (!__pyx_v_state->nopython);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":298
 *     if state is not None:
 *         if not state.nopython:
 *             Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_INCREF(state)
 *     return 0
 */
      Py_INCREF(__pyx_v_attrval);

      /* "src/mpi4py/MPI.src/attrimpl.pxi":297
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 *         if not state.nopython:             # <<<<<<<<<<<<<<
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 */
    }

    /* "src/mpi4py/MPI.src/attrimpl.pxi":299
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    Py_INCREF(((PyObject *)__pyx_v_state));

    /* "src/mpi4py/MPI.src/attrimpl.pxi":296
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:             # <<<<<<<<<<<<<<
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":300
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_delete_attr(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":284
 *     return 0
 * 
 * cdef inline int PyMPI_attr_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(MPI_Win __pyx_v_hdl, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  void *__pyx_v_valptr;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  void *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_set", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":289
 *     object attrval,
 * ) except -1:
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":290
 * ) except -1:
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL             # <<<<<<<<<<<<<<
 *     if state is not None and not state.nopython:
 *         valptr = <void *>attrval
 */
  __pyx_v_valptr = NULL;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":291
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         valptr = <void *>attrval
 *     else:
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (!__pyx_v_state->nopython);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":292
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:
 *         valptr = <void *>attrval             # <<<<<<<<<<<<<<
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)
 */
    __pyx_v_valptr = ((void *)__pyx_v_attrval);

    /* "src/mpi4py/MPI.src/attrimpl.pxi":291
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     cdef void *valptr = NULL
 *     if state is not None and not state.nopython:             # <<<<<<<<<<<<<<
 *         valptr = <void *>attrval
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":294
 *         valptr = <void *>attrval
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)             # <<<<<<<<<<<<<<
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 */
  /*else*/ {
    __pyx_t_4 = PyLong_AsVoidPtr(__pyx_v_attrval); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(6, 294, __pyx_L1_error)
    __pyx_v_valptr = __pyx_t_4;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":295
 *     else:
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)             # <<<<<<<<<<<<<<
 *     if state is not None:
 *         if not state.nopython:
 */
  __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_set_attr(__pyx_v_hdl, __pyx_v_keyval, __pyx_v_valptr); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 295, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":296
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:             # <<<<<<<<<<<<<<
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_state) != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/attrimpl.pxi":297
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 *         if not state.nopython:             # <<<<<<<<<<<<<<
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 */
    __pyx_t_2 = (!__pyx_v_state->nopython);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/attrimpl.pxi":298
 *     if state is not None:
 *         if not state.nopython:
 *             Py_INCREF(attrval)             # <<<<<<<<<<<<<<
 *         Py_INCREF(state)
 *     return 0
 */
      Py_INCREF(__pyx_v_attrval);

      /* "src/mpi4py/MPI.src/attrimpl.pxi":297
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:
 *         if not state.nopython:             # <<<<<<<<<<<<<<
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 */
    }

    /* "src/mpi4py/MPI.src/attrimpl.pxi":299
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    Py_INCREF(((PyObject *)__pyx_v_state));

    /* "src/mpi4py/MPI.src/attrimpl.pxi":296
 *         valptr = PyLong_AsVoidPtr(attrval)
 *     PyMPI_set_attr(hdl, keyval, valptr)
 *     if state is not None:             # <<<<<<<<<<<<<<
 *         if not state.nopython:
 *             Py_INCREF(attrval)
 */
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":300
 *             Py_INCREF(attrval)
 *         Py_INCREF(state)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_delete_attr(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":284
 *     return 0
 * 
 * cdef inline int PyMPI_attr_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":302
 *     return 0
 * 
 * cdef inline int PyMPI_delete_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":307
 * ) except -1:
 *     if PyMPI_attr_type is MPI_Datatype:
 *         CHKERR( MPI_Type_delete_attr(hdl, keyval) )             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Comm:
 *         CHKERR( MPI_Comm_delete_attr(hdl, keyval) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_delete_attr(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 307, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":312
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_delete_attr(hdl, keyval) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_attr_del(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":302
 *     return 0
 * 
 * cdef inline int PyMPI_delete_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":309
 *         CHKERR( MPI_Type_delete_attr(hdl, keyval) )
 *     if PyMPI_attr_type is MPI_Comm:
 *         CHKERR( MPI_Comm_delete_attr(hdl, keyval) )             # <<<<<<<<<<<<<<
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_delete_attr(hdl, keyval) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_delete_attr(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 309, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":312
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_delete_attr(hdl, keyval) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_attr_del(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":302
 *     return 0
 * 
 * cdef inline int PyMPI_delete_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(MPI_Win __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":311
 *         CHKERR( MPI_Comm_delete_attr(hdl, keyval) )
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_delete_attr(hdl, keyval) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_delete_attr(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 311, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":312
 *     if PyMPI_attr_type is MPI_Win:
 *         CHKERR( MPI_Win_delete_attr(hdl, keyval) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int PyMPI_attr_del(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":302
 *     return 0
 * 
 * cdef inline int PyMPI_delete_attr(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/attrimpl.pxi":314
 *     return 0
 * 
 * cdef inline int PyMPI_attr_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(MPI_Datatype __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_v_ierr;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0PyMPI_attr_del", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":318
 *     int keyval,
 * ) except -1:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":319
 * ) except -1:
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":320
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)             # <<<<<<<<<<<<<<
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_state) == Py_None);
  if (__pyx_t_2) {
    __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(__pyx_v_hdl, __pyx_v_keyval); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 320, __pyx_L1_error)
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":321
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:             # <<<<<<<<<<<<<<
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 */
  /*with:*/ {
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 321, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 321, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":322
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)             # <<<<<<<<<<<<<<
 *         ierr, state.ierr = state.ierr, ierr
 *         CHKERR( ierr )
 */
          __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(__pyx_v_hdl, __pyx_v_keyval); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 322, __pyx_L8_error)

          /* "src/mpi4py/MPI.src/attrimpl.pxi":323
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr             # <<<<<<<<<<<<<<
 *         CHKERR( ierr )
 * 
 */
          __pyx_t_3 = __pyx_v_state->ierr;
          __pyx_t_11 = __pyx_v_ierr;
          __pyx_v_ierr = __pyx_t_3;
          __pyx_v_state->ierr = __pyx_t_11;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":324
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 *         CHKERR( ierr )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
          __pyx_t_11 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_v_ierr); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(6, 324, __pyx_L8_error)

          /* "src/mpi4py/MPI.src/attrimpl.pxi":321
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:             # <<<<<<<<<<<<<<
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 */
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L13_try_end;
        __pyx_L8_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0PyMPI_attr_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __pyx_t_14 = (!__pyx_t_2);
          if (unlikely(__pyx_t_14)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_5, __pyx_t_6);
            __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(6, 321, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_L13_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 321, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L17;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":314
 *     return 0
 * 
 * cdef inline int PyMPI_attr_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(MPI_Comm __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_v_ierr;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1PyMPI_attr_del", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":318
 *     int keyval,
 * ) except -1:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":319
 * ) except -1:
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":320
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)             # <<<<<<<<<<<<<<
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_state) == Py_None);
  if (__pyx_t_2) {
    __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(__pyx_v_hdl, __pyx_v_keyval); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 320, __pyx_L1_error)
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":321
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:             # <<<<<<<<<<<<<<
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 */
  /*with:*/ {
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 321, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 321, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":322
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)             # <<<<<<<<<<<<<<
 *         ierr, state.ierr = state.ierr, ierr
 *         CHKERR( ierr )
 */
          __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(__pyx_v_hdl, __pyx_v_keyval); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 322, __pyx_L8_error)

          /* "src/mpi4py/MPI.src/attrimpl.pxi":323
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr             # <<<<<<<<<<<<<<
 *         CHKERR( ierr )
 * 
 */
          __pyx_t_3 = __pyx_v_state->ierr;
          __pyx_t_11 = __pyx_v_ierr;
          __pyx_v_ierr = __pyx_t_3;
          __pyx_v_state->ierr = __pyx_t_11;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":324
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 *         CHKERR( ierr )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
          __pyx_t_11 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_v_ierr); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(6, 324, __pyx_L8_error)

          /* "src/mpi4py/MPI.src/attrimpl.pxi":321
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:             # <<<<<<<<<<<<<<
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 */
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L13_try_end;
        __pyx_L8_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1PyMPI_attr_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __pyx_t_14 = (!__pyx_t_2);
          if (unlikely(__pyx_t_14)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_5, __pyx_t_6);
            __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(6, 321, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_L13_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 321, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L17;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":314
 *     return 0
 * 
 * cdef inline int PyMPI_attr_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(MPI_Win __pyx_v_hdl, int __pyx_v_keyval) {
  int __pyx_v_ierr;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2PyMPI_attr_del", 1);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":318
 *     int keyval,
 * ) except -1:
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":319
 * ) except -1:
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)             # <<<<<<<<<<<<<<
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:
 */
  __pyx_t_1 = ((PyObject *)__pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_get(__pyx_v_hdl, __pyx_v_keyval)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":320
 *     cdef int ierr = MPI_SUCCESS
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)             # <<<<<<<<<<<<<<
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_state) == Py_None);
  if (__pyx_t_2) {
    __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(__pyx_v_hdl, __pyx_v_keyval); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 320, __pyx_L1_error)
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":321
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:             # <<<<<<<<<<<<<<
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 */
  /*with:*/ {
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 321, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 321, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/attrimpl.pxi":322
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)             # <<<<<<<<<<<<<<
 *         ierr, state.ierr = state.ierr, ierr
 *         CHKERR( ierr )
 */
          __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_delete_attr(__pyx_v_hdl, __pyx_v_keyval); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(6, 322, __pyx_L8_error)

          /* "src/mpi4py/MPI.src/attrimpl.pxi":323
 *     with state.lock:
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr             # <<<<<<<<<<<<<<
 *         CHKERR( ierr )
 * 
 */
          __pyx_t_3 = __pyx_v_state->ierr;
          __pyx_t_11 = __pyx_v_ierr;
          __pyx_v_ierr = __pyx_t_3;
          __pyx_v_state->ierr = __pyx_t_11;

          /* "src/mpi4py/MPI.src/attrimpl.pxi":324
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 *         CHKERR( ierr )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
          __pyx_t_11 = __pyx_f_6mpi4py_3MPI_CHKERR(__pyx_v_ierr); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(6, 324, __pyx_L8_error)

          /* "src/mpi4py/MPI.src/attrimpl.pxi":321
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:             # <<<<<<<<<<<<<<
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 */
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L13_try_end;
        __pyx_L8_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2PyMPI_attr_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_12, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(6, 321, __pyx_L10_except_error)
          __pyx_t_14 = (!__pyx_t_2);
          if (unlikely(__pyx_t_14)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_5, __pyx_t_6);
            __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(6, 321, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_L13_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 321, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L17;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/mpi4py/MPI.src/attrimpl.pxi":314
 *     return 0
 * 
 * cdef inline int PyMPI_attr_del(             # <<<<<<<<<<<<<<
 *     PyMPI_attr_type hdl,
 *     int keyval,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_attr_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":23
 * ]
 * 
 * cdef inline void errhdl_call_mpi(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int __pyx_v_index, MPI_Session __pyx_v_handle, int __pyx_v_errcode) {
  PyObject *__pyx_v_pyhandle = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_0errhdl_call_mpi", 0);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":27
 *     mpi_scwf_t handle, int errcode,
 * ) noexcept with gil:
 *     cdef object pyhandle = None             # <<<<<<<<<<<<<<
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_pyhandle = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":28
 * ) noexcept with gil:
 *     cdef object pyhandle = None
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":32
 *     try:
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)             # <<<<<<<<<<<<<<
 *             registry = errhdl_registry[0]
 *         if mpi_scwf_t is MPI_Comm:
 */
      __pyx_t_4 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_fromhandle(__pyx_v_handle); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 32, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_pyhandle, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":33
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[0]             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Comm:
 *             pyhandle = fromhandle(handle)
 */
      if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(11, 33, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 33, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":43
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[3]
 *         try:             # <<<<<<<<<<<<<<
 *             registry[index](pyhandle, errcode)
 *         finally:
 */
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":44
 *             registry = errhdl_registry[3]
 *         try:
 *             registry[index](pyhandle, errcode)             # <<<<<<<<<<<<<<
 *         finally:
 *             if False: pass
 */
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_pyhandle, __pyx_t_6};
          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":46
 *             registry[index](pyhandle, errcode)
 *         finally:
 *             if False: pass             # <<<<<<<<<<<<<<
 *             elif mpi_scwf_t is MPI_Session:
 *                 (<Session>pyhandle).ob_mpi = MPI_SESSION_NULL
 */
      /*finally:*/ {
        /*normal exit:*/{

          /* "src/mpi4py/MPI.src/errhimpl.pxi":48
 *             if False: pass
 *             elif mpi_scwf_t is MPI_Session:
 *                 (<Session>pyhandle).ob_mpi = MPI_SESSION_NULL             # <<<<<<<<<<<<<<
 *             elif mpi_scwf_t is MPI_Comm:
 *                 (<Comm>pyhandle).ob_mpi = MPI_COMM_NULL
 */
          ((struct PyMPISessionObject *)__pyx_v_pyhandle)->ob_mpi = MPI_SESSION_NULL;
          goto __pyx_L11;
        }
        __pyx_L10_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            ((struct PyMPISessionObject *)__pyx_v_pyhandle)->ob_mpi = MPI_SESSION_NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L3_error;
        }
        __pyx_L11:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_10) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(11, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_exc = __pyx_t_5;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":56
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(                                        # ~> uncovered
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 */
        PyErr_DisplayException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/errhimpl.pxi":57
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered             # <<<<<<<<<<<<<<
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 *             b"exception in user-defined error handler function",  # ~> uncovered
 */
        PySys_WriteStderr(((char *)"Fatal Python error: %s\n"), ((char *)"exception in user-defined error handler function"));

        /* "src/mpi4py/MPI.src/errhimpl.pxi":61
 *             b"exception in user-defined error handler function",  # ~> uncovered
 *         )                                                         # ~> uncovered
 *         <void>MPI_Abort(MPI_COMM_WORLD, 1)                        # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * 
 */
        ((void)MPI_Abort(MPI_COMM_WORLD, 1));
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L20;
        }
        __pyx_L20:;
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":23
 * ]
 * 
 * cdef inline void errhdl_call_mpi(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyhandle);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int __pyx_v_index, MPI_Comm __pyx_v_handle, int __pyx_v_errcode) {
  PyObject *__pyx_v_pyhandle = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_1errhdl_call_mpi", 0);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":27
 *     mpi_scwf_t handle, int errcode,
 * ) noexcept with gil:
 *     cdef object pyhandle = None             # <<<<<<<<<<<<<<
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_pyhandle = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":28
 * ) noexcept with gil:
 *     cdef object pyhandle = None
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":35
 *             registry = errhdl_registry[0]
 *         if mpi_scwf_t is MPI_Comm:
 *             pyhandle = fromhandle(handle)             # <<<<<<<<<<<<<<
 *             registry = errhdl_registry[1]
 *         if mpi_scwf_t is MPI_Win:
 */
      __pyx_t_4 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_fromhandle(__pyx_v_handle); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 35, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_pyhandle, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":36
 *         if mpi_scwf_t is MPI_Comm:
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[1]             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Win:
 *             pyhandle = fromhandle(handle)
 */
      if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(11, 36, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 36, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":43
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[3]
 *         try:             # <<<<<<<<<<<<<<
 *             registry[index](pyhandle, errcode)
 *         finally:
 */
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":44
 *             registry = errhdl_registry[3]
 *         try:
 *             registry[index](pyhandle, errcode)             # <<<<<<<<<<<<<<
 *         finally:
 *             if False: pass
 */
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_pyhandle, __pyx_t_6};
          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":46
 *             registry[index](pyhandle, errcode)
 *         finally:
 *             if False: pass             # <<<<<<<<<<<<<<
 *             elif mpi_scwf_t is MPI_Session:
 *                 (<Session>pyhandle).ob_mpi = MPI_SESSION_NULL
 */
      /*finally:*/ {
        /*normal exit:*/{

          /* "src/mpi4py/MPI.src/errhimpl.pxi":50
 *                 (<Session>pyhandle).ob_mpi = MPI_SESSION_NULL
 *             elif mpi_scwf_t is MPI_Comm:
 *                 (<Comm>pyhandle).ob_mpi = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 *             elif mpi_scwf_t is MPI_Win:
 *                 (<Win>pyhandle).ob_mpi = MPI_WIN_NULL
 */
          ((struct PyMPICommObject *)__pyx_v_pyhandle)->ob_mpi = MPI_COMM_NULL;
          goto __pyx_L11;
        }
        __pyx_L10_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            ((struct PyMPICommObject *)__pyx_v_pyhandle)->ob_mpi = MPI_COMM_NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L3_error;
        }
        __pyx_L11:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_10) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(11, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_exc = __pyx_t_5;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":56
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(                                        # ~> uncovered
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 */
        PyErr_DisplayException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/errhimpl.pxi":57
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered             # <<<<<<<<<<<<<<
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 *             b"exception in user-defined error handler function",  # ~> uncovered
 */
        PySys_WriteStderr(((char *)"Fatal Python error: %s\n"), ((char *)"exception in user-defined error handler function"));

        /* "src/mpi4py/MPI.src/errhimpl.pxi":61
 *             b"exception in user-defined error handler function",  # ~> uncovered
 *         )                                                         # ~> uncovered
 *         <void>MPI_Abort(MPI_COMM_WORLD, 1)                        # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * 
 */
        ((void)MPI_Abort(MPI_COMM_WORLD, 1));
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L20;
        }
        __pyx_L20:;
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":23
 * ]
 * 
 * cdef inline void errhdl_call_mpi(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyhandle);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

static CYTHON_INLINE void __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int __pyx_v_index, MPI_Win __pyx_v_handle, int __pyx_v_errcode) {
  PyObject *__pyx_v_pyhandle = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_2errhdl_call_mpi", 0);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":27
 *     mpi_scwf_t handle, int errcode,
 * ) noexcept with gil:
 *     cdef object pyhandle = None             # <<<<<<<<<<<<<<
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_pyhandle = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":28
 * ) noexcept with gil:
 *     cdef object pyhandle = None
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":38
 *             registry = errhdl_registry[1]
 *         if mpi_scwf_t is MPI_Win:
 *             pyhandle = fromhandle(handle)             # <<<<<<<<<<<<<<
 *             registry = errhdl_registry[2]
 *         if mpi_scwf_t is MPI_File:
 */
      __pyx_t_4 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_fromhandle(__pyx_v_handle); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 38, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_pyhandle, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":39
 *         if mpi_scwf_t is MPI_Win:
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[2]             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_File:
 *             pyhandle = fromhandle(handle)
 */
      if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(11, 39, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 2, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 39, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":43
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[3]
 *         try:             # <<<<<<<<<<<<<<
 *             registry[index](pyhandle, errcode)
 *         finally:
 */
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":44
 *             registry = errhdl_registry[3]
 *         try:
 *             registry[index](pyhandle, errcode)             # <<<<<<<<<<<<<<
 *         finally:
 *             if False: pass
 */
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_pyhandle, __pyx_t_6};
          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":46
 *             registry[index](pyhandle, errcode)
 *         finally:
 *             if False: pass             # <<<<<<<<<<<<<<
 *             elif mpi_scwf_t is MPI_Session:
 *                 (<Session>pyhandle).ob_mpi = MPI_SESSION_NULL
 */
      /*finally:*/ {
        /*normal exit:*/{

          /* "src/mpi4py/MPI.src/errhimpl.pxi":52
 *                 (<Comm>pyhandle).ob_mpi = MPI_COMM_NULL
 *             elif mpi_scwf_t is MPI_Win:
 *                 (<Win>pyhandle).ob_mpi = MPI_WIN_NULL             # <<<<<<<<<<<<<<
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 */
          ((struct PyMPIWinObject *)__pyx_v_pyhandle)->ob_mpi = MPI_WIN_NULL;
          goto __pyx_L11;
        }
        __pyx_L10_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            ((struct PyMPIWinObject *)__pyx_v_pyhandle)->ob_mpi = MPI_WIN_NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L3_error;
        }
        __pyx_L11:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_10) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(11, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_exc = __pyx_t_5;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":56
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(                                        # ~> uncovered
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 */
        PyErr_DisplayException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/errhimpl.pxi":57
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered             # <<<<<<<<<<<<<<
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 *             b"exception in user-defined error handler function",  # ~> uncovered
 */
        PySys_WriteStderr(((char *)"Fatal Python error: %s\n"), ((char *)"exception in user-defined error handler function"));

        /* "src/mpi4py/MPI.src/errhimpl.pxi":61
 *             b"exception in user-defined error handler function",  # ~> uncovered
 *         )                                                         # ~> uncovered
 *         <void>MPI_Abort(MPI_COMM_WORLD, 1)                        # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * 
 */
        ((void)MPI_Abort(MPI_COMM_WORLD, 1));
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L20;
        }
        __pyx_L20:;
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":23
 * ]
 * 
 * cdef inline void errhdl_call_mpi(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyhandle);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

static CYTHON_INLINE void __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(int __pyx_v_index, MPI_File __pyx_v_handle, int __pyx_v_errcode) {
  PyObject *__pyx_v_pyhandle = 0;
  PyObject *__pyx_v_registry = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  char const *__pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("__pyx_fuse_3errhdl_call_mpi", 0);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":27
 *     mpi_scwf_t handle, int errcode,
 * ) noexcept with gil:
 *     cdef object pyhandle = None             # <<<<<<<<<<<<<<
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_pyhandle = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":28
 * ) noexcept with gil:
 *     cdef object pyhandle = None
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":41
 *             registry = errhdl_registry[2]
 *         if mpi_scwf_t is MPI_File:
 *             pyhandle = fromhandle(handle)             # <<<<<<<<<<<<<<
 *             registry = errhdl_registry[3]
 *         try:
 */
      __pyx_t_4 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_fromhandle(__pyx_v_handle); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 41, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_pyhandle, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":42
 *         if mpi_scwf_t is MPI_File:
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[3]             # <<<<<<<<<<<<<<
 *         try:
 *             registry[index](pyhandle, errcode)
 */
      if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(11, 42, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 3, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 42, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/errhimpl.pxi":43
 *             pyhandle = fromhandle(handle)
 *             registry = errhdl_registry[3]
 *         try:             # <<<<<<<<<<<<<<
 *             registry[index](pyhandle, errcode)
 *         finally:
 */
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":44
 *             registry = errhdl_registry[3]
 *         try:
 *             registry[index](pyhandle, errcode)             # <<<<<<<<<<<<<<
 *         finally:
 *             if False: pass
 */
        __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_registry, __pyx_v_index, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_errcode); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 44, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_pyhandle, __pyx_t_6};
          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 44, __pyx_L10_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":46
 *             registry[index](pyhandle, errcode)
 *         finally:
 *             if False: pass             # <<<<<<<<<<<<<<
 *             elif mpi_scwf_t is MPI_Session:
 *                 (<Session>pyhandle).ob_mpi = MPI_SESSION_NULL
 */
      /*finally:*/ {
        /*normal exit:*/{

          /* "src/mpi4py/MPI.src/errhimpl.pxi":54
 *                 (<Win>pyhandle).ob_mpi = MPI_WIN_NULL
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL             # <<<<<<<<<<<<<<
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 */
          ((struct PyMPIFileObject *)__pyx_v_pyhandle)->ob_mpi = MPI_FILE_NULL;
          goto __pyx_L11;
        }
        __pyx_L10_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14) < 0)) __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __Pyx_XGOTREF(__pyx_t_16);
          __Pyx_XGOTREF(__pyx_t_17);
          __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
          {
            ((struct PyMPIFileObject *)__pyx_v_pyhandle)->ob_mpi = MPI_FILE_NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_XGIVEREF(__pyx_t_16);
            __Pyx_XGIVEREF(__pyx_t_17);
            __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
          }
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_XGIVEREF(__pyx_t_14);
          __Pyx_ErrRestore(__pyx_t_12, __pyx_t_13, __pyx_t_14);
          __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0;
          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
          goto __pyx_L3_error;
        }
        __pyx_L11:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_10) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_3errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(11, 55, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_exc = __pyx_t_5;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/errhimpl.pxi":56
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(                                        # ~> uncovered
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 */
        PyErr_DisplayException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/errhimpl.pxi":57
 *     except BaseException as exc:                                  # ~> uncovered
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered             # <<<<<<<<<<<<<<
 *             b"Fatal Python error: %s\n",                          # ~> uncovered
 *             b"exception in user-defined error handler function",  # ~> uncovered
 */
        PySys_WriteStderr(((char *)"Fatal Python error: %s\n"), ((char *)"exception in user-defined error handler function"));

        /* "src/mpi4py/MPI.src/errhimpl.pxi":61
 *             b"exception in user-defined error handler function",  # ~> uncovered
 *         )                                                         # ~> uncovered
 *         <void>MPI_Abort(MPI_COMM_WORLD, 1)                        # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * 
 */
        ((void)MPI_Abort(MPI_COMM_WORLD, 1));
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":55
 *             elif mpi_scwf_t is MPI_File:
 *                 (<File>pyhandle).ob_mpi = MPI_FILE_NULL
 *     except BaseException as exc:                                  # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                               # ~> uncovered
 *         PySys_WriteStderr(                                        # ~> uncovered
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L20;
        }
        __pyx_L20:;
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":30
 *     cdef object registry = None
 *     # errors in user-defined error handler functions are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         if mpi_scwf_t is MPI_Session:
 *             pyhandle = fromhandle(handle)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":23
 * ]
 * 
 * cdef inline void errhdl_call_mpi(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.errhdl_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pyhandle);
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":64
 * 
 * 
 * cdef inline void errhdl_call(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(int __pyx_v_index, MPI_Session __pyx_v_handle, int __pyx_v_errcode) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":69
 * ) noexcept nogil:
 *     # make it abort if Python has finalized
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":71
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":73
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(__pyx_v_index, __pyx_v_handle, __pyx_v_errcode);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":64
 * 
 * 
 * cdef inline void errhdl_call(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
}

static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(int __pyx_v_index, MPI_Comm __pyx_v_handle, int __pyx_v_errcode) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":69
 * ) noexcept nogil:
 *     # make it abort if Python has finalized
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":71
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":73
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(__pyx_v_index, __pyx_v_handle, __pyx_v_errcode);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":64
 * 
 * 
 * cdef inline void errhdl_call(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
}

static CYTHON_INLINE void __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(int __pyx_v_index, MPI_Win __pyx_v_handle, int __pyx_v_errcode) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":69
 * ) noexcept nogil:
 *     # make it abort if Python has finalized
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":71
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":73
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(__pyx_v_index, __pyx_v_handle, __pyx_v_errcode);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":64
 * 
 * 
 * cdef inline void errhdl_call(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
}

static CYTHON_INLINE void __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(int __pyx_v_index, MPI_File __pyx_v_handle, int __pyx_v_errcode) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":69
 * ) noexcept nogil:
 *     # make it abort if Python has finalized
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":71
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":73
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make the actual GIL-safe Python call
 *     errhdl_call_mpi(index, handle, errcode)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call_mpi(__pyx_v_index, __pyx_v_handle, __pyx_v_errcode);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":64
 * 
 * 
 * cdef inline void errhdl_call(             # <<<<<<<<<<<<<<
 *     int index,
 *     mpi_scwf_t handle, int errcode,
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":77
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  1, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":78
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  1, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(1, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":77
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  1, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":78
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  1, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(1, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":77
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  1, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":78
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  1, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(1, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":77
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  1, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_01(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":78
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  1, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(1, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":77
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_01(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  1, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":82
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  2, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":83
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  2, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(2, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":82
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  2, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":83
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  2, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(2, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":82
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  2, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":83
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  2, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(2, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":82
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  2, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_02(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":83
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  2, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(2, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":82
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_02(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  2, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":87
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  3, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":88
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  3, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(3, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":87
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  3, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":88
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  3, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(3, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":87
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  3, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":88
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  3, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(3, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":87
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  3, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_03(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":88
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  3, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(3, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":87
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_03(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  3, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":92
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  4, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":93
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  4, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(4, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":92
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  4, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":93
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  4, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(4, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":92
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  4, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":93
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  4, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(4, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":92
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  4, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_04(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":93
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  4, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(4, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":92
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_04(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  4, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":97
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  5, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":98
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  5, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(5, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":97
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  5, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":98
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  5, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(5, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":97
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  5, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":98
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  5, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(5, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":97
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  5, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_05(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":98
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  5, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(5, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":97
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_05(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  5, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":102
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  6, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":103
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  6, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(6, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":102
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  6, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":103
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  6, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(6, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":102
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  6, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":103
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  6, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(6, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":102
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  6, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_06(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":103
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  6, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(6, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":102
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_06(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  6, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":107
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  7, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":108
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  7, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(7, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":107
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  7, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":108
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  7, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(7, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":107
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  7, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":108
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  7, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(7, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":107
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  7, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_07(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":108
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  7, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(7, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":107
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_07(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  7, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":112
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  8, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":113
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  8, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(8, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":112
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  8, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":113
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  8, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(8, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":112
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  8, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":113
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  8, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(8, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":112
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  8, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_08(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":113
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  8, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(8, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":112
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_08(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  8, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":117
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  9, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":118
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  9, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(9, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":117
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  9, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":118
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  9, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(9, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":117
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  9, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":118
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  9, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(9, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":117
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  9, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_09(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":118
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call(  9, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(9, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":117
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_09(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call(  9, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":122
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 10, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":123
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 10, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(10, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":122
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 10, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":123
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 10, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(10, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":122
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 10, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":123
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 10, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(10, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":122
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 10, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_10(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":123
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 10, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(10, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":122
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_10(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 10, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":127
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 11, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":128
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 11, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(11, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":127
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 11, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":128
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 11, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(11, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":127
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 11, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":128
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 11, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(11, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":127
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 11, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_11(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":128
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 11, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(11, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":127
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_11(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 11, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":132
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 12, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":133
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 12, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(12, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":132
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 12, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":133
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 12, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(12, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":132
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 12, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":133
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 12, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(12, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":132
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 12, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_12(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":133
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 12, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(12, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":132
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_12(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 12, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":137
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 13, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":138
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 13, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(13, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":137
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 13, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":138
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 13, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(13, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":137
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 13, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":138
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 13, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(13, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":137
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 13, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_13(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":138
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 13, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(13, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":137
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_13(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 13, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":142
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 14, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":143
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 14, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(14, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":142
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 14, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":143
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 14, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(14, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":142
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 14, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":143
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 14, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(14, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":142
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 14, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_14(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":143
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 14, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(14, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":142
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_14(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 14, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":147
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 15, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":148
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 15, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(15, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":147
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 15, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":148
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 15, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(15, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":147
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 15, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":148
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 15, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(15, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":147
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 15, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_15(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":148
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 15, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(15, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":147
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_15(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 15, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":152
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 16, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":153
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 16, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(16, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":152
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 16, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":153
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 16, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(16, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":152
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 16, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":153
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 16, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(16, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":152
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 16, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_16(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":153
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 16, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(16, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":152
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_16(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 16, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":157
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 17, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":158
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 17, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(17, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":157
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 17, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":158
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 17, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(17, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":157
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 17, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":158
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 17, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(17, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":157
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 17, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_17(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":158
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 17, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(17, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":157
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_17(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 17, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":162
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 18, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":163
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 18, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(18, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":162
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 18, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":163
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 18, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(18, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":162
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 18, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":163
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 18, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(18, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":162
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 18, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_18(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":163
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 18, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(18, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":162
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_18(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 18, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":167
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 19, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":168
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 19, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(19, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":167
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 19, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":168
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 19, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(19, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":167
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 19, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":168
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 19, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(19, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":167
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 19, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_19(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":168
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 19, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(19, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":167
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_19(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 19, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":172
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 20, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":173
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 20, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(20, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":172
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 20, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":173
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 20, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(20, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":172
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 20, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":173
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 20, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(20, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":172
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 20, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_20(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":173
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 20, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(20, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":172
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_20(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 20, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":177
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 21, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":178
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 21, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(21, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":177
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 21, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":178
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 21, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(21, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":177
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 21, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":178
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 21, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(21, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":177
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 21, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_21(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":178
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 21, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(21, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":177
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_21(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 21, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":182
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 22, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":183
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 22, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(22, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":182
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 22, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":183
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 22, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(22, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":182
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 22, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":183
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 22, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(22, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":182
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 22, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_22(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":183
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 22, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(22, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":182
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_22(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 22, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":187
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 23, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":188
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 23, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(23, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":187
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 23, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":188
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 23, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(23, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":187
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 23, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":188
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 23, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(23, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":187
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 23, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_23(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":188
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 23, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(23, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":187
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_23(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 23, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":192
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 24, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":193
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 24, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(24, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":192
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 24, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":193
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 24, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(24, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":192
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 24, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":193
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 24, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(24, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":192
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 24, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_24(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":193
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 24, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(24, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":192
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_24(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 24, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":197
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 25, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":198
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 25, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(25, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":197
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 25, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":198
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 25, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(25, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":197
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 25, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":198
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 25, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(25, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":197
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 25, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_25(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":198
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 25, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(25, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":197
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_25(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 25, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":202
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 26, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":203
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 26, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(26, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":202
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 26, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":203
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 26, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(26, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":202
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 26, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":203
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 26, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(26, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":202
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 26, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_26(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":203
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 26, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(26, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":202
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_26(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 26, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":207
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 27, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":208
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 27, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(27, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":207
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 27, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":208
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 27, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(27, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":207
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 27, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":208
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 27, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(27, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":207
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 27, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_27(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":208
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 27, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(27, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":207
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_27(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 27, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":212
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 28, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":213
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 28, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(28, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":212
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 28, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":213
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 28, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(28, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":212
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 28, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":213
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 28, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(28, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":212
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 28, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_28(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":213
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 28, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(28, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":212
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_28(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 28, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":217
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 29, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":218
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 29, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(29, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":217
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 29, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":218
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 29, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(29, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":217
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 29, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":218
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 29, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(29, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":217
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 29, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_29(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":218
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 29, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(29, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":217
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_29(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 29, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":222
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 30, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":223
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 30, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(30, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":222
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 30, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":223
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 30, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(30, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":222
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 30, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":223
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 30, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(30, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":222
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 30, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_30(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":223
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 30, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(30, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":222
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_30(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 30, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":227
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 31, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":228
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 31, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(31, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":227
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 31, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":228
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 31, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(31, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":227
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 31, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":228
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 31, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(31, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":227
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 31, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_31(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":228
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 31, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(31, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":227
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_31(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 31, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":232
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 32, handle[0], errcode[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_Session *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":233
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 32, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_call(32, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":232
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 32, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_Comm *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":233
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 32, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_call(32, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":232
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 32, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_Win *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":233
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 32, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_call(32, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":232
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 32, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_32(MPI_File *__pyx_v_handle, int *__pyx_v_errcode, ...) {

  /* "src/mpi4py/MPI.src/errhimpl.pxi":233
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:
 *     errhdl_call( 32, handle[0], errcode[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_call(32, (__pyx_v_handle[0]), (__pyx_v_errcode[0]));

  /* "src/mpi4py/MPI.src/errhimpl.pxi":232
 * 
 * @cython.callspec("MPIAPI")
 * cdef void errhdl_32(mpi_scwf_t *handle, int *errcode, ...) noexcept nogil:             # <<<<<<<<<<<<<<
 *     errhdl_call( 32, handle[0], errcode[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":236
 * 
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 */

static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_map(int __pyx_v_index, MPI_Session_errhandler_function **__pyx_v_fn) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":237
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01             # <<<<<<<<<<<<<<
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 */
  __pyx_t_1 = (__pyx_v_index == 1);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_01;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":238
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02             # <<<<<<<<<<<<<<
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 */
  __pyx_t_1 = (__pyx_v_index == 2);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_02;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":239
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03             # <<<<<<<<<<<<<<
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 */
  __pyx_t_1 = (__pyx_v_index == 3);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_03;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":240
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04             # <<<<<<<<<<<<<<
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 */
  __pyx_t_1 = (__pyx_v_index == 4);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_04;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":241
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05             # <<<<<<<<<<<<<<
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 */
  __pyx_t_1 = (__pyx_v_index == 5);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_05;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":242
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06             # <<<<<<<<<<<<<<
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 */
  __pyx_t_1 = (__pyx_v_index == 6);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_06;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":243
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07             # <<<<<<<<<<<<<<
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 */
  __pyx_t_1 = (__pyx_v_index == 7);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_07;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":244
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08             # <<<<<<<<<<<<<<
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 */
  __pyx_t_1 = (__pyx_v_index == 8);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_08;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":245
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09             # <<<<<<<<<<<<<<
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 */
  __pyx_t_1 = (__pyx_v_index == 9);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_09;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":246
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10             # <<<<<<<<<<<<<<
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 */
  __pyx_t_1 = (__pyx_v_index == 10);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_10;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":247
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11             # <<<<<<<<<<<<<<
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 */
  __pyx_t_1 = (__pyx_v_index == 11);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_11;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":248
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12             # <<<<<<<<<<<<<<
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 */
  __pyx_t_1 = (__pyx_v_index == 12);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_12;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":249
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13             # <<<<<<<<<<<<<<
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 */
  __pyx_t_1 = (__pyx_v_index == 13);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_13;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":250
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14             # <<<<<<<<<<<<<<
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 */
  __pyx_t_1 = (__pyx_v_index == 14);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_14;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":251
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15             # <<<<<<<<<<<<<<
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 */
  __pyx_t_1 = (__pyx_v_index == 15);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_15;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":252
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16             # <<<<<<<<<<<<<<
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 */
  __pyx_t_1 = (__pyx_v_index == 16);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":253
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17             # <<<<<<<<<<<<<<
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 */
  __pyx_t_1 = (__pyx_v_index == 17);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_17;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":254
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18             # <<<<<<<<<<<<<<
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 */
  __pyx_t_1 = (__pyx_v_index == 18);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_18;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":255
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19             # <<<<<<<<<<<<<<
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 */
  __pyx_t_1 = (__pyx_v_index == 19);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_19;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":256
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20             # <<<<<<<<<<<<<<
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 */
  __pyx_t_1 = (__pyx_v_index == 20);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_20;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":257
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21             # <<<<<<<<<<<<<<
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 */
  __pyx_t_1 = (__pyx_v_index == 21);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_21;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":258
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22             # <<<<<<<<<<<<<<
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 */
  __pyx_t_1 = (__pyx_v_index == 22);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_22;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":259
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23             # <<<<<<<<<<<<<<
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 */
  __pyx_t_1 = (__pyx_v_index == 23);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_23;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":260
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24             # <<<<<<<<<<<<<<
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 */
  __pyx_t_1 = (__pyx_v_index == 24);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_24;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":261
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25             # <<<<<<<<<<<<<<
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 */
  __pyx_t_1 = (__pyx_v_index == 25);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_25;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":262
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26             # <<<<<<<<<<<<<<
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 */
  __pyx_t_1 = (__pyx_v_index == 26);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_26;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":263
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27             # <<<<<<<<<<<<<<
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 */
  __pyx_t_1 = (__pyx_v_index == 27);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_27;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":264
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28             # <<<<<<<<<<<<<<
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 */
  __pyx_t_1 = (__pyx_v_index == 28);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_28;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":265
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29             # <<<<<<<<<<<<<<
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 */
  __pyx_t_1 = (__pyx_v_index == 29);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_29;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":266
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30             # <<<<<<<<<<<<<<
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32
 */
  __pyx_t_1 = (__pyx_v_index == 30);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_30;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":267
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31             # <<<<<<<<<<<<<<
 *     elif index == 32: fn[0] = errhdl_32
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 31);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_31;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":268
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 32);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_32;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":236
 * 
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 */

  /* function exit code */
}

static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_map(int __pyx_v_index, MPI_Comm_errhandler_function **__pyx_v_fn) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":237
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01             # <<<<<<<<<<<<<<
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 */
  __pyx_t_1 = (__pyx_v_index == 1);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_01;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":238
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02             # <<<<<<<<<<<<<<
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 */
  __pyx_t_1 = (__pyx_v_index == 2);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_02;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":239
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03             # <<<<<<<<<<<<<<
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 */
  __pyx_t_1 = (__pyx_v_index == 3);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_03;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":240
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04             # <<<<<<<<<<<<<<
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 */
  __pyx_t_1 = (__pyx_v_index == 4);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_04;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":241
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05             # <<<<<<<<<<<<<<
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 */
  __pyx_t_1 = (__pyx_v_index == 5);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_05;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":242
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06             # <<<<<<<<<<<<<<
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 */
  __pyx_t_1 = (__pyx_v_index == 6);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_06;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":243
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07             # <<<<<<<<<<<<<<
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 */
  __pyx_t_1 = (__pyx_v_index == 7);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_07;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":244
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08             # <<<<<<<<<<<<<<
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 */
  __pyx_t_1 = (__pyx_v_index == 8);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_08;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":245
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09             # <<<<<<<<<<<<<<
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 */
  __pyx_t_1 = (__pyx_v_index == 9);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_09;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":246
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10             # <<<<<<<<<<<<<<
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 */
  __pyx_t_1 = (__pyx_v_index == 10);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_10;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":247
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11             # <<<<<<<<<<<<<<
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 */
  __pyx_t_1 = (__pyx_v_index == 11);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_11;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":248
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12             # <<<<<<<<<<<<<<
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 */
  __pyx_t_1 = (__pyx_v_index == 12);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_12;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":249
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13             # <<<<<<<<<<<<<<
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 */
  __pyx_t_1 = (__pyx_v_index == 13);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_13;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":250
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14             # <<<<<<<<<<<<<<
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 */
  __pyx_t_1 = (__pyx_v_index == 14);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_14;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":251
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15             # <<<<<<<<<<<<<<
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 */
  __pyx_t_1 = (__pyx_v_index == 15);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_15;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":252
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16             # <<<<<<<<<<<<<<
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 */
  __pyx_t_1 = (__pyx_v_index == 16);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":253
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17             # <<<<<<<<<<<<<<
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 */
  __pyx_t_1 = (__pyx_v_index == 17);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_17;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":254
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18             # <<<<<<<<<<<<<<
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 */
  __pyx_t_1 = (__pyx_v_index == 18);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_18;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":255
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19             # <<<<<<<<<<<<<<
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 */
  __pyx_t_1 = (__pyx_v_index == 19);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_19;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":256
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20             # <<<<<<<<<<<<<<
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 */
  __pyx_t_1 = (__pyx_v_index == 20);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_20;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":257
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21             # <<<<<<<<<<<<<<
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 */
  __pyx_t_1 = (__pyx_v_index == 21);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_21;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":258
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22             # <<<<<<<<<<<<<<
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 */
  __pyx_t_1 = (__pyx_v_index == 22);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_22;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":259
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23             # <<<<<<<<<<<<<<
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 */
  __pyx_t_1 = (__pyx_v_index == 23);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_23;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":260
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24             # <<<<<<<<<<<<<<
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 */
  __pyx_t_1 = (__pyx_v_index == 24);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_24;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":261
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25             # <<<<<<<<<<<<<<
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 */
  __pyx_t_1 = (__pyx_v_index == 25);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_25;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":262
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26             # <<<<<<<<<<<<<<
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 */
  __pyx_t_1 = (__pyx_v_index == 26);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_26;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":263
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27             # <<<<<<<<<<<<<<
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 */
  __pyx_t_1 = (__pyx_v_index == 27);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_27;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":264
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28             # <<<<<<<<<<<<<<
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 */
  __pyx_t_1 = (__pyx_v_index == 28);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_28;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":265
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29             # <<<<<<<<<<<<<<
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 */
  __pyx_t_1 = (__pyx_v_index == 29);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_29;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":266
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30             # <<<<<<<<<<<<<<
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32
 */
  __pyx_t_1 = (__pyx_v_index == 30);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_30;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":267
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31             # <<<<<<<<<<<<<<
 *     elif index == 32: fn[0] = errhdl_32
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 31);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_31;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":268
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 32);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_32;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":236
 * 
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 */

  /* function exit code */
}

static CYTHON_INLINE void __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_map(int __pyx_v_index, MPI_Win_errhandler_function **__pyx_v_fn) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":237
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01             # <<<<<<<<<<<<<<
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 */
  __pyx_t_1 = (__pyx_v_index == 1);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_01;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":238
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02             # <<<<<<<<<<<<<<
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 */
  __pyx_t_1 = (__pyx_v_index == 2);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_02;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":239
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03             # <<<<<<<<<<<<<<
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 */
  __pyx_t_1 = (__pyx_v_index == 3);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_03;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":240
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04             # <<<<<<<<<<<<<<
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 */
  __pyx_t_1 = (__pyx_v_index == 4);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_04;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":241
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05             # <<<<<<<<<<<<<<
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 */
  __pyx_t_1 = (__pyx_v_index == 5);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_05;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":242
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06             # <<<<<<<<<<<<<<
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 */
  __pyx_t_1 = (__pyx_v_index == 6);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_06;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":243
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07             # <<<<<<<<<<<<<<
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 */
  __pyx_t_1 = (__pyx_v_index == 7);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_07;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":244
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08             # <<<<<<<<<<<<<<
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 */
  __pyx_t_1 = (__pyx_v_index == 8);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_08;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":245
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09             # <<<<<<<<<<<<<<
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 */
  __pyx_t_1 = (__pyx_v_index == 9);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_09;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":246
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10             # <<<<<<<<<<<<<<
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 */
  __pyx_t_1 = (__pyx_v_index == 10);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_10;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":247
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11             # <<<<<<<<<<<<<<
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 */
  __pyx_t_1 = (__pyx_v_index == 11);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_11;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":248
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12             # <<<<<<<<<<<<<<
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 */
  __pyx_t_1 = (__pyx_v_index == 12);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_12;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":249
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13             # <<<<<<<<<<<<<<
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 */
  __pyx_t_1 = (__pyx_v_index == 13);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_13;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":250
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14             # <<<<<<<<<<<<<<
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 */
  __pyx_t_1 = (__pyx_v_index == 14);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_14;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":251
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15             # <<<<<<<<<<<<<<
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 */
  __pyx_t_1 = (__pyx_v_index == 15);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_15;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":252
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16             # <<<<<<<<<<<<<<
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 */
  __pyx_t_1 = (__pyx_v_index == 16);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":253
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17             # <<<<<<<<<<<<<<
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 */
  __pyx_t_1 = (__pyx_v_index == 17);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_17;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":254
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18             # <<<<<<<<<<<<<<
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 */
  __pyx_t_1 = (__pyx_v_index == 18);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_18;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":255
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19             # <<<<<<<<<<<<<<
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 */
  __pyx_t_1 = (__pyx_v_index == 19);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_19;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":256
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20             # <<<<<<<<<<<<<<
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 */
  __pyx_t_1 = (__pyx_v_index == 20);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_20;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":257
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21             # <<<<<<<<<<<<<<
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 */
  __pyx_t_1 = (__pyx_v_index == 21);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_21;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":258
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22             # <<<<<<<<<<<<<<
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 */
  __pyx_t_1 = (__pyx_v_index == 22);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_22;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":259
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23             # <<<<<<<<<<<<<<
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 */
  __pyx_t_1 = (__pyx_v_index == 23);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_23;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":260
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24             # <<<<<<<<<<<<<<
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 */
  __pyx_t_1 = (__pyx_v_index == 24);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_24;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":261
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25             # <<<<<<<<<<<<<<
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 */
  __pyx_t_1 = (__pyx_v_index == 25);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_25;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":262
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26             # <<<<<<<<<<<<<<
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 */
  __pyx_t_1 = (__pyx_v_index == 26);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_26;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":263
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27             # <<<<<<<<<<<<<<
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 */
  __pyx_t_1 = (__pyx_v_index == 27);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_27;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":264
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28             # <<<<<<<<<<<<<<
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 */
  __pyx_t_1 = (__pyx_v_index == 28);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_28;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":265
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29             # <<<<<<<<<<<<<<
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 */
  __pyx_t_1 = (__pyx_v_index == 29);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_29;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":266
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30             # <<<<<<<<<<<<<<
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32
 */
  __pyx_t_1 = (__pyx_v_index == 30);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_30;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":267
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31             # <<<<<<<<<<<<<<
 *     elif index == 32: fn[0] = errhdl_32
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 31);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_31;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":268
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 32);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_32;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":236
 * 
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 */

  /* function exit code */
}

static CYTHON_INLINE void __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_map(int __pyx_v_index, MPI_File_errhandler_function **__pyx_v_fn) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":237
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01             # <<<<<<<<<<<<<<
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 */
  __pyx_t_1 = (__pyx_v_index == 1);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_01;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":238
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02             # <<<<<<<<<<<<<<
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 */
  __pyx_t_1 = (__pyx_v_index == 2);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_02;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":239
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03             # <<<<<<<<<<<<<<
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 */
  __pyx_t_1 = (__pyx_v_index == 3);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_03;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":240
 *     elif index ==  2: fn[0] = errhdl_02
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04             # <<<<<<<<<<<<<<
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 */
  __pyx_t_1 = (__pyx_v_index == 4);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_04;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":241
 *     elif index ==  3: fn[0] = errhdl_03
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05             # <<<<<<<<<<<<<<
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 */
  __pyx_t_1 = (__pyx_v_index == 5);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_05;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":242
 *     elif index ==  4: fn[0] = errhdl_04
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06             # <<<<<<<<<<<<<<
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 */
  __pyx_t_1 = (__pyx_v_index == 6);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_06;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":243
 *     elif index ==  5: fn[0] = errhdl_05
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07             # <<<<<<<<<<<<<<
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 */
  __pyx_t_1 = (__pyx_v_index == 7);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_07;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":244
 *     elif index ==  6: fn[0] = errhdl_06
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08             # <<<<<<<<<<<<<<
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 */
  __pyx_t_1 = (__pyx_v_index == 8);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_08;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":245
 *     elif index ==  7: fn[0] = errhdl_07
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09             # <<<<<<<<<<<<<<
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 */
  __pyx_t_1 = (__pyx_v_index == 9);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_09;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":246
 *     elif index ==  8: fn[0] = errhdl_08
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10             # <<<<<<<<<<<<<<
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 */
  __pyx_t_1 = (__pyx_v_index == 10);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_10;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":247
 *     elif index ==  9: fn[0] = errhdl_09
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11             # <<<<<<<<<<<<<<
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 */
  __pyx_t_1 = (__pyx_v_index == 11);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_11;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":248
 *     elif index == 10: fn[0] = errhdl_10
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12             # <<<<<<<<<<<<<<
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 */
  __pyx_t_1 = (__pyx_v_index == 12);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_12;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":249
 *     elif index == 11: fn[0] = errhdl_11
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13             # <<<<<<<<<<<<<<
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 */
  __pyx_t_1 = (__pyx_v_index == 13);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_13;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":250
 *     elif index == 12: fn[0] = errhdl_12
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14             # <<<<<<<<<<<<<<
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 */
  __pyx_t_1 = (__pyx_v_index == 14);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_14;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":251
 *     elif index == 13: fn[0] = errhdl_13
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15             # <<<<<<<<<<<<<<
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 */
  __pyx_t_1 = (__pyx_v_index == 15);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_15;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":252
 *     elif index == 14: fn[0] = errhdl_14
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16             # <<<<<<<<<<<<<<
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 */
  __pyx_t_1 = (__pyx_v_index == 16);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":253
 *     elif index == 15: fn[0] = errhdl_15
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17             # <<<<<<<<<<<<<<
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 */
  __pyx_t_1 = (__pyx_v_index == 17);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_17;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":254
 *     elif index == 16: fn[0] = errhdl_16
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18             # <<<<<<<<<<<<<<
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 */
  __pyx_t_1 = (__pyx_v_index == 18);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_18;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":255
 *     elif index == 17: fn[0] = errhdl_17
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19             # <<<<<<<<<<<<<<
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 */
  __pyx_t_1 = (__pyx_v_index == 19);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_19;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":256
 *     elif index == 18: fn[0] = errhdl_18
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20             # <<<<<<<<<<<<<<
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 */
  __pyx_t_1 = (__pyx_v_index == 20);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_20;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":257
 *     elif index == 19: fn[0] = errhdl_19
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21             # <<<<<<<<<<<<<<
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 */
  __pyx_t_1 = (__pyx_v_index == 21);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_21;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":258
 *     elif index == 20: fn[0] = errhdl_20
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22             # <<<<<<<<<<<<<<
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 */
  __pyx_t_1 = (__pyx_v_index == 22);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_22;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":259
 *     elif index == 21: fn[0] = errhdl_21
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23             # <<<<<<<<<<<<<<
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 */
  __pyx_t_1 = (__pyx_v_index == 23);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_23;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":260
 *     elif index == 22: fn[0] = errhdl_22
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24             # <<<<<<<<<<<<<<
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 */
  __pyx_t_1 = (__pyx_v_index == 24);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_24;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":261
 *     elif index == 23: fn[0] = errhdl_23
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25             # <<<<<<<<<<<<<<
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 */
  __pyx_t_1 = (__pyx_v_index == 25);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_25;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":262
 *     elif index == 24: fn[0] = errhdl_24
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26             # <<<<<<<<<<<<<<
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 */
  __pyx_t_1 = (__pyx_v_index == 26);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_26;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":263
 *     elif index == 25: fn[0] = errhdl_25
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27             # <<<<<<<<<<<<<<
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 */
  __pyx_t_1 = (__pyx_v_index == 27);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_27;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":264
 *     elif index == 26: fn[0] = errhdl_26
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28             # <<<<<<<<<<<<<<
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 */
  __pyx_t_1 = (__pyx_v_index == 28);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_28;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":265
 *     elif index == 27: fn[0] = errhdl_27
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29             # <<<<<<<<<<<<<<
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 */
  __pyx_t_1 = (__pyx_v_index == 29);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_29;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":266
 *     elif index == 28: fn[0] = errhdl_28
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30             # <<<<<<<<<<<<<<
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32
 */
  __pyx_t_1 = (__pyx_v_index == 30);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_30;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":267
 *     elif index == 29: fn[0] = errhdl_29
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31             # <<<<<<<<<<<<<<
 *     elif index == 32: fn[0] = errhdl_32
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 31);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_31;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":268
 *     elif index == 30: fn[0] = errhdl_30
 *     elif index == 31: fn[0] = errhdl_31
 *     elif index == 32: fn[0] = errhdl_32             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 32);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_32;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":236
 * 
 * 
 * cdef inline void errhdl_map(int index, mpi_ehfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = errhdl_01
 *     elif index ==  2: fn[0] = errhdl_02
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":271
 * 
 * 
 * cdef inline int errhdl_new(             # <<<<<<<<<<<<<<
 *     object function,
 *     mpi_ehfn_t **fn,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *__pyx_v_function, MPI_Session_errhandler_function **__pyx_v_fn) {
  PyObject *__pyx_v_registry = 0;
  int __pyx_v_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0errhdl_new", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":276
 * ) except -1:
 *     # check whether the function is callable
 *     function.__call__             # <<<<<<<<<<<<<<
 *     # find a free slot in the registry
 *     # and register the Python function
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_function, __pyx_n_s_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":279
 *     # find a free slot in the registry
 *     # and register the Python function
 *     cdef list registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = ((PyObject*)Py_None);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":281
 *     cdef list registry = None
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Comm_errhandler_function:
 *         registry = errhdl_registry[1]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 281, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(11, 281, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_registry, ((PyObject*)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":288
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     cdef int index = 0             # <<<<<<<<<<<<<<
 *     try:
 *         with errhdl_lock:
 */
  __pyx_v_index = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
      /*with:*/ {
        __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/errhimpl.pxi":291
 *     try:
 *         with errhdl_lock:
 *             index = registry.index(None, 1)             # <<<<<<<<<<<<<<
 *             registry[index] = function
 *     except ValueError:
 */
              __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_index, __pyx_v_registry, Py_None, __pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_v_index = __pyx_t_12;

              /* "src/mpi4py/MPI.src/errhimpl.pxi":292
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 *             registry[index] = function             # <<<<<<<<<<<<<<
 *     except ValueError:
 *         raise RuntimeError(
 */
              if (unlikely(__pyx_v_registry == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(11, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0))) __PYX_ERR(11, 292, __pyx_L13_error)

              /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_13, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_14);
              __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_14);
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (__pyx_t_15 < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __pyx_t_16 = (!__pyx_t_15);
              if (unlikely(__pyx_t_16)) {
                __Pyx_GIVEREF(__pyx_t_1);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_7);
                __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(11, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_5) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(11, 290, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":293
 *             index = registry.index(None, 1)
 *             registry[index] = function
 *     except ValueError:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "cannot create too many user-defined error handlers",
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(11, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_1);

      /* "src/mpi4py/MPI.src/errhimpl.pxi":294
 *             registry[index] = function
 *     except ValueError:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "cannot create too many user-defined error handlers",
 *         )
 */
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 294, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_Raise(__pyx_t_13, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __PYX_ERR(11, 294, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":299
 *     # map slot index to the associated C callback,
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)             # <<<<<<<<<<<<<<
 *     return index
 * 
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_map(__pyx_v_index, __pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":300
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)
 *     return index             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_index;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":271
 * 
 * 
 * cdef inline int errhdl_new(             # <<<<<<<<<<<<<<
 *     object function,
 *     mpi_ehfn_t **fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *__pyx_v_function, MPI_Comm_errhandler_function **__pyx_v_fn) {
  PyObject *__pyx_v_registry = 0;
  int __pyx_v_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1errhdl_new", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":276
 * ) except -1:
 *     # check whether the function is callable
 *     function.__call__             # <<<<<<<<<<<<<<
 *     # find a free slot in the registry
 *     # and register the Python function
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_function, __pyx_n_s_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":279
 *     # find a free slot in the registry
 *     # and register the Python function
 *     cdef list registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = ((PyObject*)Py_None);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":283
 *         registry = errhdl_registry[0]
 *     if mpi_ehfn_t is MPI_Comm_errhandler_function:
 *         registry = errhdl_registry[1]             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Win_errhandler_function:
 *         registry = errhdl_registry[2]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 283, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(11, 283, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_registry, ((PyObject*)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":288
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     cdef int index = 0             # <<<<<<<<<<<<<<
 *     try:
 *         with errhdl_lock:
 */
  __pyx_v_index = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
      /*with:*/ {
        __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/errhimpl.pxi":291
 *     try:
 *         with errhdl_lock:
 *             index = registry.index(None, 1)             # <<<<<<<<<<<<<<
 *             registry[index] = function
 *     except ValueError:
 */
              __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_index, __pyx_v_registry, Py_None, __pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_v_index = __pyx_t_12;

              /* "src/mpi4py/MPI.src/errhimpl.pxi":292
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 *             registry[index] = function             # <<<<<<<<<<<<<<
 *     except ValueError:
 *         raise RuntimeError(
 */
              if (unlikely(__pyx_v_registry == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(11, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0))) __PYX_ERR(11, 292, __pyx_L13_error)

              /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_13, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_14);
              __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_14);
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (__pyx_t_15 < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __pyx_t_16 = (!__pyx_t_15);
              if (unlikely(__pyx_t_16)) {
                __Pyx_GIVEREF(__pyx_t_1);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_7);
                __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(11, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_5) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(11, 290, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":293
 *             index = registry.index(None, 1)
 *             registry[index] = function
 *     except ValueError:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "cannot create too many user-defined error handlers",
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(11, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_1);

      /* "src/mpi4py/MPI.src/errhimpl.pxi":294
 *             registry[index] = function
 *     except ValueError:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "cannot create too many user-defined error handlers",
 *         )
 */
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 294, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_Raise(__pyx_t_13, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __PYX_ERR(11, 294, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":299
 *     # map slot index to the associated C callback,
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)             # <<<<<<<<<<<<<<
 *     return index
 * 
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_map(__pyx_v_index, __pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":300
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)
 *     return index             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_index;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":271
 * 
 * 
 * cdef inline int errhdl_new(             # <<<<<<<<<<<<<<
 *     object function,
 *     mpi_ehfn_t **fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *__pyx_v_function, MPI_Win_errhandler_function **__pyx_v_fn) {
  PyObject *__pyx_v_registry = 0;
  int __pyx_v_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2errhdl_new", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":276
 * ) except -1:
 *     # check whether the function is callable
 *     function.__call__             # <<<<<<<<<<<<<<
 *     # find a free slot in the registry
 *     # and register the Python function
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_function, __pyx_n_s_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":279
 *     # find a free slot in the registry
 *     # and register the Python function
 *     cdef list registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = ((PyObject*)Py_None);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":285
 *         registry = errhdl_registry[1]
 *     if mpi_ehfn_t is MPI_Win_errhandler_function:
 *         registry = errhdl_registry[2]             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 285, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 2, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(11, 285, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_registry, ((PyObject*)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":288
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     cdef int index = 0             # <<<<<<<<<<<<<<
 *     try:
 *         with errhdl_lock:
 */
  __pyx_v_index = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
      /*with:*/ {
        __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/errhimpl.pxi":291
 *     try:
 *         with errhdl_lock:
 *             index = registry.index(None, 1)             # <<<<<<<<<<<<<<
 *             registry[index] = function
 *     except ValueError:
 */
              __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_index, __pyx_v_registry, Py_None, __pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_v_index = __pyx_t_12;

              /* "src/mpi4py/MPI.src/errhimpl.pxi":292
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 *             registry[index] = function             # <<<<<<<<<<<<<<
 *     except ValueError:
 *         raise RuntimeError(
 */
              if (unlikely(__pyx_v_registry == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(11, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0))) __PYX_ERR(11, 292, __pyx_L13_error)

              /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_13, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_14);
              __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_14);
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (__pyx_t_15 < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __pyx_t_16 = (!__pyx_t_15);
              if (unlikely(__pyx_t_16)) {
                __Pyx_GIVEREF(__pyx_t_1);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_7);
                __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(11, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_5) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(11, 290, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":293
 *             index = registry.index(None, 1)
 *             registry[index] = function
 *     except ValueError:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "cannot create too many user-defined error handlers",
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(11, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_1);

      /* "src/mpi4py/MPI.src/errhimpl.pxi":294
 *             registry[index] = function
 *     except ValueError:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "cannot create too many user-defined error handlers",
 *         )
 */
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 294, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_Raise(__pyx_t_13, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __PYX_ERR(11, 294, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":299
 *     # map slot index to the associated C callback,
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)             # <<<<<<<<<<<<<<
 *     return index
 * 
 */
  __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_map(__pyx_v_index, __pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":300
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)
 *     return index             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_index;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":271
 * 
 * 
 * cdef inline int errhdl_new(             # <<<<<<<<<<<<<<
 *     object function,
 *     mpi_ehfn_t **fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_new(PyObject *__pyx_v_function, MPI_File_errhandler_function **__pyx_v_fn) {
  PyObject *__pyx_v_registry = 0;
  int __pyx_v_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3errhdl_new", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":276
 * ) except -1:
 *     # check whether the function is callable
 *     function.__call__             # <<<<<<<<<<<<<<
 *     # find a free slot in the registry
 *     # and register the Python function
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_function, __pyx_n_s_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":279
 *     # find a free slot in the registry
 *     # and register the Python function
 *     cdef list registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = ((PyObject*)Py_None);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":287
 *         registry = errhdl_registry[2]
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]             # <<<<<<<<<<<<<<
 *     cdef int index = 0
 *     try:
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 287, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 3, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(11, 287, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_registry, ((PyObject*)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":288
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     cdef int index = 0             # <<<<<<<<<<<<<<
 *     try:
 *         with errhdl_lock:
 */
  __pyx_v_index = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
      /*with:*/ {
        __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 290, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 290, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 290, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/errhimpl.pxi":291
 *     try:
 *         with errhdl_lock:
 *             index = registry.index(None, 1)             # <<<<<<<<<<<<<<
 *             registry[index] = function
 *     except ValueError:
 */
              __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_index, __pyx_v_registry, Py_None, __pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(11, 291, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_v_index = __pyx_t_12;

              /* "src/mpi4py/MPI.src/errhimpl.pxi":292
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 *             registry[index] = function             # <<<<<<<<<<<<<<
 *     except ValueError:
 *         raise RuntimeError(
 */
              if (unlikely(__pyx_v_registry == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(11, 292, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0))) __PYX_ERR(11, 292, __pyx_L13_error)

              /* "src/mpi4py/MPI.src/errhimpl.pxi":290
 *     cdef int index = 0
 *     try:
 *         with errhdl_lock:             # <<<<<<<<<<<<<<
 *             index = registry.index(None, 1)
 *             registry[index] = function
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_3errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_13, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_14);
              __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_14);
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (__pyx_t_15 < 0) __PYX_ERR(11, 290, __pyx_L15_except_error)
              __pyx_t_16 = (!__pyx_t_15);
              if (unlikely(__pyx_t_16)) {
                __Pyx_GIVEREF(__pyx_t_1);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_7);
                __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(11, 290, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_5) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(11, 290, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":293
 *             index = registry.index(None, 1)
 *             registry[index] = function
 *     except ValueError:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "cannot create too many user-defined error handlers",
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_3errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(11, 293, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_1);

      /* "src/mpi4py/MPI.src/errhimpl.pxi":294
 *             registry[index] = function
 *     except ValueError:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "cannot create too many user-defined error handlers",
 *         )
 */
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(11, 294, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_Raise(__pyx_t_13, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __PYX_ERR(11, 294, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/errhimpl.pxi":289
 *         registry = errhdl_registry[3]
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with errhdl_lock:
 *             index = registry.index(None, 1)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":299
 *     # map slot index to the associated C callback,
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)             # <<<<<<<<<<<<<<
 *     return index
 * 
 */
  __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_map(__pyx_v_index, __pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":300
 *     # and return the slot index in the registry
 *     errhdl_map(index, fn)
 *     return index             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_index;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":271
 * 
 * 
 * cdef inline int errhdl_new(             # <<<<<<<<<<<<<<
 *     object function,
 *     mpi_ehfn_t **fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":304
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef inline int errhdl_del(             # <<<<<<<<<<<<<<
 *     int *indexp,
 *     mpi_ehfn_t *fn,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_del(int *__pyx_v_indexp, MPI_Session_errhandler_function *__pyx_v_fn) {
  int __pyx_v_index;
  PyObject *__pyx_v_registry = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0errhdl_del", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":308
 *     mpi_ehfn_t *fn,
 * ) except -1:
 *     <void> fn  # unused             # <<<<<<<<<<<<<<
 *     # clear index value
 *     cdef int index = indexp[0]
 */
  ((void)__pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":310
 *     <void> fn  # unused
 *     # clear index value
 *     cdef int index = indexp[0]             # <<<<<<<<<<<<<<
 *     indexp[0] = 0
 *     # free slot in the registry
 */
  __pyx_v_index = (__pyx_v_indexp[0]);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":311
 *     # clear index value
 *     cdef int index = indexp[0]
 *     indexp[0] = 0             # <<<<<<<<<<<<<<
 *     # free slot in the registry
 *     cdef object registry = None
 */
  (__pyx_v_indexp[0]) = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":313
 *     indexp[0] = 0
 *     # free slot in the registry
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":315
 *     cdef object registry = None
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Comm_errhandler_function:
 *         registry = errhdl_registry[1]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 315, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/errhimpl.pxi":323
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:
 *         registry[index] = None             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
          if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, Py_None, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0))) __PYX_ERR(11, 323, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_0errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(11, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 322, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":324
 *     with errhdl_lock:
 *         registry[index] = None
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":304
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef inline int errhdl_del(             # <<<<<<<<<<<<<<
 *     int *indexp,
 *     mpi_ehfn_t *fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_del(int *__pyx_v_indexp, MPI_Comm_errhandler_function *__pyx_v_fn) {
  int __pyx_v_index;
  PyObject *__pyx_v_registry = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1errhdl_del", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":308
 *     mpi_ehfn_t *fn,
 * ) except -1:
 *     <void> fn  # unused             # <<<<<<<<<<<<<<
 *     # clear index value
 *     cdef int index = indexp[0]
 */
  ((void)__pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":310
 *     <void> fn  # unused
 *     # clear index value
 *     cdef int index = indexp[0]             # <<<<<<<<<<<<<<
 *     indexp[0] = 0
 *     # free slot in the registry
 */
  __pyx_v_index = (__pyx_v_indexp[0]);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":311
 *     # clear index value
 *     cdef int index = indexp[0]
 *     indexp[0] = 0             # <<<<<<<<<<<<<<
 *     # free slot in the registry
 *     cdef object registry = None
 */
  (__pyx_v_indexp[0]) = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":313
 *     indexp[0] = 0
 *     # free slot in the registry
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":317
 *         registry = errhdl_registry[0]
 *     if mpi_ehfn_t is MPI_Comm_errhandler_function:
 *         registry = errhdl_registry[1]             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Win_errhandler_function:
 *         registry = errhdl_registry[2]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 317, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/errhimpl.pxi":323
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:
 *         registry[index] = None             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
          if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, Py_None, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0))) __PYX_ERR(11, 323, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_1errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(11, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 322, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":324
 *     with errhdl_lock:
 *         registry[index] = None
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":304
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef inline int errhdl_del(             # <<<<<<<<<<<<<<
 *     int *indexp,
 *     mpi_ehfn_t *fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_del(int *__pyx_v_indexp, MPI_Win_errhandler_function *__pyx_v_fn) {
  int __pyx_v_index;
  PyObject *__pyx_v_registry = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2errhdl_del", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":308
 *     mpi_ehfn_t *fn,
 * ) except -1:
 *     <void> fn  # unused             # <<<<<<<<<<<<<<
 *     # clear index value
 *     cdef int index = indexp[0]
 */
  ((void)__pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":310
 *     <void> fn  # unused
 *     # clear index value
 *     cdef int index = indexp[0]             # <<<<<<<<<<<<<<
 *     indexp[0] = 0
 *     # free slot in the registry
 */
  __pyx_v_index = (__pyx_v_indexp[0]);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":311
 *     # clear index value
 *     cdef int index = indexp[0]
 *     indexp[0] = 0             # <<<<<<<<<<<<<<
 *     # free slot in the registry
 *     cdef object registry = None
 */
  (__pyx_v_indexp[0]) = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":313
 *     indexp[0] = 0
 *     # free slot in the registry
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":319
 *         registry = errhdl_registry[1]
 *     if mpi_ehfn_t is MPI_Win_errhandler_function:
 *         registry = errhdl_registry[2]             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 319, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 2, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/errhimpl.pxi":323
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:
 *         registry[index] = None             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
          if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, Py_None, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0))) __PYX_ERR(11, 323, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_2errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(11, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 322, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":324
 *     with errhdl_lock:
 *         registry[index] = None
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":304
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef inline int errhdl_del(             # <<<<<<<<<<<<<<
 *     int *indexp,
 *     mpi_ehfn_t *fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_del(int *__pyx_v_indexp, MPI_File_errhandler_function *__pyx_v_fn) {
  int __pyx_v_index;
  PyObject *__pyx_v_registry = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_3errhdl_del", 1);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":308
 *     mpi_ehfn_t *fn,
 * ) except -1:
 *     <void> fn  # unused             # <<<<<<<<<<<<<<
 *     # clear index value
 *     cdef int index = indexp[0]
 */
  ((void)__pyx_v_fn);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":310
 *     <void> fn  # unused
 *     # clear index value
 *     cdef int index = indexp[0]             # <<<<<<<<<<<<<<
 *     indexp[0] = 0
 *     # free slot in the registry
 */
  __pyx_v_index = (__pyx_v_indexp[0]);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":311
 *     # clear index value
 *     cdef int index = indexp[0]
 *     indexp[0] = 0             # <<<<<<<<<<<<<<
 *     # free slot in the registry
 *     cdef object registry = None
 */
  (__pyx_v_indexp[0]) = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":313
 *     indexp[0] = 0
 *     # free slot in the registry
 *     cdef object registry = None             # <<<<<<<<<<<<<<
 *     if mpi_ehfn_t is MPI_Session_errhandler_function:
 *         registry = errhdl_registry[0]
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_registry = Py_None;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":321
 *         registry = errhdl_registry[2]
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]             # <<<<<<<<<<<<<<
 *     with errhdl_lock:
 *         registry[index] = None
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI_errhdl_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 321, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_errhdl_registry, 3, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_registry, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 322, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 322, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 322, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/errhimpl.pxi":323
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:
 *         registry[index] = None             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
          if (unlikely((__Pyx_SetItemInt(__pyx_v_registry, __pyx_v_index, Py_None, int, 1, __Pyx_PyInt_From_int, 0, 1, 1) < 0))) __PYX_ERR(11, 323, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/errhimpl.pxi":322
 *     if mpi_ehfn_t is MPI_File_errhandler_function:
 *         registry = errhdl_registry[3]
 *     with errhdl_lock:             # <<<<<<<<<<<<<<
 *         registry[index] = None
 *     return 0
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.__pyx_fuse_3errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(11, 322, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(11, 322, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 322, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":324
 *     with errhdl_lock:
 *         registry[index] = None
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":304
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef inline int errhdl_del(             # <<<<<<<<<<<<<<
 *     int *indexp,
 *     mpi_ehfn_t *fn,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.errhdl_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_registry);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":328
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int session_set_eh(MPI_Session ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_SESSION_NULL: return 0
 *     cdef int opt = options.errors
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_session_set_eh(MPI_Session __pyx_v_ob) {
  int __pyx_v_opt;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/errhimpl.pxi":329
 * 
 * cdef inline int session_set_eh(MPI_Session ob) except -1 nogil:
 *     if ob == MPI_SESSION_NULL: return 0             # <<<<<<<<<<<<<<
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 */
  __pyx_t_1 = (__pyx_v_ob == MPI_SESSION_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":330
 * cdef inline int session_set_eh(MPI_Session ob) except -1 nogil:
 *     if ob == MPI_SESSION_NULL: return 0
 *     cdef int opt = options.errors             # <<<<<<<<<<<<<<
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_RETURN) )
 */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_options.errors;
  __pyx_v_opt = __pyx_t_2;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":331
 *     if ob == MPI_SESSION_NULL: return 0
 *     cdef int opt = options.errors
 *     if   opt == 0: pass             # <<<<<<<<<<<<<<
 *     elif opt == 1: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ABORT) )
 */
  __pyx_t_1 = (__pyx_v_opt == 0);
  if (__pyx_t_1) {
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":332
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_RETURN) )             # <<<<<<<<<<<<<<
 *     elif opt == 2: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 */
  __pyx_t_1 = (__pyx_v_opt == 1);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_set_errhandler(__pyx_v_ob, MPI_ERRORS_RETURN)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 332, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":333
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ABORT) )             # <<<<<<<<<<<<<<
 *     elif opt == 3: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_opt == 2);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_set_errhandler(__pyx_v_ob, MPI_ERRORS_ABORT)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 333, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":334
 *     elif opt == 1: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_opt == 3);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_set_errhandler(__pyx_v_ob, MPI_ERRORS_ARE_FATAL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 334, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":335
 *     elif opt == 2: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Session_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":328
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int session_set_eh(MPI_Session ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_SESSION_NULL: return 0
 *     cdef int opt = options.errors
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.session_set_eh", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":338
 * 
 * 
 * cdef inline int comm_set_eh(MPI_Comm ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_COMM_NULL: return 0
 *     cdef int opt = options.errors
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_comm_set_eh(MPI_Comm __pyx_v_ob) {
  int __pyx_v_opt;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/errhimpl.pxi":339
 * 
 * cdef inline int comm_set_eh(MPI_Comm ob) except -1 nogil:
 *     if ob == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 */
  __pyx_t_1 = (__pyx_v_ob == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":340
 * cdef inline int comm_set_eh(MPI_Comm ob) except -1 nogil:
 *     if ob == MPI_COMM_NULL: return 0
 *     cdef int opt = options.errors             # <<<<<<<<<<<<<<
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_RETURN) )
 */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_options.errors;
  __pyx_v_opt = __pyx_t_2;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":341
 *     if ob == MPI_COMM_NULL: return 0
 *     cdef int opt = options.errors
 *     if   opt == 0: pass             # <<<<<<<<<<<<<<
 *     elif opt == 1: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ABORT) )
 */
  __pyx_t_1 = (__pyx_v_opt == 0);
  if (__pyx_t_1) {
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":342
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_RETURN) )             # <<<<<<<<<<<<<<
 *     elif opt == 2: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 */
  __pyx_t_1 = (__pyx_v_opt == 1);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_errhandler(__pyx_v_ob, MPI_ERRORS_RETURN)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 342, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":343
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ABORT) )             # <<<<<<<<<<<<<<
 *     elif opt == 3: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_opt == 2);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_errhandler(__pyx_v_ob, MPI_ERRORS_ABORT)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 343, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":344
 *     elif opt == 1: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_opt == 3);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_errhandler(__pyx_v_ob, MPI_ERRORS_ARE_FATAL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 344, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":345
 *     elif opt == 2: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Comm_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":338
 * 
 * 
 * cdef inline int comm_set_eh(MPI_Comm ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_COMM_NULL: return 0
 *     cdef int opt = options.errors
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.comm_set_eh", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":348
 * 
 * 
 * cdef inline int win_set_eh(MPI_Win ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_WIN_NULL: return 0
 *     cdef int opt = options.errors
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_set_eh(MPI_Win __pyx_v_ob) {
  int __pyx_v_opt;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/errhimpl.pxi":349
 * 
 * cdef inline int win_set_eh(MPI_Win ob) except -1 nogil:
 *     if ob == MPI_WIN_NULL: return 0             # <<<<<<<<<<<<<<
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 */
  __pyx_t_1 = (__pyx_v_ob == MPI_WIN_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":350
 * cdef inline int win_set_eh(MPI_Win ob) except -1 nogil:
 *     if ob == MPI_WIN_NULL: return 0
 *     cdef int opt = options.errors             # <<<<<<<<<<<<<<
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_RETURN) )
 */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_options.errors;
  __pyx_v_opt = __pyx_t_2;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":351
 *     if ob == MPI_WIN_NULL: return 0
 *     cdef int opt = options.errors
 *     if   opt == 0: pass             # <<<<<<<<<<<<<<
 *     elif opt == 1: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ABORT) )
 */
  __pyx_t_1 = (__pyx_v_opt == 0);
  if (__pyx_t_1) {
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":352
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_RETURN) )             # <<<<<<<<<<<<<<
 *     elif opt == 2: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 */
  __pyx_t_1 = (__pyx_v_opt == 1);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(__pyx_v_ob, MPI_ERRORS_RETURN)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 352, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":353
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ABORT) )             # <<<<<<<<<<<<<<
 *     elif opt == 3: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_opt == 2);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(__pyx_v_ob, MPI_ERRORS_ABORT)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 353, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":354
 *     elif opt == 1: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_opt == 3);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(__pyx_v_ob, MPI_ERRORS_ARE_FATAL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 354, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":355
 *     elif opt == 2: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_Win_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":348
 * 
 * 
 * cdef inline int win_set_eh(MPI_Win ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_WIN_NULL: return 0
 *     cdef int opt = options.errors
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.win_set_eh", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/errhimpl.pxi":358
 * 
 * 
 * cdef inline int file_set_eh(MPI_File ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_FILE_NULL: return 0
 *     cdef int opt = options.errors
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_file_set_eh(MPI_File __pyx_v_ob) {
  int __pyx_v_opt;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/errhimpl.pxi":359
 * 
 * cdef inline int file_set_eh(MPI_File ob) except -1 nogil:
 *     if ob == MPI_FILE_NULL: return 0             # <<<<<<<<<<<<<<
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 */
  __pyx_t_1 = (__pyx_v_ob == MPI_FILE_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":360
 * cdef inline int file_set_eh(MPI_File ob) except -1 nogil:
 *     if ob == MPI_FILE_NULL: return 0
 *     cdef int opt = options.errors             # <<<<<<<<<<<<<<
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_RETURN) )
 */
  __pyx_t_2 = __pyx_v_6mpi4py_3MPI_options.errors;
  __pyx_v_opt = __pyx_t_2;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":361
 *     if ob == MPI_FILE_NULL: return 0
 *     cdef int opt = options.errors
 *     if   opt == 0: pass             # <<<<<<<<<<<<<<
 *     elif opt == 1: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ABORT) )
 */
  __pyx_t_1 = (__pyx_v_opt == 0);
  if (__pyx_t_1) {
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":362
 *     cdef int opt = options.errors
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_RETURN) )             # <<<<<<<<<<<<<<
 *     elif opt == 2: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 */
  __pyx_t_1 = (__pyx_v_opt == 1);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(__pyx_v_ob, MPI_ERRORS_RETURN)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 362, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":363
 *     if   opt == 0: pass
 *     elif opt == 1: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ABORT) )             # <<<<<<<<<<<<<<
 *     elif opt == 3: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_opt == 2);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(__pyx_v_ob, MPI_ERRORS_ABORT)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 363, __pyx_L1_error)
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":364
 *     elif opt == 1: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_RETURN) )
 *     elif opt == 2: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_opt == 3);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(__pyx_v_ob, MPI_ERRORS_ARE_FATAL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(11, 364, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":365
 *     elif opt == 2: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ABORT) )
 *     elif opt == 3: CHKERR( MPI_File_set_errhandler(ob, MPI_ERRORS_ARE_FATAL) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":358
 * 
 * 
 * cdef inline int file_set_eh(MPI_File ob) except -1 nogil:             # <<<<<<<<<<<<<<
 *     if ob == MPI_FILE_NULL: return 0
 *     cdef int opt = options.errors
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.file_set_eh", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":20
 *     cdef MPI_Status  tmp_sts
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.count    = 0
 *         self.requests = NULL
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_5_p_rs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_5_p_rs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5_p_rs___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_5_p_rs___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":21
 * 
 *     def __cinit__(self):
 *         self.count    = 0             # <<<<<<<<<<<<<<
 *         self.requests = NULL
 *         self.status   = MPI_STATUS_IGNORE
 */
  __pyx_v_self->count = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":22
 *     def __cinit__(self):
 *         self.count    = 0
 *         self.requests = NULL             # <<<<<<<<<<<<<<
 *         self.status   = MPI_STATUS_IGNORE
 *         self.statuses = MPI_STATUSES_IGNORE
 */
  __pyx_v_self->requests = NULL;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":23
 *         self.count    = 0
 *         self.requests = NULL
 *         self.status   = MPI_STATUS_IGNORE             # <<<<<<<<<<<<<<
 *         self.statuses = MPI_STATUSES_IGNORE
 *         self.outcount = MPI_UNDEFINED
 */
  __pyx_v_self->status = MPI_STATUS_IGNORE;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":24
 *         self.requests = NULL
 *         self.status   = MPI_STATUS_IGNORE
 *         self.statuses = MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *         self.outcount = MPI_UNDEFINED
 *         self.indices  = NULL
 */
  __pyx_v_self->statuses = MPI_STATUSES_IGNORE;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":25
 *         self.status   = MPI_STATUS_IGNORE
 *         self.statuses = MPI_STATUSES_IGNORE
 *         self.outcount = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         self.indices  = NULL
 *         self.arg_req = None
 */
  __pyx_v_self->outcount = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":26
 *         self.statuses = MPI_STATUSES_IGNORE
 *         self.outcount = MPI_UNDEFINED
 *         self.indices  = NULL             # <<<<<<<<<<<<<<
 *         self.arg_req = None
 *         self.buf_req = None
 */
  __pyx_v_self->indices = NULL;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":27
 *         self.outcount = MPI_UNDEFINED
 *         self.indices  = NULL
 *         self.arg_req = None             # <<<<<<<<<<<<<<
 *         self.buf_req = None
 *         self.buf_sts = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->arg_req);
  __Pyx_DECREF(__pyx_v_self->arg_req);
  __pyx_v_self->arg_req = Py_None;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":28
 *         self.indices  = NULL
 *         self.arg_req = None
 *         self.buf_req = None             # <<<<<<<<<<<<<<
 *         self.buf_sts = None
 *         self.buf_ids = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->buf_req);
  __Pyx_DECREF(__pyx_v_self->buf_req);
  __pyx_v_self->buf_req = Py_None;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":29
 *         self.arg_req = None
 *         self.buf_req = None
 *         self.buf_sts = None             # <<<<<<<<<<<<<<
 *         self.buf_ids = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->buf_sts);
  __Pyx_DECREF(__pyx_v_self->buf_sts);
  __pyx_v_self->buf_sts = Py_None;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":30
 *         self.buf_req = None
 *         self.buf_sts = None
 *         self.buf_ids = None             # <<<<<<<<<<<<<<
 * 
 *     cdef int set_request(self, Request request) except -1:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->buf_ids);
  __Pyx_DECREF(__pyx_v_self->buf_ids);
  __pyx_v_self->buf_ids = Py_None;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":20
 *     cdef MPI_Status  tmp_sts
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.count    = 0
 *         self.requests = NULL
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":32
 *         self.buf_ids = None
 * 
 *     cdef int set_request(self, Request request) except -1:             # <<<<<<<<<<<<<<
 *         self.arg_req = request
 *         return 0
 */

static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_request(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_request", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":33
 * 
 *     cdef int set_request(self, Request request) except -1:
 *         self.arg_req = request             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __Pyx_GIVEREF((PyObject *)__pyx_v_request);
  __Pyx_GOTREF(__pyx_v_self->arg_req);
  __Pyx_DECREF(__pyx_v_self->arg_req);
  __pyx_v_self->arg_req = ((PyObject *)__pyx_v_request);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":34
 *     cdef int set_request(self, Request request) except -1:
 *         self.arg_req = request
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int set_status(self, Status status) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":32
 *         self.buf_ids = None
 * 
 *     cdef int set_request(self, Request request) except -1:             # <<<<<<<<<<<<<<
 *         self.arg_req = request
 *         return 0
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":36
 *         return 0
 * 
 *     cdef int set_status(self, Status status) except -1:             # <<<<<<<<<<<<<<
 *         if status is not None:
 *             self.status = &status.ob_mpi
 */

static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_status(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":37
 * 
 *     cdef int set_status(self, Status status) except -1:
 *         if status is not None:             # <<<<<<<<<<<<<<
 *             self.status = &status.ob_mpi
 *         else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_status) != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":38
 *     cdef int set_status(self, Status status) except -1:
 *         if status is not None:
 *             self.status = &status.ob_mpi             # <<<<<<<<<<<<<<
 *         else:
 *             self.status = &self.tmp_sts
 */
    __pyx_v_self->status = (&__pyx_v_status->ob_mpi);

    /* "src/mpi4py/MPI.src/reqimpl.pxi":37
 * 
 *     cdef int set_status(self, Status status) except -1:
 *         if status is not None:             # <<<<<<<<<<<<<<
 *             self.status = &status.ob_mpi
 *         else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":40
 *             self.status = &status.ob_mpi
 *         else:
 *             self.status = &self.tmp_sts             # <<<<<<<<<<<<<<
 *             <void>MPI_Status_set_source ( self.status, MPI_ANY_SOURCE )
 *             <void>MPI_Status_set_tag    ( self.status, MPI_ANY_TAG    )
 */
  /*else*/ {
    __pyx_v_self->status = (&__pyx_v_self->tmp_sts);

    /* "src/mpi4py/MPI.src/reqimpl.pxi":41
 *         else:
 *             self.status = &self.tmp_sts
 *             <void>MPI_Status_set_source ( self.status, MPI_ANY_SOURCE )             # <<<<<<<<<<<<<<
 *             <void>MPI_Status_set_tag    ( self.status, MPI_ANY_TAG    )
 *             <void>MPI_Status_set_error  ( self.status, MPI_SUCCESS    )
 */
    ((void)MPI_Status_set_source(__pyx_v_self->status, MPI_ANY_SOURCE));

    /* "src/mpi4py/MPI.src/reqimpl.pxi":42
 *             self.status = &self.tmp_sts
 *             <void>MPI_Status_set_source ( self.status, MPI_ANY_SOURCE )
 *             <void>MPI_Status_set_tag    ( self.status, MPI_ANY_TAG    )             # <<<<<<<<<<<<<<
 *             <void>MPI_Status_set_error  ( self.status, MPI_SUCCESS    )
 *         return 0
 */
    ((void)MPI_Status_set_tag(__pyx_v_self->status, MPI_ANY_TAG));

    /* "src/mpi4py/MPI.src/reqimpl.pxi":43
 *             <void>MPI_Status_set_source ( self.status, MPI_ANY_SOURCE )
 *             <void>MPI_Status_set_tag    ( self.status, MPI_ANY_TAG    )
 *             <void>MPI_Status_set_error  ( self.status, MPI_SUCCESS    )             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    ((void)MPI_Status_set_error(__pyx_v_self->status, MPI_SUCCESS));
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":44
 *             <void>MPI_Status_set_tag    ( self.status, MPI_ANY_TAG    )
 *             <void>MPI_Status_set_error  ( self.status, MPI_SUCCESS    )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int set_requests(self, requests) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":36
 *         return 0
 * 
 *     cdef int set_status(self, Status status) except -1:             # <<<<<<<<<<<<<<
 *         if status is not None:
 *             self.status = &status.ob_mpi
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":46
 *         return 0
 * 
 *     cdef int set_requests(self, requests) except -1:             # <<<<<<<<<<<<<<
 *         self.arg_req = requests
 *         cdef Py_ssize_t count = len(requests)
 */

static int __pyx_f_6mpi4py_3MPI_5_p_rs_set_requests(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, PyObject *__pyx_v_requests) {
  Py_ssize_t __pyx_v_count;
  int __pyx_v_i;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  MPI_Request __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_requests", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":47
 * 
 *     cdef int set_requests(self, requests) except -1:
 *         self.arg_req = requests             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t count = len(requests)
 *         self.count = <int>count
 */
  __Pyx_INCREF(__pyx_v_requests);
  __Pyx_GIVEREF(__pyx_v_requests);
  __Pyx_GOTREF(__pyx_v_self->arg_req);
  __Pyx_DECREF(__pyx_v_self->arg_req);
  __pyx_v_self->arg_req = __pyx_v_requests;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":48
 *     cdef int set_requests(self, requests) except -1:
 *         self.arg_req = requests
 *         cdef Py_ssize_t count = len(requests)             # <<<<<<<<<<<<<<
 *         self.count = <int>count
 *         self.outcount = <int>count
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_requests); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(12, 48, __pyx_L1_error)
  __pyx_v_count = __pyx_t_1;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":49
 *         self.arg_req = requests
 *         cdef Py_ssize_t count = len(requests)
 *         self.count = <int>count             # <<<<<<<<<<<<<<
 *         self.outcount = <int>count
 *         self.buf_req = allocate(self.count, sizeof(MPI_Request), &self.requests)
 */
  __pyx_v_self->count = ((int)__pyx_v_count);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":50
 *         cdef Py_ssize_t count = len(requests)
 *         self.count = <int>count
 *         self.outcount = <int>count             # <<<<<<<<<<<<<<
 *         self.buf_req = allocate(self.count, sizeof(MPI_Request), &self.requests)
 *         for i in range(self.count):
 */
  __pyx_v_self->outcount = ((int)__pyx_v_count);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":51
 *         self.count = <int>count
 *         self.outcount = <int>count
 *         self.buf_req = allocate(self.count, sizeof(MPI_Request), &self.requests)             # <<<<<<<<<<<<<<
 *         for i in range(self.count):
 *             self.requests[i] = (<Request?>requests[i]).ob_mpi
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_self->count, (sizeof(MPI_Request)), (&__pyx_v_self->requests))); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->buf_req);
  __Pyx_DECREF(__pyx_v_self->buf_req);
  __pyx_v_self->buf_req = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":52
 *         self.outcount = <int>count
 *         self.buf_req = allocate(self.count, sizeof(MPI_Request), &self.requests)
 *         for i in range(self.count):             # <<<<<<<<<<<<<<
 *             self.requests[i] = (<Request?>requests[i]).ob_mpi
 *         return 0
 */
  __pyx_t_3 = __pyx_v_self->count;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":53
 *         self.buf_req = allocate(self.count, sizeof(MPI_Request), &self.requests)
 *         for i in range(self.count):
 *             self.requests[i] = (<Request?>requests[i]).ob_mpi             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_requests, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6mpi4py_3MPI_Request)))) __PYX_ERR(12, 53, __pyx_L1_error)
    __pyx_t_6 = ((struct PyMPIRequestObject *)__pyx_t_2)->ob_mpi;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    (__pyx_v_self->requests[__pyx_v_i]) = __pyx_t_6;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":54
 *         for i in range(self.count):
 *             self.requests[i] = (<Request?>requests[i]).ob_mpi
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int add_statuses(self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":46
 *         return 0
 * 
 *     cdef int set_requests(self, requests) except -1:             # <<<<<<<<<<<<<<
 *         self.arg_req = requests
 *         cdef Py_ssize_t count = len(requests)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.set_requests", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":56
 *         return 0
 * 
 *     cdef int add_statuses(self) except -1:             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *status = &self.tmp_sts
 *         <void>MPI_Status_set_source ( status, MPI_ANY_SOURCE )
 */

static int __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self) {
  MPI_Status *__pyx_v_status;
  int __pyx_v_i;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_statuses", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":57
 * 
 *     cdef int add_statuses(self) except -1:
 *         cdef MPI_Status *status = &self.tmp_sts             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_source ( status, MPI_ANY_SOURCE )
 *         <void>MPI_Status_set_tag    ( status, MPI_ANY_TAG    )
 */
  __pyx_v_status = (&__pyx_v_self->tmp_sts);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":58
 *     cdef int add_statuses(self) except -1:
 *         cdef MPI_Status *status = &self.tmp_sts
 *         <void>MPI_Status_set_source ( status, MPI_ANY_SOURCE )             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_tag    ( status, MPI_ANY_TAG    )
 *         <void>MPI_Status_set_error  ( status, MPI_SUCCESS    )
 */
  ((void)MPI_Status_set_source(__pyx_v_status, MPI_ANY_SOURCE));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":59
 *         cdef MPI_Status *status = &self.tmp_sts
 *         <void>MPI_Status_set_source ( status, MPI_ANY_SOURCE )
 *         <void>MPI_Status_set_tag    ( status, MPI_ANY_TAG    )             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_error  ( status, MPI_SUCCESS    )
 *         self.buf_sts = allocate(self.count, sizeof(MPI_Status), &self.statuses)
 */
  ((void)MPI_Status_set_tag(__pyx_v_status, MPI_ANY_TAG));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":60
 *         <void>MPI_Status_set_source ( status, MPI_ANY_SOURCE )
 *         <void>MPI_Status_set_tag    ( status, MPI_ANY_TAG    )
 *         <void>MPI_Status_set_error  ( status, MPI_SUCCESS    )             # <<<<<<<<<<<<<<
 *         self.buf_sts = allocate(self.count, sizeof(MPI_Status), &self.statuses)
 *         for i in range(self.count):
 */
  ((void)MPI_Status_set_error(__pyx_v_status, MPI_SUCCESS));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":61
 *         <void>MPI_Status_set_tag    ( status, MPI_ANY_TAG    )
 *         <void>MPI_Status_set_error  ( status, MPI_SUCCESS    )
 *         self.buf_sts = allocate(self.count, sizeof(MPI_Status), &self.statuses)             # <<<<<<<<<<<<<<
 *         for i in range(self.count):
 *             self.statuses[i] = status[0]
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_self->count, (sizeof(MPI_Status)), (&__pyx_v_self->statuses))); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->buf_sts);
  __Pyx_DECREF(__pyx_v_self->buf_sts);
  __pyx_v_self->buf_sts = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":62
 *         <void>MPI_Status_set_error  ( status, MPI_SUCCESS    )
 *         self.buf_sts = allocate(self.count, sizeof(MPI_Status), &self.statuses)
 *         for i in range(self.count):             # <<<<<<<<<<<<<<
 *             self.statuses[i] = status[0]
 *         return 0
 */
  __pyx_t_2 = __pyx_v_self->count;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":63
 *         self.buf_sts = allocate(self.count, sizeof(MPI_Status), &self.statuses)
 *         for i in range(self.count):
 *             self.statuses[i] = status[0]             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    (__pyx_v_self->statuses[__pyx_v_i]) = (__pyx_v_status[0]);
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":64
 *         for i in range(self.count):
 *             self.statuses[i] = status[0]
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int add_indices(self) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":56
 *         return 0
 * 
 *     cdef int add_statuses(self) except -1:             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *status = &self.tmp_sts
 *         <void>MPI_Status_set_source ( status, MPI_ANY_SOURCE )
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.add_statuses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":66
 *         return 0
 * 
 *     cdef int add_indices(self) except -1:             # <<<<<<<<<<<<<<
 *         self.outcount = MPI_UNDEFINED
 *         self.buf_ids = newarray(self.count, &self.indices)
 */

static int __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_indices", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":67
 * 
 *     cdef int add_indices(self) except -1:
 *         self.outcount = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         self.buf_ids = newarray(self.count, &self.indices)
 *         return 0
 */
  __pyx_v_self->outcount = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":68
 *     cdef int add_indices(self) except -1:
 *         self.outcount = MPI_UNDEFINED
 *         self.buf_ids = newarray(self.count, &self.indices)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_self->count, (&__pyx_v_self->indices)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->buf_ids);
  __Pyx_DECREF(__pyx_v_self->buf_ids);
  __pyx_v_self->buf_ids = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":69
 *         self.outcount = MPI_UNDEFINED
 *         self.buf_ids = newarray(self.count, &self.indices)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int acquire(self, requests, statuses=None) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":66
 *         return 0
 * 
 *     cdef int add_indices(self) except -1:             # <<<<<<<<<<<<<<
 *         self.outcount = MPI_UNDEFINED
 *         self.buf_ids = newarray(self.count, &self.indices)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.add_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":71
 *         return 0
 * 
 *     cdef int acquire(self, requests, statuses=None) except -1:             # <<<<<<<<<<<<<<
 *         self.set_requests(requests)
 *         if statuses is not None:
 */

static int __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, PyObject *__pyx_v_requests, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire *__pyx_optional_args) {
  PyObject *__pyx_v_statuses = ((PyObject *)Py_None);
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_statuses = __pyx_optional_args->statuses;
    }
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":72
 * 
 *     cdef int acquire(self, requests, statuses=None) except -1:
 *         self.set_requests(requests)             # <<<<<<<<<<<<<<
 *         if statuses is not None:
 *             self.add_statuses()
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_set_requests(__pyx_v_self, __pyx_v_requests); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 72, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/reqimpl.pxi":73
 *     cdef int acquire(self, requests, statuses=None) except -1:
 *         self.set_requests(requests)
 *         if statuses is not None:             # <<<<<<<<<<<<<<
 *             self.add_statuses()
 *         return 0
 */
  __pyx_t_2 = (__pyx_v_statuses != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":74
 *         self.set_requests(requests)
 *         if statuses is not None:
 *             self.add_statuses()             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 74, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/reqimpl.pxi":73
 *     cdef int acquire(self, requests, statuses=None) except -1:
 *         self.set_requests(requests)
 *         if statuses is not None:             # <<<<<<<<<<<<<<
 *             self.add_statuses()
 *         return 0
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":75
 *         if statuses is not None:
 *             self.add_statuses()
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int release(self, statuses=None) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":71
 *         return 0
 * 
 *     cdef int acquire(self, requests, statuses=None) except -1:             # <<<<<<<<<<<<<<
 *         self.set_requests(requests)
 *         if statuses is not None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":77
 *         return 0
 * 
 *     cdef int release(self, statuses=None) except -1:             # <<<<<<<<<<<<<<
 *         cdef Request request
 *         cdef Py_ssize_t nr = self.count
 */

static int __pyx_f_6mpi4py_3MPI_5_p_rs_release(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release *__pyx_optional_args) {
  PyObject *__pyx_v_statuses = ((PyObject *)Py_None);
  struct PyMPIRequestObject *__pyx_v_request = 0;
  Py_ssize_t __pyx_v_nr;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_outcount;
  Py_ssize_t __pyx_v_ns;
  CYTHON_UNUSED Py_ssize_t __pyx_7genexpr__pyx_v__;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("release", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_statuses = __pyx_optional_args->statuses;
    }
  }
  __Pyx_INCREF(__pyx_v_statuses);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":79
 *     cdef int release(self, statuses=None) except -1:
 *         cdef Request request
 *         cdef Py_ssize_t nr = self.count             # <<<<<<<<<<<<<<
 *         for i in range(nr):
 *             request = <Request>self.arg_req[i]
 */
  __pyx_t_1 = __pyx_v_self->count;
  __pyx_v_nr = __pyx_t_1;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":80
 *         cdef Request request
 *         cdef Py_ssize_t nr = self.count
 *         for i in range(nr):             # <<<<<<<<<<<<<<
 *             request = <Request>self.arg_req[i]
 *             request.ob_mpi = self.requests[i]
 */
  __pyx_t_2 = __pyx_v_nr;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":81
 *         cdef Py_ssize_t nr = self.count
 *         for i in range(nr):
 *             request = <Request>self.arg_req[i]             # <<<<<<<<<<<<<<
 *             request.ob_mpi = self.requests[i]
 *             if request.ob_mpi == MPI_REQUEST_NULL:
 */
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_self->arg_req, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __pyx_t_5;
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_request, ((struct PyMPIRequestObject *)__pyx_t_6));
    __pyx_t_6 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":82
 *         for i in range(nr):
 *             request = <Request>self.arg_req[i]
 *             request.ob_mpi = self.requests[i]             # <<<<<<<<<<<<<<
 *             if request.ob_mpi == MPI_REQUEST_NULL:
 *                 if request.ob_buf is not None:
 */
    __pyx_v_request->ob_mpi = (__pyx_v_self->requests[__pyx_v_i]);

    /* "src/mpi4py/MPI.src/reqimpl.pxi":83
 *             request = <Request>self.arg_req[i]
 *             request.ob_mpi = self.requests[i]
 *             if request.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *                 if request.ob_buf is not None:
 *                     request.ob_buf = None
 */
    __pyx_t_7 = (__pyx_v_request->ob_mpi == MPI_REQUEST_NULL);
    if (__pyx_t_7) {

      /* "src/mpi4py/MPI.src/reqimpl.pxi":84
 *             request.ob_mpi = self.requests[i]
 *             if request.ob_mpi == MPI_REQUEST_NULL:
 *                 if request.ob_buf is not None:             # <<<<<<<<<<<<<<
 *                     request.ob_buf = None
 *         #
 */
      __pyx_t_7 = (__pyx_v_request->ob_buf != Py_None);
      if (__pyx_t_7) {

        /* "src/mpi4py/MPI.src/reqimpl.pxi":85
 *             if request.ob_mpi == MPI_REQUEST_NULL:
 *                 if request.ob_buf is not None:
 *                     request.ob_buf = None             # <<<<<<<<<<<<<<
 *         #
 *         if statuses is None:
 */
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        __Pyx_GOTREF(__pyx_v_request->ob_buf);
        __Pyx_DECREF(__pyx_v_request->ob_buf);
        __pyx_v_request->ob_buf = Py_None;

        /* "src/mpi4py/MPI.src/reqimpl.pxi":84
 *             request.ob_mpi = self.requests[i]
 *             if request.ob_mpi == MPI_REQUEST_NULL:
 *                 if request.ob_buf is not None:             # <<<<<<<<<<<<<<
 *                     request.ob_buf = None
 *         #
 */
      }

      /* "src/mpi4py/MPI.src/reqimpl.pxi":83
 *             request = <Request>self.arg_req[i]
 *             request.ob_mpi = self.requests[i]
 *             if request.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *                 if request.ob_buf is not None:
 *                     request.ob_buf = None
 */
    }
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":87
 *                     request.ob_buf = None
 *         #
 *         if statuses is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         if self.outcount == MPI_UNDEFINED:
 */
  __pyx_t_7 = (__pyx_v_statuses == Py_None);
  if (__pyx_t_7) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":88
 *         #
 *         if statuses is None:
 *             return 0             # <<<<<<<<<<<<<<
 *         if self.outcount == MPI_UNDEFINED:
 *             return 0
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":87
 *                     request.ob_buf = None
 *         #
 *         if statuses is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         if self.outcount == MPI_UNDEFINED:
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":89
 *         if statuses is None:
 *             return 0
 *         if self.outcount == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             return 0
 *         cdef Py_ssize_t outcount = self.outcount
 */
  __pyx_t_7 = (__pyx_v_self->outcount == MPI_UNDEFINED);
  if (__pyx_t_7) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":90
 *             return 0
 *         if self.outcount == MPI_UNDEFINED:
 *             return 0             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t outcount = self.outcount
 *         cdef Py_ssize_t ns = len(statuses)
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":89
 *         if statuses is None:
 *             return 0
 *         if self.outcount == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             return 0
 *         cdef Py_ssize_t outcount = self.outcount
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":91
 *         if self.outcount == MPI_UNDEFINED:
 *             return 0
 *         cdef Py_ssize_t outcount = self.outcount             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t ns = len(statuses)
 *         if outcount > ns:
 */
  __pyx_t_1 = __pyx_v_self->outcount;
  __pyx_v_outcount = __pyx_t_1;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":92
 *             return 0
 *         cdef Py_ssize_t outcount = self.outcount
 *         cdef Py_ssize_t ns = len(statuses)             # <<<<<<<<<<<<<<
 *         if outcount > ns:
 *             if isinstance(statuses, list):
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_statuses); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(12, 92, __pyx_L1_error)
  __pyx_v_ns = __pyx_t_2;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":93
 *         cdef Py_ssize_t outcount = self.outcount
 *         cdef Py_ssize_t ns = len(statuses)
 *         if outcount > ns:             # <<<<<<<<<<<<<<
 *             if isinstance(statuses, list):
 *                 statuses += [
 */
  __pyx_t_7 = (__pyx_v_outcount > __pyx_v_ns);
  if (__pyx_t_7) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":94
 *         cdef Py_ssize_t ns = len(statuses)
 *         if outcount > ns:
 *             if isinstance(statuses, list):             # <<<<<<<<<<<<<<
 *                 statuses += [
 *                     <Status>New(Status)
 */
    __pyx_t_7 = PyList_Check(__pyx_v_statuses); 
    if (__pyx_t_7) {

      /* "src/mpi4py/MPI.src/reqimpl.pxi":95
 *         if outcount > ns:
 *             if isinstance(statuses, list):
 *                 statuses += [             # <<<<<<<<<<<<<<
 *                     <Status>New(Status)
 *                     for _ in range (ns, outcount)
 */
      { /* enter inner scope */
        __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 95, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);

        /* "src/mpi4py/MPI.src/reqimpl.pxi":97
 *                 statuses += [
 *                     <Status>New(Status)
 *                     for _ in range (ns, outcount)             # <<<<<<<<<<<<<<
 *                 ]
 *                 ns = outcount
 */
        __pyx_t_2 = __pyx_v_outcount;
        __pyx_t_3 = __pyx_t_2;
        for (__pyx_t_4 = __pyx_v_ns; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
          __pyx_7genexpr__pyx_v__ = __pyx_t_4;

          /* "src/mpi4py/MPI.src/reqimpl.pxi":96
 *             if isinstance(statuses, list):
 *                 statuses += [
 *                     <Status>New(Status)             # <<<<<<<<<<<<<<
 *                     for _ in range (ns, outcount)
 *                 ]
 */
          __pyx_t_5 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Status); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 96, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)((struct PyMPIStatusObject *)__pyx_t_5)))) __PYX_ERR(12, 95, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
      } /* exit inner scope */

      /* "src/mpi4py/MPI.src/reqimpl.pxi":95
 *         if outcount > ns:
 *             if isinstance(statuses, list):
 *                 statuses += [             # <<<<<<<<<<<<<<
 *                     <Status>New(Status)
 *                     for _ in range (ns, outcount)
 */
      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_statuses, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 95, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF_SET(__pyx_v_statuses, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/reqimpl.pxi":99
 *                     for _ in range (ns, outcount)
 *                 ]
 *                 ns = outcount             # <<<<<<<<<<<<<<
 *         for i in range(min(nr, ns)):
 *             (<Status?>statuses[i]).ob_mpi = self.statuses[i]
 */
      __pyx_v_ns = __pyx_v_outcount;

      /* "src/mpi4py/MPI.src/reqimpl.pxi":94
 *         cdef Py_ssize_t ns = len(statuses)
 *         if outcount > ns:
 *             if isinstance(statuses, list):             # <<<<<<<<<<<<<<
 *                 statuses += [
 *                     <Status>New(Status)
 */
    }

    /* "src/mpi4py/MPI.src/reqimpl.pxi":93
 *         cdef Py_ssize_t outcount = self.outcount
 *         cdef Py_ssize_t ns = len(statuses)
 *         if outcount > ns:             # <<<<<<<<<<<<<<
 *             if isinstance(statuses, list):
 *                 statuses += [
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":100
 *                 ]
 *                 ns = outcount
 *         for i in range(min(nr, ns)):             # <<<<<<<<<<<<<<
 *             (<Status?>statuses[i]).ob_mpi = self.statuses[i]
 *         return 0
 */
  __pyx_t_2 = __pyx_v_ns;
  __pyx_t_3 = __pyx_v_nr;
  __pyx_t_7 = (__pyx_t_2 < __pyx_t_3);
  if (__pyx_t_7) {
    __pyx_t_4 = __pyx_t_2;
  } else {
    __pyx_t_4 = __pyx_t_3;
  }
  __pyx_t_2 = __pyx_t_4;
  __pyx_t_4 = __pyx_t_2;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_4; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":101
 *                 ns = outcount
 *         for i in range(min(nr, ns)):
 *             (<Status?>statuses[i]).ob_mpi = self.statuses[i]             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_statuses, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (!(likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6mpi4py_3MPI_Status)))) __PYX_ERR(12, 101, __pyx_L1_error)
    ((struct PyMPIStatusObject *)__pyx_t_5)->ob_mpi = (__pyx_v_self->statuses[__pyx_v_i]);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":102
 *         for i in range(min(nr, ns)):
 *             (<Status?>statuses[i]).ob_mpi = self.statuses[i]
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef object get_buffer(self, Py_ssize_t index):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":77
 *         return 0
 * 
 *     cdef int release(self, statuses=None) except -1:             # <<<<<<<<<<<<<<
 *         cdef Request request
 *         cdef Py_ssize_t nr = self.count
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF(__pyx_v_statuses);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":104
 *         return 0
 * 
 *     cdef object get_buffer(self, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *         cdef Request request
 *         if index >= 0:
 */

static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_buffer(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, Py_ssize_t __pyx_v_index) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_buffer", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":106
 *     cdef object get_buffer(self, Py_ssize_t index):
 *         cdef Request request
 *         if index >= 0:             # <<<<<<<<<<<<<<
 *             if self.indices != NULL:
 *                 index = self.indices[index]
 */
  __pyx_t_1 = (__pyx_v_index >= 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":107
 *         cdef Request request
 *         if index >= 0:
 *             if self.indices != NULL:             # <<<<<<<<<<<<<<
 *                 index = self.indices[index]
 *             request = <Request>self.arg_req[index]
 */
    __pyx_t_1 = (__pyx_v_self->indices != NULL);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/reqimpl.pxi":108
 *         if index >= 0:
 *             if self.indices != NULL:
 *                 index = self.indices[index]             # <<<<<<<<<<<<<<
 *             request = <Request>self.arg_req[index]
 *         else:
 */
      __pyx_v_index = (__pyx_v_self->indices[__pyx_v_index]);

      /* "src/mpi4py/MPI.src/reqimpl.pxi":107
 *         cdef Request request
 *         if index >= 0:
 *             if self.indices != NULL:             # <<<<<<<<<<<<<<
 *                 index = self.indices[index]
 *             request = <Request>self.arg_req[index]
 */
    }

    /* "src/mpi4py/MPI.src/reqimpl.pxi":109
 *             if self.indices != NULL:
 *                 index = self.indices[index]
 *             request = <Request>self.arg_req[index]             # <<<<<<<<<<<<<<
 *         else:
 *             request = <Request>self.arg_req
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->arg_req, __pyx_v_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":106
 *     cdef object get_buffer(self, Py_ssize_t index):
 *         cdef Request request
 *         if index >= 0:             # <<<<<<<<<<<<<<
 *             if self.indices != NULL:
 *                 index = self.indices[index]
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":111
 *             request = <Request>self.arg_req[index]
 *         else:
 *             request = <Request>self.arg_req             # <<<<<<<<<<<<<<
 *         cdef object buf = request.ob_buf
 *         if request.ob_mpi == MPI_REQUEST_NULL:
 */
  /*else*/ {
    __pyx_t_3 = __pyx_v_self->arg_req;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":112
 *         else:
 *             request = <Request>self.arg_req
 *         cdef object buf = request.ob_buf             # <<<<<<<<<<<<<<
 *         if request.ob_mpi == MPI_REQUEST_NULL:
 *             if request.ob_buf is not None:
 */
  __pyx_t_3 = __pyx_v_request->ob_buf;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":113
 *             request = <Request>self.arg_req
 *         cdef object buf = request.ob_buf
 *         if request.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             if request.ob_buf is not None:
 *                 request.ob_buf = None
 */
  __pyx_t_1 = (__pyx_v_request->ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":114
 *         cdef object buf = request.ob_buf
 *         if request.ob_mpi == MPI_REQUEST_NULL:
 *             if request.ob_buf is not None:             # <<<<<<<<<<<<<<
 *                 request.ob_buf = None
 *         return buf
 */
    __pyx_t_1 = (__pyx_v_request->ob_buf != Py_None);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/reqimpl.pxi":115
 *         if request.ob_mpi == MPI_REQUEST_NULL:
 *             if request.ob_buf is not None:
 *                 request.ob_buf = None             # <<<<<<<<<<<<<<
 *         return buf
 * 
 */
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_request->ob_buf);
      __Pyx_DECREF(__pyx_v_request->ob_buf);
      __pyx_v_request->ob_buf = Py_None;

      /* "src/mpi4py/MPI.src/reqimpl.pxi":114
 *         cdef object buf = request.ob_buf
 *         if request.ob_mpi == MPI_REQUEST_NULL:
 *             if request.ob_buf is not None:             # <<<<<<<<<<<<<<
 *                 request.ob_buf = None
 *         return buf
 */
    }

    /* "src/mpi4py/MPI.src/reqimpl.pxi":113
 *             request = <Request>self.arg_req
 *         cdef object buf = request.ob_buf
 *         if request.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             if request.ob_buf is not None:
 *                 request.ob_buf = None
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":116
 *             if request.ob_buf is not None:
 *                 request.ob_buf = None
 *         return buf             # <<<<<<<<<<<<<<
 * 
 *     cdef object get_result(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":104
 *         return 0
 * 
 *     cdef object get_buffer(self, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *         cdef Request request
 *         if index >= 0:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.get_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":118
 *         return buf
 * 
 *     cdef object get_result(self):             # <<<<<<<<<<<<<<
 *         return self.get_object(-1)
 * 
 */

static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_result(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_result", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":119
 * 
 *     cdef object get_result(self):
 *         return self.get_object(-1)             # <<<<<<<<<<<<<<
 * 
 *     cdef object get_object(self, Py_ssize_t index):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_object(__pyx_v_self, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":118
 *         return buf
 * 
 *     cdef object get_result(self):             # <<<<<<<<<<<<<<
 *         return self.get_object(-1)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.get_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":121
 *         return self.get_object(-1)
 * 
 *     cdef object get_object(self, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *         return PyMPI_load(self.get_buffer(index), self.status)
 * 
 */

static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_object(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self, Py_ssize_t __pyx_v_index) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_object", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":122
 * 
 *     cdef object get_object(self, Py_ssize_t index):
 *         return PyMPI_load(self.get_buffer(index), self.status)             # <<<<<<<<<<<<<<
 * 
 *     cdef object get_objects(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_buffer(__pyx_v_self, __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_load(__pyx_t_1, __pyx_v_self->status); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":121
 *         return self.get_object(-1)
 * 
 *     cdef object get_object(self, Py_ssize_t index):             # <<<<<<<<<<<<<<
 *         return PyMPI_load(self.get_buffer(index), self.status)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.get_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":124
 *         return PyMPI_load(self.get_buffer(index), self.status)
 * 
 *     cdef object get_objects(self):             # <<<<<<<<<<<<<<
 *         if self.outcount == MPI_UNDEFINED: return None
 *         return [
 */

static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_objects(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self) {
  int __pyx_8genexpr1__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_objects", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":125
 * 
 *     cdef object get_objects(self):
 *         if self.outcount == MPI_UNDEFINED: return None             # <<<<<<<<<<<<<<
 *         return [
 *             PyMPI_load(self.get_buffer(i), &self.statuses[i])
 */
  __pyx_t_1 = (__pyx_v_self->outcount == MPI_UNDEFINED);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":126
 *     cdef object get_objects(self):
 *         if self.outcount == MPI_UNDEFINED: return None
 *         return [             # <<<<<<<<<<<<<<
 *             PyMPI_load(self.get_buffer(i), &self.statuses[i])
 *             for i in range(self.outcount)
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/mpi4py/MPI.src/reqimpl.pxi":128
 *         return [
 *             PyMPI_load(self.get_buffer(i), &self.statuses[i])
 *             for i in range(self.outcount)             # <<<<<<<<<<<<<<
 *         ]
 * 
 */
    __pyx_t_3 = __pyx_v_self->outcount;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_8genexpr1__pyx_v_i = __pyx_t_5;

      /* "src/mpi4py/MPI.src/reqimpl.pxi":127
 *         if self.outcount == MPI_UNDEFINED: return None
 *         return [
 *             PyMPI_load(self.get_buffer(i), &self.statuses[i])             # <<<<<<<<<<<<<<
 *             for i in range(self.outcount)
 *         ]
 */
      __pyx_t_6 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_buffer(__pyx_v_self, __pyx_8genexpr1__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __pyx_f_6mpi4py_3MPI_PyMPI_load(__pyx_t_6, (&(__pyx_v_self->statuses[__pyx_8genexpr1__pyx_v_i]))); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_7))) __PYX_ERR(12, 126, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":124
 *         return PyMPI_load(self.get_buffer(index), self.status)
 * 
 *     cdef object get_objects(self):             # <<<<<<<<<<<<<<
 *         if self.outcount == MPI_UNDEFINED: return None
 *         return [
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.get_objects", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":131
 *         ]
 * 
 *     cdef object get_indices(self):             # <<<<<<<<<<<<<<
 *         if self.outcount == MPI_UNDEFINED: return None
 *         return [self.indices[i] for i in range(self.outcount)]
 */

static PyObject *__pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_self) {
  int __pyx_8genexpr2__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_indices", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":132
 * 
 *     cdef object get_indices(self):
 *         if self.outcount == MPI_UNDEFINED: return None             # <<<<<<<<<<<<<<
 *         return [self.indices[i] for i in range(self.outcount)]
 * 
 */
  __pyx_t_1 = (__pyx_v_self->outcount == MPI_UNDEFINED);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":133
 *     cdef object get_indices(self):
 *         if self.outcount == MPI_UNDEFINED: return None
 *         return [self.indices[i] for i in range(self.outcount)]             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_self->outcount;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_8genexpr2__pyx_v_i = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_self->indices[__pyx_8genexpr2__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(12, 133, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":131
 *         ]
 * 
 *     cdef object get_indices(self):             # <<<<<<<<<<<<<<
 *         if self.outcount == MPI_UNDEFINED: return None
 *         return [self.indices[i] for i in range(self.outcount)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_rs.get_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":148
 *     cdef dict  kwargs
 * 
 *     def __cinit__(self, query_fn, free_fn, cancel_fn, args, kwargs):             # <<<<<<<<<<<<<<
 *         self.query_fn  = query_fn
 *         self.free_fn   = free_fn
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_7_p_greq_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_7_p_greq_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_query_fn = 0;
  PyObject *__pyx_v_free_fn = 0;
  PyObject *__pyx_v_cancel_fn = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_query_fn,&__pyx_n_s_free_fn,&__pyx_n_s_cancel_fn,&__pyx_n_s_args,&__pyx_n_s_kwargs,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_query_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 148, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_free_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 148, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 1); __PYX_ERR(12, 148, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cancel_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 148, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 2); __PYX_ERR(12, 148, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 148, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 3); __PYX_ERR(12, 148, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 148, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 4); __PYX_ERR(12, 148, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(12, 148, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 5)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
      values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
    }
    __pyx_v_query_fn = values[0];
    __pyx_v_free_fn = values[1];
    __pyx_v_cancel_fn = values[2];
    __pyx_v_args = values[3];
    __pyx_v_kwargs = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, __pyx_nargs); __PYX_ERR(12, 148, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7_p_greq___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_v_self), __pyx_v_query_fn, __pyx_v_free_fn, __pyx_v_cancel_fn, __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_7_p_greq___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, PyObject *__pyx_v_query_fn, PyObject *__pyx_v_free_fn, PyObject *__pyx_v_cancel_fn, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":149
 * 
 *     def __cinit__(self, query_fn, free_fn, cancel_fn, args, kwargs):
 *         self.query_fn  = query_fn             # <<<<<<<<<<<<<<
 *         self.free_fn   = free_fn
 *         self.cancel_fn = cancel_fn
 */
  __Pyx_INCREF(__pyx_v_query_fn);
  __Pyx_GIVEREF(__pyx_v_query_fn);
  __Pyx_GOTREF(__pyx_v_self->query_fn);
  __Pyx_DECREF(__pyx_v_self->query_fn);
  __pyx_v_self->query_fn = __pyx_v_query_fn;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":150
 *     def __cinit__(self, query_fn, free_fn, cancel_fn, args, kwargs):
 *         self.query_fn  = query_fn
 *         self.free_fn   = free_fn             # <<<<<<<<<<<<<<
 *         self.cancel_fn = cancel_fn
 *         self.args   = tuple(args)  if args   is not None else ()
 */
  __Pyx_INCREF(__pyx_v_free_fn);
  __Pyx_GIVEREF(__pyx_v_free_fn);
  __Pyx_GOTREF(__pyx_v_self->free_fn);
  __Pyx_DECREF(__pyx_v_self->free_fn);
  __pyx_v_self->free_fn = __pyx_v_free_fn;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":151
 *         self.query_fn  = query_fn
 *         self.free_fn   = free_fn
 *         self.cancel_fn = cancel_fn             # <<<<<<<<<<<<<<
 *         self.args   = tuple(args)  if args   is not None else ()
 *         self.kwargs = dict(kwargs) if kwargs is not None else {}
 */
  __Pyx_INCREF(__pyx_v_cancel_fn);
  __Pyx_GIVEREF(__pyx_v_cancel_fn);
  __Pyx_GOTREF(__pyx_v_self->cancel_fn);
  __Pyx_DECREF(__pyx_v_self->cancel_fn);
  __pyx_v_self->cancel_fn = __pyx_v_cancel_fn;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":152
 *         self.free_fn   = free_fn
 *         self.cancel_fn = cancel_fn
 *         self.args   = tuple(args)  if args   is not None else ()             # <<<<<<<<<<<<<<
 *         self.kwargs = dict(kwargs) if kwargs is not None else {}
 * 
 */
  __pyx_t_2 = (__pyx_v_args != Py_None);
  if (__pyx_t_2) {
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(__pyx_empty_tuple);
    __pyx_t_1 = __pyx_empty_tuple;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->args);
  __Pyx_DECREF(__pyx_v_self->args);
  __pyx_v_self->args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":153
 *         self.cancel_fn = cancel_fn
 *         self.args   = tuple(args)  if args   is not None else ()
 *         self.kwargs = dict(kwargs) if kwargs is not None else {}             # <<<<<<<<<<<<<<
 * 
 *     cdef int query(self, MPI_Status *status) except -1:
 */
  __pyx_t_2 = (__pyx_v_kwargs != Py_None);
  if (__pyx_t_2) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->kwargs);
  __Pyx_DECREF(__pyx_v_self->kwargs);
  __pyx_v_self->kwargs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":148
 *     cdef dict  kwargs
 * 
 *     def __cinit__(self, query_fn, free_fn, cancel_fn, args, kwargs):             # <<<<<<<<<<<<<<
 *         self.query_fn  = query_fn
 *         self.free_fn   = free_fn
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":155
 *         self.kwargs = dict(kwargs) if kwargs is not None else {}
 * 
 *     cdef int query(self, MPI_Status *status) except -1:             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_source(status, MPI_ANY_SOURCE)
 *         <void>MPI_Status_set_tag(status, MPI_ANY_TAG)
 */

static int __pyx_f_6mpi4py_3MPI_7_p_greq_query(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, MPI_Status *__pyx_v_status) {
  struct PyMPIStatusObject *__pyx_v_sts = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  MPI_Status __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":156
 * 
 *     cdef int query(self, MPI_Status *status) except -1:
 *         <void>MPI_Status_set_source(status, MPI_ANY_SOURCE)             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_tag(status, MPI_ANY_TAG)
 *         <void>MPI_Status_set_error(status, MPI_SUCCESS)
 */
  ((void)MPI_Status_set_source(__pyx_v_status, MPI_ANY_SOURCE));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":157
 *     cdef int query(self, MPI_Status *status) except -1:
 *         <void>MPI_Status_set_source(status, MPI_ANY_SOURCE)
 *         <void>MPI_Status_set_tag(status, MPI_ANY_TAG)             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_error(status, MPI_SUCCESS)
 *         <void>MPI_Status_set_elements_c(status, MPI_BYTE, 0)
 */
  ((void)MPI_Status_set_tag(__pyx_v_status, MPI_ANY_TAG));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":158
 *         <void>MPI_Status_set_source(status, MPI_ANY_SOURCE)
 *         <void>MPI_Status_set_tag(status, MPI_ANY_TAG)
 *         <void>MPI_Status_set_error(status, MPI_SUCCESS)             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_elements_c(status, MPI_BYTE, 0)
 *         <void>MPI_Status_set_cancelled(status, 0)
 */
  ((void)MPI_Status_set_error(__pyx_v_status, MPI_SUCCESS));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":159
 *         <void>MPI_Status_set_tag(status, MPI_ANY_TAG)
 *         <void>MPI_Status_set_error(status, MPI_SUCCESS)
 *         <void>MPI_Status_set_elements_c(status, MPI_BYTE, 0)             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_cancelled(status, 0)
 *         cdef Status sts
 */
  ((void)MPI_Status_set_elements_c(__pyx_v_status, MPI_BYTE, 0));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":160
 *         <void>MPI_Status_set_error(status, MPI_SUCCESS)
 *         <void>MPI_Status_set_elements_c(status, MPI_BYTE, 0)
 *         <void>MPI_Status_set_cancelled(status, 0)             # <<<<<<<<<<<<<<
 *         cdef Status sts
 *         if self.query_fn is not None:
 */
  ((void)MPI_Status_set_cancelled(__pyx_v_status, 0));

  /* "src/mpi4py/MPI.src/reqimpl.pxi":162
 *         <void>MPI_Status_set_cancelled(status, 0)
 *         cdef Status sts
 *         if self.query_fn is not None:             # <<<<<<<<<<<<<<
 *             sts = <Status>New(Status)
 *             sts.ob_mpi = status[0]
 */
  __pyx_t_1 = (__pyx_v_self->query_fn != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":163
 *         cdef Status sts
 *         if self.query_fn is not None:
 *             sts = <Status>New(Status)             # <<<<<<<<<<<<<<
 *             sts.ob_mpi = status[0]
 *             self.query_fn(sts, *self.args, **self.kwargs)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Status); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_sts = ((struct PyMPIStatusObject *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":164
 *         if self.query_fn is not None:
 *             sts = <Status>New(Status)
 *             sts.ob_mpi = status[0]             # <<<<<<<<<<<<<<
 *             self.query_fn(sts, *self.args, **self.kwargs)
 *             status[0] = sts.ob_mpi
 */
    __pyx_v_sts->ob_mpi = (__pyx_v_status[0]);

    /* "src/mpi4py/MPI.src/reqimpl.pxi":165
 *             sts = <Status>New(Status)
 *             sts.ob_mpi = status[0]
 *             self.query_fn(sts, *self.args, **self.kwargs)             # <<<<<<<<<<<<<<
 *             status[0] = sts.ob_mpi
 *             if self.cancel_fn is None:
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF((PyObject *)__pyx_v_sts);
    __Pyx_GIVEREF((PyObject *)__pyx_v_sts);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_sts))) __PYX_ERR(12, 165, __pyx_L1_error);
    if (unlikely(__pyx_v_self->args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(12, 165, __pyx_L1_error)
    }
    __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_self->args); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__pyx_v_self->kwargs == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
      __PYX_ERR(12, 165, __pyx_L1_error)
    }
    __pyx_t_3 = PyDict_Copy(__pyx_v_self->kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_self->query_fn, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":166
 *             sts.ob_mpi = status[0]
 *             self.query_fn(sts, *self.args, **self.kwargs)
 *             status[0] = sts.ob_mpi             # <<<<<<<<<<<<<<
 *             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;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":167
 *             self.query_fn(sts, *self.args, **self.kwargs)
 *             status[0] = sts.ob_mpi
 *             if self.cancel_fn is None:             # <<<<<<<<<<<<<<
 *                 <void>MPI_Status_set_cancelled(status, 0)
 *         return MPI_SUCCESS
 */
    __pyx_t_1 = (__pyx_v_self->cancel_fn == Py_None);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/reqimpl.pxi":168
 *             status[0] = sts.ob_mpi
 *             if self.cancel_fn is None:
 *                 <void>MPI_Status_set_cancelled(status, 0)             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
      ((void)MPI_Status_set_cancelled(__pyx_v_status, 0));

      /* "src/mpi4py/MPI.src/reqimpl.pxi":167
 *             self.query_fn(sts, *self.args, **self.kwargs)
 *             status[0] = sts.ob_mpi
 *             if self.cancel_fn is None:             # <<<<<<<<<<<<<<
 *                 <void>MPI_Status_set_cancelled(status, 0)
 *         return MPI_SUCCESS
 */
    }

    /* "src/mpi4py/MPI.src/reqimpl.pxi":162
 *         <void>MPI_Status_set_cancelled(status, 0)
 *         cdef Status sts
 *         if self.query_fn is not None:             # <<<<<<<<<<<<<<
 *             sts = <Status>New(Status)
 *             sts.ob_mpi = status[0]
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":169
 *             if self.cancel_fn is None:
 *                 <void>MPI_Status_set_cancelled(status, 0)
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     cdef int free(self) except -1:
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":155
 *         self.kwargs = dict(kwargs) if kwargs is not None else {}
 * 
 *     cdef int query(self, MPI_Status *status) except -1:             # <<<<<<<<<<<<<<
 *         <void>MPI_Status_set_source(status, MPI_ANY_SOURCE)
 *         <void>MPI_Status_set_tag(status, MPI_ANY_TAG)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sts);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":171
 *         return MPI_SUCCESS
 * 
 *     cdef int free(self) except -1:             # <<<<<<<<<<<<<<
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kwargs)
 */

static int __pyx_f_6mpi4py_3MPI_7_p_greq_free(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":172
 * 
 *     cdef int free(self) except -1:
 *         if self.free_fn is not None:             # <<<<<<<<<<<<<<
 *             self.free_fn(*self.args, **self.kwargs)
 *         return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_self->free_fn != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":173
 *     cdef int free(self) except -1:
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kwargs)             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
    if (unlikely(__pyx_v_self->args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(12, 173, __pyx_L1_error)
    }
    if (unlikely(__pyx_v_self->kwargs == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
      __PYX_ERR(12, 173, __pyx_L1_error)
    }
    __pyx_t_2 = PyDict_Copy(__pyx_v_self->kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->free_fn, __pyx_v_self->args, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":172
 * 
 *     cdef int free(self) except -1:
 *         if self.free_fn is not None:             # <<<<<<<<<<<<<<
 *             self.free_fn(*self.args, **self.kwargs)
 *         return MPI_SUCCESS
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":174
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kwargs)
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     cdef int cancel(self, bint completed) except -1:
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":171
 *         return MPI_SUCCESS
 * 
 *     cdef int free(self) except -1:             # <<<<<<<<<<<<<<
 *         if self.free_fn is not None:
 *             self.free_fn(*self.args, **self.kwargs)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":176
 *         return MPI_SUCCESS
 * 
 *     cdef int cancel(self, bint completed) except -1:             # <<<<<<<<<<<<<<
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kwargs)
 */

static int __pyx_f_6mpi4py_3MPI_7_p_greq_cancel(struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_self, int __pyx_v_completed) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel", 1);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":177
 * 
 *     cdef int cancel(self, bint completed) except -1:
 *         if self.cancel_fn is not None:             # <<<<<<<<<<<<<<
 *             self.cancel_fn(completed, *self.args, **self.kwargs)
 *         return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_self->cancel_fn != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/reqimpl.pxi":178
 *     cdef int cancel(self, bint completed) except -1:
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kwargs)             # <<<<<<<<<<<<<<
 *         return MPI_SUCCESS
 * 
 */
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_completed); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_2);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(12, 178, __pyx_L1_error);
    __pyx_t_2 = 0;
    if (unlikely(__pyx_v_self->args == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(12, 178, __pyx_L1_error)
    }
    __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_self->args); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__pyx_v_self->kwargs == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
      __PYX_ERR(12, 178, __pyx_L1_error)
    }
    __pyx_t_3 = PyDict_Copy(__pyx_v_self->kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_self->cancel_fn, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":177
 * 
 *     cdef int cancel(self, bint completed) except -1:
 *         if self.cancel_fn is not None:             # <<<<<<<<<<<<<<
 *             self.cancel_fn(completed, *self.args, **self.kwargs)
 *         return MPI_SUCCESS
 */
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":179
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kwargs)
 *         return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":176
 *         return MPI_SUCCESS
 * 
 *     cdef int cancel(self, bint completed) except -1:             # <<<<<<<<<<<<<<
 *         if self.cancel_fn is not None:
 *             self.cancel_fn(completed, *self.args, **self.kwargs)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_greq.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":182
 * 
 * 
 * cdef int greq_query(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     MPI_Status *status,
 */

static int __pyx_f_6mpi4py_3MPI_greq_query(void *__pyx_v_extra_state, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("greq_query", 0);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":186
 *     MPI_Status *status,
 * ) noexcept with gil:
 *     cdef _p_greq state = <_p_greq>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":187
 * ) noexcept with gil:
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":189
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.query(status)
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/reqimpl.pxi":190
 *     cdef object exc
 *     try:
 *         state.query(status)             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_7_p_greq_query(__pyx_v_state, __pyx_v_status); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(12, 190, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/reqimpl.pxi":189
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.query(status)
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":191
 *     try:
 *         state.query(status)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(12, 191, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/reqimpl.pxi":192
 *         state.query(status)
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/reqimpl.pxi":191
 *     try:
 *         state.query(status)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":189
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.query(status)
 *     except BaseException as exc:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":193
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":182
 * 
 * 
 * cdef int greq_query(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     MPI_Status *status,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_query", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":196
 * 
 * 
 * cdef int greq_free(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 * ) noexcept with gil:
 */

static int __pyx_f_6mpi4py_3MPI_greq_free(void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("greq_free", 0);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":199
 *     void *extra_state,
 * ) noexcept with gil:
 *     cdef _p_greq state = <_p_greq>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":200
 * ) noexcept with gil:
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":202
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.free()
 *     except BaseException as exc:
 */
  /*try:*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "src/mpi4py/MPI.src/reqimpl.pxi":203
 *     cdef object exc
 *     try:
 *         state.free()             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 */
        __pyx_t_5 = __pyx_f_6mpi4py_3MPI_7_p_greq_free(__pyx_v_state); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(12, 203, __pyx_L6_error)

        /* "src/mpi4py/MPI.src/reqimpl.pxi":202
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.free()
 *     except BaseException as exc:
 */
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L11_try_end;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/reqimpl.pxi":204
 *     try:
 *         state.free()
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     finally:
 */
      __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
      if (__pyx_t_5) {
        __Pyx_AddTraceback("mpi4py.MPI.greq_free", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(12, 204, __pyx_L8_except_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __pyx_v_exc = __pyx_t_6;
        /*try:*/ {

          /* "src/mpi4py/MPI.src/reqimpl.pxi":205
 *         state.free()
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     finally:
 *         Py_DECREF(<object>extra_state)
 */
          __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
        }

        /* "src/mpi4py/MPI.src/reqimpl.pxi":204
 *     try:
 *         state.free()
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
            goto __pyx_L18;
          }
          __pyx_L18:;
        }
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L7_exception_handled;
      }
      goto __pyx_L8_except_error;

      /* "src/mpi4py/MPI.src/reqimpl.pxi":202
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.free()
 *     except BaseException as exc:
 */
      __pyx_L8_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L4_error;
      __pyx_L7_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L11_try_end:;
    }
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":207
 *         ierr = PyMPI_HandleException(exc)
 *     finally:
 *         Py_DECREF(<object>extra_state)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      Py_DECREF(((PyObject *)__pyx_v_extra_state));
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_5 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {
        Py_DECREF(((PyObject *)__pyx_v_extra_state));
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2);
      __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":208
 *     finally:
 *         Py_DECREF(<object>extra_state)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":196
 * 
 * 
 * cdef int greq_free(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 * ) noexcept with gil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_free", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":211
 * 
 * 
 * cdef int greq_cancel(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     int completed,
 */

static int __pyx_f_6mpi4py_3MPI_greq_cancel(void *__pyx_v_extra_state, int __pyx_v_completed) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("greq_cancel", 0);

  /* "src/mpi4py/MPI.src/reqimpl.pxi":215
 *     int completed,
 * ) noexcept with gil:
 *     cdef _p_greq state = <_p_greq>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":216
 * ) noexcept with gil:
 *     cdef _p_greq state = <_p_greq>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":218
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.cancel(completed)
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/reqimpl.pxi":219
 *     cdef object exc
 *     try:
 *         state.cancel(completed)             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_7_p_greq_cancel(__pyx_v_state, __pyx_v_completed); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(12, 219, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/reqimpl.pxi":218
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.cancel(completed)
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":220
 *     try:
 *         state.cancel(completed)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.greq_cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(12, 220, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/reqimpl.pxi":221
 *         state.cancel(completed)
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/reqimpl.pxi":220
 *     try:
 *         state.cancel(completed)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/reqimpl.pxi":218
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.cancel(completed)
 *     except BaseException as exc:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":222
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":211
 * 
 * 
 * cdef int greq_cancel(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     int completed,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.greq_cancel", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":226
 * 
 * @cython.callspec("MPIAPI")
 * cdef int greq_query_fn(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     MPI_Status *status,
 */

static int MPIAPI __pyx_f_6mpi4py_3MPI_greq_query_fn(void *__pyx_v_extra_state, MPI_Status *__pyx_v_status) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":230
 *     MPI_Status *status,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if status == NULL:         return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":231
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if status == NULL:         return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_status == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":232
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if status == NULL:         return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return greq_query(extra_state, status)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":233
 *     if status == NULL:         return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return greq_query(extra_state, status)
 * 
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":234
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return greq_query(extra_state, status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_greq_query(__pyx_v_extra_state, __pyx_v_status);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":226
 * 
 * @cython.callspec("MPIAPI")
 * cdef int greq_query_fn(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     MPI_Status *status,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":238
 * 
 * @cython.callspec("MPIAPI")
 * cdef int greq_free_fn(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 * ) noexcept nogil:
 */

static int MPIAPI __pyx_f_6mpi4py_3MPI_greq_free_fn(void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":241
 *     void *extra_state,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":242
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return greq_free(extra_state)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":243
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return greq_free(extra_state)
 * 
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":244
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return greq_free(extra_state)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_greq_free(__pyx_v_extra_state);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":238
 * 
 * @cython.callspec("MPIAPI")
 * cdef int greq_free_fn(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 * ) noexcept nogil:
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/reqimpl.pxi":248
 * 
 * @cython.callspec("MPIAPI")
 * cdef int greq_cancel_fn(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     int completed,
 */

static int MPIAPI __pyx_f_6mpi4py_3MPI_greq_cancel_fn(void *__pyx_v_extra_state, int __pyx_v_completed) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":252
 *     int completed,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":253
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return greq_cancel(extra_state, completed)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":254
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return greq_cancel(extra_state, completed)
 * 
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/reqimpl.pxi":255
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return greq_cancel(extra_state, completed)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_greq_cancel(__pyx_v_extra_state, __pyx_v_completed);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/reqimpl.pxi":248
 * 
 * @cython.callspec("MPIAPI")
 * cdef int greq_cancel_fn(             # <<<<<<<<<<<<<<
 *     void *extra_state,
 *     int completed,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef object op_MAX(object x, object y):             # <<<<<<<<<<<<<<
 *     """maximum"""
 *     if y > x:
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_MAX(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_MAX", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":5
 * cdef object op_MAX(object x, object y):
 *     """maximum"""
 *     if y > x:             # <<<<<<<<<<<<<<
 *         return y
 *     else:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_v_x, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 5, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(13, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":6
 *     """maximum"""
 *     if y > x:
 *         return y             # <<<<<<<<<<<<<<
 *     else:
 *         return x
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_y);
    __pyx_r = __pyx_v_y;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":5
 * cdef object op_MAX(object x, object y):
 *     """maximum"""
 *     if y > x:             # <<<<<<<<<<<<<<
 *         return y
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":8
 *         return y
 *     else:
 *         return x             # <<<<<<<<<<<<<<
 * 
 * cdef object op_MIN(object x, object y):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_x);
    __pyx_r = __pyx_v_x;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef object op_MAX(object x, object y):             # <<<<<<<<<<<<<<
 *     """maximum"""
 *     if y > x:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.op_MAX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":10
 *         return x
 * 
 * cdef object op_MIN(object x, object y):             # <<<<<<<<<<<<<<
 *     """minimum"""
 *     if y < x:
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_MIN(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_MIN", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":12
 * cdef object op_MIN(object x, object y):
 *     """minimum"""
 *     if y < x:             # <<<<<<<<<<<<<<
 *         return y
 *     else:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_v_x, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 12, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(13, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":13
 *     """minimum"""
 *     if y < x:
 *         return y             # <<<<<<<<<<<<<<
 *     else:
 *         return x
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_y);
    __pyx_r = __pyx_v_y;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":12
 * cdef object op_MIN(object x, object y):
 *     """minimum"""
 *     if y < x:             # <<<<<<<<<<<<<<
 *         return y
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":15
 *         return y
 *     else:
 *         return x             # <<<<<<<<<<<<<<
 * 
 * cdef object op_SUM(object x, object y):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_x);
    __pyx_r = __pyx_v_x;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":10
 *         return x
 * 
 * cdef object op_MIN(object x, object y):             # <<<<<<<<<<<<<<
 *     """minimum"""
 *     if y < x:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.op_MIN", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":17
 *         return x
 * 
 * cdef object op_SUM(object x, object y):             # <<<<<<<<<<<<<<
 *     """sum"""
 *     return x + y
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_SUM(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_SUM", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":19
 * cdef object op_SUM(object x, object y):
 *     """sum"""
 *     return x + y             # <<<<<<<<<<<<<<
 * 
 * cdef object op_PROD(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Add(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":17
 *         return x
 * 
 * cdef object op_SUM(object x, object y):             # <<<<<<<<<<<<<<
 *     """sum"""
 *     return x + y
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.op_SUM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":21
 *     return x + y
 * 
 * cdef object op_PROD(object x, object y):             # <<<<<<<<<<<<<<
 *     """product"""
 *     return x * y
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_PROD(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_PROD", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":23
 * cdef object op_PROD(object x, object y):
 *     """product"""
 *     return x * y             # <<<<<<<<<<<<<<
 * 
 * cdef object op_BAND(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Multiply(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":21
 *     return x + y
 * 
 * cdef object op_PROD(object x, object y):             # <<<<<<<<<<<<<<
 *     """product"""
 *     return x * y
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.op_PROD", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":25
 *     return x * y
 * 
 * cdef object op_BAND(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise and"""
 *     return x & y
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_BAND(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_BAND", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":27
 * cdef object op_BAND(object x, object y):
 *     """bit-wise and"""
 *     return x & y             # <<<<<<<<<<<<<<
 * 
 * cdef object op_BOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_And(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":25
 *     return x * y
 * 
 * cdef object op_BAND(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise and"""
 *     return x & y
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.op_BAND", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":29
 *     return x & y
 * 
 * cdef object op_BOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise or"""
 *     return x | y
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_BOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_BOR", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":31
 * cdef object op_BOR(object x, object y):
 *     """bit-wise or"""
 *     return x | y             # <<<<<<<<<<<<<<
 * 
 * cdef object op_BXOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Or(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":29
 *     return x & y
 * 
 * cdef object op_BOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise or"""
 *     return x | y
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.op_BOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":33
 *     return x | y
 * 
 * cdef object op_BXOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise xor"""
 *     return x ^ y
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_BXOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_BXOR", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":35
 * cdef object op_BXOR(object x, object y):
 *     """bit-wise xor"""
 *     return x ^ y             # <<<<<<<<<<<<<<
 * 
 * cdef object op_LAND(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Xor(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":33
 *     return x | y
 * 
 * cdef object op_BXOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """bit-wise xor"""
 *     return x ^ y
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.op_BXOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":37
 *     return x ^ y
 * 
 * cdef object op_LAND(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical and"""
 *     return bool(x) & bool(y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_LAND(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_LAND", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":39
 * cdef object op_LAND(object x, object y):
 *     """logical and"""
 *     return bool(x) & bool(y)             # <<<<<<<<<<<<<<
 * 
 * cdef object op_LOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_x); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 39, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 39, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_And(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":37
 *     return x ^ y
 * 
 * cdef object op_LAND(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical and"""
 *     return bool(x) & bool(y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.op_LAND", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":41
 *     return bool(x) & bool(y)
 * 
 * cdef object op_LOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical or"""
 *     return bool(x) | bool(y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_LOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_LOR", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":43
 * cdef object op_LOR(object x, object y):
 *     """logical or"""
 *     return bool(x) | bool(y)             # <<<<<<<<<<<<<<
 * 
 * cdef object op_LXOR(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_x); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 43, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 43, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Or(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":41
 *     return bool(x) & bool(y)
 * 
 * cdef object op_LOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical or"""
 *     return bool(x) | bool(y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.op_LOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":45
 *     return bool(x) | bool(y)
 * 
 * cdef object op_LXOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical xor"""
 *     return bool(x) ^ bool(y)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_LXOR(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_LXOR", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":47
 * cdef object op_LXOR(object x, object y):
 *     """logical xor"""
 *     return bool(x) ^ bool(y)             # <<<<<<<<<<<<<<
 * 
 * cdef object op_MAXLOC(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_x); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 47, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_y); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 47, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyBool_FromLong((!(!__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Xor(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":45
 *     return bool(x) | bool(y)
 * 
 * cdef object op_LXOR(object x, object y):             # <<<<<<<<<<<<<<
 *     """logical xor"""
 *     return bool(x) ^ bool(y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.op_LXOR", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":49
 *     return bool(x) ^ bool(y)
 * 
 * cdef object op_MAXLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """maximum and location"""
 *     cdef object i, j, u, v
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_MAXLOC(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_j = 0;
  PyObject *__pyx_v_u = 0;
  PyObject *__pyx_v_v = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_MAXLOC", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":52
 *     """maximum and location"""
 *     cdef object i, j, u, v
 *     u, i = x             # <<<<<<<<<<<<<<
 *     v, j = y
 *     if u > v:
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_x))) || (PyList_CheckExact(__pyx_v_x))) {
    PyObject* sequence = __pyx_v_x;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(13, 52, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(13, 52, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(13, 52, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_u = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_i = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":53
 *     cdef object i, j, u, v
 *     u, i = x
 *     v, j = y             # <<<<<<<<<<<<<<
 *     if u > v:
 *         return u, i
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_y))) || (PyList_CheckExact(__pyx_v_y))) {
    PyObject* sequence = __pyx_v_y;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(13, 53, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
    index = 0; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(13, 53, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(13, 53, __pyx_L1_error)
    __pyx_L6_unpacking_done:;
  }
  __pyx_v_v = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_j = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":54
 *     u, i = x
 *     v, j = y
 *     if u > v:             # <<<<<<<<<<<<<<
 *         return u, i
 *     elif v > u:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 54, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(13, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":55
 *     v, j = y
 *     if u > v:
 *         return u, i             # <<<<<<<<<<<<<<
 *     elif v > u:
 *         return v, j
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_u);
    __Pyx_GIVEREF(__pyx_v_u);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_u)) __PYX_ERR(13, 55, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_i)) __PYX_ERR(13, 55, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":54
 *     u, i = x
 *     v, j = y
 *     if u > v:             # <<<<<<<<<<<<<<
 *         return u, i
 *     elif v > u:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":56
 *     if u > v:
 *         return u, i
 *     elif v > u:             # <<<<<<<<<<<<<<
 *         return v, j
 *     elif j < i:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_v, __pyx_v_u, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 56, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(13, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":57
 *         return u, i
 *     elif v > u:
 *         return v, j             # <<<<<<<<<<<<<<
 *     elif j < i:
 *         return v, j
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_v);
    __Pyx_GIVEREF(__pyx_v_v);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_v)) __PYX_ERR(13, 57, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_j);
    __Pyx_GIVEREF(__pyx_v_j);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_j)) __PYX_ERR(13, 57, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":56
 *     if u > v:
 *         return u, i
 *     elif v > u:             # <<<<<<<<<<<<<<
 *         return v, j
 *     elif j < i:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":58
 *     elif v > u:
 *         return v, j
 *     elif j < i:             # <<<<<<<<<<<<<<
 *         return v, j
 *     else:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_j, __pyx_v_i, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 58, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(13, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":59
 *         return v, j
 *     elif j < i:
 *         return v, j             # <<<<<<<<<<<<<<
 *     else:
 *         return u, i
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_v);
    __Pyx_GIVEREF(__pyx_v_v);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_v)) __PYX_ERR(13, 59, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_j);
    __Pyx_GIVEREF(__pyx_v_j);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_j)) __PYX_ERR(13, 59, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":58
 *     elif v > u:
 *         return v, j
 *     elif j < i:             # <<<<<<<<<<<<<<
 *         return v, j
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":61
 *         return v, j
 *     else:
 *         return u, i             # <<<<<<<<<<<<<<
 * 
 * cdef object op_MINLOC(object x, object y):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_u);
    __Pyx_GIVEREF(__pyx_v_u);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_u)) __PYX_ERR(13, 61, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_i)) __PYX_ERR(13, 61, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":49
 *     return bool(x) ^ bool(y)
 * 
 * cdef object op_MAXLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """maximum and location"""
 *     cdef object i, j, u, v
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.op_MAXLOC", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_j);
  __Pyx_XDECREF(__pyx_v_u);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":63
 *         return u, i
 * 
 * cdef object op_MINLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """minimum and location"""
 *     cdef object i, j, u, v
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_MINLOC(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_j = 0;
  PyObject *__pyx_v_u = 0;
  PyObject *__pyx_v_v = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_MINLOC", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":66
 *     """minimum and location"""
 *     cdef object i, j, u, v
 *     u, i = x             # <<<<<<<<<<<<<<
 *     v, j = y
 *     if u < v:
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_x))) || (PyList_CheckExact(__pyx_v_x))) {
    PyObject* sequence = __pyx_v_x;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(13, 66, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(13, 66, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(13, 66, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_u = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_i = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":67
 *     cdef object i, j, u, v
 *     u, i = x
 *     v, j = y             # <<<<<<<<<<<<<<
 *     if u < v:
 *         return u, i
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_y))) || (PyList_CheckExact(__pyx_v_y))) {
    PyObject* sequence = __pyx_v_y;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(13, 67, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
    index = 0; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(13, 67, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L6_unpacking_done;
    __pyx_L5_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(13, 67, __pyx_L1_error)
    __pyx_L6_unpacking_done:;
  }
  __pyx_v_v = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_j = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":68
 *     u, i = x
 *     v, j = y
 *     if u < v:             # <<<<<<<<<<<<<<
 *         return u, i
 *     elif v < u:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_u, __pyx_v_v, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 68, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(13, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":69
 *     v, j = y
 *     if u < v:
 *         return u, i             # <<<<<<<<<<<<<<
 *     elif v < u:
 *         return v, j
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_u);
    __Pyx_GIVEREF(__pyx_v_u);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_u)) __PYX_ERR(13, 69, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_i)) __PYX_ERR(13, 69, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":68
 *     u, i = x
 *     v, j = y
 *     if u < v:             # <<<<<<<<<<<<<<
 *         return u, i
 *     elif v < u:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":70
 *     if u < v:
 *         return u, i
 *     elif v < u:             # <<<<<<<<<<<<<<
 *         return v, j
 *     elif j < i:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_v, __pyx_v_u, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 70, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(13, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":71
 *         return u, i
 *     elif v < u:
 *         return v, j             # <<<<<<<<<<<<<<
 *     elif j < i:
 *         return v, j
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_v);
    __Pyx_GIVEREF(__pyx_v_v);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_v)) __PYX_ERR(13, 71, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_j);
    __Pyx_GIVEREF(__pyx_v_j);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_j)) __PYX_ERR(13, 71, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":70
 *     if u < v:
 *         return u, i
 *     elif v < u:             # <<<<<<<<<<<<<<
 *         return v, j
 *     elif j < i:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":72
 *     elif v < u:
 *         return v, j
 *     elif j < i:             # <<<<<<<<<<<<<<
 *         return v, j
 *     else:
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_j, __pyx_v_i, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 72, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(13, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":73
 *         return v, j
 *     elif j < i:
 *         return v, j             # <<<<<<<<<<<<<<
 *     else:
 *         return u, i
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_v);
    __Pyx_GIVEREF(__pyx_v_v);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_v)) __PYX_ERR(13, 73, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_j);
    __Pyx_GIVEREF(__pyx_v_j);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_j)) __PYX_ERR(13, 73, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":72
 *     elif v < u:
 *         return v, j
 *     elif j < i:             # <<<<<<<<<<<<<<
 *         return v, j
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":75
 *         return v, j
 *     else:
 *         return u, i             # <<<<<<<<<<<<<<
 * 
 * cdef object op_REPLACE(object x, object y):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_u);
    __Pyx_GIVEREF(__pyx_v_u);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_u)) __PYX_ERR(13, 75, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_i)) __PYX_ERR(13, 75, __pyx_L1_error);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":63
 *         return u, i
 * 
 * cdef object op_MINLOC(object x, object y):             # <<<<<<<<<<<<<<
 *     """minimum and location"""
 *     cdef object i, j, u, v
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.op_MINLOC", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_j);
  __Pyx_XDECREF(__pyx_v_u);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":77
 *         return u, i
 * 
 * cdef object op_REPLACE(object x, object y):             # <<<<<<<<<<<<<<
 *     """replace,  (x, y) -> y"""
 *     <void> x  # unused
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_REPLACE(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("op_REPLACE", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":79
 * cdef object op_REPLACE(object x, object y):
 *     """replace,  (x, y) -> y"""
 *     <void> x  # unused             # <<<<<<<<<<<<<<
 *     return y
 * 
 */
  ((void)__pyx_v_x);

  /* "src/mpi4py/MPI.src/opimpl.pxi":80
 *     """replace,  (x, y) -> y"""
 *     <void> x  # unused
 *     return y             # <<<<<<<<<<<<<<
 * 
 * cdef object op_NO_OP(object x, object y):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_y);
  __pyx_r = __pyx_v_y;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":77
 *         return u, i
 * 
 * cdef object op_REPLACE(object x, object y):             # <<<<<<<<<<<<<<
 *     """replace,  (x, y) -> y"""
 *     <void> x  # unused
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":82
 *     return y
 * 
 * cdef object op_NO_OP(object x, object y):             # <<<<<<<<<<<<<<
 *     """no-op,  (x, y) -> x"""
 *     <void> y  # unused
 */

static PyObject *__pyx_f_6mpi4py_3MPI_op_NO_OP(PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("op_NO_OP", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":84
 * cdef object op_NO_OP(object x, object y):
 *     """no-op,  (x, y) -> x"""
 *     <void> y  # unused             # <<<<<<<<<<<<<<
 *     return x
 * 
 */
  ((void)__pyx_v_y);

  /* "src/mpi4py/MPI.src/opimpl.pxi":85
 *     """no-op,  (x, y) -> x"""
 *     <void> y  # unused
 *     return x             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_x);
  __pyx_r = __pyx_v_x;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":82
 *     return y
 * 
 * cdef object op_NO_OP(object x, object y):             # <<<<<<<<<<<<<<
 *     """no-op,  (x, y) -> x"""
 *     <void> y  # unused
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":101
 * 
 * 
 * cdef inline object op_user_call_py(int index, object x, object y, object dt):             # <<<<<<<<<<<<<<
 *     return op_user_registry[index](x, y, dt)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_op_user_call_py(int __pyx_v_index, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_dt) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_call_py", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":102
 * 
 * cdef inline object op_user_call_py(int index, object x, object y, object dt):
 *     return op_user_registry[index](x, y, dt)             # <<<<<<<<<<<<<<
 * 
 * cdef inline void op_user_call_mpi(
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_6mpi4py_3MPI_op_user_registry == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(13, 102, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_x, __pyx_v_y, __pyx_v_dt};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":101
 * 
 * 
 * cdef inline object op_user_call_py(int index, object x, object y, object dt):             # <<<<<<<<<<<<<<
 *     return op_user_registry[index](x, y, dt)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.op_user_call_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":104
 *     return op_user_registry[index](x, y, dt)
 * 
 * cdef inline void op_user_call_mpi(             # <<<<<<<<<<<<<<
 *     int index,
 *     void *a, void *b, MPI_Count n, MPI_Datatype t,
 */

static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_call_mpi(int __pyx_v_index, void *__pyx_v_a, void *__pyx_v_b, MPI_Count __pyx_v_n, MPI_Datatype __pyx_v_t) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_v_exc = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("op_user_call_mpi", 0);

  /* "src/mpi4py/MPI.src/opimpl.pxi":110
 *     cdef Datatype datatype
 *     # errors in user-defined reduction operations are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         datatype = <Datatype>New(Datatype)
 *         datatype.ob_mpi = t
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/opimpl.pxi":111
 *     # errors in user-defined reduction operations are unrecoverable
 *     try:
 *         datatype = <Datatype>New(Datatype)             # <<<<<<<<<<<<<<
 *         datatype.ob_mpi = t
 *         try:
 */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 111, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_5);
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/opimpl.pxi":112
 *     try:
 *         datatype = <Datatype>New(Datatype)
 *         datatype.ob_mpi = t             # <<<<<<<<<<<<<<
 *         try:
 *             op_user_call_py(index, mpibuf(a, n), mpibuf(b, n), datatype)
 */
      __pyx_v_datatype->ob_mpi = __pyx_v_t;

      /* "src/mpi4py/MPI.src/opimpl.pxi":113
 *         datatype = <Datatype>New(Datatype)
 *         datatype.ob_mpi = t
 *         try:             # <<<<<<<<<<<<<<
 *             op_user_call_py(index, mpibuf(a, n), mpibuf(b, n), datatype)
 *         finally:
 */
      /*try:*/ {

        /* "src/mpi4py/MPI.src/opimpl.pxi":114
 *         datatype.ob_mpi = t
 *         try:
 *             op_user_call_py(index, mpibuf(a, n), mpibuf(b, n), datatype)             # <<<<<<<<<<<<<<
 *         finally:
 *             datatype.ob_mpi = MPI_DATATYPE_NULL
 */
        __pyx_t_5 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_a, __pyx_v_n)); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 114, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_b, __pyx_v_n)); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 114, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __pyx_f_6mpi4py_3MPI_op_user_call_py(__pyx_v_index, __pyx_t_5, __pyx_t_4, ((PyObject *)__pyx_v_datatype)); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 114, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }

      /* "src/mpi4py/MPI.src/opimpl.pxi":116
 *             op_user_call_py(index, mpibuf(a, n), mpibuf(b, n), datatype)
 *         finally:
 *             datatype.ob_mpi = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     except BaseException as exc:                               # ~> uncovered
 *         PyErr_DisplayException(exc)                            # ~> uncovered
 */
      /*finally:*/ {
        /*normal exit:*/{
          __pyx_v_datatype->ob_mpi = MPI_DATATYPE_NULL;
          goto __pyx_L11;
        }
        __pyx_L10_error:;
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_14);
          __Pyx_XGOTREF(__pyx_t_15);
          __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
          {
            __pyx_v_datatype->ob_mpi = MPI_DATATYPE_NULL;
          }
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_XGIVEREF(__pyx_t_14);
            __Pyx_XGIVEREF(__pyx_t_15);
            __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
          }
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
          __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
          __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
          goto __pyx_L3_error;
        }
        __pyx_L11:;
      }

      /* "src/mpi4py/MPI.src/opimpl.pxi":110
 *     cdef Datatype datatype
 *     # errors in user-defined reduction operations are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         datatype = <Datatype>New(Datatype)
 *         datatype.ob_mpi = t
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":117
 *         finally:
 *             datatype.ob_mpi = MPI_DATATYPE_NULL
 *     except BaseException as exc:                               # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                            # ~> uncovered
 *         PySys_WriteStderr(                                     # ~> uncovered
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("mpi4py.MPI.op_user_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(13, 117, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_exc = __pyx_t_4;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/opimpl.pxi":118
 *             datatype.ob_mpi = MPI_DATATYPE_NULL
 *     except BaseException as exc:                               # ~> uncovered
 *         PyErr_DisplayException(exc)                            # ~> uncovered             # <<<<<<<<<<<<<<
 *         PySys_WriteStderr(                                     # ~> uncovered
 *             b"Fatal Python error: %s\n",                       # ~> uncovered
 */
        PyErr_DisplayException(__pyx_v_exc);

        /* "src/mpi4py/MPI.src/opimpl.pxi":119
 *     except BaseException as exc:                               # ~> uncovered
 *         PyErr_DisplayException(exc)                            # ~> uncovered
 *         PySys_WriteStderr(                                     # ~> uncovered             # <<<<<<<<<<<<<<
 *             b"Fatal Python error: %s\n",                       # ~> uncovered
 *             b"exception in user-defined reduction operation",  # ~> uncovered
 */
        PySys_WriteStderr(((char *)"Fatal Python error: %s\n"), ((char *)"exception in user-defined reduction operation"));

        /* "src/mpi4py/MPI.src/opimpl.pxi":123
 *             b"exception in user-defined reduction operation",  # ~> uncovered
 *         )                                                      # ~> uncovered
 *         <void>MPI_Abort(MPI_COMM_WORLD, 1)                     # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * 
 */
        ((void)MPI_Abort(MPI_COMM_WORLD, 1));
      }

      /* "src/mpi4py/MPI.src/opimpl.pxi":117
 *         finally:
 *             datatype.ob_mpi = MPI_DATATYPE_NULL
 *     except BaseException as exc:                               # ~> uncovered             # <<<<<<<<<<<<<<
 *         PyErr_DisplayException(exc)                            # ~> uncovered
 *         PySys_WriteStderr(                                     # ~> uncovered
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L20;
        }
        __pyx_L20:;
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/opimpl.pxi":110
 *     cdef Datatype datatype
 *     # errors in user-defined reduction operations are unrecoverable
 *     try:             # <<<<<<<<<<<<<<
 *         datatype = <Datatype>New(Datatype)
 *         datatype.ob_mpi = t
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":104
 *     return op_user_registry[index](x, y, dt)
 * 
 * cdef inline void op_user_call_mpi(             # <<<<<<<<<<<<<<
 *     int index,
 *     void *a, void *b, MPI_Count n, MPI_Datatype t,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("mpi4py.MPI.op_user_call_mpi", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/mpi4py/MPI.src/opimpl.pxi":126
 * 
 * 
 * cdef inline void op_user_call(             # <<<<<<<<<<<<<<
 *     int index,
 *     void *a, void *b, MPI_Count count, MPI_Datatype t,
 */

static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_call(int __pyx_v_index, void *__pyx_v_a, void *__pyx_v_b, MPI_Count __pyx_v_count, MPI_Datatype __pyx_v_t) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  MPI_Count __pyx_v_n;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/opimpl.pxi":131
 * ) noexcept nogil:
 *     # make it abort if Python has finalized
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":133
 *     if not Py_IsInitialized(): <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # make it abort if module cleanup has been done
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)             # <<<<<<<<<<<<<<
 *     # compute the byte-size of memory buffers
 *     cdef MPI_Count lb=0, extent=0
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    ((void)MPI_Abort(MPI_COMM_WORLD, 1));
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":135
 *     if not py_module_alive():  <void>MPI_Abort(MPI_COMM_WORLD, 1)
 *     # compute the byte-size of memory buffers
 *     cdef MPI_Count lb=0, extent=0             # <<<<<<<<<<<<<<
 *     <void>MPI_Type_get_extent_c(t, &lb, &extent)
 *     cdef MPI_Count n = count * extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":136
 *     # compute the byte-size of memory buffers
 *     cdef MPI_Count lb=0, extent=0
 *     <void>MPI_Type_get_extent_c(t, &lb, &extent)             # <<<<<<<<<<<<<<
 *     cdef MPI_Count n = count * extent
 *     # make the actual GIL-safe Python call
 */
  ((void)MPI_Type_get_extent_c(__pyx_v_t, (&__pyx_v_lb), (&__pyx_v_extent)));

  /* "src/mpi4py/MPI.src/opimpl.pxi":137
 *     cdef MPI_Count lb=0, extent=0
 *     <void>MPI_Type_get_extent_c(t, &lb, &extent)
 *     cdef MPI_Count n = count * extent             # <<<<<<<<<<<<<<
 *     # make the actual GIL-safe Python call
 *     op_user_call_mpi(index, a, b, n, t)
 */
  __pyx_v_n = (__pyx_v_count * __pyx_v_extent);

  /* "src/mpi4py/MPI.src/opimpl.pxi":139
 *     cdef MPI_Count n = count * extent
 *     # make the actual GIL-safe Python call
 *     op_user_call_mpi(index, a, b, n, t)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call_mpi(__pyx_v_index, __pyx_v_a, __pyx_v_b, __pyx_v_n, __pyx_v_t);

  /* "src/mpi4py/MPI.src/opimpl.pxi":126
 * 
 * 
 * cdef inline void op_user_call(             # <<<<<<<<<<<<<<
 *     int index,
 *     void *a, void *b, MPI_Count count, MPI_Datatype t,
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":143
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_01(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 1, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_01(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":144
 * @cython.callspec("MPIAPI")
 * cdef void op_user_01(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 1, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(1, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":143
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_01(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 1, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_01(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":144
 * @cython.callspec("MPIAPI")
 * cdef void op_user_01(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 1, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(1, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":143
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_01(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 1, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":148
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_02(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 2, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_02(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":149
 * @cython.callspec("MPIAPI")
 * cdef void op_user_02(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 2, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(2, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":148
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_02(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 2, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_02(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":149
 * @cython.callspec("MPIAPI")
 * cdef void op_user_02(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 2, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(2, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":148
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_02(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 2, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":153
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_03(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 3, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_03(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":154
 * @cython.callspec("MPIAPI")
 * cdef void op_user_03(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 3, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(3, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":153
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_03(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 3, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_03(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":154
 * @cython.callspec("MPIAPI")
 * cdef void op_user_03(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 3, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(3, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":153
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_03(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 3, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":158
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_04(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 4, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_04(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":159
 * @cython.callspec("MPIAPI")
 * cdef void op_user_04(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 4, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(4, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":158
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_04(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 4, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_04(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":159
 * @cython.callspec("MPIAPI")
 * cdef void op_user_04(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 4, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(4, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":158
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_04(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 4, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":163
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_05(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 5, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_05(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":164
 * @cython.callspec("MPIAPI")
 * cdef void op_user_05(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 5, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(5, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":163
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_05(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 5, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_05(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":164
 * @cython.callspec("MPIAPI")
 * cdef void op_user_05(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 5, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(5, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":163
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_05(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 5, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":168
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_06(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 6, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_06(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":169
 * @cython.callspec("MPIAPI")
 * cdef void op_user_06(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 6, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(6, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":168
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_06(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 6, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_06(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":169
 * @cython.callspec("MPIAPI")
 * cdef void op_user_06(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 6, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(6, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":168
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_06(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 6, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":173
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_07(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 7, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_07(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":174
 * @cython.callspec("MPIAPI")
 * cdef void op_user_07(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 7, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(7, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":173
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_07(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 7, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_07(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":174
 * @cython.callspec("MPIAPI")
 * cdef void op_user_07(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 7, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(7, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":173
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_07(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 7, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":178
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_08(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 8, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_08(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":179
 * @cython.callspec("MPIAPI")
 * cdef void op_user_08(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 8, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(8, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":178
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_08(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 8, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_08(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":179
 * @cython.callspec("MPIAPI")
 * cdef void op_user_08(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 8, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(8, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":178
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_08(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 8, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":183
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_09(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 9, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_09(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":184
 * @cython.callspec("MPIAPI")
 * cdef void op_user_09(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 9, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(9, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":183
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_09(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 9, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_09(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":184
 * @cython.callspec("MPIAPI")
 * cdef void op_user_09(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call( 9, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(9, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":183
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_09(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call( 9, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":188
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_10(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(10, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_10(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":189
 * @cython.callspec("MPIAPI")
 * cdef void op_user_10(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(10, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(10, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":188
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_10(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(10, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_10(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":189
 * @cython.callspec("MPIAPI")
 * cdef void op_user_10(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(10, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(10, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":188
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_10(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(10, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":193
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_11(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(11, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_11(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":194
 * @cython.callspec("MPIAPI")
 * cdef void op_user_11(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(11, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(11, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":193
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_11(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(11, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_11(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":194
 * @cython.callspec("MPIAPI")
 * cdef void op_user_11(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(11, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(11, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":193
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_11(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(11, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":198
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_12(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(12, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_12(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":199
 * @cython.callspec("MPIAPI")
 * cdef void op_user_12(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(12, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(12, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":198
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_12(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(12, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_12(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":199
 * @cython.callspec("MPIAPI")
 * cdef void op_user_12(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(12, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(12, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":198
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_12(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(12, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":203
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_13(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(13, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_13(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":204
 * @cython.callspec("MPIAPI")
 * cdef void op_user_13(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(13, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(13, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":203
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_13(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(13, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_13(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":204
 * @cython.callspec("MPIAPI")
 * cdef void op_user_13(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(13, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(13, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":203
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_13(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(13, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":208
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_14(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(14, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_14(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":209
 * @cython.callspec("MPIAPI")
 * cdef void op_user_14(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(14, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(14, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":208
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_14(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(14, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_14(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":209
 * @cython.callspec("MPIAPI")
 * cdef void op_user_14(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(14, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(14, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":208
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_14(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(14, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":213
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_15(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(15, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_15(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":214
 * @cython.callspec("MPIAPI")
 * cdef void op_user_15(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(15, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(15, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":213
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_15(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(15, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_15(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":214
 * @cython.callspec("MPIAPI")
 * cdef void op_user_15(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(15, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(15, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":213
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_15(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(15, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":218
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_16(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(16, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_16(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":219
 * @cython.callspec("MPIAPI")
 * cdef void op_user_16(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(16, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(16, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":218
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_16(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(16, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_16(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":219
 * @cython.callspec("MPIAPI")
 * cdef void op_user_16(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(16, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(16, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":218
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_16(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(16, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":223
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_17(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(17, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_17(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":224
 * @cython.callspec("MPIAPI")
 * cdef void op_user_17(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(17, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(17, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":223
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_17(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(17, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_17(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":224
 * @cython.callspec("MPIAPI")
 * cdef void op_user_17(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(17, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(17, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":223
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_17(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(17, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":228
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_18(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(18, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_18(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":229
 * @cython.callspec("MPIAPI")
 * cdef void op_user_18(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(18, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(18, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":228
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_18(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(18, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_18(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":229
 * @cython.callspec("MPIAPI")
 * cdef void op_user_18(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(18, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(18, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":228
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_18(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(18, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":233
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_19(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(19, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_19(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":234
 * @cython.callspec("MPIAPI")
 * cdef void op_user_19(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(19, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(19, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":233
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_19(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(19, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_19(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":234
 * @cython.callspec("MPIAPI")
 * cdef void op_user_19(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(19, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(19, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":233
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_19(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(19, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":238
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_20(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(20, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_20(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":239
 * @cython.callspec("MPIAPI")
 * cdef void op_user_20(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(20, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(20, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":238
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_20(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(20, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_20(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":239
 * @cython.callspec("MPIAPI")
 * cdef void op_user_20(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(20, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(20, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":238
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_20(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(20, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":243
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_21(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(21, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_21(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":244
 * @cython.callspec("MPIAPI")
 * cdef void op_user_21(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(21, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(21, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":243
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_21(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(21, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_21(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":244
 * @cython.callspec("MPIAPI")
 * cdef void op_user_21(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(21, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(21, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":243
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_21(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(21, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":248
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_22(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(22, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_22(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":249
 * @cython.callspec("MPIAPI")
 * cdef void op_user_22(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(22, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(22, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":248
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_22(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(22, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_22(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":249
 * @cython.callspec("MPIAPI")
 * cdef void op_user_22(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(22, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(22, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":248
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_22(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(22, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":253
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_23(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(23, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_23(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":254
 * @cython.callspec("MPIAPI")
 * cdef void op_user_23(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(23, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(23, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":253
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_23(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(23, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_23(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":254
 * @cython.callspec("MPIAPI")
 * cdef void op_user_23(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(23, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(23, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":253
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_23(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(23, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":258
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_24(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(24, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_24(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":259
 * @cython.callspec("MPIAPI")
 * cdef void op_user_24(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(24, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(24, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":258
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_24(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(24, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_24(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":259
 * @cython.callspec("MPIAPI")
 * cdef void op_user_24(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(24, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(24, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":258
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_24(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(24, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":263
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_25(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(25, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_25(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":264
 * @cython.callspec("MPIAPI")
 * cdef void op_user_25(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(25, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(25, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":263
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_25(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(25, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_25(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":264
 * @cython.callspec("MPIAPI")
 * cdef void op_user_25(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(25, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(25, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":263
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_25(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(25, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":268
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_26(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(26, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_26(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":269
 * @cython.callspec("MPIAPI")
 * cdef void op_user_26(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(26, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(26, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":268
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_26(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(26, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_26(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":269
 * @cython.callspec("MPIAPI")
 * cdef void op_user_26(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(26, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(26, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":268
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_26(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(26, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":273
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_27(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(27, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_27(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":274
 * @cython.callspec("MPIAPI")
 * cdef void op_user_27(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(27, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(27, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":273
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_27(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(27, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_27(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":274
 * @cython.callspec("MPIAPI")
 * cdef void op_user_27(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(27, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(27, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":273
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_27(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(27, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":278
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_28(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(28, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_28(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":279
 * @cython.callspec("MPIAPI")
 * cdef void op_user_28(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(28, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(28, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":278
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_28(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(28, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_28(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":279
 * @cython.callspec("MPIAPI")
 * cdef void op_user_28(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(28, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(28, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":278
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_28(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(28, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":283
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_29(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(29, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_29(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":284
 * @cython.callspec("MPIAPI")
 * cdef void op_user_29(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(29, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(29, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":283
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_29(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(29, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_29(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":284
 * @cython.callspec("MPIAPI")
 * cdef void op_user_29(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(29, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(29, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":283
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_29(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(29, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":288
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_30(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(30, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_30(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":289
 * @cython.callspec("MPIAPI")
 * cdef void op_user_30(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(30, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(30, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":288
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_30(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(30, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_30(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":289
 * @cython.callspec("MPIAPI")
 * cdef void op_user_30(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(30, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(30, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":288
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_30(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(30, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":293
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_31(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(31, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_31(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":294
 * @cython.callspec("MPIAPI")
 * cdef void op_user_31(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(31, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(31, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":293
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_31(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(31, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_31(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":294
 * @cython.callspec("MPIAPI")
 * cdef void op_user_31(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(31, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(31, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":293
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_31(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(31, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":298
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_32(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(32, a, b, n[0], t[0])
 * 
 */

static void MPIAPI __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_32(void *__pyx_v_a, void *__pyx_v_b, int *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":299
 * @cython.callspec("MPIAPI")
 * cdef void op_user_32(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(32, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(32, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":298
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_32(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(32, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

static void MPIAPI __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_32(void *__pyx_v_a, void *__pyx_v_b, MPI_Count *__pyx_v_n, MPI_Datatype *__pyx_v_t) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":299
 * @cython.callspec("MPIAPI")
 * cdef void op_user_32(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:
 *     op_user_call(32, a, b, n[0], t[0])             # <<<<<<<<<<<<<<
 * 
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:
 */
  __pyx_f_6mpi4py_3MPI_op_user_call(32, __pyx_v_a, __pyx_v_b, (__pyx_v_n[0]), (__pyx_v_t[0]));

  /* "src/mpi4py/MPI.src/opimpl.pxi":298
 * 
 * @cython.callspec("MPIAPI")
 * cdef void op_user_32(void *a, void *b, op_count_t *n, MPI_Datatype *t) noexcept nogil:             # <<<<<<<<<<<<<<
 *     op_user_call(32, a, b, n[0], t[0])
 * 
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":301
 *     op_user_call(32, a, b, n[0], t[0])
 * 
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = op_user_01
 *     elif index ==  2: fn[0] = op_user_02
 */

static CYTHON_INLINE void __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_map(int __pyx_v_index, MPI_User_function **__pyx_v_fn) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/opimpl.pxi":302
 * 
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = op_user_01             # <<<<<<<<<<<<<<
 *     elif index ==  2: fn[0] = op_user_02
 *     elif index ==  3: fn[0] = op_user_03
 */
  __pyx_t_1 = (__pyx_v_index == 1);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_01;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":303
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = op_user_01
 *     elif index ==  2: fn[0] = op_user_02             # <<<<<<<<<<<<<<
 *     elif index ==  3: fn[0] = op_user_03
 *     elif index ==  4: fn[0] = op_user_04
 */
  __pyx_t_1 = (__pyx_v_index == 2);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_02;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":304
 *     if   index ==  1: fn[0] = op_user_01
 *     elif index ==  2: fn[0] = op_user_02
 *     elif index ==  3: fn[0] = op_user_03             # <<<<<<<<<<<<<<
 *     elif index ==  4: fn[0] = op_user_04
 *     elif index ==  5: fn[0] = op_user_05
 */
  __pyx_t_1 = (__pyx_v_index == 3);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_03;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":305
 *     elif index ==  2: fn[0] = op_user_02
 *     elif index ==  3: fn[0] = op_user_03
 *     elif index ==  4: fn[0] = op_user_04             # <<<<<<<<<<<<<<
 *     elif index ==  5: fn[0] = op_user_05
 *     elif index ==  6: fn[0] = op_user_06
 */
  __pyx_t_1 = (__pyx_v_index == 4);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_04;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":306
 *     elif index ==  3: fn[0] = op_user_03
 *     elif index ==  4: fn[0] = op_user_04
 *     elif index ==  5: fn[0] = op_user_05             # <<<<<<<<<<<<<<
 *     elif index ==  6: fn[0] = op_user_06
 *     elif index ==  7: fn[0] = op_user_07
 */
  __pyx_t_1 = (__pyx_v_index == 5);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_05;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":307
 *     elif index ==  4: fn[0] = op_user_04
 *     elif index ==  5: fn[0] = op_user_05
 *     elif index ==  6: fn[0] = op_user_06             # <<<<<<<<<<<<<<
 *     elif index ==  7: fn[0] = op_user_07
 *     elif index ==  8: fn[0] = op_user_08
 */
  __pyx_t_1 = (__pyx_v_index == 6);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_06;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":308
 *     elif index ==  5: fn[0] = op_user_05
 *     elif index ==  6: fn[0] = op_user_06
 *     elif index ==  7: fn[0] = op_user_07             # <<<<<<<<<<<<<<
 *     elif index ==  8: fn[0] = op_user_08
 *     elif index ==  9: fn[0] = op_user_09
 */
  __pyx_t_1 = (__pyx_v_index == 7);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_07;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":309
 *     elif index ==  6: fn[0] = op_user_06
 *     elif index ==  7: fn[0] = op_user_07
 *     elif index ==  8: fn[0] = op_user_08             # <<<<<<<<<<<<<<
 *     elif index ==  9: fn[0] = op_user_09
 *     elif index == 10: fn[0] = op_user_10
 */
  __pyx_t_1 = (__pyx_v_index == 8);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_08;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":310
 *     elif index ==  7: fn[0] = op_user_07
 *     elif index ==  8: fn[0] = op_user_08
 *     elif index ==  9: fn[0] = op_user_09             # <<<<<<<<<<<<<<
 *     elif index == 10: fn[0] = op_user_10
 *     elif index == 11: fn[0] = op_user_11
 */
  __pyx_t_1 = (__pyx_v_index == 9);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_09;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":311
 *     elif index ==  8: fn[0] = op_user_08
 *     elif index ==  9: fn[0] = op_user_09
 *     elif index == 10: fn[0] = op_user_10             # <<<<<<<<<<<<<<
 *     elif index == 11: fn[0] = op_user_11
 *     elif index == 12: fn[0] = op_user_12
 */
  __pyx_t_1 = (__pyx_v_index == 10);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_10;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":312
 *     elif index ==  9: fn[0] = op_user_09
 *     elif index == 10: fn[0] = op_user_10
 *     elif index == 11: fn[0] = op_user_11             # <<<<<<<<<<<<<<
 *     elif index == 12: fn[0] = op_user_12
 *     elif index == 13: fn[0] = op_user_13
 */
  __pyx_t_1 = (__pyx_v_index == 11);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_11;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":313
 *     elif index == 10: fn[0] = op_user_10
 *     elif index == 11: fn[0] = op_user_11
 *     elif index == 12: fn[0] = op_user_12             # <<<<<<<<<<<<<<
 *     elif index == 13: fn[0] = op_user_13
 *     elif index == 14: fn[0] = op_user_14
 */
  __pyx_t_1 = (__pyx_v_index == 12);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_12;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":314
 *     elif index == 11: fn[0] = op_user_11
 *     elif index == 12: fn[0] = op_user_12
 *     elif index == 13: fn[0] = op_user_13             # <<<<<<<<<<<<<<
 *     elif index == 14: fn[0] = op_user_14
 *     elif index == 15: fn[0] = op_user_15
 */
  __pyx_t_1 = (__pyx_v_index == 13);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_13;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":315
 *     elif index == 12: fn[0] = op_user_12
 *     elif index == 13: fn[0] = op_user_13
 *     elif index == 14: fn[0] = op_user_14             # <<<<<<<<<<<<<<
 *     elif index == 15: fn[0] = op_user_15
 *     elif index == 16: fn[0] = op_user_16
 */
  __pyx_t_1 = (__pyx_v_index == 14);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_14;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":316
 *     elif index == 13: fn[0] = op_user_13
 *     elif index == 14: fn[0] = op_user_14
 *     elif index == 15: fn[0] = op_user_15             # <<<<<<<<<<<<<<
 *     elif index == 16: fn[0] = op_user_16
 *     elif index == 17: fn[0] = op_user_17
 */
  __pyx_t_1 = (__pyx_v_index == 15);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_15;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":317
 *     elif index == 14: fn[0] = op_user_14
 *     elif index == 15: fn[0] = op_user_15
 *     elif index == 16: fn[0] = op_user_16             # <<<<<<<<<<<<<<
 *     elif index == 17: fn[0] = op_user_17
 *     elif index == 18: fn[0] = op_user_18
 */
  __pyx_t_1 = (__pyx_v_index == 16);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":318
 *     elif index == 15: fn[0] = op_user_15
 *     elif index == 16: fn[0] = op_user_16
 *     elif index == 17: fn[0] = op_user_17             # <<<<<<<<<<<<<<
 *     elif index == 18: fn[0] = op_user_18
 *     elif index == 19: fn[0] = op_user_19
 */
  __pyx_t_1 = (__pyx_v_index == 17);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_17;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":319
 *     elif index == 16: fn[0] = op_user_16
 *     elif index == 17: fn[0] = op_user_17
 *     elif index == 18: fn[0] = op_user_18             # <<<<<<<<<<<<<<
 *     elif index == 19: fn[0] = op_user_19
 *     elif index == 20: fn[0] = op_user_20
 */
  __pyx_t_1 = (__pyx_v_index == 18);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_18;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":320
 *     elif index == 17: fn[0] = op_user_17
 *     elif index == 18: fn[0] = op_user_18
 *     elif index == 19: fn[0] = op_user_19             # <<<<<<<<<<<<<<
 *     elif index == 20: fn[0] = op_user_20
 *     elif index == 21: fn[0] = op_user_21
 */
  __pyx_t_1 = (__pyx_v_index == 19);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_19;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":321
 *     elif index == 18: fn[0] = op_user_18
 *     elif index == 19: fn[0] = op_user_19
 *     elif index == 20: fn[0] = op_user_20             # <<<<<<<<<<<<<<
 *     elif index == 21: fn[0] = op_user_21
 *     elif index == 22: fn[0] = op_user_22
 */
  __pyx_t_1 = (__pyx_v_index == 20);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_20;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":322
 *     elif index == 19: fn[0] = op_user_19
 *     elif index == 20: fn[0] = op_user_20
 *     elif index == 21: fn[0] = op_user_21             # <<<<<<<<<<<<<<
 *     elif index == 22: fn[0] = op_user_22
 *     elif index == 23: fn[0] = op_user_23
 */
  __pyx_t_1 = (__pyx_v_index == 21);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_21;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":323
 *     elif index == 20: fn[0] = op_user_20
 *     elif index == 21: fn[0] = op_user_21
 *     elif index == 22: fn[0] = op_user_22             # <<<<<<<<<<<<<<
 *     elif index == 23: fn[0] = op_user_23
 *     elif index == 24: fn[0] = op_user_24
 */
  __pyx_t_1 = (__pyx_v_index == 22);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_22;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":324
 *     elif index == 21: fn[0] = op_user_21
 *     elif index == 22: fn[0] = op_user_22
 *     elif index == 23: fn[0] = op_user_23             # <<<<<<<<<<<<<<
 *     elif index == 24: fn[0] = op_user_24
 *     elif index == 25: fn[0] = op_user_25
 */
  __pyx_t_1 = (__pyx_v_index == 23);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_23;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":325
 *     elif index == 22: fn[0] = op_user_22
 *     elif index == 23: fn[0] = op_user_23
 *     elif index == 24: fn[0] = op_user_24             # <<<<<<<<<<<<<<
 *     elif index == 25: fn[0] = op_user_25
 *     elif index == 26: fn[0] = op_user_26
 */
  __pyx_t_1 = (__pyx_v_index == 24);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_24;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":326
 *     elif index == 23: fn[0] = op_user_23
 *     elif index == 24: fn[0] = op_user_24
 *     elif index == 25: fn[0] = op_user_25             # <<<<<<<<<<<<<<
 *     elif index == 26: fn[0] = op_user_26
 *     elif index == 27: fn[0] = op_user_27
 */
  __pyx_t_1 = (__pyx_v_index == 25);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_25;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":327
 *     elif index == 24: fn[0] = op_user_24
 *     elif index == 25: fn[0] = op_user_25
 *     elif index == 26: fn[0] = op_user_26             # <<<<<<<<<<<<<<
 *     elif index == 27: fn[0] = op_user_27
 *     elif index == 28: fn[0] = op_user_28
 */
  __pyx_t_1 = (__pyx_v_index == 26);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_26;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":328
 *     elif index == 25: fn[0] = op_user_25
 *     elif index == 26: fn[0] = op_user_26
 *     elif index == 27: fn[0] = op_user_27             # <<<<<<<<<<<<<<
 *     elif index == 28: fn[0] = op_user_28
 *     elif index == 29: fn[0] = op_user_29
 */
  __pyx_t_1 = (__pyx_v_index == 27);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_27;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":329
 *     elif index == 26: fn[0] = op_user_26
 *     elif index == 27: fn[0] = op_user_27
 *     elif index == 28: fn[0] = op_user_28             # <<<<<<<<<<<<<<
 *     elif index == 29: fn[0] = op_user_29
 *     elif index == 30: fn[0] = op_user_30
 */
  __pyx_t_1 = (__pyx_v_index == 28);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_28;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":330
 *     elif index == 27: fn[0] = op_user_27
 *     elif index == 28: fn[0] = op_user_28
 *     elif index == 29: fn[0] = op_user_29             # <<<<<<<<<<<<<<
 *     elif index == 30: fn[0] = op_user_30
 *     elif index == 31: fn[0] = op_user_31
 */
  __pyx_t_1 = (__pyx_v_index == 29);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_29;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":331
 *     elif index == 28: fn[0] = op_user_28
 *     elif index == 29: fn[0] = op_user_29
 *     elif index == 30: fn[0] = op_user_30             # <<<<<<<<<<<<<<
 *     elif index == 31: fn[0] = op_user_31
 *     elif index == 32: fn[0] = op_user_32
 */
  __pyx_t_1 = (__pyx_v_index == 30);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_30;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":332
 *     elif index == 29: fn[0] = op_user_29
 *     elif index == 30: fn[0] = op_user_30
 *     elif index == 31: fn[0] = op_user_31             # <<<<<<<<<<<<<<
 *     elif index == 32: fn[0] = op_user_32
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 31);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_31;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":333
 *     elif index == 30: fn[0] = op_user_30
 *     elif index == 31: fn[0] = op_user_31
 *     elif index == 32: fn[0] = op_user_32             # <<<<<<<<<<<<<<
 * 
 * cdef inline void op_user_id_set(Op self, int index) noexcept nogil:
 */
  __pyx_t_1 = (__pyx_v_index == 32);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_32;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/opimpl.pxi":301
 *     op_user_call(32, a, b, n[0], t[0])
 * 
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = op_user_01
 *     elif index ==  2: fn[0] = op_user_02
 */

  /* function exit code */
}

static CYTHON_INLINE void __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_map(int __pyx_v_index, MPI_User_function_c **__pyx_v_fn) {
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/opimpl.pxi":302
 * 
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = op_user_01             # <<<<<<<<<<<<<<
 *     elif index ==  2: fn[0] = op_user_02
 *     elif index ==  3: fn[0] = op_user_03
 */
  __pyx_t_1 = (__pyx_v_index == 1);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_01;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":303
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:
 *     if   index ==  1: fn[0] = op_user_01
 *     elif index ==  2: fn[0] = op_user_02             # <<<<<<<<<<<<<<
 *     elif index ==  3: fn[0] = op_user_03
 *     elif index ==  4: fn[0] = op_user_04
 */
  __pyx_t_1 = (__pyx_v_index == 2);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_02;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":304
 *     if   index ==  1: fn[0] = op_user_01
 *     elif index ==  2: fn[0] = op_user_02
 *     elif index ==  3: fn[0] = op_user_03             # <<<<<<<<<<<<<<
 *     elif index ==  4: fn[0] = op_user_04
 *     elif index ==  5: fn[0] = op_user_05
 */
  __pyx_t_1 = (__pyx_v_index == 3);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_03;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":305
 *     elif index ==  2: fn[0] = op_user_02
 *     elif index ==  3: fn[0] = op_user_03
 *     elif index ==  4: fn[0] = op_user_04             # <<<<<<<<<<<<<<
 *     elif index ==  5: fn[0] = op_user_05
 *     elif index ==  6: fn[0] = op_user_06
 */
  __pyx_t_1 = (__pyx_v_index == 4);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_04;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":306
 *     elif index ==  3: fn[0] = op_user_03
 *     elif index ==  4: fn[0] = op_user_04
 *     elif index ==  5: fn[0] = op_user_05             # <<<<<<<<<<<<<<
 *     elif index ==  6: fn[0] = op_user_06
 *     elif index ==  7: fn[0] = op_user_07
 */
  __pyx_t_1 = (__pyx_v_index == 5);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_05;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":307
 *     elif index ==  4: fn[0] = op_user_04
 *     elif index ==  5: fn[0] = op_user_05
 *     elif index ==  6: fn[0] = op_user_06             # <<<<<<<<<<<<<<
 *     elif index ==  7: fn[0] = op_user_07
 *     elif index ==  8: fn[0] = op_user_08
 */
  __pyx_t_1 = (__pyx_v_index == 6);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_06;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":308
 *     elif index ==  5: fn[0] = op_user_05
 *     elif index ==  6: fn[0] = op_user_06
 *     elif index ==  7: fn[0] = op_user_07             # <<<<<<<<<<<<<<
 *     elif index ==  8: fn[0] = op_user_08
 *     elif index ==  9: fn[0] = op_user_09
 */
  __pyx_t_1 = (__pyx_v_index == 7);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_07;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":309
 *     elif index ==  6: fn[0] = op_user_06
 *     elif index ==  7: fn[0] = op_user_07
 *     elif index ==  8: fn[0] = op_user_08             # <<<<<<<<<<<<<<
 *     elif index ==  9: fn[0] = op_user_09
 *     elif index == 10: fn[0] = op_user_10
 */
  __pyx_t_1 = (__pyx_v_index == 8);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_08;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":310
 *     elif index ==  7: fn[0] = op_user_07
 *     elif index ==  8: fn[0] = op_user_08
 *     elif index ==  9: fn[0] = op_user_09             # <<<<<<<<<<<<<<
 *     elif index == 10: fn[0] = op_user_10
 *     elif index == 11: fn[0] = op_user_11
 */
  __pyx_t_1 = (__pyx_v_index == 9);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_09;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":311
 *     elif index ==  8: fn[0] = op_user_08
 *     elif index ==  9: fn[0] = op_user_09
 *     elif index == 10: fn[0] = op_user_10             # <<<<<<<<<<<<<<
 *     elif index == 11: fn[0] = op_user_11
 *     elif index == 12: fn[0] = op_user_12
 */
  __pyx_t_1 = (__pyx_v_index == 10);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_10;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":312
 *     elif index ==  9: fn[0] = op_user_09
 *     elif index == 10: fn[0] = op_user_10
 *     elif index == 11: fn[0] = op_user_11             # <<<<<<<<<<<<<<
 *     elif index == 12: fn[0] = op_user_12
 *     elif index == 13: fn[0] = op_user_13
 */
  __pyx_t_1 = (__pyx_v_index == 11);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_11;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":313
 *     elif index == 10: fn[0] = op_user_10
 *     elif index == 11: fn[0] = op_user_11
 *     elif index == 12: fn[0] = op_user_12             # <<<<<<<<<<<<<<
 *     elif index == 13: fn[0] = op_user_13
 *     elif index == 14: fn[0] = op_user_14
 */
  __pyx_t_1 = (__pyx_v_index == 12);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_12;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":314
 *     elif index == 11: fn[0] = op_user_11
 *     elif index == 12: fn[0] = op_user_12
 *     elif index == 13: fn[0] = op_user_13             # <<<<<<<<<<<<<<
 *     elif index == 14: fn[0] = op_user_14
 *     elif index == 15: fn[0] = op_user_15
 */
  __pyx_t_1 = (__pyx_v_index == 13);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_13;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":315
 *     elif index == 12: fn[0] = op_user_12
 *     elif index == 13: fn[0] = op_user_13
 *     elif index == 14: fn[0] = op_user_14             # <<<<<<<<<<<<<<
 *     elif index == 15: fn[0] = op_user_15
 *     elif index == 16: fn[0] = op_user_16
 */
  __pyx_t_1 = (__pyx_v_index == 14);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_14;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":316
 *     elif index == 13: fn[0] = op_user_13
 *     elif index == 14: fn[0] = op_user_14
 *     elif index == 15: fn[0] = op_user_15             # <<<<<<<<<<<<<<
 *     elif index == 16: fn[0] = op_user_16
 *     elif index == 17: fn[0] = op_user_17
 */
  __pyx_t_1 = (__pyx_v_index == 15);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_15;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":317
 *     elif index == 14: fn[0] = op_user_14
 *     elif index == 15: fn[0] = op_user_15
 *     elif index == 16: fn[0] = op_user_16             # <<<<<<<<<<<<<<
 *     elif index == 17: fn[0] = op_user_17
 *     elif index == 18: fn[0] = op_user_18
 */
  __pyx_t_1 = (__pyx_v_index == 16);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":318
 *     elif index == 15: fn[0] = op_user_15
 *     elif index == 16: fn[0] = op_user_16
 *     elif index == 17: fn[0] = op_user_17             # <<<<<<<<<<<<<<
 *     elif index == 18: fn[0] = op_user_18
 *     elif index == 19: fn[0] = op_user_19
 */
  __pyx_t_1 = (__pyx_v_index == 17);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_17;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":319
 *     elif index == 16: fn[0] = op_user_16
 *     elif index == 17: fn[0] = op_user_17
 *     elif index == 18: fn[0] = op_user_18             # <<<<<<<<<<<<<<
 *     elif index == 19: fn[0] = op_user_19
 *     elif index == 20: fn[0] = op_user_20
 */
  __pyx_t_1 = (__pyx_v_index == 18);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_18;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":320
 *     elif index == 17: fn[0] = op_user_17
 *     elif index == 18: fn[0] = op_user_18
 *     elif index == 19: fn[0] = op_user_19             # <<<<<<<<<<<<<<
 *     elif index == 20: fn[0] = op_user_20
 *     elif index == 21: fn[0] = op_user_21
 */
  __pyx_t_1 = (__pyx_v_index == 19);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_19;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":321
 *     elif index == 18: fn[0] = op_user_18
 *     elif index == 19: fn[0] = op_user_19
 *     elif index == 20: fn[0] = op_user_20             # <<<<<<<<<<<<<<
 *     elif index == 21: fn[0] = op_user_21
 *     elif index == 22: fn[0] = op_user_22
 */
  __pyx_t_1 = (__pyx_v_index == 20);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_20;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":322
 *     elif index == 19: fn[0] = op_user_19
 *     elif index == 20: fn[0] = op_user_20
 *     elif index == 21: fn[0] = op_user_21             # <<<<<<<<<<<<<<
 *     elif index == 22: fn[0] = op_user_22
 *     elif index == 23: fn[0] = op_user_23
 */
  __pyx_t_1 = (__pyx_v_index == 21);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_21;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":323
 *     elif index == 20: fn[0] = op_user_20
 *     elif index == 21: fn[0] = op_user_21
 *     elif index == 22: fn[0] = op_user_22             # <<<<<<<<<<<<<<
 *     elif index == 23: fn[0] = op_user_23
 *     elif index == 24: fn[0] = op_user_24
 */
  __pyx_t_1 = (__pyx_v_index == 22);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_22;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":324
 *     elif index == 21: fn[0] = op_user_21
 *     elif index == 22: fn[0] = op_user_22
 *     elif index == 23: fn[0] = op_user_23             # <<<<<<<<<<<<<<
 *     elif index == 24: fn[0] = op_user_24
 *     elif index == 25: fn[0] = op_user_25
 */
  __pyx_t_1 = (__pyx_v_index == 23);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_23;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":325
 *     elif index == 22: fn[0] = op_user_22
 *     elif index == 23: fn[0] = op_user_23
 *     elif index == 24: fn[0] = op_user_24             # <<<<<<<<<<<<<<
 *     elif index == 25: fn[0] = op_user_25
 *     elif index == 26: fn[0] = op_user_26
 */
  __pyx_t_1 = (__pyx_v_index == 24);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_24;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":326
 *     elif index == 23: fn[0] = op_user_23
 *     elif index == 24: fn[0] = op_user_24
 *     elif index == 25: fn[0] = op_user_25             # <<<<<<<<<<<<<<
 *     elif index == 26: fn[0] = op_user_26
 *     elif index == 27: fn[0] = op_user_27
 */
  __pyx_t_1 = (__pyx_v_index == 25);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_25;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":327
 *     elif index == 24: fn[0] = op_user_24
 *     elif index == 25: fn[0] = op_user_25
 *     elif index == 26: fn[0] = op_user_26             # <<<<<<<<<<<<<<
 *     elif index == 27: fn[0] = op_user_27
 *     elif index == 28: fn[0] = op_user_28
 */
  __pyx_t_1 = (__pyx_v_index == 26);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_26;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":328
 *     elif index == 25: fn[0] = op_user_25
 *     elif index == 26: fn[0] = op_user_26
 *     elif index == 27: fn[0] = op_user_27             # <<<<<<<<<<<<<<
 *     elif index == 28: fn[0] = op_user_28
 *     elif index == 29: fn[0] = op_user_29
 */
  __pyx_t_1 = (__pyx_v_index == 27);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_27;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":329
 *     elif index == 26: fn[0] = op_user_26
 *     elif index == 27: fn[0] = op_user_27
 *     elif index == 28: fn[0] = op_user_28             # <<<<<<<<<<<<<<
 *     elif index == 29: fn[0] = op_user_29
 *     elif index == 30: fn[0] = op_user_30
 */
  __pyx_t_1 = (__pyx_v_index == 28);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_28;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":330
 *     elif index == 27: fn[0] = op_user_27
 *     elif index == 28: fn[0] = op_user_28
 *     elif index == 29: fn[0] = op_user_29             # <<<<<<<<<<<<<<
 *     elif index == 30: fn[0] = op_user_30
 *     elif index == 31: fn[0] = op_user_31
 */
  __pyx_t_1 = (__pyx_v_index == 29);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_29;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":331
 *     elif index == 28: fn[0] = op_user_28
 *     elif index == 29: fn[0] = op_user_29
 *     elif index == 30: fn[0] = op_user_30             # <<<<<<<<<<<<<<
 *     elif index == 31: fn[0] = op_user_31
 *     elif index == 32: fn[0] = op_user_32
 */
  __pyx_t_1 = (__pyx_v_index == 30);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_30;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":332
 *     elif index == 29: fn[0] = op_user_29
 *     elif index == 30: fn[0] = op_user_30
 *     elif index == 31: fn[0] = op_user_31             # <<<<<<<<<<<<<<
 *     elif index == 32: fn[0] = op_user_32
 * 
 */
  __pyx_t_1 = (__pyx_v_index == 31);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_31;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":333
 *     elif index == 30: fn[0] = op_user_30
 *     elif index == 31: fn[0] = op_user_31
 *     elif index == 32: fn[0] = op_user_32             # <<<<<<<<<<<<<<
 * 
 * cdef inline void op_user_id_set(Op self, int index) noexcept nogil:
 */
  __pyx_t_1 = (__pyx_v_index == 32);
  if (__pyx_t_1) {
    (__pyx_v_fn[0]) = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_32;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/opimpl.pxi":301
 *     op_user_call(32, a, b, n[0], t[0])
 * 
 * cdef inline void op_user_map(int index, op_usrfn_t **fn) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if   index ==  1: fn[0] = op_user_01
 *     elif index ==  2: fn[0] = op_user_02
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":335
 *     elif index == 32: fn[0] = op_user_32
 * 
 * cdef inline void op_user_id_set(Op self, int index) noexcept nogil:             # <<<<<<<<<<<<<<
 *     self.flags &= (1U << 24U) - 1U
 *     self.flags |= <unsigned> index << 24U
 */

static CYTHON_INLINE void __pyx_f_6mpi4py_3MPI_op_user_id_set(struct PyMPIOpObject *__pyx_v_self, int __pyx_v_index) {

  /* "src/mpi4py/MPI.src/opimpl.pxi":336
 * 
 * cdef inline void op_user_id_set(Op self, int index) noexcept nogil:
 *     self.flags &= (1U << 24U) - 1U             # <<<<<<<<<<<<<<
 *     self.flags |= <unsigned> index << 24U
 * 
 */
  __pyx_v_self->flags = (__pyx_v_self->flags & 0xffffffU);

  /* "src/mpi4py/MPI.src/opimpl.pxi":337
 * cdef inline void op_user_id_set(Op self, int index) noexcept nogil:
 *     self.flags &= (1U << 24U) - 1U
 *     self.flags |= <unsigned> index << 24U             # <<<<<<<<<<<<<<
 * 
 * cdef inline int op_user_id_get(Op self) noexcept nogil:
 */
  __pyx_v_self->flags = (__pyx_v_self->flags | (((unsigned int)__pyx_v_index) << 24U));

  /* "src/mpi4py/MPI.src/opimpl.pxi":335
 *     elif index == 32: fn[0] = op_user_32
 * 
 * cdef inline void op_user_id_set(Op self, int index) noexcept nogil:             # <<<<<<<<<<<<<<
 *     self.flags &= (1U << 24U) - 1U
 *     self.flags |= <unsigned> index << 24U
 */

  /* function exit code */
}

/* "src/mpi4py/MPI.src/opimpl.pxi":339
 *     self.flags |= <unsigned> index << 24U
 * 
 * cdef inline int op_user_id_get(Op self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <int> (self.flags >> 24U)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_id_get(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/opimpl.pxi":340
 * 
 * cdef inline int op_user_id_get(Op self) noexcept nogil:
 *     return <int> (self.flags >> 24U)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int op_user_id_pop(Op self) noexcept nogil:
 */
  __pyx_r = ((int)(__pyx_v_self->flags >> 24U));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":339
 *     self.flags |= <unsigned> index << 24U
 * 
 * cdef inline int op_user_id_get(Op self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     return <int> (self.flags >> 24U)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":342
 *     return <int> (self.flags >> 24U)
 * 
 * cdef inline int op_user_id_pop(Op self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int index = op_user_id_get(self)
 *     self.flags &= (1U << 24U) - 1U
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_id_pop(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_v_index;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/opimpl.pxi":343
 * 
 * cdef inline int op_user_id_pop(Op self) noexcept nogil:
 *     cdef int index = op_user_id_get(self)             # <<<<<<<<<<<<<<
 *     self.flags &= (1U << 24U) - 1U
 *     return index
 */
  __pyx_v_index = __pyx_f_6mpi4py_3MPI_op_user_id_get(__pyx_v_self);

  /* "src/mpi4py/MPI.src/opimpl.pxi":344
 * cdef inline int op_user_id_pop(Op self) noexcept nogil:
 *     cdef int index = op_user_id_get(self)
 *     self.flags &= (1U << 24U) - 1U             # <<<<<<<<<<<<<<
 *     return index
 * 
 */
  __pyx_v_self->flags = (__pyx_v_self->flags & 0xffffffU);

  /* "src/mpi4py/MPI.src/opimpl.pxi":345
 *     cdef int index = op_user_id_get(self)
 *     self.flags &= (1U << 24U) - 1U
 *     return index             # <<<<<<<<<<<<<<
 * 
 * cdef inline int op_user_new(
 */
  __pyx_r = __pyx_v_index;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":342
 *     return <int> (self.flags >> 24U)
 * 
 * cdef inline int op_user_id_pop(Op self) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef int index = op_user_id_get(self)
 *     self.flags &= (1U << 24U) - 1U
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":347
 *     return index
 * 
 * cdef inline int op_user_new(             # <<<<<<<<<<<<<<
 *     Op self,
 *     object function,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_new(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_function, MPI_User_function **__pyx_v_fn_i, MPI_User_function_c **__pyx_v_fn_c) {
  int __pyx_v_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_new", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":354
 * ) except -1:
 *     # check whether the function is callable
 *     function.__call__             # <<<<<<<<<<<<<<
 *     # find a free slot in the registry
 *     # and register the Python function
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_function, __pyx_n_s_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":357
 *     # find a free slot in the registry
 *     # and register the Python function
 *     cdef int index = 0             # <<<<<<<<<<<<<<
 *     try:
 *         with op_user_lock:
 */
  __pyx_v_index = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":358
 *     # and register the Python function
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with op_user_lock:
 *             index = op_user_registry.index(None, 1)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/opimpl.pxi":359
 *     cdef int index = 0
 *     try:
 *         with op_user_lock:             # <<<<<<<<<<<<<<
 *             index = op_user_registry.index(None, 1)
 *             op_user_registry[index] = function
 */
      /*with:*/ {
        __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 359, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 359, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 359, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/opimpl.pxi":360
 *     try:
 *         with op_user_lock:
 *             index = op_user_registry.index(None, 1)             # <<<<<<<<<<<<<<
 *             op_user_registry[index] = function
 *     except ValueError:
 */
              __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_index, __pyx_v_6mpi4py_3MPI_op_user_registry, Py_None, __pyx_int_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 360, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(13, 360, __pyx_L13_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_v_index = __pyx_t_12;

              /* "src/mpi4py/MPI.src/opimpl.pxi":361
 *         with op_user_lock:
 *             index = op_user_registry.index(None, 1)
 *             op_user_registry[index] = function             # <<<<<<<<<<<<<<
 *     except ValueError:
 *         raise RuntimeError(
 */
              if (unlikely(__pyx_v_6mpi4py_3MPI_op_user_registry == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(13, 361, __pyx_L13_error)
              }
              if (unlikely((__Pyx_SetItemInt(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, __pyx_v_function, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0))) __PYX_ERR(13, 361, __pyx_L13_error)

              /* "src/mpi4py/MPI.src/opimpl.pxi":359
 *     cdef int index = 0
 *     try:
 *         with op_user_lock:             # <<<<<<<<<<<<<<
 *             index = op_user_registry.index(None, 1)
 *             op_user_registry[index] = function
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("mpi4py.MPI.op_user_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(13, 359, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_1);
              __Pyx_XGOTREF(__pyx_t_6);
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_13 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 359, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_13, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (unlikely(!__pyx_t_14)) __PYX_ERR(13, 359, __pyx_L15_except_error)
              __Pyx_GOTREF(__pyx_t_14);
              __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_14);
              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              if (__pyx_t_15 < 0) __PYX_ERR(13, 359, __pyx_L15_except_error)
              __pyx_t_16 = (!__pyx_t_15);
              if (unlikely(__pyx_t_16)) {
                __Pyx_GIVEREF(__pyx_t_1);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_6, __pyx_t_7);
                __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
                __PYX_ERR(13, 359, __pyx_L15_except_error)
              }
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L14_exception_handled;
            }
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L3_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_5) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 359, __pyx_L3_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
        goto __pyx_L22;
        __pyx_L9_error:;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L3_error;
        __pyx_L22:;
      }

      /* "src/mpi4py/MPI.src/opimpl.pxi":358
 *     # and register the Python function
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with op_user_lock:
 *             index = op_user_registry.index(None, 1)
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/opimpl.pxi":362
 *             index = op_user_registry.index(None, 1)
 *             op_user_registry[index] = function
 *     except ValueError:             # <<<<<<<<<<<<<<
 *         raise RuntimeError(
 *             "cannot create too many user-defined reduction operations",
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("mpi4py.MPI.op_user_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(13, 362, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_1);

      /* "src/mpi4py/MPI.src/opimpl.pxi":363
 *             op_user_registry[index] = function
 *     except ValueError:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "cannot create too many user-defined reduction operations",
 *         )
 */
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(13, 363, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_Raise(__pyx_t_13, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __PYX_ERR(13, 363, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/opimpl.pxi":358
 *     # and register the Python function
 *     cdef int index = 0
 *     try:             # <<<<<<<<<<<<<<
 *         with op_user_lock:
 *             index = op_user_registry.index(None, 1)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":368
 *     # map slot index to the associated C callback,
 *     # and return the slot index in the registry
 *     op_user_map(index, fn_i)             # <<<<<<<<<<<<<<
 *     op_user_map(index, fn_c)
 *     op_user_id_set(self, index)
 */
  __pyx_fuse_0__pyx_f_6mpi4py_3MPI_op_user_map(__pyx_v_index, __pyx_v_fn_i);

  /* "src/mpi4py/MPI.src/opimpl.pxi":369
 *     # and return the slot index in the registry
 *     op_user_map(index, fn_i)
 *     op_user_map(index, fn_c)             # <<<<<<<<<<<<<<
 *     op_user_id_set(self, index)
 *     return 0
 */
  __pyx_fuse_1__pyx_f_6mpi4py_3MPI_op_user_map(__pyx_v_index, __pyx_v_fn_c);

  /* "src/mpi4py/MPI.src/opimpl.pxi":370
 *     op_user_map(index, fn_i)
 *     op_user_map(index, fn_c)
 *     op_user_id_set(self, index)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_id_set(__pyx_v_self, __pyx_v_index);

  /* "src/mpi4py/MPI.src/opimpl.pxi":371
 *     op_user_map(index, fn_c)
 *     op_user_id_set(self, index)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int op_user_cpy(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":347
 *     return index
 * 
 * cdef inline int op_user_new(             # <<<<<<<<<<<<<<
 *     Op self,
 *     object function,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.op_user_new", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":373
 *     return 0
 * 
 * cdef inline int op_user_cpy(             # <<<<<<<<<<<<<<
 *     Op self,
 *     Op other,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_cpy(struct PyMPIOpObject *__pyx_v_self, struct PyMPIOpObject *__pyx_v_other) {
  int __pyx_v_index;
  int __pyx_r;

  /* "src/mpi4py/MPI.src/opimpl.pxi":377
 *     Op other,
 * ) except -1:
 *     cdef int index = op_user_id_get(other)             # <<<<<<<<<<<<<<
 *     op_user_id_set(self, index)
 *     return 0
 */
  __pyx_v_index = __pyx_f_6mpi4py_3MPI_op_user_id_get(__pyx_v_other);

  /* "src/mpi4py/MPI.src/opimpl.pxi":378
 * ) except -1:
 *     cdef int index = op_user_id_get(other)
 *     op_user_id_set(self, index)             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_f_6mpi4py_3MPI_op_user_id_set(__pyx_v_self, __pyx_v_index);

  /* "src/mpi4py/MPI.src/opimpl.pxi":379
 *     cdef int index = op_user_id_get(other)
 *     op_user_id_set(self, index)
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int op_user_del(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":373
 *     return 0
 * 
 * cdef inline int op_user_cpy(             # <<<<<<<<<<<<<<
 *     Op self,
 *     Op other,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":381
 *     return 0
 * 
 * cdef inline int op_user_del(             # <<<<<<<<<<<<<<
 *     Op self,
 * ) except -1:
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_op_user_del(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_v_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_user_del", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":385
 * ) except -1:
 *     # free slot in the registry
 *     cdef int index = op_user_id_pop(self)             # <<<<<<<<<<<<<<
 *     if index > 0:
 *         with op_user_lock:
 */
  __pyx_v_index = __pyx_f_6mpi4py_3MPI_op_user_id_pop(__pyx_v_self);

  /* "src/mpi4py/MPI.src/opimpl.pxi":386
 *     # free slot in the registry
 *     cdef int index = op_user_id_pop(self)
 *     if index > 0:             # <<<<<<<<<<<<<<
 *         with op_user_lock:
 *             op_user_registry[index] = None
 */
  __pyx_t_1 = (__pyx_v_index > 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/opimpl.pxi":387
 *     cdef int index = op_user_id_pop(self)
 *     if index > 0:
 *         with op_user_lock:             # <<<<<<<<<<<<<<
 *             op_user_registry[index] = None
 *     return 0
 */
    /*with:*/ {
      __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 387, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 387, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /*try:*/ {
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          /*try:*/ {

            /* "src/mpi4py/MPI.src/opimpl.pxi":388
 *     if index > 0:
 *         with op_user_lock:
 *             op_user_registry[index] = None             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
            if (unlikely(__pyx_v_6mpi4py_3MPI_op_user_registry == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(13, 388, __pyx_L8_error)
            }
            if (unlikely((__Pyx_SetItemInt(__pyx_v_6mpi4py_3MPI_op_user_registry, __pyx_v_index, Py_None, int, 1, __Pyx_PyInt_From_int, 1, 1, 1) < 0))) __PYX_ERR(13, 388, __pyx_L8_error)

            /* "src/mpi4py/MPI.src/opimpl.pxi":387
 *     cdef int index = op_user_id_pop(self)
 *     if index > 0:
 *         with op_user_lock:             # <<<<<<<<<<<<<<
 *             op_user_registry[index] = None
 *     return 0
 */
          }
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L13_try_end;
          __pyx_L8_error:;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          /*except:*/ {
            __Pyx_AddTraceback("mpi4py.MPI.op_user_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5) < 0) __PYX_ERR(13, 387, __pyx_L10_except_error)
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_4);
            __Pyx_XGOTREF(__pyx_t_5);
            __pyx_t_10 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 387, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (unlikely(!__pyx_t_11)) __PYX_ERR(13, 387, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (__pyx_t_1 < 0) __PYX_ERR(13, 387, __pyx_L10_except_error)
            __pyx_t_12 = (!__pyx_t_1);
            if (unlikely(__pyx_t_12)) {
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_XGIVEREF(__pyx_t_5);
              __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_5);
              __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; 
              __PYX_ERR(13, 387, __pyx_L10_except_error)
            }
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L9_exception_handled;
          }
          __pyx_L10_except_error:;
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          goto __pyx_L1_error;
          __pyx_L9_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          __pyx_L13_try_end:;
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_2) {
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_9)) __PYX_ERR(13, 387, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
      goto __pyx_L17;
      __pyx_L4_error:;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L1_error;
      __pyx_L17:;
    }

    /* "src/mpi4py/MPI.src/opimpl.pxi":386
 *     # free slot in the registry
 *     cdef int index = op_user_id_pop(self)
 *     if index > 0:             # <<<<<<<<<<<<<<
 *         with op_user_lock:
 *             op_user_registry[index] = None
 */
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":389
 *         with op_user_lock:
 *             op_user_registry[index] = None
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":381
 *     return 0
 * 
 * cdef inline int op_user_del(             # <<<<<<<<<<<<<<
 *     Op self,
 * ) except -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.op_user_del", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/opimpl.pxi":393
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object op_call(MPI_Op op, int index, object x, object y):             # <<<<<<<<<<<<<<
 *     if op == MPI_MAX     : return op_MAX(x, y)
 *     if op == MPI_MIN     : return op_MIN(x, y)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_op_call(MPI_Op __pyx_v_op, int __pyx_v_index, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("op_call", 1);

  /* "src/mpi4py/MPI.src/opimpl.pxi":394
 * 
 * cdef inline object op_call(MPI_Op op, int index, object x, object y):
 *     if op == MPI_MAX     : return op_MAX(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_MIN     : return op_MIN(x, y)
 *     if op == MPI_SUM     : return op_SUM(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_MAX);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_MAX(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":395
 * cdef inline object op_call(MPI_Op op, int index, object x, object y):
 *     if op == MPI_MAX     : return op_MAX(x, y)
 *     if op == MPI_MIN     : return op_MIN(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_SUM     : return op_SUM(x, y)
 *     if op == MPI_PROD    : return op_PROD(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_MIN);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_MIN(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":396
 *     if op == MPI_MAX     : return op_MAX(x, y)
 *     if op == MPI_MIN     : return op_MIN(x, y)
 *     if op == MPI_SUM     : return op_SUM(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_PROD    : return op_PROD(x, y)
 *     if op == MPI_LAND    : return op_LAND(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_SUM);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_SUM(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":397
 *     if op == MPI_MIN     : return op_MIN(x, y)
 *     if op == MPI_SUM     : return op_SUM(x, y)
 *     if op == MPI_PROD    : return op_PROD(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_LAND    : return op_LAND(x, y)
 *     if op == MPI_BAND    : return op_BAND(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_PROD);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_PROD(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":398
 *     if op == MPI_SUM     : return op_SUM(x, y)
 *     if op == MPI_PROD    : return op_PROD(x, y)
 *     if op == MPI_LAND    : return op_LAND(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_BAND    : return op_BAND(x, y)
 *     if op == MPI_LOR     : return op_LOR(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_LAND);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_LAND(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 398, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":399
 *     if op == MPI_PROD    : return op_PROD(x, y)
 *     if op == MPI_LAND    : return op_LAND(x, y)
 *     if op == MPI_BAND    : return op_BAND(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_LOR     : return op_LOR(x, y)
 *     if op == MPI_BOR     : return op_BOR(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_BAND);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_BAND(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":400
 *     if op == MPI_LAND    : return op_LAND(x, y)
 *     if op == MPI_BAND    : return op_BAND(x, y)
 *     if op == MPI_LOR     : return op_LOR(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_BOR     : return op_BOR(x, y)
 *     if op == MPI_LXOR    : return op_LXOR(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_LOR);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_LOR(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":401
 *     if op == MPI_BAND    : return op_BAND(x, y)
 *     if op == MPI_LOR     : return op_LOR(x, y)
 *     if op == MPI_BOR     : return op_BOR(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_LXOR    : return op_LXOR(x, y)
 *     if op == MPI_BXOR    : return op_BXOR(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_BOR);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_BOR(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":402
 *     if op == MPI_LOR     : return op_LOR(x, y)
 *     if op == MPI_BOR     : return op_BOR(x, y)
 *     if op == MPI_LXOR    : return op_LXOR(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_BXOR    : return op_BXOR(x, y)
 *     if op == MPI_MAXLOC  : return op_MAXLOC(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_LXOR);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_LXOR(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":403
 *     if op == MPI_BOR     : return op_BOR(x, y)
 *     if op == MPI_LXOR    : return op_LXOR(x, y)
 *     if op == MPI_BXOR    : return op_BXOR(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_MAXLOC  : return op_MAXLOC(x, y)
 *     if op == MPI_MINLOC  : return op_MINLOC(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_BXOR);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_BXOR(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":404
 *     if op == MPI_LXOR    : return op_LXOR(x, y)
 *     if op == MPI_BXOR    : return op_BXOR(x, y)
 *     if op == MPI_MAXLOC  : return op_MAXLOC(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_MINLOC  : return op_MINLOC(x, y)
 *     if op == MPI_REPLACE : return op_REPLACE(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_MAXLOC);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_MAXLOC(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":405
 *     if op == MPI_BXOR    : return op_BXOR(x, y)
 *     if op == MPI_MAXLOC  : return op_MAXLOC(x, y)
 *     if op == MPI_MINLOC  : return op_MINLOC(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_REPLACE : return op_REPLACE(x, y)
 *     if op == MPI_NO_OP   : return op_NO_OP(x, y)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_MINLOC);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_MINLOC(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":406
 *     if op == MPI_MAXLOC  : return op_MAXLOC(x, y)
 *     if op == MPI_MINLOC  : return op_MINLOC(x, y)
 *     if op == MPI_REPLACE : return op_REPLACE(x, y)             # <<<<<<<<<<<<<<
 *     if op == MPI_NO_OP   : return op_NO_OP(x, y)
 *     if index > 0         : return op_user_call_py(index, x, y, None)
 */
  __pyx_t_1 = (__pyx_v_op == MPI_REPLACE);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_REPLACE(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":407
 *     if op == MPI_MINLOC  : return op_MINLOC(x, y)
 *     if op == MPI_REPLACE : return op_REPLACE(x, y)
 *     if op == MPI_NO_OP   : return op_NO_OP(x, y)             # <<<<<<<<<<<<<<
 *     if index > 0         : return op_user_call_py(index, x, y, None)
 *     raise ValueError("cannot call user-defined operation")
 */
  __pyx_t_1 = (__pyx_v_op == MPI_NO_OP);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_NO_OP(__pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":408
 *     if op == MPI_REPLACE : return op_REPLACE(x, y)
 *     if op == MPI_NO_OP   : return op_NO_OP(x, y)
 *     if index > 0         : return op_user_call_py(index, x, y, None)             # <<<<<<<<<<<<<<
 *     raise ValueError("cannot call user-defined operation")
 * 
 */
  __pyx_t_1 = (__pyx_v_index > 0);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_op_user_call_py(__pyx_v_index, __pyx_v_x, __pyx_v_y, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/opimpl.pxi":409
 *     if op == MPI_NO_OP   : return op_NO_OP(x, y)
 *     if index > 0         : return op_user_call_py(index, x, y, None)
 *     raise ValueError("cannot call user-defined operation")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(13, 409, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/opimpl.pxi":393
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object op_call(MPI_Op op, int index, object x, object y):             # <<<<<<<<<<<<<<
 *     if op == MPI_MAX     : return op_MAX(x, y)
 *     if op == MPI_MIN     : return op_MIN(x, y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.op_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":9
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BUFFER_AUTOMATIC
 *         if a != b:
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType___cinit__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType___cinit__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  MPI_Aint __pyx_v_a;
  MPI_Aint __pyx_v_b;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  MPI_Aint __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":10
 * 
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BUFFER_AUTOMATIC             # <<<<<<<<<<<<<<
 *         if a != b:
 *             raise ValueError("cannot create instance")
 */
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Aint(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(14, 10, __pyx_L1_error)
  __pyx_v_a = __pyx_t_1;
  __pyx_v_b = ((MPI_Aint)MPI_BUFFER_AUTOMATIC);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":11
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BUFFER_AUTOMATIC
 *         if a != b:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot create instance")
 * 
 */
  __pyx_t_2 = (__pyx_v_a != __pyx_v_b);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":12
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BUFFER_AUTOMATIC
 *         if a != b:
 *             raise ValueError("cannot create instance")             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 12, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(14, 12, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":11
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BUFFER_AUTOMATIC
 *         if a != b:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot create instance")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":9
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BUFFER_AUTOMATIC
 *         if a != b:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.BufferAutomaticType.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":14
 *             raise ValueError("cannot create instance")
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         cdef void *bufauto = MPI_BUFFER_AUTOMATIC
 *         PyBuffer_FillInfo(view, <object>NULL, bufauto, 0, 0, flags)
 */

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_2__getbuffer__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self), ((Py_buffer *)__pyx_v_view), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_2__getbuffer__(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  void *__pyx_v_bufauto;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (unlikely(__pyx_v_view == NULL)) {
    PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    return -1;
  }
  __pyx_v_view->obj = NULL;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":15
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         cdef void *bufauto = MPI_BUFFER_AUTOMATIC             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, bufauto, 0, 0, flags)
 * 
 */
  __pyx_v_bufauto = MPI_BUFFER_AUTOMATIC;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":16
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         cdef void *bufauto = MPI_BUFFER_AUTOMATIC
 *         PyBuffer_FillInfo(view, <object>NULL, bufauto, 0, 0, flags)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
 */
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)NULL), __pyx_v_bufauto, 0, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 16, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":14
 *             raise ValueError("cannot create instance")
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         cdef void *bufauto = MPI_BUFFER_AUTOMATIC
 *         PyBuffer_FillInfo(view, <object>NULL, bufauto, 0, 0, flags)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.BufferAutomaticType.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  Py_CLEAR(__pyx_v_view->obj);
  goto __pyx_L2;
  __pyx_L0:;
  __pyx_L2:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":18
 *         PyBuffer_FillInfo(view, <object>NULL, bufauto, 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_4__repr__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_4__repr__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":19
 * 
 *     def __repr__(self) -> str:
 *         <void> self  # unused             # <<<<<<<<<<<<<<
 *         return 'BUFFER_AUTOMATIC'
 * 
 */
  ((void)__pyx_v_self);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":20
 *     def __repr__(self) -> str:
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_n_s_BUFFER_AUTOMATIC);
  __pyx_r = __pyx_n_s_BUFFER_AUTOMATIC;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":18
 *         PyBuffer_FillInfo(view, <object>NULL, bufauto, 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":22
 *         return 'BUFFER_AUTOMATIC'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_19BufferAutomaticType_6__reduce__, "__reduce__(self) -> str");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_19BufferAutomaticType_7__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_19BufferAutomaticType_6__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_6__reduce__(((struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_19BufferAutomaticType_6__reduce__(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":23
 * 
 *     def __reduce__(self) -> str:
 *         <void> self  # unused             # <<<<<<<<<<<<<<
 *         return 'BUFFER_AUTOMATIC'
 * 
 */
  ((void)__pyx_v_self);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":24
 *     def __reduce__(self) -> str:
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_n_s_BUFFER_AUTOMATIC);
  __pyx_r = __pyx_n_s_BUFFER_AUTOMATIC;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":22
 *         return 'BUFFER_AUTOMATIC'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":30
 *     BufferAutomaticType(<MPI_Aint>MPI_BUFFER_AUTOMATIC)
 * 
 * cdef inline bint is_BUFFER_AUTOMATIC(object obj):             # <<<<<<<<<<<<<<
 *     return is_constant(obj, __BUFFER_AUTOMATIC__)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_BUFFER_AUTOMATIC(PyObject *__pyx_v_obj) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_BUFFER_AUTOMATIC", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":31
 * 
 * cdef inline bint is_BUFFER_AUTOMATIC(object obj):
 *     return is_constant(obj, __BUFFER_AUTOMATIC__)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_1 = __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_constant(__pyx_v_obj, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(14, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":30
 *     BufferAutomaticType(<MPI_Aint>MPI_BUFFER_AUTOMATIC)
 * 
 * cdef inline bint is_BUFFER_AUTOMATIC(object obj):             # <<<<<<<<<<<<<<
 *     return is_constant(obj, __BUFFER_AUTOMATIC__)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.is_BUFFER_AUTOMATIC", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":44
 * 
 * 
 * cdef inline object attach_buffer(             # <<<<<<<<<<<<<<
 *     object buf,
 *     void **p,
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_attach_buffer(PyObject *__pyx_v_buf, void **__pyx_v_p, MPI_Count *__pyx_v_n) {
  void *__pyx_v_bptr;
  MPI_Aint __pyx_v_blen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("attach_buffer", 0);
  __Pyx_INCREF(__pyx_v_buf);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":49
 *     MPI_Count *n,
 * ):
 *     cdef void *bptr = MPI_BUFFER_AUTOMATIC             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint blen = 0
 *     if buf is None or is_BUFFER_AUTOMATIC(buf):
 */
  __pyx_v_bptr = MPI_BUFFER_AUTOMATIC;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":50
 * ):
 *     cdef void *bptr = MPI_BUFFER_AUTOMATIC
 *     cdef MPI_Aint blen = 0             # <<<<<<<<<<<<<<
 *     if buf is None or is_BUFFER_AUTOMATIC(buf):
 *         buf = __BUFFER_AUTOMATIC__
 */
  __pyx_v_blen = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":51
 *     cdef void *bptr = MPI_BUFFER_AUTOMATIC
 *     cdef MPI_Aint blen = 0
 *     if buf is None or is_BUFFER_AUTOMATIC(buf):             # <<<<<<<<<<<<<<
 *         buf = __BUFFER_AUTOMATIC__
 *     else:
 */
  __pyx_t_2 = (__pyx_v_buf == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_BUFFER_AUTOMATIC(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(14, 51, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":52
 *     cdef MPI_Aint blen = 0
 *     if buf is None or is_BUFFER_AUTOMATIC(buf):
 *         buf = __BUFFER_AUTOMATIC__             # <<<<<<<<<<<<<<
 *     else:
 *         buf = asbuffer_w(buf, &bptr, &blen)
 */
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);
    __Pyx_DECREF_SET(__pyx_v_buf, __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":51
 *     cdef void *bptr = MPI_BUFFER_AUTOMATIC
 *     cdef MPI_Aint blen = 0
 *     if buf is None or is_BUFFER_AUTOMATIC(buf):             # <<<<<<<<<<<<<<
 *         buf = __BUFFER_AUTOMATIC__
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":54
 *         buf = __BUFFER_AUTOMATIC__
 *     else:
 *         buf = asbuffer_w(buf, &bptr, &blen)             # <<<<<<<<<<<<<<
 *     p[0] = bptr
 *     n[0] = blen
 */
  /*else*/ {
    __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_buf, (&__pyx_v_bptr), (&__pyx_v_blen))); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_buf, __pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":55
 *     else:
 *         buf = asbuffer_w(buf, &bptr, &blen)
 *     p[0] = bptr             # <<<<<<<<<<<<<<
 *     n[0] = blen
 *     return buf
 */
  (__pyx_v_p[0]) = __pyx_v_bptr;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":56
 *         buf = asbuffer_w(buf, &bptr, &blen)
 *     p[0] = bptr
 *     n[0] = blen             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  (__pyx_v_n[0]) = __pyx_v_blen;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":57
 *     p[0] = bptr
 *     n[0] = blen
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef inline int detach_buffer_set(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":44
 * 
 * 
 * cdef inline object attach_buffer(             # <<<<<<<<<<<<<<
 *     object buf,
 *     void **p,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":59
 *     return buf
 * 
 * cdef inline int detach_buffer_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     object buf,
 */

static CYTHON_INLINE int __pyx_fuse_0__pyx_f_6mpi4py_3MPI_detach_buffer_set(Py_uintptr_t __pyx_v_obj, PyObject *__pyx_v_buf) {
  Py_uintptr_t __pyx_v_handle;
  int __pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":65
 *     cdef Py_uintptr_t handle
 *     if PyMPI_attach_buffer_type is Py_uintptr_t:
 *         handle = <Py_uintptr_t>obj             # <<<<<<<<<<<<<<
 *         <void> handle  # unused
 *         _mpi_buffer_comm[None] = buf
 */
  __pyx_v_handle = ((Py_uintptr_t)__pyx_v_obj);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":66
 *     if PyMPI_attach_buffer_type is Py_uintptr_t:
 *         handle = <Py_uintptr_t>obj
 *         <void> handle  # unused             # <<<<<<<<<<<<<<
 *         _mpi_buffer_comm[None] = buf
 *     if PyMPI_attach_buffer_type is Comm:
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":67
 *         handle = <Py_uintptr_t>obj
 *         <void> handle  # unused
 *         _mpi_buffer_comm[None] = buf             # <<<<<<<<<<<<<<
 *     if PyMPI_attach_buffer_type is Comm:
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(14, 67, __pyx_L1_error)
  }
  if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm, Py_None, __pyx_v_buf) < 0))) __PYX_ERR(14, 67, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":74
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1
 *         _mpi_buffer_session[handle] = buf  # ~> MPI-4.1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object detach_buffer_get(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":59
 *     return buf
 * 
 * cdef inline int detach_buffer_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     object buf,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.detach_buffer_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_1__pyx_f_6mpi4py_3MPI_detach_buffer_set(struct PyMPICommObject *__pyx_v_obj, PyObject *__pyx_v_buf) {
  Py_uintptr_t __pyx_v_handle;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1detach_buffer_set", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":69
 *         _mpi_buffer_comm[None] = buf
 *     if PyMPI_attach_buffer_type is Comm:
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         _mpi_buffer_comm[handle] = buf     # ~> MPI-4.1
 *     if PyMPI_attach_buffer_type is Session:
 */
  __pyx_v_handle = ((Py_uintptr_t)__pyx_v_obj->ob_mpi);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":70
 *     if PyMPI_attach_buffer_type is Comm:
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1
 *         _mpi_buffer_comm[handle] = buf     # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     if PyMPI_attach_buffer_type is Session:
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(14, 70, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm, __pyx_t_1, __pyx_v_buf) < 0))) __PYX_ERR(14, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":74
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1
 *         _mpi_buffer_session[handle] = buf  # ~> MPI-4.1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object detach_buffer_get(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":59
 *     return buf
 * 
 * cdef inline int detach_buffer_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     object buf,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.detach_buffer_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE int __pyx_fuse_2__pyx_f_6mpi4py_3MPI_detach_buffer_set(struct PyMPISessionObject *__pyx_v_obj, PyObject *__pyx_v_buf) {
  Py_uintptr_t __pyx_v_handle;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2detach_buffer_set", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":72
 *         _mpi_buffer_comm[handle] = buf     # ~> MPI-4.1
 *     if PyMPI_attach_buffer_type is Session:
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         _mpi_buffer_session[handle] = buf  # ~> MPI-4.1
 *     return 0
 */
  __pyx_v_handle = ((Py_uintptr_t)__pyx_v_obj->ob_mpi);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":73
 *     if PyMPI_attach_buffer_type is Session:
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1
 *         _mpi_buffer_session[handle] = buf  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI__mpi_buffer_session == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(14, 73, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI__mpi_buffer_session, __pyx_t_1, __pyx_v_buf) < 0))) __PYX_ERR(14, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":74
 *         handle = <Py_uintptr_t>obj.ob_mpi  # ~> MPI-4.1
 *         _mpi_buffer_session[handle] = buf  # ~> MPI-4.1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline object detach_buffer_get(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":59
 *     return buf
 * 
 * cdef inline int detach_buffer_set(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     object buf,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.detach_buffer_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/bufaimpl.pxi":76
 *     return 0
 * 
 * cdef inline object detach_buffer_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     void *p,
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_detach_buffer_get(Py_uintptr_t __pyx_v_obj, void *__pyx_v_p, MPI_Count __pyx_v_n) {
  Py_uintptr_t __pyx_v_handle;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0detach_buffer_get", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":82
 * ):
 *     cdef Py_uintptr_t handle
 *     cdef buffer buf = <buffer>None             # <<<<<<<<<<<<<<
 *     if PyMPI_attach_buffer_type is Py_uintptr_t:
 *         handle = <Py_uintptr_t>obj
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":84
 *     cdef buffer buf = <buffer>None
 *     if PyMPI_attach_buffer_type is Py_uintptr_t:
 *         handle = <Py_uintptr_t>obj             # <<<<<<<<<<<<<<
 *         <void> handle  # unused
 *         buf = <buffer>_mpi_buffer_comm.pop(None, None)
 */
  __pyx_v_handle = ((Py_uintptr_t)__pyx_v_obj);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":85
 *     if PyMPI_attach_buffer_type is Py_uintptr_t:
 *         handle = <Py_uintptr_t>obj
 *         <void> handle  # unused             # <<<<<<<<<<<<<<
 *         buf = <buffer>_mpi_buffer_comm.pop(None, None)
 *     if PyMPI_attach_buffer_type is Comm:
 */
  ((void)__pyx_v_handle);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":86
 *         handle = <Py_uintptr_t>obj
 *         <void> handle  # unused
 *         buf = <buffer>_mpi_buffer_comm.pop(None, None)             # <<<<<<<<<<<<<<
 *     if PyMPI_attach_buffer_type is Comm:
 *         handle = <Py_uintptr_t>obj.ob_mpi                 # ~> MPI-4.1
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
    __PYX_ERR(14, 86, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_Pop(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm, Py_None, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_buf, ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_2));
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":93
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:             # <<<<<<<<<<<<<<
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 */
  __pyx_t_3 = (__pyx_v_p == MPI_BUFFER_AUTOMATIC);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":94
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);
    __pyx_r = __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":93
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:             # <<<<<<<<<<<<<<
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 */
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":95
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:             # <<<<<<<<<<<<<<
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_buf) != Py_None);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_buf->view.buf == __pyx_v_p);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_buf->view.obj != NULL);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":96
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj             # <<<<<<<<<<<<<<
 *     return mpibuf(p, n)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_buf->view.obj));
    __pyx_r = ((PyObject *)__pyx_v_buf->view.obj);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":95
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:             # <<<<<<<<<<<<<<
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)
 */
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":97
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_p, __pyx_v_n)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":76
 *     return 0
 * 
 * cdef inline object detach_buffer_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     void *p,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.detach_buffer_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_detach_buffer_get(struct PyMPICommObject *__pyx_v_obj, void *__pyx_v_p, MPI_Count __pyx_v_n) {
  Py_uintptr_t __pyx_v_handle;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1detach_buffer_get", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":82
 * ):
 *     cdef Py_uintptr_t handle
 *     cdef buffer buf = <buffer>None             # <<<<<<<<<<<<<<
 *     if PyMPI_attach_buffer_type is Py_uintptr_t:
 *         handle = <Py_uintptr_t>obj
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":88
 *         buf = <buffer>_mpi_buffer_comm.pop(None, None)
 *     if PyMPI_attach_buffer_type is Comm:
 *         handle = <Py_uintptr_t>obj.ob_mpi                 # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         buf = <buffer>_mpi_buffer_comm.pop(handle, None)  # ~> MPI-4.1
 *     if PyMPI_attach_buffer_type is Session:
 */
  __pyx_v_handle = ((Py_uintptr_t)__pyx_v_obj->ob_mpi);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":89
 *     if PyMPI_attach_buffer_type is Comm:
 *         handle = <Py_uintptr_t>obj.ob_mpi                 # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_comm.pop(handle, None)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     if PyMPI_attach_buffer_type is Session:
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
    __PYX_ERR(14, 89, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_Pop(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_buf, ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":93
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:             # <<<<<<<<<<<<<<
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 */
  __pyx_t_3 = (__pyx_v_p == MPI_BUFFER_AUTOMATIC);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":94
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);
    __pyx_r = __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":93
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:             # <<<<<<<<<<<<<<
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 */
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":95
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:             # <<<<<<<<<<<<<<
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_buf) != Py_None);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_buf->view.buf == __pyx_v_p);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_buf->view.obj != NULL);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":96
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj             # <<<<<<<<<<<<<<
 *     return mpibuf(p, n)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_buf->view.obj));
    __pyx_r = ((PyObject *)__pyx_v_buf->view.obj);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":95
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:             # <<<<<<<<<<<<<<
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)
 */
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":97
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_p, __pyx_v_n)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":76
 *     return 0
 * 
 * cdef inline object detach_buffer_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     void *p,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.detach_buffer_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_detach_buffer_get(struct PyMPISessionObject *__pyx_v_obj, void *__pyx_v_p, MPI_Count __pyx_v_n) {
  Py_uintptr_t __pyx_v_handle;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2detach_buffer_get", 1);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":82
 * ):
 *     cdef Py_uintptr_t handle
 *     cdef buffer buf = <buffer>None             # <<<<<<<<<<<<<<
 *     if PyMPI_attach_buffer_type is Py_uintptr_t:
 *         handle = <Py_uintptr_t>obj
 */
  __pyx_t_1 = Py_None;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":91
 *         buf = <buffer>_mpi_buffer_comm.pop(handle, None)  # ~> MPI-4.1
 *     if PyMPI_attach_buffer_type is Session:
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:
 */
  __pyx_v_handle = ((Py_uintptr_t)__pyx_v_obj->ob_mpi);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":92
 *     if PyMPI_attach_buffer_type is Session:
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 */
  if (unlikely(__pyx_v_6mpi4py_3MPI__mpi_buffer_session == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
    __PYX_ERR(14, 92, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_Pop(__pyx_v_6mpi4py_3MPI__mpi_buffer_session, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_buf, ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":93
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:             # <<<<<<<<<<<<<<
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 */
  __pyx_t_3 = (__pyx_v_p == MPI_BUFFER_AUTOMATIC);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":94
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);
    __pyx_r = __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":93
 *         handle = <Py_uintptr_t>obj.ob_mpi                    # ~> MPI-4.1
 *         buf = <buffer>_mpi_buffer_session.pop(handle, None)  # ~> MPI-4.1
 *     if p == MPI_BUFFER_AUTOMATIC:             # <<<<<<<<<<<<<<
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 */
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":95
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:             # <<<<<<<<<<<<<<
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_buf) != Py_None);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_buf->view.buf == __pyx_v_p);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_buf->view.obj != NULL);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":96
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj             # <<<<<<<<<<<<<<
 *     return mpibuf(p, n)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_buf->view.obj));
    __pyx_r = ((PyObject *)__pyx_v_buf->view.obj);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/bufaimpl.pxi":95
 *     if p == MPI_BUFFER_AUTOMATIC:
 *         return __BUFFER_AUTOMATIC__  # ~> MPI-4.1
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:             # <<<<<<<<<<<<<<
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)
 */
  }

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":97
 *     if buf is not None and buf.view.buf == p and buf.view.obj != NULL:
 *         return <object> buf.view.obj
 *     return mpibuf(p, n)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_p, __pyx_v_n)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":76
 *     return 0
 * 
 * cdef inline object detach_buffer_get(             # <<<<<<<<<<<<<<
 *     PyMPI_attach_buffer_type obj,
 *     void *p,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.detach_buffer_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":8
 * 
 * 
 * cdef inline bint is_UNWEIGHTED(object weights):             # <<<<<<<<<<<<<<
 *     return is_constant(weights, __UNWEIGHTED__)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_UNWEIGHTED(PyObject *__pyx_v_weights) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_UNWEIGHTED", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":9
 * 
 * cdef inline bint is_UNWEIGHTED(object weights):
 *     return is_constant(weights, __UNWEIGHTED__)             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint is_WEIGHTS_EMPTY(object weights):
 */
  __pyx_t_1 = __pyx_v_6mpi4py_3MPI___UNWEIGHTED__;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_constant(__pyx_v_weights, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(15, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":8
 * 
 * 
 * cdef inline bint is_UNWEIGHTED(object weights):             # <<<<<<<<<<<<<<
 *     return is_constant(weights, __UNWEIGHTED__)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.is_UNWEIGHTED", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":11
 *     return is_constant(weights, __UNWEIGHTED__)
 * 
 * cdef inline bint is_WEIGHTS_EMPTY(object weights):             # <<<<<<<<<<<<<<
 *     return is_constant(weights, __WEIGHTS_EMPTY__)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_WEIGHTS_EMPTY(PyObject *__pyx_v_weights) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_WEIGHTS_EMPTY", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":12
 * 
 * cdef inline bint is_WEIGHTS_EMPTY(object weights):
 *     return is_constant(weights, __WEIGHTS_EMPTY__)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_constant(__pyx_v_weights, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(15, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":11
 *     return is_constant(weights, __UNWEIGHTED__)
 * 
 * cdef inline bint is_WEIGHTS_EMPTY(object weights):             # <<<<<<<<<<<<<<
 *     return is_constant(weights, __WEIGHTS_EMPTY__)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.is_WEIGHTS_EMPTY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":15
 * 
 * 
 * cdef inline object asarray_weights(object weights, int nweight, int **iweight):             # <<<<<<<<<<<<<<
 *     if weights is None:
 *         iweight[0] = MPI_UNWEIGHTED
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_asarray_weights(PyObject *__pyx_v_weights, int __pyx_v_nweight, int **__pyx_v_iweight) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asarray_weights", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":16
 * 
 * cdef inline object asarray_weights(object weights, int nweight, int **iweight):
 *     if weights is None:             # <<<<<<<<<<<<<<
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 */
  __pyx_t_1 = (__pyx_v_weights == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":17
 * cdef inline object asarray_weights(object weights, int nweight, int **iweight):
 *     if weights is None:
 *         iweight[0] = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         return None
 *     if is_UNWEIGHTED(weights):
 */
    (__pyx_v_iweight[0]) = MPI_UNWEIGHTED;

    /* "src/mpi4py/MPI.src/commimpl.pxi":18
 *     if weights is None:
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None             # <<<<<<<<<<<<<<
 *     if is_UNWEIGHTED(weights):
 *         iweight[0] = MPI_UNWEIGHTED
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":16
 * 
 * cdef inline object asarray_weights(object weights, int nweight, int **iweight):
 *     if weights is None:             # <<<<<<<<<<<<<<
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 */
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":19
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 *     if is_UNWEIGHTED(weights):             # <<<<<<<<<<<<<<
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_UNWEIGHTED(__pyx_v_weights); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(15, 19, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":20
 *         return None
 *     if is_UNWEIGHTED(weights):
 *         iweight[0] = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         return None
 *     if is_WEIGHTS_EMPTY(weights):
 */
    (__pyx_v_iweight[0]) = MPI_UNWEIGHTED;

    /* "src/mpi4py/MPI.src/commimpl.pxi":21
 *     if is_UNWEIGHTED(weights):
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None             # <<<<<<<<<<<<<<
 *     if is_WEIGHTS_EMPTY(weights):
 *         if nweight > 0:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":19
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 *     if is_UNWEIGHTED(weights):             # <<<<<<<<<<<<<<
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 */
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":22
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 *     if is_WEIGHTS_EMPTY(weights):             # <<<<<<<<<<<<<<
 *         if nweight > 0:
 *             raise ValueError("empty weights but nonzero degree")
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_WEIGHTS_EMPTY(__pyx_v_weights); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(15, 22, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":23
 *         return None
 *     if is_WEIGHTS_EMPTY(weights):
 *         if nweight > 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("empty weights but nonzero degree")
 *         iweight[0] = MPI_WEIGHTS_EMPTY
 */
    __pyx_t_1 = (__pyx_v_nweight > 0);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/commimpl.pxi":24
 *     if is_WEIGHTS_EMPTY(weights):
 *         if nweight > 0:
 *             raise ValueError("empty weights but nonzero degree")             # <<<<<<<<<<<<<<
 *         iweight[0] = MPI_WEIGHTS_EMPTY
 *         return None
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(15, 24, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/commimpl.pxi":23
 *         return None
 *     if is_WEIGHTS_EMPTY(weights):
 *         if nweight > 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("empty weights but nonzero degree")
 *         iweight[0] = MPI_WEIGHTS_EMPTY
 */
    }

    /* "src/mpi4py/MPI.src/commimpl.pxi":25
 *         if nweight > 0:
 *             raise ValueError("empty weights but nonzero degree")
 *         iweight[0] = MPI_WEIGHTS_EMPTY             # <<<<<<<<<<<<<<
 *         return None
 *     return chkarray(weights, nweight, iweight)
 */
    (__pyx_v_iweight[0]) = MPI_WEIGHTS_EMPTY;

    /* "src/mpi4py/MPI.src/commimpl.pxi":26
 *             raise ValueError("empty weights but nonzero degree")
 *         iweight[0] = MPI_WEIGHTS_EMPTY
 *         return None             # <<<<<<<<<<<<<<
 *     return chkarray(weights, nweight, iweight)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":22
 *         iweight[0] = MPI_UNWEIGHTED
 *         return None
 *     if is_WEIGHTS_EMPTY(weights):             # <<<<<<<<<<<<<<
 *         if nweight > 0:
 *             raise ValueError("empty weights but nonzero degree")
 */
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":27
 *         iweight[0] = MPI_WEIGHTS_EMPTY
 *         return None
 *     return chkarray(weights, nweight, iweight)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_weights, __pyx_v_nweight, __pyx_v_iweight); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":15
 * 
 * 
 * cdef inline object asarray_weights(object weights, int nweight, int **iweight):             # <<<<<<<<<<<<<<
 *     if weights is None:
 *         iweight[0] = MPI_UNWEIGHTED
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.asarray_weights", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":31
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int comm_neighbors_count(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     int *incoming,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_comm_neighbors_count(MPI_Comm __pyx_v_comm, int *__pyx_v_incoming, int *__pyx_v_outgoing) {
  int __pyx_v_topo;
  int __pyx_v_size;
  int __pyx_v_ndims;
  int __pyx_v_rank;
  int __pyx_v_nneighbors;
  int __pyx_v_indegree;
  int __pyx_v_outdegree;
  int __pyx_v_weighted;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":36
 *     int *outgoing,
 * ) except -1:
 *     cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int size=0, ndims=0, rank=0, nneighbors=0
 *     cdef int indegree=0, outdegree=0, weighted=0
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/commimpl.pxi":37
 * ) except -1:
 *     cdef int topo = MPI_UNDEFINED
 *     cdef int size=0, ndims=0, rank=0, nneighbors=0             # <<<<<<<<<<<<<<
 *     cdef int indegree=0, outdegree=0, weighted=0
 *     CHKERR( MPI_Topo_test(comm, &topo) )
 */
  __pyx_v_size = 0;
  __pyx_v_ndims = 0;
  __pyx_v_rank = 0;
  __pyx_v_nneighbors = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":38
 *     cdef int topo = MPI_UNDEFINED
 *     cdef int size=0, ndims=0, rank=0, nneighbors=0
 *     cdef int indegree=0, outdegree=0, weighted=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Topo_test(comm, &topo) )
 *     if topo == MPI_UNDEFINED:                 # ~> unreachable
 */
  __pyx_v_indegree = 0;
  __pyx_v_outdegree = 0;
  __pyx_v_weighted = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":39
 *     cdef int size=0, ndims=0, rank=0, nneighbors=0
 *     cdef int indegree=0, outdegree=0, weighted=0
 *     CHKERR( MPI_Topo_test(comm, &topo) )             # <<<<<<<<<<<<<<
 *     if topo == MPI_UNDEFINED:                 # ~> unreachable
 *         CHKERR( MPI_Comm_size(comm, &size) )  # ~> unreachable
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_comm, (&__pyx_v_topo))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 39, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/commimpl.pxi":40
 *     cdef int indegree=0, outdegree=0, weighted=0
 *     CHKERR( MPI_Topo_test(comm, &topo) )
 *     if topo == MPI_UNDEFINED:                 # ~> unreachable             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(comm, &size) )  # ~> unreachable
 *         indegree = outdegree = size           # ~> unreachable
 */
  __pyx_t_2 = (__pyx_v_topo == MPI_UNDEFINED);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":41
 *     CHKERR( MPI_Topo_test(comm, &topo) )
 *     if topo == MPI_UNDEFINED:                 # ~> unreachable
 *         CHKERR( MPI_Comm_size(comm, &size) )  # ~> unreachable             # <<<<<<<<<<<<<<
 *         indegree = outdegree = size           # ~> unreachable
 *     elif topo == MPI_CART:
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 41, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":42
 *     if topo == MPI_UNDEFINED:                 # ~> unreachable
 *         CHKERR( MPI_Comm_size(comm, &size) )  # ~> unreachable
 *         indegree = outdegree = size           # ~> unreachable             # <<<<<<<<<<<<<<
 *     elif topo == MPI_CART:
 *         CHKERR( MPI_Cartdim_get(comm, &ndims) )
 */
    __pyx_v_indegree = __pyx_v_size;
    __pyx_v_outdegree = __pyx_v_size;

    /* "src/mpi4py/MPI.src/commimpl.pxi":40
 *     cdef int indegree=0, outdegree=0, weighted=0
 *     CHKERR( MPI_Topo_test(comm, &topo) )
 *     if topo == MPI_UNDEFINED:                 # ~> unreachable             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(comm, &size) )  # ~> unreachable
 *         indegree = outdegree = size           # ~> unreachable
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":43
 *         CHKERR( MPI_Comm_size(comm, &size) )  # ~> unreachable
 *         indegree = outdegree = size           # ~> unreachable
 *     elif topo == MPI_CART:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(comm, &ndims) )
 *         indegree = outdegree = <int>2*ndims
 */
  __pyx_t_2 = (__pyx_v_topo == MPI_CART);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":44
 *         indegree = outdegree = size           # ~> unreachable
 *     elif topo == MPI_CART:
 *         CHKERR( MPI_Cartdim_get(comm, &ndims) )             # <<<<<<<<<<<<<<
 *         indegree = outdegree = <int>2*ndims
 *     elif topo == MPI_GRAPH:
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(__pyx_v_comm, (&__pyx_v_ndims))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 44, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":45
 *     elif topo == MPI_CART:
 *         CHKERR( MPI_Cartdim_get(comm, &ndims) )
 *         indegree = outdegree = <int>2*ndims             # <<<<<<<<<<<<<<
 *     elif topo == MPI_GRAPH:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 */
    __pyx_t_1 = (((int)2) * __pyx_v_ndims);
    __pyx_v_indegree = __pyx_t_1;
    __pyx_v_outdegree = __pyx_t_1;

    /* "src/mpi4py/MPI.src/commimpl.pxi":43
 *         CHKERR( MPI_Comm_size(comm, &size) )  # ~> unreachable
 *         indegree = outdegree = size           # ~> unreachable
 *     elif topo == MPI_CART:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(comm, &ndims) )
 *         indegree = outdegree = <int>2*ndims
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":46
 *         CHKERR( MPI_Cartdim_get(comm, &ndims) )
 *         indegree = outdegree = <int>2*ndims
 *     elif topo == MPI_GRAPH:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         CHKERR( MPI_Graph_neighbors_count(
 */
  __pyx_t_2 = (__pyx_v_topo == MPI_GRAPH);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":47
 *         indegree = outdegree = <int>2*ndims
 *     elif topo == MPI_GRAPH:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_neighbors_count(
 *                 comm, rank, &nneighbors) )
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 47, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":48
 *     elif topo == MPI_GRAPH:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         CHKERR( MPI_Graph_neighbors_count(             # <<<<<<<<<<<<<<
 *                 comm, rank, &nneighbors) )
 *         indegree = outdegree = nneighbors
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors_count(__pyx_v_comm, __pyx_v_rank, (&__pyx_v_nneighbors))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 48, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":50
 *         CHKERR( MPI_Graph_neighbors_count(
 *                 comm, rank, &nneighbors) )
 *         indegree = outdegree = nneighbors             # <<<<<<<<<<<<<<
 *     elif topo == MPI_DIST_GRAPH:
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 */
    __pyx_v_indegree = __pyx_v_nneighbors;
    __pyx_v_outdegree = __pyx_v_nneighbors;

    /* "src/mpi4py/MPI.src/commimpl.pxi":46
 *         CHKERR( MPI_Cartdim_get(comm, &ndims) )
 *         indegree = outdegree = <int>2*ndims
 *     elif topo == MPI_GRAPH:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         CHKERR( MPI_Graph_neighbors_count(
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":51
 *                 comm, rank, &nneighbors) )
 *         indegree = outdegree = nneighbors
 *     elif topo == MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 comm, &indegree, &outdegree, &weighted) )
 */
  __pyx_t_2 = (__pyx_v_topo == MPI_DIST_GRAPH);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":52
 *         indegree = outdegree = nneighbors
 *     elif topo == MPI_DIST_GRAPH:
 *         CHKERR( MPI_Dist_graph_neighbors_count(             # <<<<<<<<<<<<<<
 *                 comm, &indegree, &outdegree, &weighted) )
 *     if incoming != NULL: incoming[0] = indegree
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_neighbors_count(__pyx_v_comm, (&__pyx_v_indegree), (&__pyx_v_outdegree), (&__pyx_v_weighted))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(15, 52, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":51
 *                 comm, rank, &nneighbors) )
 *         indegree = outdegree = nneighbors
 *     elif topo == MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 comm, &indegree, &outdegree, &weighted) )
 */
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/commimpl.pxi":54
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 comm, &indegree, &outdegree, &weighted) )
 *     if incoming != NULL: incoming[0] = indegree             # <<<<<<<<<<<<<<
 *     if outgoing != NULL: outgoing[0] = outdegree
 *     return 0
 */
  __pyx_t_2 = (__pyx_v_incoming != NULL);
  if (__pyx_t_2) {
    (__pyx_v_incoming[0]) = __pyx_v_indegree;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":55
 *                 comm, &indegree, &outdegree, &weighted) )
 *     if incoming != NULL: incoming[0] = indegree
 *     if outgoing != NULL: outgoing[0] = outdegree             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_2 = (__pyx_v_outgoing != NULL);
  if (__pyx_t_2) {
    (__pyx_v_outgoing[0]) = __pyx_v_outdegree;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":56
 *     if incoming != NULL: incoming[0] = indegree
 *     if outgoing != NULL: outgoing[0] = outdegree
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":31
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int comm_neighbors_count(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     int *incoming,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.comm_neighbors_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":65
 * 
 * 
 * cdef inline int commlock_free_cb(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 * ) except MPI_ERR_UNKNOWN with gil:
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_commlock_free_cb(MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("commlock_free_cb", 0);

  /* "src/mpi4py/MPI.src/commimpl.pxi":68
 *     MPI_Comm comm,
 * ) except MPI_ERR_UNKNOWN with gil:
 *     cdef object key = <Py_uintptr_t>comm             # <<<<<<<<<<<<<<
 *     with commlock_lock:
 *         if key in commlock_registry:
 */
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_comm)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":69
 * ) except MPI_ERR_UNKNOWN with gil:
 *     cdef object key = <Py_uintptr_t>comm
 *     with commlock_lock:             # <<<<<<<<<<<<<<
 *         if key in commlock_registry:
 *             del commlock_registry[key]
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 69, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 69, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/commimpl.pxi":70
 *     cdef object key = <Py_uintptr_t>comm
 *     with commlock_lock:
 *         if key in commlock_registry:             # <<<<<<<<<<<<<<
 *             del commlock_registry[key]
 *     return MPI_SUCCESS
 */
          if (unlikely(__pyx_v_6mpi4py_3MPI_commlock_registry == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
            __PYX_ERR(15, 70, __pyx_L7_error)
          }
          __pyx_t_9 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_6mpi4py_3MPI_commlock_registry, Py_EQ)); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(15, 70, __pyx_L7_error)
          if (__pyx_t_9) {

            /* "src/mpi4py/MPI.src/commimpl.pxi":71
 *     with commlock_lock:
 *         if key in commlock_registry:
 *             del commlock_registry[key]             # <<<<<<<<<<<<<<
 *     return MPI_SUCCESS
 * 
 */
            if (unlikely(__pyx_v_6mpi4py_3MPI_commlock_registry == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(15, 71, __pyx_L7_error)
            }
            if (unlikely((PyDict_DelItem(__pyx_v_6mpi4py_3MPI_commlock_registry, __pyx_v_key) < 0))) __PYX_ERR(15, 71, __pyx_L7_error)

            /* "src/mpi4py/MPI.src/commimpl.pxi":70
 *     cdef object key = <Py_uintptr_t>comm
 *     with commlock_lock:
 *         if key in commlock_registry:             # <<<<<<<<<<<<<<
 *             del commlock_registry[key]
 *     return MPI_SUCCESS
 */
          }

          /* "src/mpi4py/MPI.src/commimpl.pxi":69
 * ) except MPI_ERR_UNKNOWN with gil:
 *     cdef object key = <Py_uintptr_t>comm
 *     with commlock_lock:             # <<<<<<<<<<<<<<
 *         if key in commlock_registry:
 *             del commlock_registry[key]
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.commlock_free_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(15, 69, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 69, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(15, 69, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (__pyx_t_9 < 0) __PYX_ERR(15, 69, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_9);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(15, 69, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 69, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":72
 *         if key in commlock_registry:
 *             del commlock_registry[key]
 *     return MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = MPI_SUCCESS;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":65
 * 
 * 
 * cdef inline int commlock_free_cb(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 * ) except MPI_ERR_UNKNOWN with gil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.commlock_free_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = MPI_ERR_UNKNOWN;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":77
 * @cython.linetrace(False)
 * @cython.callspec("MPIAPI")
 * cdef int commlock_free_fn(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     int keyval,
 */

static int MPIAPI __pyx_f_6mpi4py_3MPI_commlock_free_fn(MPI_Comm __pyx_v_comm, int __pyx_v_keyval, void *__pyx_v_attrval, void *__pyx_v_xstate) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/commimpl.pxi":83
 *     void *xstate,
 * ) noexcept nogil:
 *     <void> keyval   # unused             # <<<<<<<<<<<<<<
 *     <void> attrval  # unused
 *     <void> xstate   # unused
 */
  ((void)__pyx_v_keyval);

  /* "src/mpi4py/MPI.src/commimpl.pxi":84
 * ) noexcept nogil:
 *     <void> keyval   # unused
 *     <void> attrval  # unused             # <<<<<<<<<<<<<<
 *     <void> xstate   # unused
 *     if comm == MPI_COMM_SELF:  <void>MPI_Comm_free_keyval(&commlock_keyval)
 */
  ((void)__pyx_v_attrval);

  /* "src/mpi4py/MPI.src/commimpl.pxi":85
 *     <void> keyval   # unused
 *     <void> attrval  # unused
 *     <void> xstate   # unused             # <<<<<<<<<<<<<<
 *     if comm == MPI_COMM_SELF:  <void>MPI_Comm_free_keyval(&commlock_keyval)
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 */
  ((void)__pyx_v_xstate);

  /* "src/mpi4py/MPI.src/commimpl.pxi":86
 *     <void> attrval  # unused
 *     <void> xstate   # unused
 *     if comm == MPI_COMM_SELF:  <void>MPI_Comm_free_keyval(&commlock_keyval)             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_SELF);
  if (__pyx_t_1) {
    ((void)MPI_Comm_free_keyval((&__pyx_v_6mpi4py_3MPI_commlock_keyval)));
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":87
 *     <void> xstate   # unused
 *     if comm == MPI_COMM_SELF:  <void>MPI_Comm_free_keyval(&commlock_keyval)
 *     if not Py_IsInitialized(): return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return commlock_free_cb(comm)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":88
 *     if comm == MPI_COMM_SELF:  <void>MPI_Comm_free_keyval(&commlock_keyval)
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     return commlock_free_cb(comm)
 * 
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_SUCCESS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":89
 *     if not Py_IsInitialized(): return MPI_SUCCESS
 *     if not py_module_alive():  return MPI_SUCCESS
 *     return commlock_free_cb(comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_commlock_free_cb(__pyx_v_comm); if (unlikely(__pyx_t_2 == ((int)MPI_ERR_UNKNOWN))) __PYX_ERR(15, 89, __pyx_L1_error)
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":77
 * @cython.linetrace(False)
 * @cython.callspec("MPIAPI")
 * cdef int commlock_free_fn(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     int keyval,
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_WriteUnraisable("mpi4py.MPI.commlock_free_fn", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":92
 * 
 * 
 * cdef inline dict commlock_table(MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int found = 0
 *     cdef void *attrval = NULL
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_commlock_table(MPI_Comm __pyx_v_comm) {
  int __pyx_v_found;
  void *__pyx_v_attrval;
  PyObject *__pyx_v_table = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  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;
  __Pyx_RefNannySetupContext("commlock_table", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":93
 * 
 * cdef inline dict commlock_table(MPI_Comm comm):
 *     cdef int found = 0             # <<<<<<<<<<<<<<
 *     cdef void *attrval = NULL
 *     cdef dict table
 */
  __pyx_v_found = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":94
 * cdef inline dict commlock_table(MPI_Comm comm):
 *     cdef int found = 0
 *     cdef void *attrval = NULL             # <<<<<<<<<<<<<<
 *     cdef dict table
 *     if commlock_keyval == MPI_KEYVAL_INVALID:
 */
  __pyx_v_attrval = NULL;

  /* "src/mpi4py/MPI.src/commimpl.pxi":96
 *     cdef void *attrval = NULL
 *     cdef dict table
 *     if commlock_keyval == MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_create_keyval(
 *             MPI_COMM_NULL_COPY_FN,
 */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_commlock_keyval == MPI_KEYVAL_INVALID);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":97
 *     cdef dict table
 *     if commlock_keyval == MPI_KEYVAL_INVALID:
 *         CHKERR( MPI_Comm_create_keyval(             # <<<<<<<<<<<<<<
 *             MPI_COMM_NULL_COPY_FN,
 *             commlock_free_fn,
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN, __pyx_f_6mpi4py_3MPI_commlock_free_fn, (&__pyx_v_6mpi4py_3MPI_commlock_keyval), NULL)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 97, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":101
 *             commlock_free_fn,
 *             &commlock_keyval, NULL) )
 *         table = {}             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_set_attr(
 *             MPI_COMM_SELF, commlock_keyval, <void*> table) )
 */
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_table = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":102
 *             &commlock_keyval, NULL) )
 *         table = {}
 *         CHKERR( MPI_Comm_set_attr(             # <<<<<<<<<<<<<<
 *             MPI_COMM_SELF, commlock_keyval, <void*> table) )
 *         commlock_registry[<Py_uintptr_t>MPI_COMM_SELF] = table
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_attr(MPI_COMM_SELF, __pyx_v_6mpi4py_3MPI_commlock_keyval, ((void *)__pyx_v_table))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 102, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":104
 *         CHKERR( MPI_Comm_set_attr(
 *             MPI_COMM_SELF, commlock_keyval, <void*> table) )
 *         commlock_registry[<Py_uintptr_t>MPI_COMM_SELF] = table             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_get_attr(
 *         comm, commlock_keyval, &attrval, &found) )
 */
    if (unlikely(__pyx_v_6mpi4py_3MPI_commlock_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(15, 104, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)MPI_COMM_SELF)); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_commlock_registry, __pyx_t_3, __pyx_v_table) < 0))) __PYX_ERR(15, 104, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":96
 *     cdef void *attrval = NULL
 *     cdef dict table
 *     if commlock_keyval == MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_create_keyval(
 *             MPI_COMM_NULL_COPY_FN,
 */
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":105
 *             MPI_COMM_SELF, commlock_keyval, <void*> table) )
 *         commlock_registry[<Py_uintptr_t>MPI_COMM_SELF] = table
 *     CHKERR( MPI_Comm_get_attr(             # <<<<<<<<<<<<<<
 *         comm, commlock_keyval, &attrval, &found) )
 *     if not found:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_attr(__pyx_v_comm, __pyx_v_6mpi4py_3MPI_commlock_keyval, (&__pyx_v_attrval), (&__pyx_v_found))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 105, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/commimpl.pxi":107
 *     CHKERR( MPI_Comm_get_attr(
 *         comm, commlock_keyval, &attrval, &found) )
 *     if not found:             # <<<<<<<<<<<<<<
 *         table = {}
 *         CHKERR( MPI_Comm_set_attr(
 */
  __pyx_t_1 = (!(__pyx_v_found != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":108
 *         comm, commlock_keyval, &attrval, &found) )
 *     if not found:
 *         table = {}             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_set_attr(
 *             comm, commlock_keyval, <void*> table) )
 */
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_table, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":109
 *     if not found:
 *         table = {}
 *         CHKERR( MPI_Comm_set_attr(             # <<<<<<<<<<<<<<
 *             comm, commlock_keyval, <void*> table) )
 *         commlock_registry[<Py_uintptr_t>comm] = table
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_attr(__pyx_v_comm, __pyx_v_6mpi4py_3MPI_commlock_keyval, ((void *)__pyx_v_table))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(15, 109, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/commimpl.pxi":111
 *         CHKERR( MPI_Comm_set_attr(
 *             comm, commlock_keyval, <void*> table) )
 *         commlock_registry[<Py_uintptr_t>comm] = table             # <<<<<<<<<<<<<<
 *     elif PYPY:
 *         table = commlock_registry[<Py_uintptr_t>comm]  # ~> pypy
 */
    if (unlikely(__pyx_v_6mpi4py_3MPI_commlock_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(15, 111, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_comm)); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_commlock_registry, __pyx_t_3, __pyx_v_table) < 0))) __PYX_ERR(15, 111, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":107
 *     CHKERR( MPI_Comm_get_attr(
 *         comm, commlock_keyval, &attrval, &found) )
 *     if not found:             # <<<<<<<<<<<<<<
 *         table = {}
 *         CHKERR( MPI_Comm_set_attr(
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":112
 *             comm, commlock_keyval, <void*> table) )
 *         commlock_registry[<Py_uintptr_t>comm] = table
 *     elif PYPY:             # <<<<<<<<<<<<<<
 *         table = commlock_registry[<Py_uintptr_t>comm]  # ~> pypy
 *     else:
 */
  if (PyMPI_RUNTIME_PYPY) {

    /* "src/mpi4py/MPI.src/commimpl.pxi":113
 *         commlock_registry[<Py_uintptr_t>comm] = table
 *     elif PYPY:
 *         table = commlock_registry[<Py_uintptr_t>comm]  # ~> pypy             # <<<<<<<<<<<<<<
 *     else:
 *         table = <dict> attrval
 */
    if (unlikely(__pyx_v_6mpi4py_3MPI_commlock_registry == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(15, 113, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)__pyx_v_comm)); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_commlock_registry, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!(likely(PyDict_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_4))) __PYX_ERR(15, 113, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_table, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/commimpl.pxi":112
 *             comm, commlock_keyval, <void*> table) )
 *         commlock_registry[<Py_uintptr_t>comm] = table
 *     elif PYPY:             # <<<<<<<<<<<<<<
 *         table = commlock_registry[<Py_uintptr_t>comm]  # ~> pypy
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":115
 *         table = commlock_registry[<Py_uintptr_t>comm]  # ~> pypy
 *     else:
 *         table = <dict> attrval             # <<<<<<<<<<<<<<
 *     return table
 * 
 */
  /*else*/ {
    __pyx_t_4 = ((PyObject *)__pyx_v_attrval);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_table, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/commimpl.pxi":116
 *     else:
 *         table = <dict> attrval
 *     return table             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_table);
  __pyx_r = __pyx_v_table;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":92
 * 
 * 
 * cdef inline dict commlock_table(MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int found = 0
 *     cdef void *attrval = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.commlock_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_table);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":119
 * 
 * 
 * cdef inline object PyMPI_Lock(MPI_Comm comm, object key):             # <<<<<<<<<<<<<<
 *     cdef dict table
 *     cdef object lock
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Lock(MPI_Comm __pyx_v_comm, PyObject *__pyx_v_key) {
  PyObject *__pyx_v_table = 0;
  PyObject *__pyx_v_lock = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_t_16;
  int __pyx_t_17;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_Lock", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":122
 *     cdef dict table
 *     cdef object lock
 *     with commlock_lock:             # <<<<<<<<<<<<<<
 *         table = commlock_table(comm)
 *         try:
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 122, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 122, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/commimpl.pxi":123
 *     cdef object lock
 *     with commlock_lock:
 *         table = commlock_table(comm)             # <<<<<<<<<<<<<<
 *         try:
 *             lock = table[key]
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_commlock_table(__pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 123, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_v_table = ((PyObject*)__pyx_t_2);
          __pyx_t_2 = 0;

          /* "src/mpi4py/MPI.src/commimpl.pxi":124
 *     with commlock_lock:
 *         table = commlock_table(comm)
 *         try:             # <<<<<<<<<<<<<<
 *             lock = table[key]
 *         except KeyError:
 */
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_9);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            /*try:*/ {

              /* "src/mpi4py/MPI.src/commimpl.pxi":125
 *         table = commlock_table(comm)
 *         try:
 *             lock = table[key]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             lock = Lock()
 */
              if (unlikely(__pyx_v_table == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(15, 125, __pyx_L13_error)
              }
              __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_table, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 125, __pyx_L13_error)
              __Pyx_GOTREF(__pyx_t_2);
              __pyx_v_lock = __pyx_t_2;
              __pyx_t_2 = 0;

              /* "src/mpi4py/MPI.src/commimpl.pxi":124
 *     with commlock_lock:
 *         table = commlock_table(comm)
 *         try:             # <<<<<<<<<<<<<<
 *             lock = table[key]
 *         except KeyError:
 */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L18_try_end;
            __pyx_L13_error:;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

            /* "src/mpi4py/MPI.src/commimpl.pxi":126
 *         try:
 *             lock = table[key]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             lock = Lock()
 *             table[key] = lock
 */
            __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
            if (__pyx_t_12) {
              __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(15, 126, __pyx_L15_except_error)
              __Pyx_XGOTREF(__pyx_t_2);
              __Pyx_XGOTREF(__pyx_t_3);
              __Pyx_XGOTREF(__pyx_t_4);

              /* "src/mpi4py/MPI.src/commimpl.pxi":127
 *             lock = table[key]
 *         except KeyError:
 *             lock = Lock()             # <<<<<<<<<<<<<<
 *             table[key] = lock
 *         return lock
 */
              __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_Lock);
              __pyx_t_14 = __pyx_v_6mpi4py_3MPI_Lock; __pyx_t_15 = NULL;
              __pyx_t_5 = 0;
              #if CYTHON_UNPACK_METHODS
              if (unlikely(PyMethod_Check(__pyx_t_14))) {
                __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14);
                if (likely(__pyx_t_15)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
                  __Pyx_INCREF(__pyx_t_15);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_14, function);
                  __pyx_t_5 = 1;
                }
              }
              #endif
              {
                PyObject *__pyx_callargs[2] = {__pyx_t_15, NULL};
                __pyx_t_13 = __Pyx_PyObject_FastCall(__pyx_t_14, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
                __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
                if (unlikely(!__pyx_t_13)) __PYX_ERR(15, 127, __pyx_L15_except_error)
                __Pyx_GOTREF(__pyx_t_13);
                __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
              }
              __Pyx_XDECREF_SET(__pyx_v_lock, __pyx_t_13);
              __pyx_t_13 = 0;

              /* "src/mpi4py/MPI.src/commimpl.pxi":128
 *         except KeyError:
 *             lock = Lock()
 *             table[key] = lock             # <<<<<<<<<<<<<<
 *         return lock
 * 
 */
              if (unlikely(__pyx_v_table == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(15, 128, __pyx_L15_except_error)
              }
              if (unlikely((PyDict_SetItem(__pyx_v_table, __pyx_v_key, __pyx_v_lock) < 0))) __PYX_ERR(15, 128, __pyx_L15_except_error)
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              goto __pyx_L14_exception_handled;
            }
            goto __pyx_L15_except_error;

            /* "src/mpi4py/MPI.src/commimpl.pxi":124
 *     with commlock_lock:
 *         table = commlock_table(comm)
 *         try:             # <<<<<<<<<<<<<<
 *             lock = table[key]
 *         except KeyError:
 */
            __pyx_L15_except_error:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L7_error;
            __pyx_L14_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L18_try_end:;
          }

          /* "src/mpi4py/MPI.src/commimpl.pxi":129
 *             lock = Lock()
 *             table[key] = lock
 *         return lock             # <<<<<<<<<<<<<<
 * 
 * 
 */
          __Pyx_XDECREF(__pyx_r);
          __Pyx_INCREF(__pyx_v_lock);
          __pyx_r = __pyx_v_lock;
          goto __pyx_L11_try_return;

          /* "src/mpi4py/MPI.src/commimpl.pxi":122
 *     cdef dict table
 *     cdef object lock
 *     with commlock_lock:             # <<<<<<<<<<<<<<
 *         table = commlock_table(comm)
 *         try:
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(15, 122, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_2);
          __pyx_t_13 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(15, 122, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(15, 122, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (__pyx_t_16 < 0) __PYX_ERR(15, 122, __pyx_L9_except_error)
          __pyx_t_17 = (!__pyx_t_16);
          if (unlikely(__pyx_t_17)) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_2);
            __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; 
            __PYX_ERR(15, 122, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 122, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_8 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 122, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __pyx_r = __pyx_t_8;
        __pyx_t_8 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L24;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L24:;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":119
 * 
 * 
 * cdef inline object PyMPI_Lock(MPI_Comm comm, object key):             # <<<<<<<<<<<<<<
 *     cdef dict table
 *     cdef object lock
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_table);
  __Pyx_XDECREF(__pyx_v_lock);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":132
 * 
 * 
 * cdef inline object PyMPI_Lock_table(MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     with commlock_lock:
 *         return commlock_table(comm)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_Lock_table(MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_Lock_table", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":133
 * 
 * cdef inline object PyMPI_Lock_table(MPI_Comm comm):
 *     with commlock_lock:             # <<<<<<<<<<<<<<
 *         return commlock_table(comm)
 * 
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 133, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 133, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/commimpl.pxi":134
 * cdef inline object PyMPI_Lock_table(MPI_Comm comm):
 *     with commlock_lock:
 *         return commlock_table(comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
          __Pyx_XDECREF(__pyx_r);
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_commlock_table(__pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 134, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_r = __pyx_t_2;
          __pyx_t_2 = 0;
          goto __pyx_L11_try_return;

          /* "src/mpi4py/MPI.src/commimpl.pxi":133
 * 
 * cdef inline object PyMPI_Lock_table(MPI_Comm comm):
 *     with commlock_lock:             # <<<<<<<<<<<<<<
 *         return commlock_table(comm)
 * 
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Lock_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(15, 133, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(15, 133, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 133, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_11 < 0) __PYX_ERR(15, 133, __pyx_L9_except_error)
          __pyx_t_12 = (!__pyx_t_11);
          if (unlikely(__pyx_t_12)) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(15, 133, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(15, 133, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_8 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(15, 133, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __pyx_r = __pyx_t_8;
        __pyx_t_8 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/commimpl.pxi":132
 * 
 * 
 * cdef inline object PyMPI_Lock_table(MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     with commlock_lock:
 *         return commlock_table(comm)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Lock_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":137
 * 
 * 
 * def _comm_lock(Comm comm: Comm, object key: Hashable | None = None) -> Lock:             # <<<<<<<<<<<<<<
 *     """
 *     Create/get communicator lock.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3_comm_lock(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2_comm_lock, "_comm_lock(comm: Comm, key: Hashable | None = None) -> Lock\n\n    Create/get communicator lock.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3_comm_lock = {"_comm_lock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3_comm_lock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2_comm_lock};
static PyObject *__pyx_pw_6mpi4py_3MPI_3_comm_lock(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_v_key = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_comm_lock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,&__pyx_n_s_key,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 137, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 137, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_comm_lock") < 0)) __PYX_ERR(15, 137, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    __pyx_v_key = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_comm_lock", 0, 1, 2, __pyx_nargs); __PYX_ERR(15, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._comm_lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(15, 137, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2_comm_lock(__pyx_self, __pyx_v_comm, __pyx_v_key);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2_comm_lock(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm, PyObject *__pyx_v_key) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_comm_lock", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":141
 *     Create/get communicator lock.
 *     """
 *     return PyMPI_Lock(comm.ob_mpi, key)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm->ob_mpi, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":137
 * 
 * 
 * def _comm_lock(Comm comm: Comm, object key: Hashable | None = None) -> Lock:             # <<<<<<<<<<<<<<
 *     """
 *     Create/get communicator lock.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._comm_lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/commimpl.pxi":144
 * 
 * 
 * def _comm_lock_table(Comm comm: Comm) -> dict[Hashable, Lock]:             # <<<<<<<<<<<<<<
 *     """
 *     Internal communicator lock table.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5_comm_lock_table(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4_comm_lock_table, "_comm_lock_table(comm: Comm) -> dict[Hashable, Lock]\n\n    Internal communicator lock table.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5_comm_lock_table = {"_comm_lock_table", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5_comm_lock_table, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4_comm_lock_table};
static PyObject *__pyx_pw_6mpi4py_3MPI_5_comm_lock_table(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_comm_lock_table (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 144, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_comm_lock_table") < 0)) __PYX_ERR(15, 144, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_comm_lock_table", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._comm_lock_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(15, 144, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4_comm_lock_table(__pyx_self, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4_comm_lock_table(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPICommObject *__pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_comm_lock_table", 1);

  /* "src/mpi4py/MPI.src/commimpl.pxi":148
 *     Internal communicator lock table.
 *     """
 *     return PyMPI_Lock_table(comm.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock_table(__pyx_v_comm->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":144
 * 
 * 
 * def _comm_lock_table(Comm comm: Comm) -> dict[Hashable, Lock]:             # <<<<<<<<<<<<<<
 *     """
 *     Internal communicator lock table.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._comm_lock_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/winimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int win_get_base(MPI_Win win, void **base) except -1:             # <<<<<<<<<<<<<<
 *     cdef int flag = 0
 *     cdef void *attr = NULL
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_get_base(MPI_Win __pyx_v_win, void **__pyx_v_base) {
  int __pyx_v_flag;
  void *__pyx_v_attr;
  int __pyx_r;
  int __pyx_t_1;
  void *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":4
 * 
 * cdef inline int win_get_base(MPI_Win win, void **base) except -1:
 *     cdef int flag = 0             # <<<<<<<<<<<<<<
 *     cdef void *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_BASE, &attr, &flag) )
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":5
 * cdef inline int win_get_base(MPI_Win win, void **base) except -1:
 *     cdef int flag = 0
 *     cdef void *attr = NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_BASE, &attr, &flag) )
 *     base[0] = attr if flag and attr != NULL else NULL
 */
  __pyx_v_attr = NULL;

  /* "src/mpi4py/MPI.src/winimpl.pxi":6
 *     cdef int flag = 0
 *     cdef void *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_BASE, &attr, &flag) )             # <<<<<<<<<<<<<<
 *     base[0] = attr if flag and attr != NULL else NULL
 *     return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, MPI_WIN_BASE, (&__pyx_v_attr), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 6, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/winimpl.pxi":7
 *     cdef void *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_BASE, &attr, &flag) )
 *     base[0] = attr if flag and attr != NULL else NULL             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_4 = (__pyx_v_flag != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_attr != NULL);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L3_bool_binop_done:;
  if (__pyx_t_3) {
    __pyx_t_2 = __pyx_v_attr;
  } else {
    __pyx_t_2 = NULL;
  }
  (__pyx_v_base[0]) = __pyx_t_2;

  /* "src/mpi4py/MPI.src/winimpl.pxi":8
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_BASE, &attr, &flag) )
 *     base[0] = attr if flag and attr != NULL else NULL
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int win_get_size(MPI_Win win, MPI_Aint *size) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int win_get_base(MPI_Win win, void **base) except -1:             # <<<<<<<<<<<<<<
 *     cdef int flag = 0
 *     cdef void *attr = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.win_get_base", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/winimpl.pxi":10
 *     return 0
 * 
 * cdef inline int win_get_size(MPI_Win win, MPI_Aint *size) except -1:             # <<<<<<<<<<<<<<
 *     cdef int flag = 0
 *     cdef MPI_Aint *attr = NULL
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_get_size(MPI_Win __pyx_v_win, MPI_Aint *__pyx_v_size) {
  int __pyx_v_flag;
  MPI_Aint *__pyx_v_attr;
  int __pyx_r;
  int __pyx_t_1;
  MPI_Aint __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":11
 * 
 * cdef inline int win_get_size(MPI_Win win, MPI_Aint *size) except -1:
 *     cdef int flag = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_SIZE, &attr, &flag) )
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":12
 * cdef inline int win_get_size(MPI_Win win, MPI_Aint *size) except -1:
 *     cdef int flag = 0
 *     cdef MPI_Aint *attr = NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_SIZE, &attr, &flag) )
 *     size[0] = attr[0] if flag and attr != NULL else 0
 */
  __pyx_v_attr = NULL;

  /* "src/mpi4py/MPI.src/winimpl.pxi":13
 *     cdef int flag = 0
 *     cdef MPI_Aint *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_SIZE, &attr, &flag) )             # <<<<<<<<<<<<<<
 *     size[0] = attr[0] if flag and attr != NULL else 0
 *     return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, MPI_WIN_SIZE, (&__pyx_v_attr), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 13, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/winimpl.pxi":14
 *     cdef MPI_Aint *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_SIZE, &attr, &flag) )
 *     size[0] = attr[0] if flag and attr != NULL else 0             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_4 = (__pyx_v_flag != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_attr != NULL);
  __pyx_t_3 = __pyx_t_4;
  __pyx_L3_bool_binop_done:;
  if (__pyx_t_3) {
    __pyx_t_2 = (__pyx_v_attr[0]);
  } else {
    __pyx_t_2 = 0;
  }
  (__pyx_v_size[0]) = __pyx_t_2;

  /* "src/mpi4py/MPI.src/winimpl.pxi":15
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_SIZE, &attr, &flag) )
 *     size[0] = attr[0] if flag and attr != NULL else 0
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline int win_get_unit(MPI_Win win, int *disp_unit) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":10
 *     return 0
 * 
 * cdef inline int win_get_size(MPI_Win win, MPI_Aint *size) except -1:             # <<<<<<<<<<<<<<
 *     cdef int flag = 0
 *     cdef MPI_Aint *attr = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.win_get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/winimpl.pxi":17
 *     return 0
 * 
 * cdef inline int win_get_unit(MPI_Win win, int *disp_unit) except -1:             # <<<<<<<<<<<<<<
 *     cdef int flag  = 0
 *     cdef int *attr = NULL
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_win_get_unit(MPI_Win __pyx_v_win, int *__pyx_v_disp_unit) {
  int __pyx_v_flag;
  int *__pyx_v_attr;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":18
 * 
 * cdef inline int win_get_unit(MPI_Win win, int *disp_unit) except -1:
 *     cdef int flag  = 0             # <<<<<<<<<<<<<<
 *     cdef int *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_DISP_UNIT, &attr, &flag) )
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":19
 * cdef inline int win_get_unit(MPI_Win win, int *disp_unit) except -1:
 *     cdef int flag  = 0
 *     cdef int *attr = NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_DISP_UNIT, &attr, &flag) )
 *     disp_unit[0] = attr[0] if flag and attr != NULL else 1
 */
  __pyx_v_attr = NULL;

  /* "src/mpi4py/MPI.src/winimpl.pxi":20
 *     cdef int flag  = 0
 *     cdef int *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_DISP_UNIT, &attr, &flag) )             # <<<<<<<<<<<<<<
 *     disp_unit[0] = attr[0] if flag and attr != NULL else 1
 *     return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_win, MPI_WIN_DISP_UNIT, (&__pyx_v_attr), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(16, 20, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/winimpl.pxi":21
 *     cdef int *attr = NULL
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_DISP_UNIT, &attr, &flag) )
 *     disp_unit[0] = attr[0] if flag and attr != NULL else 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_3 = (__pyx_v_flag != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_attr != NULL);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L3_bool_binop_done:;
  if (__pyx_t_2) {
    __pyx_t_1 = (__pyx_v_attr[0]);
  } else {
    __pyx_t_1 = 1;
  }
  (__pyx_v_disp_unit[0]) = __pyx_t_1;

  /* "src/mpi4py/MPI.src/winimpl.pxi":22
 *     CHKERR( MPI_Win_get_attr(win, MPI_WIN_DISP_UNIT, &attr, &flag) )
 *     disp_unit[0] = attr[0] if flag and attr != NULL else 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/winimpl.pxi":17
 *     return 0
 * 
 * cdef inline int win_get_unit(MPI_Win win, int *disp_unit) except -1:             # <<<<<<<<<<<<<<
 *     cdef int flag  = 0
 *     cdef int *attr = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.win_get_unit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":16
 *     cdef object extent_fn
 * 
 *     def __cinit__(self, read_fn, write_fn, extent_fn):             # <<<<<<<<<<<<<<
 *         self.read_fn   = read_fn
 *         self.write_fn  = write_fn
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10_p_datarep_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10_p_datarep_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_read_fn = 0;
  PyObject *__pyx_v_write_fn = 0;
  PyObject *__pyx_v_extent_fn = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_read_fn,&__pyx_n_s_write_fn,&__pyx_n_s_extent_fn,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_read_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 16, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_write_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 16, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(17, 16, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_extent_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 16, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(17, 16, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(17, 16, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
    }
    __pyx_v_read_fn = values[0];
    __pyx_v_write_fn = values[1];
    __pyx_v_extent_fn = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(17, 16, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._p_datarep.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10_p_datarep___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_datarep *)__pyx_v_self), __pyx_v_read_fn, __pyx_v_write_fn, __pyx_v_extent_fn);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10_p_datarep___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, PyObject *__pyx_v_read_fn, PyObject *__pyx_v_write_fn, PyObject *__pyx_v_extent_fn) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":17
 * 
 *     def __cinit__(self, read_fn, write_fn, extent_fn):
 *         self.read_fn   = read_fn             # <<<<<<<<<<<<<<
 *         self.write_fn  = write_fn
 *         self.extent_fn = extent_fn
 */
  __Pyx_INCREF(__pyx_v_read_fn);
  __Pyx_GIVEREF(__pyx_v_read_fn);
  __Pyx_GOTREF(__pyx_v_self->read_fn);
  __Pyx_DECREF(__pyx_v_self->read_fn);
  __pyx_v_self->read_fn = __pyx_v_read_fn;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":18
 *     def __cinit__(self, read_fn, write_fn, extent_fn):
 *         self.read_fn   = read_fn
 *         self.write_fn  = write_fn             # <<<<<<<<<<<<<<
 *         self.extent_fn = extent_fn
 * 
 */
  __Pyx_INCREF(__pyx_v_write_fn);
  __Pyx_GIVEREF(__pyx_v_write_fn);
  __Pyx_GOTREF(__pyx_v_self->write_fn);
  __Pyx_DECREF(__pyx_v_self->write_fn);
  __pyx_v_self->write_fn = __pyx_v_write_fn;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":19
 *         self.read_fn   = read_fn
 *         self.write_fn  = write_fn
 *         self.extent_fn = extent_fn             # <<<<<<<<<<<<<<
 * 
 *     cdef int read(
 */
  __Pyx_INCREF(__pyx_v_extent_fn);
  __Pyx_GIVEREF(__pyx_v_extent_fn);
  __Pyx_GOTREF(__pyx_v_self->extent_fn);
  __Pyx_DECREF(__pyx_v_self->extent_fn);
  __pyx_v_self->extent_fn = __pyx_v_extent_fn;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":16
 *     cdef object extent_fn
 * 
 *     def __cinit__(self, read_fn, write_fn, extent_fn):             # <<<<<<<<<<<<<<
 *         self.read_fn   = read_fn
 *         self.write_fn  = write_fn
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":21
 *         self.extent_fn = extent_fn
 * 
 *     cdef int read(             # <<<<<<<<<<<<<<
 *         self,
 *         void *userbuf,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_datarep_read(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  MPI_Count __pyx_v_ulen;
  MPI_Count __pyx_v_flen;
  PyObject *__pyx_v_ubuf = 0;
  PyObject *__pyx_v_fbuf = 0;
  struct PyMPIDatatypeObject *__pyx_v_dtype = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read", 1);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":29
 *         MPI_Offset position,
 *     ) except -1:
 *         cdef MPI_Count lb=0, extent=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )
 *         cdef MPI_Count ulen = (position + count) * extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":30
 *     ) except -1:
 *         cdef MPI_Count lb=0, extent=0
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ulen = (position + count) * extent
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_datatype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 30, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/drepimpl.pxi":31
 *         cdef MPI_Count lb=0, extent=0
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )
 *         cdef MPI_Count ulen = (position + count) * extent             # <<<<<<<<<<<<<<
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 */
  __pyx_v_ulen = ((__pyx_v_position + __pyx_v_count) * __pyx_v_extent);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":32
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )
 *         cdef MPI_Count ulen = (position + count) * extent
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX             # <<<<<<<<<<<<<<
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 *         cdef object fbuf = mpibuf(filebuf, flen)
 */
  __pyx_v_flen = ((MPI_Count)PY_SSIZE_T_MAX);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":33
 *         cdef MPI_Count ulen = (position + count) * extent
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 *         cdef object ubuf = mpibuf(userbuf, ulen)             # <<<<<<<<<<<<<<
 *         cdef object fbuf = mpibuf(filebuf, flen)
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_userbuf, __pyx_v_ulen)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ubuf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":34
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 *         cdef object fbuf = mpibuf(filebuf, flen)             # <<<<<<<<<<<<<<
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_filebuf, __pyx_v_flen)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_fbuf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":35
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 *         cdef object fbuf = mpibuf(filebuf, flen)
 *         cdef Datatype dtype = <Datatype>New(Datatype)             # <<<<<<<<<<<<<<
 *         dtype.ob_mpi = datatype
 *         try:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_dtype = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":36
 *         cdef object fbuf = mpibuf(filebuf, flen)
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype             # <<<<<<<<<<<<<<
 *         try:
 *             self.read_fn(ubuf, dtype, count, fbuf, position)
 */
  __pyx_v_dtype->ob_mpi = __pyx_v_datatype;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":37
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype
 *         try:             # <<<<<<<<<<<<<<
 *             self.read_fn(ubuf, dtype, count, fbuf, position)
 *         finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/drepimpl.pxi":38
 *         dtype.ob_mpi = datatype
 *         try:
 *             self.read_fn(ubuf, dtype, count, fbuf, position)             # <<<<<<<<<<<<<<
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL
 */
    __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 38, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_From_MPI_Offset(__pyx_v_position); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 38, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_self->read_fn);
    __pyx_t_5 = __pyx_v_self->read_fn; __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[6] = {__pyx_t_6, __pyx_v_ubuf, ((PyObject *)__pyx_v_dtype), __pyx_t_2, __pyx_v_fbuf, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 5+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 38, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":40
 *             self.read_fn(ubuf, dtype, count, fbuf, position)
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_v_dtype->ob_mpi = MPI_DATATYPE_NULL;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_1 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {
        __pyx_v_dtype->ob_mpi = MPI_DATATYPE_NULL;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":41
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int write(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":21
 *         self.extent_fn = extent_fn
 * 
 *     cdef int read(             # <<<<<<<<<<<<<<
 *         self,
 *         void *userbuf,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_datarep.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ubuf);
  __Pyx_XDECREF(__pyx_v_fbuf);
  __Pyx_XDECREF((PyObject *)__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":43
 *         return 0
 * 
 *     cdef int write(             # <<<<<<<<<<<<<<
 *         self,
 *         void *userbuf,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_datarep_write(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  MPI_Count __pyx_v_ulen;
  MPI_Count __pyx_v_flen;
  PyObject *__pyx_v_ubuf = 0;
  PyObject *__pyx_v_fbuf = 0;
  struct PyMPIDatatypeObject *__pyx_v_dtype = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write", 1);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":51
 *         MPI_Offset position,
 *     ) except -1:
 *         cdef MPI_Count lb=0, extent=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )
 *         cdef MPI_Count ulen = (position + count) * extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":52
 *     ) except -1:
 *         cdef MPI_Count lb=0, extent=0
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ulen = (position + count) * extent
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_datatype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(17, 52, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/drepimpl.pxi":53
 *         cdef MPI_Count lb=0, extent=0
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )
 *         cdef MPI_Count ulen = (position + count) * extent             # <<<<<<<<<<<<<<
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 */
  __pyx_v_ulen = ((__pyx_v_position + __pyx_v_count) * __pyx_v_extent);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":54
 *         CHKERR( MPI_Type_get_extent_c(datatype, &lb, &extent) )
 *         cdef MPI_Count ulen = (position + count) * extent
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX             # <<<<<<<<<<<<<<
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 *         cdef object fbuf = mpibuf(filebuf, flen)
 */
  __pyx_v_flen = ((MPI_Count)PY_SSIZE_T_MAX);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":55
 *         cdef MPI_Count ulen = (position + count) * extent
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 *         cdef object ubuf = mpibuf(userbuf, ulen)             # <<<<<<<<<<<<<<
 *         cdef object fbuf = mpibuf(filebuf, flen)
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_userbuf, __pyx_v_ulen)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ubuf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":56
 *         cdef MPI_Count flen = <MPI_Count> PY_SSIZE_T_MAX
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 *         cdef object fbuf = mpibuf(filebuf, flen)             # <<<<<<<<<<<<<<
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_filebuf, __pyx_v_flen)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_fbuf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":57
 *         cdef object ubuf = mpibuf(userbuf, ulen)
 *         cdef object fbuf = mpibuf(filebuf, flen)
 *         cdef Datatype dtype = <Datatype>New(Datatype)             # <<<<<<<<<<<<<<
 *         dtype.ob_mpi = datatype
 *         try:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_dtype = ((struct PyMPIDatatypeObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":58
 *         cdef object fbuf = mpibuf(filebuf, flen)
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype             # <<<<<<<<<<<<<<
 *         try:
 *             self.write_fn(ubuf, dtype, count, fbuf, position)
 */
  __pyx_v_dtype->ob_mpi = __pyx_v_datatype;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":59
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype
 *         try:             # <<<<<<<<<<<<<<
 *             self.write_fn(ubuf, dtype, count, fbuf, position)
 *         finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/drepimpl.pxi":60
 *         dtype.ob_mpi = datatype
 *         try:
 *             self.write_fn(ubuf, dtype, count, fbuf, position)             # <<<<<<<<<<<<<<
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL
 */
    __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 60, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyInt_From_MPI_Offset(__pyx_v_position); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 60, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_self->write_fn);
    __pyx_t_5 = __pyx_v_self->write_fn; __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[6] = {__pyx_t_6, __pyx_v_ubuf, ((PyObject *)__pyx_v_dtype), __pyx_t_2, __pyx_v_fbuf, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 5+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 60, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":62
 *             self.write_fn(ubuf, dtype, count, fbuf, position)
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_v_dtype->ob_mpi = MPI_DATATYPE_NULL;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_1 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {
        __pyx_v_dtype->ob_mpi = MPI_DATATYPE_NULL;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":63
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int extent(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":43
 *         return 0
 * 
 *     cdef int write(             # <<<<<<<<<<<<<<
 *         self,
 *         void *userbuf,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_datarep.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ubuf);
  __Pyx_XDECREF(__pyx_v_fbuf);
  __Pyx_XDECREF((PyObject *)__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":65
 *         return 0
 * 
 *     cdef int extent(             # <<<<<<<<<<<<<<
 *         self,
 *         MPI_Datatype datatype,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_datarep_extent(struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_self, MPI_Datatype __pyx_v_datatype, MPI_Aint *__pyx_v_file_extent) {
  struct PyMPIDatatypeObject *__pyx_v_dtype = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  MPI_Aint __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  char const *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("extent", 1);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":70
 *         MPI_Aint *file_extent,
 *     ) except -1:
 *         cdef Datatype dtype = <Datatype>New(Datatype)             # <<<<<<<<<<<<<<
 *         dtype.ob_mpi = datatype
 *         try:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_dtype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":71
 *     ) except -1:
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype             # <<<<<<<<<<<<<<
 *         try:
 *             file_extent[0] = self.extent_fn(dtype)
 */
  __pyx_v_dtype->ob_mpi = __pyx_v_datatype;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":72
 *         cdef Datatype dtype = <Datatype>New(Datatype)
 *         dtype.ob_mpi = datatype
 *         try:             # <<<<<<<<<<<<<<
 *             file_extent[0] = self.extent_fn(dtype)
 *         finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/drepimpl.pxi":73
 *         dtype.ob_mpi = datatype
 *         try:
 *             file_extent[0] = self.extent_fn(dtype)             # <<<<<<<<<<<<<<
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL
 */
    __Pyx_INCREF(__pyx_v_self->extent_fn);
    __pyx_t_1 = __pyx_v_self->extent_fn; __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_4 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_dtype)};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 73, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __pyx_t_5 = __Pyx_PyInt_As_MPI_Aint(__pyx_t_2); if (unlikely((__pyx_t_5 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(17, 73, __pyx_L4_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    (__pyx_v_file_extent[0]) = __pyx_t_5;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":75
 *             file_extent[0] = self.extent_fn(dtype)
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_v_dtype->ob_mpi = MPI_DATATYPE_NULL;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11) < 0)) __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __pyx_t_6 = __pyx_lineno; __pyx_t_7 = __pyx_clineno; __pyx_t_8 = __pyx_filename;
      {
        __pyx_v_dtype->ob_mpi = MPI_DATATYPE_NULL;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
      }
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
      __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_7; __pyx_filename = __pyx_t_8;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":76
 *         finally:
 *             dtype.ob_mpi = MPI_DATATYPE_NULL
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":65
 *         return 0
 * 
 *     cdef int extent(             # <<<<<<<<<<<<<<
 *         self,
 *         MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_datarep.extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":83
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef int datarep_read(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

static int __pyx_f_6mpi4py_3MPI_datarep_read(void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position, void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("datarep_read", 0);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":91
 *     void *extra_state,
 * ) noexcept with gil:
 *     cdef _p_datarep state = <_p_datarep>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_datarep *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":92
 * ) noexcept with gil:
 *     cdef _p_datarep state = <_p_datarep>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":94
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.read(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/drepimpl.pxi":95
 *     cdef object exc
 *     try:
 *         state.read(userbuf, datatype, count, filebuf, position)             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_10_p_datarep_read(__pyx_v_state, __pyx_v_userbuf, __pyx_v_datatype, __pyx_v_count, __pyx_v_filebuf, __pyx_v_position); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(17, 95, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/drepimpl.pxi":94
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.read(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/drepimpl.pxi":96
 *     try:
 *         state.read(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.datarep_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(17, 96, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/drepimpl.pxi":97
 *         state.read(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/drepimpl.pxi":96
 *     try:
 *         state.read(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/drepimpl.pxi":94
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.read(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":98
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":83
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef int datarep_read(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.datarep_read", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":102
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef int datarep_write(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

static int __pyx_f_6mpi4py_3MPI_datarep_write(void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position, void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("datarep_write", 0);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":110
 *     void *extra_state,
 * ) noexcept with gil:
 *     cdef _p_datarep state = <_p_datarep>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_datarep *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":111
 * ) noexcept with gil:
 *     cdef _p_datarep state = <_p_datarep>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":113
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.write(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/drepimpl.pxi":114
 *     cdef object exc
 *     try:
 *         state.write(userbuf, datatype, count, filebuf, position)             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_10_p_datarep_write(__pyx_v_state, __pyx_v_userbuf, __pyx_v_datatype, __pyx_v_count, __pyx_v_filebuf, __pyx_v_position); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(17, 114, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/drepimpl.pxi":113
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.write(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/drepimpl.pxi":115
 *     try:
 *         state.write(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.datarep_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(17, 115, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/drepimpl.pxi":116
 *         state.write(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/drepimpl.pxi":115
 *     try:
 *         state.write(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/drepimpl.pxi":113
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.write(userbuf, datatype, count, filebuf, position)
 *     except BaseException as exc:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":117
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":102
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef int datarep_write(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.datarep_write", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":121
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef int datarep_extent(             # <<<<<<<<<<<<<<
 *     MPI_Datatype datatype,
 *     MPI_Aint *file_extent,
 */

static int __pyx_f_6mpi4py_3MPI_datarep_extent(MPI_Datatype __pyx_v_datatype, MPI_Aint *__pyx_v_file_extent, void *__pyx_v_extra_state) {
  struct __pyx_obj_6mpi4py_3MPI__p_datarep *__pyx_v_state = 0;
  int __pyx_v_ierr;
  PyObject *__pyx_v_exc = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("datarep_extent", 0);

  /* "src/mpi4py/MPI.src/drepimpl.pxi":126
 *     void *extra_state,
 * ) noexcept with gil:
 *     cdef _p_datarep state = <_p_datarep>extra_state             # <<<<<<<<<<<<<<
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_extra_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_datarep *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":127
 * ) noexcept with gil:
 *     cdef _p_datarep state = <_p_datarep>extra_state
 *     cdef int ierr = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     cdef object exc
 *     try:
 */
  __pyx_v_ierr = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":129
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.extent(datatype, file_extent)
 *     except BaseException as exc:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/drepimpl.pxi":130
 *     cdef object exc
 *     try:
 *         state.extent(datatype, file_extent)             # <<<<<<<<<<<<<<
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 */
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_10_p_datarep_extent(__pyx_v_state, __pyx_v_datatype, __pyx_v_file_extent); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(17, 130, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/drepimpl.pxi":129
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.extent(datatype, file_extent)
 *     except BaseException as exc:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/drepimpl.pxi":131
 *     try:
 *         state.extent(datatype, file_extent)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.datarep_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(17, 131, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_exc = __pyx_t_6;
      /*try:*/ {

        /* "src/mpi4py/MPI.src/drepimpl.pxi":132
 *         state.extent(datatype, file_extent)
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)             # <<<<<<<<<<<<<<
 *     return ierr
 * 
 */
        __pyx_v_ierr = __pyx_f_6mpi4py_3MPI_PyMPI_HandleException(__pyx_v_exc);
      }

      /* "src/mpi4py/MPI.src/drepimpl.pxi":131
 *     try:
 *         state.extent(datatype, file_extent)
 *     except BaseException as exc:             # <<<<<<<<<<<<<<
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr
 */
      /*finally:*/ {
        /*normal exit:*/{
          __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0;
          goto __pyx_L15;
        }
        __pyx_L15:;
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/drepimpl.pxi":129
 *     cdef int ierr = MPI_SUCCESS
 *     cdef object exc
 *     try:             # <<<<<<<<<<<<<<
 *         state.extent(datatype, file_extent)
 *     except BaseException as exc:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":133
 *     except BaseException as exc:
 *         ierr = PyMPI_HandleException(exc)
 *     return ierr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_ierr;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":121
 * 
 * @cython.linetrace(False)  # ~> TODO
 * cdef int datarep_extent(             # <<<<<<<<<<<<<<
 *     MPI_Datatype datatype,
 *     MPI_Aint *file_extent,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("mpi4py.MPI.datarep_extent", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_exc);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":141
 * @cython.linetrace(False)  # ~> TODO
 * @cython.callspec("MPIAPI")
 * cdef int datarep_read_fn(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

static int MPIAPI __pyx_f_6mpi4py_3MPI_datarep_read_fn(void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position, void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":149
 *     void *extra_state,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":150
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return datarep_read(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":151
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return datarep_read(
 *         userbuf, datatype, count,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":152
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return datarep_read(             # <<<<<<<<<<<<<<
 *         userbuf, datatype, count,
 *         filebuf, position, extra_state,
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_datarep_read(__pyx_v_userbuf, __pyx_v_datatype, __pyx_v_count, __pyx_v_filebuf, __pyx_v_position, __pyx_v_extra_state);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":141
 * @cython.linetrace(False)  # ~> TODO
 * @cython.callspec("MPIAPI")
 * cdef int datarep_read_fn(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":160
 * @cython.linetrace(False)  # ~> TODO
 * @cython.callspec("MPIAPI")
 * cdef int datarep_write_fn(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

static int MPIAPI __pyx_f_6mpi4py_3MPI_datarep_write_fn(void *__pyx_v_userbuf, MPI_Datatype __pyx_v_datatype, MPI_Count __pyx_v_count, void *__pyx_v_filebuf, MPI_Offset __pyx_v_position, void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":168
 *     void *extra_state,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":169
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return datarep_write(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":170
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return datarep_write(
 *         userbuf, datatype, count,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":171
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return datarep_write(             # <<<<<<<<<<<<<<
 *         userbuf, datatype, count,
 *         filebuf, position, extra_state,
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_datarep_write(__pyx_v_userbuf, __pyx_v_datatype, __pyx_v_count, __pyx_v_filebuf, __pyx_v_position, __pyx_v_extra_state);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":160
 * @cython.linetrace(False)  # ~> TODO
 * @cython.callspec("MPIAPI")
 * cdef int datarep_write_fn(             # <<<<<<<<<<<<<<
 *     void *userbuf,
 *     MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/drepimpl.pxi":179
 * @cython.linetrace(False)  # ~> TODO
 * @cython.callspec("MPIAPI")
 * cdef int datarep_extent_fn(             # <<<<<<<<<<<<<<
 *     MPI_Datatype datatype,
 *     MPI_Aint *file_extent,
 */

static int MPIAPI __pyx_f_6mpi4py_3MPI_datarep_extent_fn(MPI_Datatype __pyx_v_datatype, MPI_Aint *__pyx_v_file_extent, void *__pyx_v_extra_state) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":184
 *     void *extra_state,
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 */
  __pyx_t_1 = (__pyx_v_extra_state == NULL);
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":185
 * ) noexcept nogil:
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return datarep_extent(
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_Py_IsInitialized() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":186
 *     if extra_state == NULL:    return MPI_ERR_INTERN
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 *     return datarep_extent(
 *         datatype, file_extent, extra_state,
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_py_module_alive() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_ERR_INTERN;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/drepimpl.pxi":187
 *     if not Py_IsInitialized(): return MPI_ERR_INTERN
 *     if not py_module_alive():  return MPI_ERR_INTERN
 *     return datarep_extent(             # <<<<<<<<<<<<<<
 *         datatype, file_extent, extra_state,
 *     )
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_datarep_extent(__pyx_v_datatype, __pyx_v_file_extent, __pyx_v_extra_state);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":179
 * @cython.linetrace(False)  # ~> TODO
 * @cython.callspec("MPIAPI")
 * cdef int datarep_extent_fn(             # <<<<<<<<<<<<<<
 *     MPI_Datatype datatype,
 *     MPI_Aint *file_extent,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":7
 *     int is_tuple "PyTuple_Check" (object)
 * 
 * cdef inline int is_buffer(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     return PyObject_CheckBuffer(ob)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_buffer(PyObject *__pyx_v_ob) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":8
 * 
 * cdef inline int is_buffer(object ob) noexcept:
 *     return PyObject_CheckBuffer(ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int is_dlpack_buffer(object ob) noexcept:
 */
  __pyx_r = PyObject_CheckBuffer(__pyx_v_ob);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":7
 *     int is_tuple "PyTuple_Check" (object)
 * 
 * cdef inline int is_buffer(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     return PyObject_CheckBuffer(ob)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":10
 *     return PyObject_CheckBuffer(ob)
 * 
 * cdef inline int is_dlpack_buffer(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     return Py_CheckDLPackBuffer(ob)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_dlpack_buffer(PyObject *__pyx_v_ob) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":11
 * 
 * cdef inline int is_dlpack_buffer(object ob) noexcept:
 *     return Py_CheckDLPackBuffer(ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int is_cai_buffer(object ob) noexcept:
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_Py_CheckDLPackBuffer(__pyx_v_ob);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":10
 *     return PyObject_CheckBuffer(ob)
 * 
 * cdef inline int is_dlpack_buffer(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     return Py_CheckDLPackBuffer(ob)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":13
 *     return Py_CheckDLPackBuffer(ob)
 * 
 * cdef inline int is_cai_buffer(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     return Py_CheckCAIBuffer(ob)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_cai_buffer(PyObject *__pyx_v_ob) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":14
 * 
 * cdef inline int is_cai_buffer(object ob) noexcept:
 *     return Py_CheckCAIBuffer(ob)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int is_datatype(object ob) except -1:
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_Py_CheckCAIBuffer(__pyx_v_ob);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":13
 *     return Py_CheckDLPackBuffer(ob)
 * 
 * cdef inline int is_cai_buffer(object ob) noexcept:             # <<<<<<<<<<<<<<
 *     return Py_CheckCAIBuffer(ob)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":16
 *     return Py_CheckCAIBuffer(ob)
 * 
 * cdef inline int is_datatype(object ob) except -1:             # <<<<<<<<<<<<<<
 *     if isinstance(ob, Datatype): return 1
 *     if isinstance(ob, str): return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_datatype(PyObject *__pyx_v_ob) {
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":17
 * 
 * cdef inline int is_datatype(object ob) except -1:
 *     if isinstance(ob, Datatype): return 1             # <<<<<<<<<<<<<<
 *     if isinstance(ob, str): return 1
 *     return 0
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_ob, __pyx_ptype_6mpi4py_3MPI_Datatype); 
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":18
 * cdef inline int is_datatype(object ob) except -1:
 *     if isinstance(ob, Datatype): return 1
 *     if isinstance(ob, str): return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = PyString_Check(__pyx_v_ob); 
  if (__pyx_t_1) {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":19
 *     if isinstance(ob, Datatype): return 1
 *     if isinstance(ob, str): return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint is_constant(object obj, object CONST):
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":16
 *     return Py_CheckCAIBuffer(ob)
 * 
 * cdef inline int is_datatype(object ob) except -1:             # <<<<<<<<<<<<<<
 *     if isinstance(ob, Datatype): return 1
 *     if isinstance(ob, str): return 1
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":21
 *     return 0
 * 
 * cdef inline bint is_constant(object obj, object CONST):             # <<<<<<<<<<<<<<
 *     if PYPY: return type(obj) is type(CONST) and obj == CONST
 *     return obj is CONST
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_constant(PyObject *__pyx_v_obj, PyObject *__pyx_v_CONST) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_constant", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":22
 * 
 * cdef inline bint is_constant(object obj, object CONST):
 *     if PYPY: return type(obj) is type(CONST) and obj == CONST             # <<<<<<<<<<<<<<
 *     return obj is CONST
 * 
 */
  if (PyMPI_RUNTIME_PYPY) {
    __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_obj)) == ((PyObject *)Py_TYPE(__pyx_v_CONST)));
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_obj, __pyx_v_CONST, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 22, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(18, 22, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_2;
    __pyx_L4_bool_binop_done:;
    __pyx_r = __pyx_t_1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":23
 * cdef inline bint is_constant(object obj, object CONST):
 *     if PYPY: return type(obj) is type(CONST) and obj == CONST
 *     return obj is CONST             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_1 = (__pyx_v_obj == __pyx_v_CONST);
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":21
 *     return 0
 * 
 * cdef inline bint is_constant(object obj, object CONST):             # <<<<<<<<<<<<<<
 *     if PYPY: return type(obj) is type(CONST) and obj == CONST
 *     return obj is CONST
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.is_constant", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":34
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BOTTOM
 *         if a != b :
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10BottomType_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10BottomType_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType___cinit__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10BottomType___cinit__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  MPI_Aint __pyx_v_a;
  MPI_Aint __pyx_v_b;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  MPI_Aint __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":35
 * 
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BOTTOM             # <<<<<<<<<<<<<<
 *         if a != b :
 *             raise ValueError("cannot create instance")
 */
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Aint(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(18, 35, __pyx_L1_error)
  __pyx_v_a = __pyx_t_1;
  __pyx_v_b = ((MPI_Aint)MPI_BOTTOM);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":36
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BOTTOM
 *         if a != b :             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot create instance")
 * 
 */
  __pyx_t_2 = (__pyx_v_a != __pyx_v_b);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":37
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BOTTOM
 *         if a != b :
 *             raise ValueError("cannot create instance")             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(18, 37, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":36
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BOTTOM
 *         if a != b :             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot create instance")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":34
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BOTTOM
 *         if a != b :
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.BottomType.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":39
 *             raise ValueError("cannot create instance")
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_BOTTOM, 0, 0, flags)
 * 
 */

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_10BottomType_3__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_10BottomType_3__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType_2__getbuffer__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self), ((Py_buffer *)__pyx_v_view), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10BottomType_2__getbuffer__(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (unlikely(__pyx_v_view == NULL)) {
    PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    return -1;
  }
  __pyx_v_view->obj = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":40
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_BOTTOM, 0, 0, flags)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
 */
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)NULL), MPI_BOTTOM, 0, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 40, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":39
 *             raise ValueError("cannot create instance")
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_BOTTOM, 0, 0, flags)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.BottomType.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  Py_CLEAR(__pyx_v_view->obj);
  goto __pyx_L2;
  __pyx_L0:;
  __pyx_L2:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":42
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_BOTTOM, 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BOTTOM'
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType_4__repr__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_4__repr__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":43
 * 
 *     def __repr__(self) -> str:
 *         <void> self  # unused             # <<<<<<<<<<<<<<
 *         return 'BOTTOM'
 * 
 */
  ((void)__pyx_v_self);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":44
 *     def __repr__(self) -> str:
 *         <void> self  # unused
 *         return 'BOTTOM'             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_n_s_BOTTOM);
  __pyx_r = __pyx_n_s_BOTTOM;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":42
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_BOTTOM, 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BOTTOM'
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":46
 *         return 'BOTTOM'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BOTTOM'
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10BottomType_6__reduce__, "__reduce__(self) -> str");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10BottomType_7__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10BottomType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10BottomType_6__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_10BottomType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10BottomType_6__reduce__(((struct __pyx_obj_6mpi4py_3MPI_BottomType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10BottomType_6__reduce__(struct __pyx_obj_6mpi4py_3MPI_BottomType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":47
 * 
 *     def __reduce__(self) -> str:
 *         <void> self  # unused             # <<<<<<<<<<<<<<
 *         return 'BOTTOM'
 * 
 */
  ((void)__pyx_v_self);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":48
 *     def __reduce__(self) -> str:
 *         <void> self  # unused
 *         return 'BOTTOM'             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_n_s_BOTTOM);
  __pyx_r = __pyx_n_s_BOTTOM;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":46
 *         return 'BOTTOM'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BOTTOM'
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":57
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_IN_PLACE
 *         if a != b:
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11InPlaceType___cinit__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_11InPlaceType___cinit__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  MPI_Aint __pyx_v_a;
  MPI_Aint __pyx_v_b;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  MPI_Aint __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":58
 * 
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         if a != b:
 *             raise ValueError("cannot create instance")
 */
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Aint(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(18, 58, __pyx_L1_error)
  __pyx_v_a = __pyx_t_1;
  __pyx_v_b = ((MPI_Aint)MPI_IN_PLACE);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":59
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_IN_PLACE
 *         if a != b:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot create instance")
 * 
 */
  __pyx_t_2 = (__pyx_v_a != __pyx_v_b);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":60
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_IN_PLACE
 *         if a != b:
 *             raise ValueError("cannot create instance")             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(18, 60, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":59
 *     def __cinit__(self):
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_IN_PLACE
 *         if a != b:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot create instance")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":57
 *     """
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_IN_PLACE
 *         if a != b:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.InPlaceType.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":62
 *             raise ValueError("cannot create instance")
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_IN_PLACE, 0, 0, flags)
 * 
 */

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_3__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_11InPlaceType_3__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11InPlaceType_2__getbuffer__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self), ((Py_buffer *)__pyx_v_view), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_11InPlaceType_2__getbuffer__(CYTHON_UNUSED struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (unlikely(__pyx_v_view == NULL)) {
    PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    return -1;
  }
  __pyx_v_view->obj = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":63
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_IN_PLACE, 0, 0, flags)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
 */
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)NULL), MPI_IN_PLACE, 0, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 63, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":62
 *             raise ValueError("cannot create instance")
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_IN_PLACE, 0, 0, flags)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.InPlaceType.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  Py_CLEAR(__pyx_v_view->obj);
  goto __pyx_L2;
  __pyx_L0:;
  __pyx_L2:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":65
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_IN_PLACE, 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'IN_PLACE'
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11InPlaceType_4__repr__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_4__repr__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":66
 * 
 *     def __repr__(self) -> str:
 *         <void> self  # unused             # <<<<<<<<<<<<<<
 *         return 'IN_PLACE'
 * 
 */
  ((void)__pyx_v_self);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":67
 *     def __repr__(self) -> str:
 *         <void> self  # unused
 *         return 'IN_PLACE'             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_n_s_IN_PLACE);
  __pyx_r = __pyx_n_s_IN_PLACE;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":65
 *         PyBuffer_FillInfo(view, <object>NULL, MPI_IN_PLACE, 0, 0, flags)
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'IN_PLACE'
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":69
 *         return 'IN_PLACE'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'IN_PLACE'
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_11InPlaceType_6__reduce__, "__reduce__(self) -> str");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_11InPlaceType_7__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_11InPlaceType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_11InPlaceType_6__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_11InPlaceType_7__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11InPlaceType_6__reduce__(((struct __pyx_obj_6mpi4py_3MPI_InPlaceType *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_11InPlaceType_6__reduce__(struct __pyx_obj_6mpi4py_3MPI_InPlaceType *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":70
 * 
 *     def __reduce__(self) -> str:
 *         <void> self  # unused             # <<<<<<<<<<<<<<
 *         return 'IN_PLACE'
 * 
 */
  ((void)__pyx_v_self);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":71
 *     def __reduce__(self) -> str:
 *         <void> self  # unused
 *         return 'IN_PLACE'             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_n_s_IN_PLACE);
  __pyx_r = __pyx_n_s_IN_PLACE;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":69
 *         return 'IN_PLACE'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'IN_PLACE'
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":79
 * 
 * 
 * cdef inline bint is_BOTTOM(object obj):             # <<<<<<<<<<<<<<
 *     return obj is None or is_constant(obj, __BOTTOM__)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_BOTTOM(PyObject *__pyx_v_obj) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_BOTTOM", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":80
 * 
 * cdef inline bint is_BOTTOM(object obj):
 *     return obj is None or is_constant(obj, __BOTTOM__)             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint is_IN_PLACE(object obj):
 */
  __pyx_t_2 = (__pyx_v_obj == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_3 = __pyx_v_6mpi4py_3MPI___BOTTOM__;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_constant(__pyx_v_obj, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":79
 * 
 * 
 * cdef inline bint is_BOTTOM(object obj):             # <<<<<<<<<<<<<<
 *     return obj is None or is_constant(obj, __BOTTOM__)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.is_BOTTOM", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":82
 *     return obj is None or is_constant(obj, __BOTTOM__)
 * 
 * cdef inline bint is_IN_PLACE(object obj):             # <<<<<<<<<<<<<<
 *     return obj is None or is_constant(obj, __IN_PLACE__)
 * 
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_is_IN_PLACE(PyObject *__pyx_v_obj) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_IN_PLACE", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":83
 * 
 * cdef inline bint is_IN_PLACE(object obj):
 *     return obj is None or is_constant(obj, __IN_PLACE__)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = (__pyx_v_obj == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_3 = __pyx_v_6mpi4py_3MPI___IN_PLACE__;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_constant(__pyx_v_obj, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":82
 *     return obj is None or is_constant(obj, __BOTTOM__)
 * 
 * cdef inline bint is_IN_PLACE(object obj):             # <<<<<<<<<<<<<<
 *     return obj is None or is_constant(obj, __IN_PLACE__)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.is_IN_PLACE", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":87
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char *getformat(const char format[]) except NULL:             # <<<<<<<<<<<<<<
 *     cdef char byteorder = format[0]
 *     if byteorder == c'@':  # native
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_getformat(char const *__pyx_v_format) {
  char __pyx_v_byteorder;
  char const *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getformat", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":88
 * 
 * cdef inline const char *getformat(const char format[]) except NULL:
 *     cdef char byteorder = format[0]             # <<<<<<<<<<<<<<
 *     if byteorder == c'@':  # native
 *         return format + 1                            # ~> uncovered
 */
  __pyx_v_byteorder = (__pyx_v_format[0]);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":89
 * cdef inline const char *getformat(const char format[]) except NULL:
 *     cdef char byteorder = format[0]
 *     if byteorder == c'@':  # native             # <<<<<<<<<<<<<<
 *         return format + 1                            # ~> uncovered
 *     if byteorder == c'<':  # little-endian
 */
  __pyx_t_1 = (__pyx_v_byteorder == '@');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":90
 *     cdef char byteorder = format[0]
 *     if byteorder == c'@':  # native
 *         return format + 1                            # ~> uncovered             # <<<<<<<<<<<<<<
 *     if byteorder == c'<':  # little-endian
 *         if not is_little_endian():
 */
    __pyx_r = (__pyx_v_format + 1);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":89
 * cdef inline const char *getformat(const char format[]) except NULL:
 *     cdef char byteorder = format[0]
 *     if byteorder == c'@':  # native             # <<<<<<<<<<<<<<
 *         return format + 1                            # ~> uncovered
 *     if byteorder == c'<':  # little-endian
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":91
 *     if byteorder == c'@':  # native
 *         return format + 1                            # ~> uncovered
 *     if byteorder == c'<':  # little-endian             # <<<<<<<<<<<<<<
 *         if not is_little_endian():
 *             raise BufferError(                       # ~> big-endian
 */
  __pyx_t_1 = (__pyx_v_byteorder == '<');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":92
 *         return format + 1                            # ~> uncovered
 *     if byteorder == c'<':  # little-endian
 *         if not is_little_endian():             # <<<<<<<<<<<<<<
 *             raise BufferError(                       # ~> big-endian
 *                 f"format string {pystr(format)!r} "  # ~> big-endian
 */
    __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_little_endian() != 0));
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":94
 *         if not is_little_endian():
 *             raise BufferError(                       # ~> big-endian
 *                 f"format string {pystr(format)!r} "  # ~> big-endian             # <<<<<<<<<<<<<<
 *                 f"with non-native byte order")       # ~> big-endian
 *         return format + 1                            # ~> little-endian
 */
      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = 0;
      __pyx_t_4 = 127;
      __Pyx_INCREF(__pyx_kp_u_format_string);
      __pyx_t_3 += 14;
      __Pyx_GIVEREF(__pyx_kp_u_format_string);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_format_string);
      __pyx_t_5 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_5), __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4;
      __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_kp_u_with_non_native_byte_order);
      __pyx_t_3 += 27;
      __Pyx_GIVEREF(__pyx_kp_u_with_non_native_byte_order);
      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_with_non_native_byte_order);
      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":93
 *     if byteorder == c'<':  # little-endian
 *         if not is_little_endian():
 *             raise BufferError(                       # ~> big-endian             # <<<<<<<<<<<<<<
 *                 f"format string {pystr(format)!r} "  # ~> big-endian
 *                 f"with non-native byte order")       # ~> big-endian
 */
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_BufferError, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(18, 93, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":92
 *         return format + 1                            # ~> uncovered
 *     if byteorder == c'<':  # little-endian
 *         if not is_little_endian():             # <<<<<<<<<<<<<<
 *             raise BufferError(                       # ~> big-endian
 *                 f"format string {pystr(format)!r} "  # ~> big-endian
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":96
 *                 f"format string {pystr(format)!r} "  # ~> big-endian
 *                 f"with non-native byte order")       # ~> big-endian
 *         return format + 1                            # ~> little-endian             # <<<<<<<<<<<<<<
 *     if byteorder == c'>':  # big-endian
 *         if not is_big_endian():
 */
    __pyx_r = (__pyx_v_format + 1);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":91
 *     if byteorder == c'@':  # native
 *         return format + 1                            # ~> uncovered
 *     if byteorder == c'<':  # little-endian             # <<<<<<<<<<<<<<
 *         if not is_little_endian():
 *             raise BufferError(                       # ~> big-endian
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":97
 *                 f"with non-native byte order")       # ~> big-endian
 *         return format + 1                            # ~> little-endian
 *     if byteorder == c'>':  # big-endian             # <<<<<<<<<<<<<<
 *         if not is_big_endian():
 *             raise BufferError(                       # ~> little-endian
 */
  __pyx_t_1 = (__pyx_v_byteorder == '>');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":98
 *         return format + 1                            # ~> little-endian
 *     if byteorder == c'>':  # big-endian
 *         if not is_big_endian():             # <<<<<<<<<<<<<<
 *             raise BufferError(                       # ~> little-endian
 *                 f"format string {pystr(format)!r} "  # ~> little-endian
 */
    __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_is_big_endian() != 0));
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":100
 *         if not is_big_endian():
 *             raise BufferError(                       # ~> little-endian
 *                 f"format string {pystr(format)!r} "  # ~> little-endian             # <<<<<<<<<<<<<<
 *                 f"with non-native byte order")       # ~> little-endian
 *         return format + 1                            # ~> big-endian
 */
      __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = 0;
      __pyx_t_4 = 127;
      __Pyx_INCREF(__pyx_kp_u_format_string);
      __pyx_t_3 += 14;
      __Pyx_GIVEREF(__pyx_kp_u_format_string);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_format_string);
      __pyx_t_6 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_6), __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
      __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_INCREF(__pyx_kp_u_with_non_native_byte_order);
      __pyx_t_3 += 27;
      __Pyx_GIVEREF(__pyx_kp_u_with_non_native_byte_order);
      PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_with_non_native_byte_order);
      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":99
 *     if byteorder == c'>':  # big-endian
 *         if not is_big_endian():
 *             raise BufferError(                       # ~> little-endian             # <<<<<<<<<<<<<<
 *                 f"format string {pystr(format)!r} "  # ~> little-endian
 *                 f"with non-native byte order")       # ~> little-endian
 */
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_BufferError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 99, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(18, 99, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":98
 *         return format + 1                            # ~> little-endian
 *     if byteorder == c'>':  # big-endian
 *         if not is_big_endian():             # <<<<<<<<<<<<<<
 *             raise BufferError(                       # ~> little-endian
 *                 f"format string {pystr(format)!r} "  # ~> little-endian
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":102
 *                 f"format string {pystr(format)!r} "  # ~> little-endian
 *                 f"with non-native byte order")       # ~> little-endian
 *         return format + 1                            # ~> big-endian             # <<<<<<<<<<<<<<
 *     # passthrough
 *     return format
 */
    __pyx_r = (__pyx_v_format + 1);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":97
 *                 f"with non-native byte order")       # ~> big-endian
 *         return format + 1                            # ~> little-endian
 *     if byteorder == c'>':  # big-endian             # <<<<<<<<<<<<<<
 *         if not is_big_endian():
 *             raise BufferError(                       # ~> little-endian
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":104
 *         return format + 1                            # ~> big-endian
 *     # passthrough
 *     return format             # <<<<<<<<<<<<<<
 * 
 * cdef inline Datatype lookup_datatype(object key):
 */
  __pyx_r = __pyx_v_format;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":87
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char *getformat(const char format[]) except NULL:             # <<<<<<<<<<<<<<
 *     cdef char byteorder = format[0]
 *     if byteorder == c'@':  # native
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.getformat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":106
 *     return format
 * 
 * cdef inline Datatype lookup_datatype(object key):             # <<<<<<<<<<<<<<
 *     try:
 *         return <Datatype?> TypeDict[key]
 */

static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_lookup_datatype(PyObject *__pyx_v_key) {
  struct PyMPIDatatypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  Py_UCS4 __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lookup_datatype", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":107
 * 
 * cdef inline Datatype lookup_datatype(object key):
 *     try:             # <<<<<<<<<<<<<<
 *         return <Datatype?> TypeDict[key]
 *     except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":108
 * cdef inline Datatype lookup_datatype(object key):
 *     try:
 *         return <Datatype?> TypeDict[key]             # <<<<<<<<<<<<<<
 *     except KeyError:
 *         raise KeyError(f"cannot map {key!r} to MPI datatype")
 */
      __Pyx_XDECREF((PyObject *)__pyx_r);
      if (unlikely(__pyx_v_6mpi4py_3MPI_TypeDict == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(18, 108, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_TypeDict, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 108, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(18, 108, __pyx_L3_error)
      __Pyx_INCREF((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_4));
      __pyx_r = ((struct PyMPIDatatypeObject *)__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":107
 * 
 * cdef inline Datatype lookup_datatype(object key):
 *     try:             # <<<<<<<<<<<<<<
 *         return <Datatype?> TypeDict[key]
 *     except KeyError:
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":109
 *     try:
 *         return <Datatype?> TypeDict[key]
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         raise KeyError(f"cannot map {key!r} to MPI datatype")
 * 
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.lookup_datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(18, 109, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":110
 *         return <Datatype?> TypeDict[key]
 *     except KeyError:
 *         raise KeyError(f"cannot map {key!r} to MPI datatype")             # <<<<<<<<<<<<<<
 * 
 * cdef inline Datatype asdatatype(object datatype):
 */
      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 110, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = 0;
      __pyx_t_10 = 127;
      __Pyx_INCREF(__pyx_kp_u_cannot_map);
      __pyx_t_9 += 11;
      __Pyx_GIVEREF(__pyx_kp_u_cannot_map);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_cannot_map);
      __pyx_t_11 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_key), __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(18, 110, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_10;
      __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_11);
      __pyx_t_11 = 0;
      __Pyx_INCREF(__pyx_kp_u_to_MPI_datatype);
      __pyx_t_9 += 16;
      __Pyx_GIVEREF(__pyx_kp_u_to_MPI_datatype);
      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u_to_MPI_datatype);
      __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(18, 110, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_KeyError, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 110, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(18, 110, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":107
 * 
 * cdef inline Datatype lookup_datatype(object key):
 *     try:             # <<<<<<<<<<<<<<
 *         return <Datatype?> TypeDict[key]
 *     except KeyError:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":106
 *     return format
 * 
 * cdef inline Datatype lookup_datatype(object key):             # <<<<<<<<<<<<<<
 *     try:
 *         return <Datatype?> TypeDict[key]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.lookup_datatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":112
 *         raise KeyError(f"cannot map {key!r} to MPI datatype")
 * 
 * cdef inline Datatype asdatatype(object datatype):             # <<<<<<<<<<<<<<
 *     if isinstance(datatype, Datatype):
 *         return <Datatype> datatype
 */

static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_asdatatype(PyObject *__pyx_v_datatype) {
  struct PyMPIDatatypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asdatatype", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":113
 * 
 * cdef inline Datatype asdatatype(object datatype):
 *     if isinstance(datatype, Datatype):             # <<<<<<<<<<<<<<
 *         return <Datatype> datatype
 *     return lookup_datatype(datatype)
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_datatype, __pyx_ptype_6mpi4py_3MPI_Datatype); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":114
 * cdef inline Datatype asdatatype(object datatype):
 *     if isinstance(datatype, Datatype):
 *         return <Datatype> datatype             # <<<<<<<<<<<<<<
 *     return lookup_datatype(datatype)
 * 
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)((struct PyMPIDatatypeObject *)__pyx_v_datatype));
    __pyx_r = ((struct PyMPIDatatypeObject *)__pyx_v_datatype);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":113
 * 
 * cdef inline Datatype asdatatype(object datatype):
 *     if isinstance(datatype, Datatype):             # <<<<<<<<<<<<<<
 *         return <Datatype> datatype
 *     return lookup_datatype(datatype)
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":115
 *     if isinstance(datatype, Datatype):
 *         return <Datatype> datatype
 *     return lookup_datatype(datatype)             # <<<<<<<<<<<<<<
 * 
 * cdef inline Datatype getdatatype(const char format[]):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_lookup_datatype(__pyx_v_datatype)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":112
 *         raise KeyError(f"cannot map {key!r} to MPI datatype")
 * 
 * cdef inline Datatype asdatatype(object datatype):             # <<<<<<<<<<<<<<
 *     if isinstance(datatype, Datatype):
 *         return <Datatype> datatype
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.asdatatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":117
 *     return lookup_datatype(datatype)
 * 
 * cdef inline Datatype getdatatype(const char format[]):             # <<<<<<<<<<<<<<
 *     if format == BYTE_FMT: return __BYTE__
 *     return lookup_datatype(pystr(getformat(format)))
 */

static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_getdatatype(char const *__pyx_v_format) {
  struct PyMPIDatatypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  char const *__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;
  __Pyx_RefNannySetupContext("getdatatype", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":118
 * 
 * cdef inline Datatype getdatatype(const char format[]):
 *     if format == BYTE_FMT: return __BYTE__             # <<<<<<<<<<<<<<
 *     return lookup_datatype(pystr(getformat(format)))
 * 
 */
  __pyx_t_1 = (__pyx_v_format == __pyx_v_6mpi4py_3MPI_BYTE_FMT);
  if (__pyx_t_1) {
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__);
    __pyx_r = __pyx_v_6mpi4py_3MPI___BYTE__;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":119
 * cdef inline Datatype getdatatype(const char format[]):
 *     if format == BYTE_FMT: return __BYTE__
 *     return lookup_datatype(pystr(getformat(format)))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_getformat(__pyx_v_format); if (unlikely(__pyx_t_2 == ((char const *)NULL))) __PYX_ERR(18, 119, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = ((PyObject *)__pyx_f_6mpi4py_3MPI_lookup_datatype(__pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = ((struct PyMPIDatatypeObject *)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":117
 *     return lookup_datatype(datatype)
 * 
 * cdef inline Datatype getdatatype(const char format[]):             # <<<<<<<<<<<<<<
 *     if format == BYTE_FMT: return __BYTE__
 *     return lookup_datatype(pystr(getformat(format)))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.getdatatype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":130
 *     cdef Datatype type
 * 
 * cdef _p_message message_basic(object o_buf,             # <<<<<<<<<<<<<<
 *                               object o_type,
 *                               bint readonly,
 */

static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_basic(PyObject *__pyx_v_o_buf, PyObject *__pyx_v_o_type, int __pyx_v_readonly, void **__pyx_v_baddr, MPI_Count *__pyx_v_bsize, MPI_Datatype *__pyx_v_btype) {
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_v_m = 0;
  int __pyx_v_fmt;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  MPI_Datatype __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_basic", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":138
 *                               MPI_Datatype *btype,
 *                               ):
 *     cdef _p_message m = _p_message.__new__(_p_message)             # <<<<<<<<<<<<<<
 *     # special-case for BOTTOM or None,
 *     # an explicit MPI datatype is required
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_message(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_message), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 138, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":141
 *     # special-case for BOTTOM or None,
 *     # an explicit MPI datatype is required
 *     if is_BOTTOM(o_buf):             # <<<<<<<<<<<<<<
 *         m.buf = newbuffer()
 *         m.type = asdatatype(o_type)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_BOTTOM(__pyx_v_o_buf); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 141, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":142
 *     # an explicit MPI datatype is required
 *     if is_BOTTOM(o_buf):
 *         m.buf = newbuffer()             # <<<<<<<<<<<<<<
 *         m.type = asdatatype(o_type)
 *         baddr[0] = MPI_BOTTOM
 */
    __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_newbuffer()); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF((PyObject *)__pyx_v_m->buf);
    __Pyx_DECREF((PyObject *)__pyx_v_m->buf);
    __pyx_v_m->buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":143
 *     if is_BOTTOM(o_buf):
 *         m.buf = newbuffer()
 *         m.type = asdatatype(o_type)             # <<<<<<<<<<<<<<
 *         baddr[0] = MPI_BOTTOM
 *         bsize[0] = 0
 */
    __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asdatatype(__pyx_v_o_type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF((PyObject *)__pyx_v_m->type);
    __Pyx_DECREF((PyObject *)__pyx_v_m->type);
    __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":144
 *         m.buf = newbuffer()
 *         m.type = asdatatype(o_type)
 *         baddr[0] = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *         bsize[0] = 0
 *         btype[0] = m.type.ob_mpi
 */
    (__pyx_v_baddr[0]) = MPI_BOTTOM;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":145
 *         m.type = asdatatype(o_type)
 *         baddr[0] = MPI_BOTTOM
 *         bsize[0] = 0             # <<<<<<<<<<<<<<
 *         btype[0] = m.type.ob_mpi
 *         return m
 */
    (__pyx_v_bsize[0]) = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":146
 *         baddr[0] = MPI_BOTTOM
 *         bsize[0] = 0
 *         btype[0] = m.type.ob_mpi             # <<<<<<<<<<<<<<
 *         return m
 *     # get message buffer
 */
    __pyx_t_3 = __pyx_v_m->type->ob_mpi;
    (__pyx_v_btype[0]) = __pyx_t_3;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":147
 *         bsize[0] = 0
 *         btype[0] = m.type.ob_mpi
 *         return m             # <<<<<<<<<<<<<<
 *     # get message buffer
 *     cdef bint fmt = (o_type is None)
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_m);
    __pyx_r = __pyx_v_m;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":141
 *     # special-case for BOTTOM or None,
 *     # an explicit MPI datatype is required
 *     if is_BOTTOM(o_buf):             # <<<<<<<<<<<<<<
 *         m.buf = newbuffer()
 *         m.type = asdatatype(o_type)
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":149
 *         return m
 *     # get message buffer
 *     cdef bint fmt = (o_type is None)             # <<<<<<<<<<<<<<
 *     m.buf = getbuffer(o_buf, readonly, fmt)
 *     # get message datatype
 */
  __pyx_t_2 = (__pyx_v_o_type == Py_None);
  __pyx_v_fmt = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":150
 *     # get message buffer
 *     cdef bint fmt = (o_type is None)
 *     m.buf = getbuffer(o_buf, readonly, fmt)             # <<<<<<<<<<<<<<
 *     # get message datatype
 *     if o_type is not None:
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_o_buf, __pyx_v_readonly, __pyx_v_fmt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_m->buf);
  __Pyx_DECREF((PyObject *)__pyx_v_m->buf);
  __pyx_v_m->buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":152
 *     m.buf = getbuffer(o_buf, readonly, fmt)
 *     # get message datatype
 *     if o_type is not None:             # <<<<<<<<<<<<<<
 *         m.type = asdatatype(o_type)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_o_type != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":153
 *     # get message datatype
 *     if o_type is not None:
 *         m.type = asdatatype(o_type)             # <<<<<<<<<<<<<<
 *     else:
 *         m.type = getdatatype(m.buf.view.format)
 */
    __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asdatatype(__pyx_v_o_type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF((PyObject *)__pyx_v_m->type);
    __Pyx_DECREF((PyObject *)__pyx_v_m->type);
    __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":152
 *     m.buf = getbuffer(o_buf, readonly, fmt)
 *     # get message datatype
 *     if o_type is not None:             # <<<<<<<<<<<<<<
 *         m.type = asdatatype(o_type)
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":155
 *         m.type = asdatatype(o_type)
 *     else:
 *         m.type = getdatatype(m.buf.view.format)             # <<<<<<<<<<<<<<
 *     # return collected message data
 *     baddr[0] = <void*> m.buf.view.buf
 */
  /*else*/ {
    __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getdatatype(__pyx_v_m->buf->view.format)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 155, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF((PyObject *)__pyx_v_m->type);
    __Pyx_DECREF((PyObject *)__pyx_v_m->type);
    __pyx_v_m->type = ((struct PyMPIDatatypeObject *)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":157
 *         m.type = getdatatype(m.buf.view.format)
 *     # return collected message data
 *     baddr[0] = <void*> m.buf.view.buf             # <<<<<<<<<<<<<<
 *     bsize[0] = <MPI_Aint> m.buf.view.len
 *     btype[0] = m.type.ob_mpi
 */
  (__pyx_v_baddr[0]) = ((void *)__pyx_v_m->buf->view.buf);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":158
 *     # return collected message data
 *     baddr[0] = <void*> m.buf.view.buf
 *     bsize[0] = <MPI_Aint> m.buf.view.len             # <<<<<<<<<<<<<<
 *     btype[0] = m.type.ob_mpi
 *     return m
 */
  (__pyx_v_bsize[0]) = ((MPI_Aint)__pyx_v_m->buf->view.len);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":159
 *     baddr[0] = <void*> m.buf.view.buf
 *     bsize[0] = <MPI_Aint> m.buf.view.len
 *     btype[0] = m.type.ob_mpi             # <<<<<<<<<<<<<<
 *     return m
 * 
 */
  __pyx_t_3 = __pyx_v_m->type->ob_mpi;
  (__pyx_v_btype[0]) = __pyx_t_3;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":160
 *     bsize[0] = <MPI_Aint> m.buf.view.len
 *     btype[0] = m.type.ob_mpi
 *     return m             # <<<<<<<<<<<<<<
 * 
 * cdef _p_message message_simple(object msg,
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __pyx_r = __pyx_v_m;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":130
 *     cdef Datatype type
 * 
 * cdef _p_message message_basic(object o_buf,             # <<<<<<<<<<<<<<
 *                               object o_type,
 *                               bint readonly,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_basic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":162
 *     return m
 * 
 * cdef _p_message message_simple(object msg,             # <<<<<<<<<<<<<<
 *                                int readonly,
 *                                int rank,
 */

static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_simple(PyObject *__pyx_v_msg, int __pyx_v_readonly, int __pyx_v_rank, int __pyx_v_blocks, void **__pyx_v__addr, MPI_Count *__pyx_v__count, MPI_Datatype *__pyx_v__type) {
  Py_ssize_t __pyx_v_nargs;
  PyObject *__pyx_v_o_buf = 0;
  PyObject *__pyx_v_o_count = 0;
  PyObject *__pyx_v_o_displ = 0;
  PyObject *__pyx_v_o_type = 0;
  void *__pyx_v_baddr;
  MPI_Count __pyx_v_bsize;
  MPI_Datatype __pyx_v_btype;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_v_m = 0;
  MPI_Count __pyx_v_count;
  MPI_Aint __pyx_v_displ;
  MPI_Count __pyx_v_extent;
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_length;
  MPI_Aint __pyx_v_offset;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  MPI_Aint __pyx_t_11;
  Py_UCS4 __pyx_t_12;
  MPI_Count __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_simple", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":172
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]  = NULL
 *         _count[0] = 0
 */
  __pyx_t_1 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":173
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]  = NULL             # <<<<<<<<<<<<<<
 *         _count[0] = 0
 *         _type[0]  = MPI_BYTE
 */
    (__pyx_v__addr[0]) = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":174
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]  = NULL
 *         _count[0] = 0             # <<<<<<<<<<<<<<
 *         _type[0]  = MPI_BYTE
 *         return None
 */
    (__pyx_v__count[0]) = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":175
 *         _addr[0]  = NULL
 *         _count[0] = 0
 *         _type[0]  = MPI_BYTE             # <<<<<<<<<<<<<<
 *         return None
 *     # unpack message list/tuple
 */
    (__pyx_v__type[0]) = MPI_BYTE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":176
 *         _count[0] = 0
 *         _type[0]  = MPI_BYTE
 *         return None             # <<<<<<<<<<<<<<
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":172
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]  = NULL
 *         _count[0] = 0
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":178
 *         return None
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0             # <<<<<<<<<<<<<<
 *     cdef object o_buf   = None
 *     cdef object o_count = None
 */
  __pyx_v_nargs = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":179
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf   = None             # <<<<<<<<<<<<<<
 *     cdef object o_count = None
 *     cdef object o_displ = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_buf = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":180
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf   = None
 *     cdef object o_count = None             # <<<<<<<<<<<<<<
 *     cdef object o_displ = None
 *     cdef object o_type  = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_count = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":181
 *     cdef object o_buf   = None
 *     cdef object o_count = None
 *     cdef object o_displ = None             # <<<<<<<<<<<<<<
 *     cdef object o_type  = None
 *     if is_buffer(msg):
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_displ = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":182
 *     cdef object o_count = None
 *     cdef object o_displ = None
 *     cdef object o_type  = None             # <<<<<<<<<<<<<<
 *     if is_buffer(msg):
 *         o_buf = msg
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_type = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":183
 *     cdef object o_displ = None
 *     cdef object o_type  = None
 *     if is_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_buffer(__pyx_v_msg) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":184
 *     cdef object o_type  = None
 *     if is_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_v_msg);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":183
 *     cdef object o_displ = None
 *     cdef object o_type  = None
 *     if is_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":185
 *     if is_buffer(msg):
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):             # <<<<<<<<<<<<<<
 *         nargs = len(msg)
 *         if nargs == 2:
 */
  __pyx_t_2 = (PyList_Check(__pyx_v_msg) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (PyTuple_Check(__pyx_v_msg) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":186
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)             # <<<<<<<<<<<<<<
 *         if nargs == 2:
 *             (o_buf, o_count) = msg
 */
    __pyx_t_3 = PyObject_Length(__pyx_v_msg); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(18, 186, __pyx_L1_error)
    __pyx_v_nargs = __pyx_t_3;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":187
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 *         if nargs == 2:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count) = msg
 *             if is_datatype(o_count):
 */
    __pyx_t_1 = (__pyx_v_nargs == 2);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":188
 *         nargs = len(msg)
 *         if nargs == 2:
 *             (o_buf, o_count) = msg             # <<<<<<<<<<<<<<
 *             if is_datatype(o_count):
 *                 (o_count, o_type) = None, o_count
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(18, 188, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        #else
        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 188, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 188, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        Py_ssize_t index = -1;
        __pyx_t_6 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 188, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
        index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(18, 188, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L9_unpacking_done;
        __pyx_L8_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(18, 188, __pyx_L1_error)
        __pyx_L9_unpacking_done:;
      }
      __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_count, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":189
 *         if nargs == 2:
 *             (o_buf, o_count) = msg
 *             if is_datatype(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):
 */
      __pyx_t_8 = __pyx_f_6mpi4py_3MPI_is_datatype(__pyx_v_o_count); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(18, 189, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_8 != 0);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":190
 *             (o_buf, o_count) = msg
 *             if is_datatype(o_count):
 *                 (o_count, o_type) = None, o_count             # <<<<<<<<<<<<<<
 *             elif is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 */
        __pyx_t_5 = Py_None;
        __Pyx_INCREF(__pyx_t_5);
        __pyx_t_4 = __pyx_v_o_count;
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_DECREF_SET(__pyx_v_o_count, __pyx_t_5);
        __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_o_type, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":189
 *         if nargs == 2:
 *             (o_buf, o_count) = msg
 *             if is_datatype(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):
 */
        goto __pyx_L10;
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":191
 *             if is_datatype(o_count):
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:
 */
      __pyx_t_2 = (PyTuple_Check(__pyx_v_o_count) != 0);
      if (!__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L11_bool_binop_done;
      }
      __pyx_t_2 = (PyList_Check(__pyx_v_o_count) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L11_bool_binop_done:;
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":192
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count             # <<<<<<<<<<<<<<
 *         elif nargs == 3:
 *             (o_buf, o_count, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_count))) || (PyList_CheckExact(__pyx_v_o_count))) {
          PyObject* sequence = __pyx_v_o_count;
          Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(18, 192, __pyx_L1_error)
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 192, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 192, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        } else {
          Py_ssize_t index = -1;
          __pyx_t_6 = PyObject_GetIter(__pyx_v_o_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 192, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
          index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L13_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(18, 192, __pyx_L1_error)
          __pyx_t_7 = NULL;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L14_unpacking_done;
          __pyx_L13_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(18, 192, __pyx_L1_error)
          __pyx_L14_unpacking_done:;
        }
        __Pyx_DECREF_SET(__pyx_v_o_count, __pyx_t_4);
        __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_o_displ, __pyx_t_5);
        __pyx_t_5 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":191
 *             if is_datatype(o_count):
 *                 (o_count, o_type) = None, o_count
 *             elif is_tuple(o_count) or is_list(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:
 */
      }
      __pyx_L10:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":187
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 *         if nargs == 2:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count) = msg
 *             if is_datatype(o_count):
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":193
 *             elif is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):
 */
    __pyx_t_1 = (__pyx_v_nargs == 3);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":194
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:
 *             (o_buf, o_count, o_type) = msg             # <<<<<<<<<<<<<<
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 3)) {
          if (size > 3) __Pyx_RaiseTooManyValuesError(3);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(18, 194, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
        } else {
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 194, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 194, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 194, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        Py_ssize_t index = -1;
        __pyx_t_9 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 194, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
        index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_9); if (unlikely(!__pyx_t_5)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 2; __pyx_t_6 = __pyx_t_7(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_9), 3) < 0) __PYX_ERR(18, 194, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L16_unpacking_done;
        __pyx_L15_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(18, 194, __pyx_L1_error)
        __pyx_L16_unpacking_done:;
      }
      __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_count, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_type, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":195
 *         elif nargs == 3:
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:
 */
      __pyx_t_2 = (PyTuple_Check(__pyx_v_o_count) != 0);
      if (!__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L18_bool_binop_done;
      }
      __pyx_t_2 = (PyList_Check(__pyx_v_o_count) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L18_bool_binop_done:;
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":196
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count             # <<<<<<<<<<<<<<
 *         elif nargs == 4:
 *             (o_buf, o_count, o_displ, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_count))) || (PyList_CheckExact(__pyx_v_o_count))) {
          PyObject* sequence = __pyx_v_o_count;
          Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(18, 196, __pyx_L1_error)
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_4);
          #else
          __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 196, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 196, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          Py_ssize_t index = -1;
          __pyx_t_5 = PyObject_GetIter(__pyx_v_o_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 196, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5);
          index = 0; __pyx_t_6 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_6)) goto __pyx_L20_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L20_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_5), 2) < 0) __PYX_ERR(18, 196, __pyx_L1_error)
          __pyx_t_7 = NULL;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          goto __pyx_L21_unpacking_done;
          __pyx_L20_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_7 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(18, 196, __pyx_L1_error)
          __pyx_L21_unpacking_done:;
        }
        __Pyx_DECREF_SET(__pyx_v_o_count, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_DECREF_SET(__pyx_v_o_displ, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":195
 *         elif nargs == 3:
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):             # <<<<<<<<<<<<<<
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":193
 *             elif is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 3:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count, o_type) = msg
 *             if is_tuple(o_count) or is_list(o_count):
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":197
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 */
    __pyx_t_1 = (__pyx_v_nargs == 4);
    if (likely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":198
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:
 *             (o_buf, o_count, o_displ, o_type) = msg             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 4)) {
          if (size > 4) __Pyx_RaiseTooManyValuesError(4);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(18, 198, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); 
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 3); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_5 = PyList_GET_ITEM(sequence, 2); 
          __pyx_t_9 = PyList_GET_ITEM(sequence, 3); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_9);
        #else
        {
          Py_ssize_t i;
          PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_6,&__pyx_t_5,&__pyx_t_9};
          for (i=0; i < 4; i++) {
            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(18, 198, __pyx_L1_error)
            __Pyx_GOTREF(item);
            *(temps[i]) = item;
          }
        }
        #endif
      } else {
        Py_ssize_t index = -1;
        PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_6,&__pyx_t_5,&__pyx_t_9};
        __pyx_t_10 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 198, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_10);
        for (index=0; index < 4; index++) {
          PyObject* item = __pyx_t_7(__pyx_t_10); if (unlikely(!item)) goto __pyx_L22_unpacking_failed;
          __Pyx_GOTREF(item);
          *(temps[index]) = item;
        }
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 4) < 0) __PYX_ERR(18, 198, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L23_unpacking_done;
        __pyx_L22_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(18, 198, __pyx_L1_error)
        __pyx_L23_unpacking_done:;
      }
      __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_count, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_displ, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_type, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":197
 *             if is_tuple(o_count) or is_list(o_count):
 *                 (o_count, o_displ) = o_count
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":200
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg
 */
    /*else*/ {
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 200, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(18, 200, __pyx_L1_error)
    }
    __pyx_L7:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":185
 *     if is_buffer(msg):
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):             # <<<<<<<<<<<<<<
 *         nargs = len(msg)
 *         if nargs == 2:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":201
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 *     elif is_dlpack_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_cai_buffer(msg):
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_dlpack_buffer(__pyx_v_msg) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":202
 *             raise ValueError("message: expecting 2 to 4 items")
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     elif is_cai_buffer(msg):
 *         o_buf = msg
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_v_msg);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":201
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 *     elif is_dlpack_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_cai_buffer(msg):
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":203
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg
 *     elif is_cai_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     else:
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_cai_buffer(__pyx_v_msg) != 0);
  if (likely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":204
 *         o_buf = msg
 *     elif is_cai_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_v_msg);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":203
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg
 *     elif is_cai_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":206
 *         o_buf = msg
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 */
  /*else*/ {
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_Raise(__pyx_t_9, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __PYX_ERR(18, 206, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":208
 *         raise TypeError("message: expecting buffer or list/tuple")
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 */
  __pyx_v_baddr = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":209
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 *     cdef MPI_Count bsize = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 */
  __pyx_v_bsize = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":210
 *     cdef void *baddr = NULL
 *     cdef MPI_Count bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 *                                       &baddr, &bsize, &btype)
 */
  __pyx_v_btype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":211
 *     cdef MPI_Count bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,             # <<<<<<<<<<<<<<
 *                                       &baddr, &bsize, &btype)
 *     # buffer: count and displacement
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_basic(__pyx_v_o_buf, __pyx_v_o_type, __pyx_v_readonly, (&__pyx_v_baddr), (&__pyx_v_bsize), (&__pyx_v_btype))); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":214
 *                                       &baddr, &bsize, &btype)
 *     # buffer: count and displacement
 *     cdef MPI_Count count = 0  # number of datatype entries             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  displ = 0  # from base buffer, in datatype entries
 *     cdef MPI_Count extent = 0, lb = 0  # datatype extent
 */
  __pyx_v_count = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":215
 *     # buffer: count and displacement
 *     cdef MPI_Count count = 0  # number of datatype entries
 *     cdef MPI_Aint  displ = 0  # from base buffer, in datatype entries             # <<<<<<<<<<<<<<
 *     cdef MPI_Count extent = 0, lb = 0  # datatype extent
 *     cdef MPI_Count length = bsize      # in bytes
 */
  __pyx_v_displ = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":216
 *     cdef MPI_Count count = 0  # number of datatype entries
 *     cdef MPI_Aint  displ = 0  # from base buffer, in datatype entries
 *     cdef MPI_Count extent = 0, lb = 0  # datatype extent             # <<<<<<<<<<<<<<
 *     cdef MPI_Count length = bsize      # in bytes
 *     cdef MPI_Aint  offset = 0          # from base buffer, in bytes
 */
  __pyx_v_extent = 0;
  __pyx_v_lb = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":217
 *     cdef MPI_Aint  displ = 0  # from base buffer, in datatype entries
 *     cdef MPI_Count extent = 0, lb = 0  # datatype extent
 *     cdef MPI_Count length = bsize      # in bytes             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  offset = 0          # from base buffer, in bytes
 *     if o_displ is not None:
 */
  __pyx_v_length = __pyx_v_bsize;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":218
 *     cdef MPI_Count extent = 0, lb = 0  # datatype extent
 *     cdef MPI_Count length = bsize      # in bytes
 *     cdef MPI_Aint  offset = 0          # from base buffer, in bytes             # <<<<<<<<<<<<<<
 *     if o_displ is not None:
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)
 */
  __pyx_v_offset = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":219
 *     cdef MPI_Count length = bsize      # in bytes
 *     cdef MPI_Aint  offset = 0          # from base buffer, in bytes
 *     if o_displ is not None:             # <<<<<<<<<<<<<<
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)
 *         if displ < 0:
 */
  __pyx_t_1 = (__pyx_v_o_displ != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":220
 *     cdef MPI_Aint  offset = 0          # from base buffer, in bytes
 *     if o_displ is not None:
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)             # <<<<<<<<<<<<<<
 *         if displ < 0:
 *             raise ValueError(
 */
    __pyx_t_9 = PyNumber_Index(__pyx_v_o_displ); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyInt_As_MPI_Aint(__pyx_t_9); if (unlikely((__pyx_t_11 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(18, 220, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_displ = ((MPI_Aint)__pyx_t_11);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":221
 *     if o_displ is not None:
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)
 *         if displ < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: negative displacement {displ}")
 */
    __pyx_t_1 = (__pyx_v_displ < 0);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":223
 *         if displ < 0:
 *             raise ValueError(
 *                 f"message: negative displacement {displ}")             # <<<<<<<<<<<<<<
 *         if displ > 0:
 *             if btype == MPI_DATATYPE_NULL:
 */
      __pyx_t_9 = __Pyx_PyInt_From_MPI_Aint(__pyx_v_displ); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 223, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 223, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_kp_u_message_negative_displacement, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 223, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":222
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)
 *         if displ < 0:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"message: negative displacement {displ}")
 *         if displ > 0:
 */
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(18, 222, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":221
 *     if o_displ is not None:
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)
 *         if displ < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: negative displacement {displ}")
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":224
 *             raise ValueError(
 *                 f"message: negative displacement {displ}")
 *         if displ > 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
 */
    __pyx_t_1 = (__pyx_v_displ > 0);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":225
 *                 f"message: negative displacement {displ}")
 *         if displ > 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "
 */
      __pyx_t_1 = (__pyx_v_btype == MPI_DATATYPE_NULL);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":226
 *         if displ > 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot handle displacement, "
 *                     f"datatype is null")
 */
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 226, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(18, 226, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":225
 *                 f"message: negative displacement {displ}")
 *         if displ > 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":229
 *                     f"message: cannot handle displacement, "
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             if extent <= 0:
 *                 raise ValueError(
 */
      __pyx_t_8 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_btype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(18, 229, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":230
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "
 */
      __pyx_t_1 = (__pyx_v_extent <= 0);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":232
 *             if extent <= 0:
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "             # <<<<<<<<<<<<<<
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if displ*extent > length:
 */
        __pyx_t_5 = PyTuple_New(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 232, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = 0;
        __pyx_t_12 = 127;
        __Pyx_INCREF(__pyx_kp_u_message_cannot_handle_displaceme_2);
        __pyx_t_3 += 53;
        __Pyx_GIVEREF(__pyx_kp_u_message_cannot_handle_displaceme_2);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_message_cannot_handle_displaceme_2);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":233
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *             if displ*extent > length:
 *                 raise ValueError(
 */
        __pyx_t_9 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 233, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 233, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u_lb);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_lb);
        PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_lb);
        __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 233, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 233, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_9);
        __pyx_t_9 = 0;
        __Pyx_INCREF(__pyx_kp_u_ub);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_ub);
        PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_kp_u_ub);
        __pyx_t_9 = __Pyx_PyInt_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 233, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 233, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u__17);
        __pyx_t_3 += 1;
        __Pyx_GIVEREF(__pyx_kp_u__17);
        PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_kp_u__17);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":232
 *             if extent <= 0:
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "             # <<<<<<<<<<<<<<
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if displ*extent > length:
 */
        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 7, __pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 232, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":231
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot handle displacement, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 */
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 231, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(18, 231, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":230
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot handle displacement, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":234
 *                     f"message: cannot handle displacement, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if displ*extent > length:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: displacement {displ} out of bounds, "
 */
      __pyx_t_1 = ((__pyx_v_displ * __pyx_v_extent) > __pyx_v_length);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":236
 *             if displ*extent > length:
 *                 raise ValueError(
 *                     f"message: displacement {displ} out of bounds, "             # <<<<<<<<<<<<<<
 *                     f"number of datatype entries {length//extent}")
 *             offset = <MPI_Aint> (displ * extent)
 */
        __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 236, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = 0;
        __pyx_t_12 = 127;
        __Pyx_INCREF(__pyx_kp_u_message_displacement);
        __pyx_t_3 += 22;
        __Pyx_GIVEREF(__pyx_kp_u_message_displacement);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_message_displacement);
        __pyx_t_6 = __Pyx_PyInt_From_MPI_Aint(__pyx_v_displ); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 236, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 236, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_9);
        __pyx_t_9 = 0;
        __Pyx_INCREF(__pyx_kp_u_out_of_bounds_number_of_datatyp);
        __pyx_t_3 += 43;
        __Pyx_GIVEREF(__pyx_kp_u_out_of_bounds_number_of_datatyp);
        PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_out_of_bounds_number_of_datatyp);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":237
 *                 raise ValueError(
 *                     f"message: displacement {displ} out of bounds, "
 *                     f"number of datatype entries {length//extent}")             # <<<<<<<<<<<<<<
 *             offset = <MPI_Aint> (displ * extent)
 *             length -= offset
 */
        __pyx_t_9 = __Pyx_PyInt_From_MPI_Count((__pyx_v_length / __pyx_v_extent)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 237, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 237, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":236
 *             if displ*extent > length:
 *                 raise ValueError(
 *                     f"message: displacement {displ} out of bounds, "             # <<<<<<<<<<<<<<
 *                     f"number of datatype entries {length//extent}")
 *             offset = <MPI_Aint> (displ * extent)
 */
        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 4, __pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 236, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":235
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if displ*extent > length:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: displacement {displ} out of bounds, "
 *                     f"number of datatype entries {length//extent}")
 */
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 235, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(18, 235, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":234
 *                     f"message: cannot handle displacement, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if displ*extent > length:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: displacement {displ} out of bounds, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":238
 *                     f"message: displacement {displ} out of bounds, "
 *                     f"number of datatype entries {length//extent}")
 *             offset = <MPI_Aint> (displ * extent)             # <<<<<<<<<<<<<<
 *             length -= offset
 *     if o_count is not None:
 */
      __pyx_v_offset = ((MPI_Aint)(__pyx_v_displ * __pyx_v_extent));

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":239
 *                     f"number of datatype entries {length//extent}")
 *             offset = <MPI_Aint> (displ * extent)
 *             length -= offset             # <<<<<<<<<<<<<<
 *     if o_count is not None:
 *         count = <MPI_Count> PyNumber_Index(o_count)
 */
      __pyx_v_length = (__pyx_v_length - __pyx_v_offset);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":224
 *             raise ValueError(
 *                 f"message: negative displacement {displ}")
 *         if displ > 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":219
 *     cdef MPI_Count length = bsize      # in bytes
 *     cdef MPI_Aint  offset = 0          # from base buffer, in bytes
 *     if o_displ is not None:             # <<<<<<<<<<<<<<
 *         displ = <MPI_Aint> PyNumber_Index(o_displ)
 *         if displ < 0:
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":240
 *             offset = <MPI_Aint> (displ * extent)
 *             length -= offset
 *     if o_count is not None:             # <<<<<<<<<<<<<<
 *         count = <MPI_Count> PyNumber_Index(o_count)
 *         if count < 0:
 */
  __pyx_t_1 = (__pyx_v_o_count != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":241
 *             length -= offset
 *     if o_count is not None:
 *         count = <MPI_Count> PyNumber_Index(o_count)             # <<<<<<<<<<<<<<
 *         if count < 0:
 *             raise ValueError(
 */
    __pyx_t_5 = PyNumber_Index(__pyx_v_o_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_13 = __Pyx_PyInt_As_MPI_Count(__pyx_t_5); if (unlikely((__pyx_t_13 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(18, 241, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_count = ((MPI_Count)__pyx_t_13);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":242
 *     if o_count is not None:
 *         count = <MPI_Count> PyNumber_Index(o_count)
 *         if count < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: negative count {count}")
 */
    __pyx_t_1 = (__pyx_v_count < 0);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":244
 *         if count < 0:
 *             raise ValueError(
 *                 f"message: negative count {count}")             # <<<<<<<<<<<<<<
 *         if count > 0 and o_buf is None:
 *             raise ValueError(
 */
      __pyx_t_5 = __Pyx_PyInt_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_message_negative_count, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":243
 *         count = <MPI_Count> PyNumber_Index(o_count)
 *         if count < 0:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"message: negative count {count}")
 *         if count > 0 and o_buf is None:
 */
      __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 243, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(18, 243, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":242
 *     if o_count is not None:
 *         count = <MPI_Count> PyNumber_Index(o_count)
 *         if count < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: negative count {count}")
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":245
 *             raise ValueError(
 *                 f"message: negative count {count}")
 *         if count > 0 and o_buf is None:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: buffer is None but count is {count}")
 */
    __pyx_t_2 = (__pyx_v_count > 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L33_bool_binop_done;
    }
    __pyx_t_2 = (__pyx_v_o_buf == Py_None);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L33_bool_binop_done:;
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":247
 *         if count > 0 and o_buf is None:
 *             raise ValueError(
 *                 f"message: buffer is None but count is {count}")             # <<<<<<<<<<<<<<
 *     elif length > 0:
 *         if extent == 0:
 */
      __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_message_buffer_is_None_but_count, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":246
 *                 f"message: negative count {count}")
 *         if count > 0 and o_buf is None:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"message: buffer is None but count is {count}")
 *     elif length > 0:
 */
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(18, 246, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":245
 *             raise ValueError(
 *                 f"message: negative count {count}")
 *         if count > 0 and o_buf is None:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: buffer is None but count is {count}")
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":240
 *             offset = <MPI_Aint> (displ * extent)
 *             length -= offset
 *     if o_count is not None:             # <<<<<<<<<<<<<<
 *         count = <MPI_Count> PyNumber_Index(o_count)
 *         if count < 0:
 */
    goto __pyx_L30;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":248
 *             raise ValueError(
 *                 f"message: buffer is None but count is {count}")
 *     elif length > 0:             # <<<<<<<<<<<<<<
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:
 */
  __pyx_t_1 = (__pyx_v_length > 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":249
 *                 f"message: buffer is None but count is {count}")
 *     elif length > 0:
 *         if extent == 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
 */
    __pyx_t_1 = (__pyx_v_extent == 0);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":250
 *     elif length > 0:
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      __pyx_t_1 = (__pyx_v_btype == MPI_DATATYPE_NULL);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":251
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"datatype is null")
 */
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 251, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(18, 251, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":250
 *     elif length > 0:
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":254
 *                     f"message: cannot infer count, "
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             if extent <= 0:
 *                 raise ValueError(
 */
      __pyx_t_8 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_btype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(18, 254, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":255
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      __pyx_t_1 = (__pyx_v_extent <= 0);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":257
 *             if extent <= 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if (length % extent) != 0:
 */
        __pyx_t_5 = PyTuple_New(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 257, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = 0;
        __pyx_t_12 = 127;
        __Pyx_INCREF(__pyx_kp_u_message_cannot_infer_count_datat_2);
        __pyx_t_3 += 45;
        __Pyx_GIVEREF(__pyx_kp_u_message_cannot_infer_count_datat_2);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_message_cannot_infer_count_datat_2);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":258
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *         if (length % extent) != 0:
 *             raise ValueError(
 */
        __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_9);
        __pyx_t_9 = 0;
        __Pyx_INCREF(__pyx_kp_u_lb);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_lb);
        PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_lb);
        __pyx_t_9 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u_ub);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_ub);
        PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_kp_u_ub);
        __pyx_t_6 = __Pyx_PyInt_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_9);
        __pyx_t_9 = 0;
        __Pyx_INCREF(__pyx_kp_u__17);
        __pyx_t_3 += 1;
        __Pyx_GIVEREF(__pyx_kp_u__17);
        PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_kp_u__17);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":257
 *             if extent <= 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if (length % extent) != 0:
 */
        __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_5, 7, __pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 257, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":256
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 */
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(18, 256, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":255
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":249
 *                 f"message: buffer is None but count is {count}")
 *     elif length > 0:
 *         if extent == 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":259
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if (length % extent) != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: cannot infer count, "
 */
    __pyx_t_1 = ((__pyx_v_length % __pyx_v_extent) != 0);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":261
 *         if (length % extent) != 0:
 *             raise ValueError(
 *                 f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                 f"buffer length {length} is not a multiple of "
 *                 f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 */
      __pyx_t_5 = PyTuple_New(9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 261, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = 0;
      __pyx_t_12 = 127;
      __Pyx_INCREF(__pyx_kp_u_message_cannot_infer_count_buffe);
      __pyx_t_3 += 43;
      __Pyx_GIVEREF(__pyx_kp_u_message_cannot_infer_count_buffe);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_message_cannot_infer_count_buffe);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":262
 *             raise ValueError(
 *                 f"message: cannot infer count, "
 *                 f"buffer length {length} is not a multiple of "             # <<<<<<<<<<<<<<
 *                 f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if blocks < 2:
 */
      __pyx_t_9 = __Pyx_PyInt_From_MPI_Count(__pyx_v_length); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 262, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 262, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_12;
      __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_kp_u_is_not_a_multiple_of_datatype_e);
      __pyx_t_3 += 38;
      __Pyx_GIVEREF(__pyx_kp_u_is_not_a_multiple_of_datatype_e);
      PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_is_not_a_multiple_of_datatype_e);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":263
 *                 f"message: cannot infer count, "
 *                 f"buffer length {length} is not a multiple of "
 *                 f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *         if blocks < 2:
 *             count = length // extent
 */
      __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_12;
      __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_9);
      __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_kp_u_lb);
      __pyx_t_3 += 5;
      __Pyx_GIVEREF(__pyx_kp_u_lb);
      PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_kp_u_lb);
      __pyx_t_9 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_12;
      __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_INCREF(__pyx_kp_u_ub);
      __pyx_t_3 += 5;
      __Pyx_GIVEREF(__pyx_kp_u_ub);
      PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_kp_u_ub);
      __pyx_t_6 = __Pyx_PyInt_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_12;
      __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_t_9);
      __pyx_t_9 = 0;
      __Pyx_INCREF(__pyx_kp_u__17);
      __pyx_t_3 += 1;
      __Pyx_GIVEREF(__pyx_kp_u__17);
      PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_kp_u__17);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":261
 *         if (length % extent) != 0:
 *             raise ValueError(
 *                 f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                 f"buffer length {length} is not a multiple of "
 *                 f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 */
      __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_5, 9, __pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 261, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":260
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if (length % extent) != 0:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"message: cannot infer count, "
 *                 f"buffer length {length} is not a multiple of "
 */
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 260, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(18, 260, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":259
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if (length % extent) != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"message: cannot infer count, "
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":264
 *                 f"buffer length {length} is not a multiple of "
 *                 f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if blocks < 2:             # <<<<<<<<<<<<<<
 *             count = length // extent
 *         else:
 */
    __pyx_t_1 = (__pyx_v_blocks < 2);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":265
 *                 f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if blocks < 2:
 *             count = length // extent             # <<<<<<<<<<<<<<
 *         else:
 *             if ((length // extent) % blocks) != 0:
 */
      __pyx_v_count = (__pyx_v_length / __pyx_v_extent);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":264
 *                 f"buffer length {length} is not a multiple of "
 *                 f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *         if blocks < 2:             # <<<<<<<<<<<<<<
 *             count = length // extent
 *         else:
 */
      goto __pyx_L39;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":267
 *             count = length // extent
 *         else:
 *             if ((length // extent) % blocks) != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
    /*else*/ {
      __pyx_t_1 = (((__pyx_v_length / __pyx_v_extent) % __pyx_v_blocks) != 0);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":269
 *             if ((length // extent) % blocks) != 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"number of entries {length//extent} is not a multiple of "
 *                     f"required number of blocks {blocks}")
 */
        __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = 0;
        __pyx_t_12 = 127;
        __Pyx_INCREF(__pyx_kp_u_message_cannot_infer_count_numbe);
        __pyx_t_3 += 47;
        __Pyx_GIVEREF(__pyx_kp_u_message_cannot_infer_count_numbe);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_message_cannot_infer_count_numbe);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":270
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 *                     f"number of entries {length//extent} is not a multiple of "             # <<<<<<<<<<<<<<
 *                     f"required number of blocks {blocks}")
 *             count = (length // extent) // blocks
 */
        __pyx_t_9 = __Pyx_PyInt_From_MPI_Count((__pyx_v_length / __pyx_v_extent)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_12 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_12) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_12;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u_is_not_a_multiple_of_required_n);
        __pyx_t_3 += 48;
        __Pyx_GIVEREF(__pyx_kp_u_is_not_a_multiple_of_required_n);
        PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_is_not_a_multiple_of_required_n);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":271
 *                     f"message: cannot infer count, "
 *                     f"number of entries {length//extent} is not a multiple of "
 *                     f"required number of blocks {blocks}")             # <<<<<<<<<<<<<<
 *             count = (length // extent) // blocks
 *     # return collected message data
 */
        __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_blocks, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 271, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_6);
        __pyx_t_6 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":269
 *             if ((length // extent) % blocks) != 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"number of entries {length//extent} is not a multiple of "
 *                     f"required number of blocks {blocks}")
 */
        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_5, 4, __pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":268
 *         else:
 *             if ((length // extent) % blocks) != 0:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"number of entries {length//extent} is not a multiple of "
 */
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(18, 268, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":267
 *             count = length // extent
 *         else:
 *             if ((length // extent) % blocks) != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":272
 *                     f"number of entries {length//extent} is not a multiple of "
 *                     f"required number of blocks {blocks}")
 *             count = (length // extent) // blocks             # <<<<<<<<<<<<<<
 *     # return collected message data
 *     m.count = o_count if o_count is not None else count
 */
      __pyx_v_count = ((__pyx_v_length / __pyx_v_extent) / __pyx_v_blocks);
    }
    __pyx_L39:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":248
 *             raise ValueError(
 *                 f"message: buffer is None but count is {count}")
 *     elif length > 0:             # <<<<<<<<<<<<<<
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:
 */
  }
  __pyx_L30:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":274
 *             count = (length // extent) // blocks
 *     # return collected message data
 *     m.count = o_count if o_count is not None else count             # <<<<<<<<<<<<<<
 *     m.displ = o_displ if o_displ is not None else displ
 *     _addr[0]  = <void*>(<char*>baddr + offset)
 */
  __pyx_t_1 = (__pyx_v_o_count != Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_v_o_count);
    __pyx_t_5 = __pyx_v_o_count;
  } else {
    __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_t_6;
    __pyx_t_6 = 0;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_m->count);
  __Pyx_DECREF(__pyx_v_m->count);
  __pyx_v_m->count = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":275
 *     # return collected message data
 *     m.count = o_count if o_count is not None else count
 *     m.displ = o_displ if o_displ is not None else displ             # <<<<<<<<<<<<<<
 *     _addr[0]  = <void*>(<char*>baddr + offset)
 *     _count[0] = count
 */
  __pyx_t_1 = (__pyx_v_o_displ != Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_v_o_displ);
    __pyx_t_5 = __pyx_v_o_displ;
  } else {
    __pyx_t_6 = __Pyx_PyInt_From_MPI_Aint(__pyx_v_displ); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __pyx_t_6;
    __pyx_t_6 = 0;
  }
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_m->displ);
  __Pyx_DECREF(__pyx_v_m->displ);
  __pyx_v_m->displ = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":276
 *     m.count = o_count if o_count is not None else count
 *     m.displ = o_displ if o_displ is not None else displ
 *     _addr[0]  = <void*>(<char*>baddr + offset)             # <<<<<<<<<<<<<<
 *     _count[0] = count
 *     _type[0]  = btype
 */
  (__pyx_v__addr[0]) = ((void *)(((char *)__pyx_v_baddr) + __pyx_v_offset));

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":277
 *     m.displ = o_displ if o_displ is not None else displ
 *     _addr[0]  = <void*>(<char*>baddr + offset)
 *     _count[0] = count             # <<<<<<<<<<<<<<
 *     _type[0]  = btype
 *     return m
 */
  (__pyx_v__count[0]) = __pyx_v_count;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":278
 *     _addr[0]  = <void*>(<char*>baddr + offset)
 *     _count[0] = count
 *     _type[0]  = btype             # <<<<<<<<<<<<<<
 *     return m
 * 
 */
  (__pyx_v__type[0]) = __pyx_v_btype;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":279
 *     _count[0] = count
 *     _type[0]  = btype
 *     return m             # <<<<<<<<<<<<<<
 * 
 * cdef _p_message message_vector(object msg,
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __pyx_r = __pyx_v_m;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":162
 *     return m
 * 
 * cdef _p_message message_simple(object msg,             # <<<<<<<<<<<<<<
 *                                int readonly,
 *                                int rank,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.message_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o_buf);
  __Pyx_XDECREF(__pyx_v_o_count);
  __Pyx_XDECREF(__pyx_v_o_displ);
  __Pyx_XDECREF(__pyx_v_o_type);
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":281
 *     return m
 * 
 * cdef _p_message message_vector(object msg,             # <<<<<<<<<<<<<<
 *                                int readonly,
 *                                int rank,
 */

static struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_f_6mpi4py_3MPI_message_vector(PyObject *__pyx_v_msg, int __pyx_v_readonly, int __pyx_v_rank, int __pyx_v_blocks, void **__pyx_v__addr, MPI_Count **__pyx_v__counts, MPI_Aint **__pyx_v__displs, MPI_Datatype *__pyx_v__type) {
  Py_ssize_t __pyx_v_nargs;
  PyObject *__pyx_v_o_buf = 0;
  PyObject *__pyx_v_o_counts = 0;
  PyObject *__pyx_v_o_displs = 0;
  PyObject *__pyx_v_o_type = 0;
  void *__pyx_v_baddr;
  MPI_Count __pyx_v_bsize;
  MPI_Datatype __pyx_v_btype;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_v_m = 0;
  int __pyx_v_i;
  MPI_Count *__pyx_v_counts;
  MPI_Aint *__pyx_v_displs;
  MPI_Count __pyx_v_extent;
  MPI_Count __pyx_v_lb;
  MPI_Aint __pyx_v_avalue;
  MPI_Count __pyx_v_cvalue;
  MPI_Count __pyx_v_csize;
  struct __pyx_obj_6mpi4py_3MPI__p_message *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  Py_UCS4 __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  MPI_Count __pyx_t_14;
  MPI_Aint __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_vector", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":292
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]   = NULL
 *         _counts[0] = NULL
 */
  __pyx_t_1 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":293
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]   = NULL             # <<<<<<<<<<<<<<
 *         _counts[0] = NULL
 *         _displs[0] = NULL
 */
    (__pyx_v__addr[0]) = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":294
 *     if rank == MPI_PROC_NULL:
 *         _addr[0]   = NULL
 *         _counts[0] = NULL             # <<<<<<<<<<<<<<
 *         _displs[0] = NULL
 *         _type[0]   = MPI_BYTE
 */
    (__pyx_v__counts[0]) = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":295
 *         _addr[0]   = NULL
 *         _counts[0] = NULL
 *         _displs[0] = NULL             # <<<<<<<<<<<<<<
 *         _type[0]   = MPI_BYTE
 *         return None
 */
    (__pyx_v__displs[0]) = NULL;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":296
 *         _counts[0] = NULL
 *         _displs[0] = NULL
 *         _type[0]   = MPI_BYTE             # <<<<<<<<<<<<<<
 *         return None
 *     # unpack message list/tuple
 */
    (__pyx_v__type[0]) = MPI_BYTE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":297
 *         _displs[0] = NULL
 *         _type[0]   = MPI_BYTE
 *         return None             # <<<<<<<<<<<<<<
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 */
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":292
 *                                ):
 *     # special-case PROC_NULL target rank
 *     if rank == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         _addr[0]   = NULL
 *         _counts[0] = NULL
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":299
 *         return None
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0             # <<<<<<<<<<<<<<
 *     cdef object o_buf    = None
 *     cdef object o_counts = None
 */
  __pyx_v_nargs = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":300
 *     # unpack message list/tuple
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf    = None             # <<<<<<<<<<<<<<
 *     cdef object o_counts = None
 *     cdef object o_displs = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_buf = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":301
 *     cdef Py_ssize_t nargs = 0
 *     cdef object o_buf    = None
 *     cdef object o_counts = None             # <<<<<<<<<<<<<<
 *     cdef object o_displs = None
 *     cdef object o_type   = None
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_counts = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":302
 *     cdef object o_buf    = None
 *     cdef object o_counts = None
 *     cdef object o_displs = None             # <<<<<<<<<<<<<<
 *     cdef object o_type   = None
 *     if is_buffer(msg):
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_displs = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":303
 *     cdef object o_counts = None
 *     cdef object o_displs = None
 *     cdef object o_type   = None             # <<<<<<<<<<<<<<
 *     if is_buffer(msg):
 *         o_buf = msg
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_o_type = Py_None;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":304
 *     cdef object o_displs = None
 *     cdef object o_type   = None
 *     if is_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_buffer(__pyx_v_msg) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":305
 *     cdef object o_type   = None
 *     if is_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_v_msg);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":304
 *     cdef object o_displs = None
 *     cdef object o_type   = None
 *     if is_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":306
 *     if is_buffer(msg):
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):             # <<<<<<<<<<<<<<
 *         nargs = len(msg)
 *         if nargs == 2:
 */
  __pyx_t_2 = (PyList_Check(__pyx_v_msg) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (PyTuple_Check(__pyx_v_msg) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":307
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)             # <<<<<<<<<<<<<<
 *         if nargs == 2:
 *             (o_buf, o_counts) = msg
 */
    __pyx_t_3 = PyObject_Length(__pyx_v_msg); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(18, 307, __pyx_L1_error)
    __pyx_v_nargs = __pyx_t_3;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":308
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 *         if nargs == 2:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts) = msg
 *             if is_datatype(o_counts):
 */
    __pyx_t_1 = (__pyx_v_nargs == 2);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":309
 *         nargs = len(msg)
 *         if nargs == 2:
 *             (o_buf, o_counts) = msg             # <<<<<<<<<<<<<<
 *             if is_datatype(o_counts):
 *                 (o_counts, o_type) = None, o_counts
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(18, 309, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        #else
        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 309, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 309, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        Py_ssize_t index = -1;
        __pyx_t_6 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 309, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
        index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(18, 309, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L9_unpacking_done;
        __pyx_L8_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(18, 309, __pyx_L1_error)
        __pyx_L9_unpacking_done:;
      }
      __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":310
 *         if nargs == 2:
 *             (o_buf, o_counts) = msg
 *             if is_datatype(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):
 */
      __pyx_t_8 = __pyx_f_6mpi4py_3MPI_is_datatype(__pyx_v_o_counts); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(18, 310, __pyx_L1_error)
      __pyx_t_1 = (__pyx_t_8 != 0);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":311
 *             (o_buf, o_counts) = msg
 *             if is_datatype(o_counts):
 *                 (o_counts, o_type) = None, o_counts             # <<<<<<<<<<<<<<
 *             elif is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 */
        __pyx_t_5 = Py_None;
        __Pyx_INCREF(__pyx_t_5);
        __pyx_t_4 = __pyx_v_o_counts;
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_5);
        __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_o_type, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":310
 *         if nargs == 2:
 *             (o_buf, o_counts) = msg
 *             if is_datatype(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):
 */
        goto __pyx_L10;
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":312
 *             if is_datatype(o_counts):
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:
 */
      __pyx_t_1 = (PyTuple_Check(__pyx_v_o_counts) != 0);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":313
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts             # <<<<<<<<<<<<<<
 *         elif nargs == 3:
 *             (o_buf, o_counts, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_counts))) || (PyList_CheckExact(__pyx_v_o_counts))) {
          PyObject* sequence = __pyx_v_o_counts;
          Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(18, 313, __pyx_L1_error)
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          #else
          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 313, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 313, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        } else {
          Py_ssize_t index = -1;
          __pyx_t_6 = PyObject_GetIter(__pyx_v_o_counts); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 313, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_6);
          index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L11_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L11_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_5);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(18, 313, __pyx_L1_error)
          __pyx_t_7 = NULL;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L12_unpacking_done;
          __pyx_L11_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(18, 313, __pyx_L1_error)
          __pyx_L12_unpacking_done:;
        }
        __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_4);
        __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_5);
        __pyx_t_5 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":312
 *             if is_datatype(o_counts):
 *                 (o_counts, o_type) = None, o_counts
 *             elif is_tuple(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:
 */
      }
      __pyx_L10:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":308
 *     elif is_list(msg) or is_tuple(msg):
 *         nargs = len(msg)
 *         if nargs == 2:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts) = msg
 *             if is_datatype(o_counts):
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":314
 *             elif is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):
 */
    __pyx_t_1 = (__pyx_v_nargs == 3);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":315
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:
 *             (o_buf, o_counts, o_type) = msg             # <<<<<<<<<<<<<<
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 3)) {
          if (size > 3) __Pyx_RaiseTooManyValuesError(3);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(18, 315, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
        } else {
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        Py_ssize_t index = -1;
        __pyx_t_9 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 315, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
        index = 0; __pyx_t_5 = __pyx_t_7(__pyx_t_9); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 2; __pyx_t_6 = __pyx_t_7(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L13_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_9), 3) < 0) __PYX_ERR(18, 315, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L14_unpacking_done;
        __pyx_L13_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(18, 315, __pyx_L1_error)
        __pyx_L14_unpacking_done:;
      }
      __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_type, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":316
 *         elif nargs == 3:
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:
 */
      __pyx_t_1 = (PyTuple_Check(__pyx_v_o_counts) != 0);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":317
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts             # <<<<<<<<<<<<<<
 *         elif nargs == 4:
 *             (o_buf, o_counts, o_displs, o_type) = msg
 */
        if ((likely(PyTuple_CheckExact(__pyx_v_o_counts))) || (PyList_CheckExact(__pyx_v_o_counts))) {
          PyObject* sequence = __pyx_v_o_counts;
          Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(18, 317, __pyx_L1_error)
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_4);
          #else
          __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 317, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 317, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          Py_ssize_t index = -1;
          __pyx_t_5 = PyObject_GetIter(__pyx_v_o_counts); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 317, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5);
          index = 0; __pyx_t_6 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_6)) goto __pyx_L16_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          index = 1; __pyx_t_4 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L16_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_5), 2) < 0) __PYX_ERR(18, 317, __pyx_L1_error)
          __pyx_t_7 = NULL;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          goto __pyx_L17_unpacking_done;
          __pyx_L16_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_7 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(18, 317, __pyx_L1_error)
          __pyx_L17_unpacking_done:;
        }
        __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":316
 *         elif nargs == 3:
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):             # <<<<<<<<<<<<<<
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":314
 *             elif is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 3:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts, o_type) = msg
 *             if is_tuple(o_counts):
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":318
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts, o_displs, o_type) = msg
 *         else:
 */
    __pyx_t_1 = (__pyx_v_nargs == 4);
    if (likely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":319
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:
 *             (o_buf, o_counts, o_displs, o_type) = msg             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
        PyObject* sequence = __pyx_v_msg;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 4)) {
          if (size > 4) __Pyx_RaiseTooManyValuesError(4);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(18, 319, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); 
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 3); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_5 = PyList_GET_ITEM(sequence, 2); 
          __pyx_t_9 = PyList_GET_ITEM(sequence, 3); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_9);
        #else
        {
          Py_ssize_t i;
          PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_6,&__pyx_t_5,&__pyx_t_9};
          for (i=0; i < 4; i++) {
            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(18, 319, __pyx_L1_error)
            __Pyx_GOTREF(item);
            *(temps[i]) = item;
          }
        }
        #endif
      } else {
        Py_ssize_t index = -1;
        PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_6,&__pyx_t_5,&__pyx_t_9};
        __pyx_t_10 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 319, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_10);
        for (index=0; index < 4; index++) {
          PyObject* item = __pyx_t_7(__pyx_t_10); if (unlikely(!item)) goto __pyx_L18_unpacking_failed;
          __Pyx_GOTREF(item);
          *(temps[index]) = item;
        }
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_10), 4) < 0) __PYX_ERR(18, 319, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L19_unpacking_done;
        __pyx_L18_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(18, 319, __pyx_L1_error)
        __pyx_L19_unpacking_done:;
      }
      __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_o_type, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":318
 *             if is_tuple(o_counts):
 *                 (o_counts, o_displs) = o_counts
 *         elif nargs == 4:             # <<<<<<<<<<<<<<
 *             (o_buf, o_counts, o_displs, o_type) = msg
 *         else:
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":321
 *             (o_buf, o_counts, o_displs, o_type) = msg
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg
 */
    /*else*/ {
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(18, 321, __pyx_L1_error)
    }
    __pyx_L7:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":306
 *     if is_buffer(msg):
 *         o_buf = msg
 *     elif is_list(msg) or is_tuple(msg):             # <<<<<<<<<<<<<<
 *         nargs = len(msg)
 *         if nargs == 2:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":322
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 *     elif is_dlpack_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_cai_buffer(msg):
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_dlpack_buffer(__pyx_v_msg) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":323
 *             raise ValueError("message: expecting 2 to 4 items")
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     elif is_cai_buffer(msg):
 *         o_buf = msg
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_v_msg);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":322
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")
 *     elif is_dlpack_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     elif is_cai_buffer(msg):
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":324
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg
 *     elif is_cai_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     else:
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_cai_buffer(__pyx_v_msg) != 0);
  if (likely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":325
 *         o_buf = msg
 *     elif is_cai_buffer(msg):
 *         o_buf = msg             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")
 */
    __Pyx_INCREF(__pyx_v_msg);
    __Pyx_DECREF_SET(__pyx_v_o_buf, __pyx_v_msg);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":324
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg
 *     elif is_cai_buffer(msg):             # <<<<<<<<<<<<<<
 *         o_buf = msg
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":327
 *         o_buf = msg
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 */
  /*else*/ {
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_Raise(__pyx_t_9, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __PYX_ERR(18, 327, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":329
 *         raise TypeError("message: expecting buffer or list/tuple")
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 */
  __pyx_v_baddr = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":330
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 *     cdef MPI_Count bsize = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 */
  __pyx_v_bsize = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":331
 *     cdef void *baddr = NULL
 *     cdef MPI_Count bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,
 *                                       &baddr, &bsize, &btype)
 */
  __pyx_v_btype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":332
 *     cdef MPI_Count bsize = 0
 *     cdef MPI_Datatype btype = MPI_DATATYPE_NULL
 *     cdef _p_message m = message_basic(o_buf, o_type, readonly,             # <<<<<<<<<<<<<<
 *                                       &baddr, &bsize, &btype)
 *     # counts and displacements
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_basic(__pyx_v_o_buf, __pyx_v_o_type, __pyx_v_readonly, (&__pyx_v_baddr), (&__pyx_v_bsize), (&__pyx_v_btype))); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":336
 *     # counts and displacements
 *     cdef int i
 *     cdef MPI_Count *counts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *displs = NULL
 *     cdef MPI_Count extent=0, lb=0
 */
  __pyx_v_counts = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":337
 *     cdef int i
 *     cdef MPI_Count *counts = NULL
 *     cdef MPI_Aint  *displs = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count extent=0, lb=0
 *     cdef MPI_Aint  avalue=0
 */
  __pyx_v_displs = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":338
 *     cdef MPI_Count *counts = NULL
 *     cdef MPI_Aint  *displs = NULL
 *     cdef MPI_Count extent=0, lb=0             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  avalue=0
 *     cdef MPI_Count cvalue=0, csize=0
 */
  __pyx_v_extent = 0;
  __pyx_v_lb = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":339
 *     cdef MPI_Aint  *displs = NULL
 *     cdef MPI_Count extent=0, lb=0
 *     cdef MPI_Aint  avalue=0             # <<<<<<<<<<<<<<
 *     cdef MPI_Count cvalue=0, csize=0
 *     if o_counts is None:
 */
  __pyx_v_avalue = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":340
 *     cdef MPI_Count extent=0, lb=0
 *     cdef MPI_Aint  avalue=0
 *     cdef MPI_Count cvalue=0, csize=0             # <<<<<<<<<<<<<<
 *     if o_counts is None:
 *         if bsize > 0:
 */
  __pyx_v_cvalue = 0;
  __pyx_v_csize = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":341
 *     cdef MPI_Aint  avalue=0
 *     cdef MPI_Count cvalue=0, csize=0
 *     if o_counts is None:             # <<<<<<<<<<<<<<
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:
 */
  __pyx_t_1 = (__pyx_v_o_counts == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":342
 *     cdef MPI_Count cvalue=0, csize=0
 *     if o_counts is None:
 *         if bsize > 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
 */
    __pyx_t_1 = (__pyx_v_bsize > 0);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":343
 *     if o_counts is None:
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      __pyx_t_1 = (__pyx_v_btype == MPI_DATATYPE_NULL);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":344
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"datatype is null")
 */
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 344, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_Raise(__pyx_t_9, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __PYX_ERR(18, 344, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":343
 *     if o_counts is None:
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":347
 *                     f"message: cannot infer count, "
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             if extent <= 0:
 *                 raise ValueError(
 */
      __pyx_t_8 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_btype, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(18, 347, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":348
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      __pyx_t_1 = (__pyx_v_extent <= 0);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":350
 *             if extent <= 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if (bsize % extent) != 0:
 */
        __pyx_t_9 = PyTuple_New(7); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 350, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_3 = 0;
        __pyx_t_11 = 127;
        __Pyx_INCREF(__pyx_kp_u_message_cannot_infer_count_datat_2);
        __pyx_t_3 += 45;
        __Pyx_GIVEREF(__pyx_kp_u_message_cannot_infer_count_datat_2);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u_message_cannot_infer_count_datat_2);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":351
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *             if (bsize % extent) != 0:
 *                 raise ValueError(
 */
        __pyx_t_5 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_11;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u_lb);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_lb);
        PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_kp_u_lb);
        __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_11;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_5);
        __pyx_t_5 = 0;
        __Pyx_INCREF(__pyx_kp_u_ub);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_ub);
        PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_kp_u_ub);
        __pyx_t_5 = __Pyx_PyInt_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_11;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u__17);
        __pyx_t_3 += 1;
        __Pyx_GIVEREF(__pyx_kp_u__17);
        PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_kp_u__17);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":350
 *             if extent <= 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if (bsize % extent) != 0:
 */
        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_9, 7, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 350, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":349
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 */
        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_9, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __PYX_ERR(18, 349, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":348
 *                     f"datatype is null")
 *             CHKERR( MPI_Type_get_extent_c(btype, &lb, &extent) )
 *             if extent <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":352
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if (bsize % extent) != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      __pyx_t_1 = ((__pyx_v_bsize % __pyx_v_extent) != 0);
      if (unlikely(__pyx_t_1)) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":354
 *             if (bsize % extent) != 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"buffer length {bsize} is not a multiple of "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 */
        __pyx_t_9 = PyTuple_New(9); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 354, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_3 = 0;
        __pyx_t_11 = 127;
        __Pyx_INCREF(__pyx_kp_u_message_cannot_infer_count_buffe);
        __pyx_t_3 += 43;
        __Pyx_GIVEREF(__pyx_kp_u_message_cannot_infer_count_buffe);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_u_message_cannot_infer_count_buffe);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":355
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 *                     f"buffer length {bsize} is not a multiple of "             # <<<<<<<<<<<<<<
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             csize = bsize // extent
 */
        __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_bsize); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 355, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 355, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_11;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_5);
        __pyx_t_5 = 0;
        __Pyx_INCREF(__pyx_kp_u_is_not_a_multiple_of_datatype_e);
        __pyx_t_3 += 38;
        __Pyx_GIVEREF(__pyx_kp_u_is_not_a_multiple_of_datatype_e);
        PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_kp_u_is_not_a_multiple_of_datatype_e);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":356
 *                     f"message: cannot infer count, "
 *                     f"buffer length {bsize} is not a multiple of "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")             # <<<<<<<<<<<<<<
 *             csize = bsize // extent
 *         o_counts = newarray(blocks, &counts)
 */
        __pyx_t_5 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 356, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 356, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_11;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u_lb);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_lb);
        PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_kp_u_lb);
        __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 356, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 356, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_11;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_t_5);
        __pyx_t_5 = 0;
        __Pyx_INCREF(__pyx_kp_u_ub);
        __pyx_t_3 += 5;
        __Pyx_GIVEREF(__pyx_kp_u_ub);
        PyTuple_SET_ITEM(__pyx_t_9, 6, __pyx_kp_u_ub);
        __pyx_t_5 = __Pyx_PyInt_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 356, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 356, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_11 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_11) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_11;
        __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 7, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_INCREF(__pyx_kp_u__17);
        __pyx_t_3 += 1;
        __Pyx_GIVEREF(__pyx_kp_u__17);
        PyTuple_SET_ITEM(__pyx_t_9, 8, __pyx_kp_u__17);

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":354
 *             if (bsize % extent) != 0:
 *                 raise ValueError(
 *                     f"message: cannot infer count, "             # <<<<<<<<<<<<<<
 *                     f"buffer length {bsize} is not a multiple of "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 */
        __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_9, 9, __pyx_t_3, __pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 354, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":353
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if (bsize % extent) != 0:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"buffer length {bsize} is not a multiple of "
 */
        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 353, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_9, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __PYX_ERR(18, 353, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":352
 *                     f"message: cannot infer count, "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             if (bsize % extent) != 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"message: cannot infer count, "
 */
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":357
 *                     f"buffer length {bsize} is not a multiple of "
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             csize = bsize // extent             # <<<<<<<<<<<<<<
 *         o_counts = newarray(blocks, &counts)
 *         for i in range(blocks):
 */
      __pyx_v_csize = (__pyx_v_bsize / __pyx_v_extent);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":342
 *     cdef MPI_Count cvalue=0, csize=0
 *     if o_counts is None:
 *         if bsize > 0:             # <<<<<<<<<<<<<<
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":358
 *                     f"datatype extent {extent} (lb:{lb}, ub:{lb+extent})")
 *             csize = bsize // extent
 *         o_counts = newarray(blocks, &counts)             # <<<<<<<<<<<<<<
 *         for i in range(blocks):
 *             cvalue = (csize // blocks) + (csize % blocks > i)
 */
    __pyx_t_9 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_blocks, (&__pyx_v_counts)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":359
 *             csize = bsize // extent
 *         o_counts = newarray(blocks, &counts)
 *         for i in range(blocks):             # <<<<<<<<<<<<<<
 *             cvalue = (csize // blocks) + (csize % blocks > i)
 *             counts[i] = cvalue
 */
    __pyx_t_8 = __pyx_v_blocks;
    __pyx_t_12 = __pyx_t_8;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":360
 *         o_counts = newarray(blocks, &counts)
 *         for i in range(blocks):
 *             cvalue = (csize // blocks) + (csize % blocks > i)             # <<<<<<<<<<<<<<
 *             counts[i] = cvalue
 *     elif is_integral(o_counts):
 */
      __pyx_v_cvalue = ((__pyx_v_csize / __pyx_v_blocks) + ((__pyx_v_csize % __pyx_v_blocks) > __pyx_v_i));

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":361
 *         for i in range(blocks):
 *             cvalue = (csize // blocks) + (csize % blocks > i)
 *             counts[i] = cvalue             # <<<<<<<<<<<<<<
 *     elif is_integral(o_counts):
 *         cvalue = <MPI_Count> PyNumber_Index(o_counts)
 */
      (__pyx_v_counts[__pyx_v_i]) = __pyx_v_cvalue;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":341
 *     cdef MPI_Aint  avalue=0
 *     cdef MPI_Count cvalue=0, csize=0
 *     if o_counts is None:             # <<<<<<<<<<<<<<
 *         if bsize > 0:
 *             if btype == MPI_DATATYPE_NULL:
 */
    goto __pyx_L20;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":362
 *             cvalue = (csize // blocks) + (csize % blocks > i)
 *             counts[i] = cvalue
 *     elif is_integral(o_counts):             # <<<<<<<<<<<<<<
 *         cvalue = <MPI_Count> PyNumber_Index(o_counts)
 *         o_counts = newarray(blocks, &counts)
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_o_counts) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":363
 *             counts[i] = cvalue
 *     elif is_integral(o_counts):
 *         cvalue = <MPI_Count> PyNumber_Index(o_counts)             # <<<<<<<<<<<<<<
 *         o_counts = newarray(blocks, &counts)
 *         for i in range(blocks):
 */
    __pyx_t_9 = PyNumber_Index(__pyx_v_o_counts); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_14 = __Pyx_PyInt_As_MPI_Count(__pyx_t_9); if (unlikely((__pyx_t_14 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(18, 363, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_cvalue = ((MPI_Count)__pyx_t_14);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":364
 *     elif is_integral(o_counts):
 *         cvalue = <MPI_Count> PyNumber_Index(o_counts)
 *         o_counts = newarray(blocks, &counts)             # <<<<<<<<<<<<<<
 *         for i in range(blocks):
 *             counts[i] = cvalue
 */
    __pyx_t_9 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_blocks, (&__pyx_v_counts)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":365
 *         cvalue = <MPI_Count> PyNumber_Index(o_counts)
 *         o_counts = newarray(blocks, &counts)
 *         for i in range(blocks):             # <<<<<<<<<<<<<<
 *             counts[i] = cvalue
 *     else:
 */
    __pyx_t_8 = __pyx_v_blocks;
    __pyx_t_12 = __pyx_t_8;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":366
 *         o_counts = newarray(blocks, &counts)
 *         for i in range(blocks):
 *             counts[i] = cvalue             # <<<<<<<<<<<<<<
 *     else:
 *         o_counts = chkarray(o_counts, blocks, &counts)
 */
      (__pyx_v_counts[__pyx_v_i]) = __pyx_v_cvalue;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":362
 *             cvalue = (csize // blocks) + (csize % blocks > i)
 *             counts[i] = cvalue
 *     elif is_integral(o_counts):             # <<<<<<<<<<<<<<
 *         cvalue = <MPI_Count> PyNumber_Index(o_counts)
 *         o_counts = newarray(blocks, &counts)
 */
    goto __pyx_L20;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":368
 *             counts[i] = cvalue
 *     else:
 *         o_counts = chkarray(o_counts, blocks, &counts)             # <<<<<<<<<<<<<<
 *     if o_displs is None:  # contiguous
 *         avalue = 0
 */
  /*else*/ {
    __pyx_t_9 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_o_counts, __pyx_v_blocks, (&__pyx_v_counts)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_9);
    __pyx_t_9 = 0;
  }
  __pyx_L20:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":369
 *     else:
 *         o_counts = chkarray(o_counts, blocks, &counts)
 *     if o_displs is None:  # contiguous             # <<<<<<<<<<<<<<
 *         avalue = 0
 *         o_displs = newarray(blocks, &displs)
 */
  __pyx_t_1 = (__pyx_v_o_displs == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":370
 *         o_counts = chkarray(o_counts, blocks, &counts)
 *     if o_displs is None:  # contiguous
 *         avalue = 0             # <<<<<<<<<<<<<<
 *         o_displs = newarray(blocks, &displs)
 *         for i in range(blocks):
 */
    __pyx_v_avalue = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":371
 *     if o_displs is None:  # contiguous
 *         avalue = 0
 *         o_displs = newarray(blocks, &displs)             # <<<<<<<<<<<<<<
 *         for i in range(blocks):
 *             displs[i] = avalue
 */
    __pyx_t_9 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_blocks, (&__pyx_v_displs)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":372
 *         avalue = 0
 *         o_displs = newarray(blocks, &displs)
 *         for i in range(blocks):             # <<<<<<<<<<<<<<
 *             displs[i] = avalue
 *             avalue += <MPI_Aint> counts[i]
 */
    __pyx_t_8 = __pyx_v_blocks;
    __pyx_t_12 = __pyx_t_8;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":373
 *         o_displs = newarray(blocks, &displs)
 *         for i in range(blocks):
 *             displs[i] = avalue             # <<<<<<<<<<<<<<
 *             avalue += <MPI_Aint> counts[i]
 *     elif is_integral(o_displs):  # strided
 */
      (__pyx_v_displs[__pyx_v_i]) = __pyx_v_avalue;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":374
 *         for i in range(blocks):
 *             displs[i] = avalue
 *             avalue += <MPI_Aint> counts[i]             # <<<<<<<<<<<<<<
 *     elif is_integral(o_displs):  # strided
 *         avalue = <MPI_Aint> PyNumber_Index(o_displs)
 */
      __pyx_v_avalue = (__pyx_v_avalue + ((MPI_Aint)(__pyx_v_counts[__pyx_v_i])));
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":369
 *     else:
 *         o_counts = chkarray(o_counts, blocks, &counts)
 *     if o_displs is None:  # contiguous             # <<<<<<<<<<<<<<
 *         avalue = 0
 *         o_displs = newarray(blocks, &displs)
 */
    goto __pyx_L29;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":375
 *             displs[i] = avalue
 *             avalue += <MPI_Aint> counts[i]
 *     elif is_integral(o_displs):  # strided             # <<<<<<<<<<<<<<
 *         avalue = <MPI_Aint> PyNumber_Index(o_displs)
 *         o_displs = newarray(blocks, &displs)
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_o_displs) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":376
 *             avalue += <MPI_Aint> counts[i]
 *     elif is_integral(o_displs):  # strided
 *         avalue = <MPI_Aint> PyNumber_Index(o_displs)             # <<<<<<<<<<<<<<
 *         o_displs = newarray(blocks, &displs)
 *         for i in range(blocks):
 */
    __pyx_t_9 = PyNumber_Index(__pyx_v_o_displs); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_15 = __Pyx_PyInt_As_MPI_Aint(__pyx_t_9); if (unlikely((__pyx_t_15 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(18, 376, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_avalue = ((MPI_Aint)__pyx_t_15);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":377
 *     elif is_integral(o_displs):  # strided
 *         avalue = <MPI_Aint> PyNumber_Index(o_displs)
 *         o_displs = newarray(blocks, &displs)             # <<<<<<<<<<<<<<
 *         for i in range(blocks):
 *             displs[i] = avalue * i
 */
    __pyx_t_9 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_blocks, (&__pyx_v_displs)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":378
 *         avalue = <MPI_Aint> PyNumber_Index(o_displs)
 *         o_displs = newarray(blocks, &displs)
 *         for i in range(blocks):             # <<<<<<<<<<<<<<
 *             displs[i] = avalue * i
 *     else:  # general
 */
    __pyx_t_8 = __pyx_v_blocks;
    __pyx_t_12 = __pyx_t_8;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":379
 *         o_displs = newarray(blocks, &displs)
 *         for i in range(blocks):
 *             displs[i] = avalue * i             # <<<<<<<<<<<<<<
 *     else:  # general
 *         o_displs = chkarray(o_displs, blocks, &displs)
 */
      (__pyx_v_displs[__pyx_v_i]) = (__pyx_v_avalue * __pyx_v_i);
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":375
 *             displs[i] = avalue
 *             avalue += <MPI_Aint> counts[i]
 *     elif is_integral(o_displs):  # strided             # <<<<<<<<<<<<<<
 *         avalue = <MPI_Aint> PyNumber_Index(o_displs)
 *         o_displs = newarray(blocks, &displs)
 */
    goto __pyx_L29;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":381
 *             displs[i] = avalue * i
 *     else:  # general
 *         o_displs = chkarray(o_displs, blocks, &displs)             # <<<<<<<<<<<<<<
 *     # return collected message data
 *     m.count = o_counts
 */
  /*else*/ {
    __pyx_t_9 = __pyx_fuse_0_1__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_o_displs, __pyx_v_blocks, (&__pyx_v_displs)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_9);
    __pyx_t_9 = 0;
  }
  __pyx_L29:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":383
 *         o_displs = chkarray(o_displs, blocks, &displs)
 *     # return collected message data
 *     m.count = o_counts             # <<<<<<<<<<<<<<
 *     m.displ = o_displs
 *     _addr[0]   = baddr
 */
  __Pyx_INCREF(__pyx_v_o_counts);
  __Pyx_GIVEREF(__pyx_v_o_counts);
  __Pyx_GOTREF(__pyx_v_m->count);
  __Pyx_DECREF(__pyx_v_m->count);
  __pyx_v_m->count = __pyx_v_o_counts;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":384
 *     # return collected message data
 *     m.count = o_counts
 *     m.displ = o_displs             # <<<<<<<<<<<<<<
 *     _addr[0]   = baddr
 *     _counts[0] = counts
 */
  __Pyx_INCREF(__pyx_v_o_displs);
  __Pyx_GIVEREF(__pyx_v_o_displs);
  __Pyx_GOTREF(__pyx_v_m->displ);
  __Pyx_DECREF(__pyx_v_m->displ);
  __pyx_v_m->displ = __pyx_v_o_displs;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":385
 *     m.count = o_counts
 *     m.displ = o_displs
 *     _addr[0]   = baddr             # <<<<<<<<<<<<<<
 *     _counts[0] = counts
 *     _displs[0] = displs
 */
  (__pyx_v__addr[0]) = __pyx_v_baddr;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":386
 *     m.displ = o_displs
 *     _addr[0]   = baddr
 *     _counts[0] = counts             # <<<<<<<<<<<<<<
 *     _displs[0] = displs
 *     _type[0]   = btype
 */
  (__pyx_v__counts[0]) = __pyx_v_counts;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":387
 *     _addr[0]   = baddr
 *     _counts[0] = counts
 *     _displs[0] = displs             # <<<<<<<<<<<<<<
 *     _type[0]   = btype
 *     return m
 */
  (__pyx_v__displs[0]) = __pyx_v_displs;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":388
 *     _counts[0] = counts
 *     _displs[0] = displs
 *     _type[0]   = btype             # <<<<<<<<<<<<<<
 *     return m
 * 
 */
  (__pyx_v__type[0]) = __pyx_v_btype;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":389
 *     _displs[0] = displs
 *     _type[0]   = btype
 *     return m             # <<<<<<<<<<<<<<
 * 
 * cdef tuple message_vector_w(object msg,
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __pyx_r = __pyx_v_m;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":281
 *     return m
 * 
 * cdef _p_message message_vector(object msg,             # <<<<<<<<<<<<<<
 *                                int readonly,
 *                                int rank,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.message_vector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o_buf);
  __Pyx_XDECREF(__pyx_v_o_counts);
  __Pyx_XDECREF(__pyx_v_o_displs);
  __Pyx_XDECREF(__pyx_v_o_type);
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":391
 *     return m
 * 
 * cdef tuple message_vector_w(object msg,             # <<<<<<<<<<<<<<
 *                             int readonly,
 *                             int blocks,
 */

static PyObject *__pyx_f_6mpi4py_3MPI_message_vector_w(PyObject *__pyx_v_msg, int __pyx_v_readonly, int __pyx_v_blocks, void **__pyx_v__addr, MPI_Count **__pyx_v__counts, MPI_Aint **__pyx_v__displs, MPI_Datatype **__pyx_v__types) {
  Py_ssize_t __pyx_v_nargs;
  PyObject *__pyx_v_o_buffer = 0;
  PyObject *__pyx_v_o_counts = 0;
  PyObject *__pyx_v_o_displs = 0;
  PyObject *__pyx_v_o_types = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_vector_w", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":400
 *                             MPI_Datatype **_types,
 *                             ):
 *     cdef Py_ssize_t nargs = len(msg)             # <<<<<<<<<<<<<<
 *     cdef object o_buffer, o_counts, o_displs, o_types
 *     if nargs == 2:
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_msg); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(18, 400, __pyx_L1_error)
  __pyx_v_nargs = __pyx_t_1;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":402
 *     cdef Py_ssize_t nargs = len(msg)
 *     cdef object o_buffer, o_counts, o_displs, o_types
 *     if nargs == 2:             # <<<<<<<<<<<<<<
 *         o_buffer, o_types = msg
 *         o_counts = o_displs = None
 */
  __pyx_t_2 = (__pyx_v_nargs == 2);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":403
 *     cdef object o_buffer, o_counts, o_displs, o_types
 *     if nargs == 2:
 *         o_buffer, o_types = msg             # <<<<<<<<<<<<<<
 *         o_counts = o_displs = None
 *     elif nargs == 3:
 */
    if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
      PyObject* sequence = __pyx_v_msg;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(18, 403, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      #else
      __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_5 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5);
      index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_3);
      index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(18, 403, __pyx_L1_error)
      __pyx_t_6 = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(18, 403, __pyx_L1_error)
      __pyx_L5_unpacking_done:;
    }
    __pyx_v_o_buffer = __pyx_t_3;
    __pyx_t_3 = 0;
    __pyx_v_o_types = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":404
 *     if nargs == 2:
 *         o_buffer, o_types = msg
 *         o_counts = o_displs = None             # <<<<<<<<<<<<<<
 *     elif nargs == 3:
 *         o_buffer, (o_counts, o_displs), o_types = msg
 */
    __Pyx_INCREF(Py_None);
    __pyx_v_o_counts = Py_None;
    __Pyx_INCREF(Py_None);
    __pyx_v_o_displs = Py_None;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":402
 *     cdef Py_ssize_t nargs = len(msg)
 *     cdef object o_buffer, o_counts, o_displs, o_types
 *     if nargs == 2:             # <<<<<<<<<<<<<<
 *         o_buffer, o_types = msg
 *         o_counts = o_displs = None
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":405
 *         o_buffer, o_types = msg
 *         o_counts = o_displs = None
 *     elif nargs == 3:             # <<<<<<<<<<<<<<
 *         o_buffer, (o_counts, o_displs), o_types = msg
 *     elif nargs == 4:
 */
  __pyx_t_2 = (__pyx_v_nargs == 3);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":406
 *         o_counts = o_displs = None
 *     elif nargs == 3:
 *         o_buffer, (o_counts, o_displs), o_types = msg             # <<<<<<<<<<<<<<
 *     elif nargs == 4:
 *         o_buffer,  o_counts, o_displs,  o_types = msg
 */
    if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
      PyObject* sequence = __pyx_v_msg;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(18, 406, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
      index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_3);
      index = 2; __pyx_t_5 = __pyx_t_6(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_7), 3) < 0) __PYX_ERR(18, 406, __pyx_L1_error)
      __pyx_t_6 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_6 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(18, 406, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    __pyx_v_o_buffer = __pyx_t_4;
    __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(18, 406, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
      index = 0; __pyx_t_7 = __pyx_t_6(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 1; __pyx_t_8 = __pyx_t_6(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L8_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_9), 2) < 0) __PYX_ERR(18, 406, __pyx_L1_error)
      __pyx_t_6 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L9_unpacking_done;
      __pyx_L8_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_6 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(18, 406, __pyx_L1_error)
      __pyx_L9_unpacking_done:;
    }
    __pyx_v_o_counts = __pyx_t_7;
    __pyx_t_7 = 0;
    __pyx_v_o_displs = __pyx_t_8;
    __pyx_t_8 = 0;
    __pyx_v_o_types = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":405
 *         o_buffer, o_types = msg
 *         o_counts = o_displs = None
 *     elif nargs == 3:             # <<<<<<<<<<<<<<
 *         o_buffer, (o_counts, o_displs), o_types = msg
 *     elif nargs == 4:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":407
 *     elif nargs == 3:
 *         o_buffer, (o_counts, o_displs), o_types = msg
 *     elif nargs == 4:             # <<<<<<<<<<<<<<
 *         o_buffer,  o_counts, o_displs,  o_types = msg
 *     else:
 */
  __pyx_t_2 = (__pyx_v_nargs == 4);
  if (likely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":408
 *         o_buffer, (o_counts, o_displs), o_types = msg
 *     elif nargs == 4:
 *         o_buffer,  o_counts, o_displs,  o_types = msg             # <<<<<<<<<<<<<<
 *     else:
 *         raise ValueError("message: expecting 2 to 4 items")
 */
    if ((likely(PyTuple_CheckExact(__pyx_v_msg))) || (PyList_CheckExact(__pyx_v_msg))) {
      PyObject* sequence = __pyx_v_msg;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 4)) {
        if (size > 4) __Pyx_RaiseTooManyValuesError(4);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(18, 408, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 3); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 3); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_8);
      #else
      {
        Py_ssize_t i;
        PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_4,&__pyx_t_8};
        for (i=0; i < 4; i++) {
          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(18, 408, __pyx_L1_error)
          __Pyx_GOTREF(item);
          *(temps[i]) = item;
        }
      }
      #endif
    } else {
      Py_ssize_t index = -1;
      PyObject** temps[4] = {&__pyx_t_5,&__pyx_t_3,&__pyx_t_4,&__pyx_t_8};
      __pyx_t_7 = PyObject_GetIter(__pyx_v_msg); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 408, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
      for (index=0; index < 4; index++) {
        PyObject* item = __pyx_t_6(__pyx_t_7); if (unlikely(!item)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(item);
        *(temps[index]) = item;
      }
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_7), 4) < 0) __PYX_ERR(18, 408, __pyx_L1_error)
      __pyx_t_6 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L11_unpacking_done;
      __pyx_L10_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_6 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(18, 408, __pyx_L1_error)
      __pyx_L11_unpacking_done:;
    }
    __pyx_v_o_buffer = __pyx_t_5;
    __pyx_t_5 = 0;
    __pyx_v_o_counts = __pyx_t_3;
    __pyx_t_3 = 0;
    __pyx_v_o_displs = __pyx_t_4;
    __pyx_t_4 = 0;
    __pyx_v_o_types = __pyx_t_8;
    __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":407
 *     elif nargs == 3:
 *         o_buffer, (o_counts, o_displs), o_types = msg
 *     elif nargs == 4:             # <<<<<<<<<<<<<<
 *         o_buffer,  o_counts, o_displs,  o_types = msg
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":410
 *         o_buffer,  o_counts, o_displs,  o_types = msg
 *     else:
 *         raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     if is_BOTTOM(o_buffer):
 *         if o_counts is None:
 */
  /*else*/ {
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_Raise(__pyx_t_8, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __PYX_ERR(18, 410, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":411
 *     else:
 *         raise ValueError("message: expecting 2 to 4 items")
 *     if is_BOTTOM(o_buffer):             # <<<<<<<<<<<<<<
 *         if o_counts is None:
 *             raise ValueError("message: BOTTOM requires counts")
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_is_BOTTOM(__pyx_v_o_buffer); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 411, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":412
 *         raise ValueError("message: expecting 2 to 4 items")
 *     if is_BOTTOM(o_buffer):
 *         if o_counts is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("message: BOTTOM requires counts")
 *         if o_displs is None:
 */
    __pyx_t_2 = (__pyx_v_o_counts == Py_None);
    if (unlikely(__pyx_t_2)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":413
 *     if is_BOTTOM(o_buffer):
 *         if o_counts is None:
 *             raise ValueError("message: BOTTOM requires counts")             # <<<<<<<<<<<<<<
 *         if o_displs is None:
 *             raise ValueError("message: BOTTOM requires displs")
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 413, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(18, 413, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":412
 *         raise ValueError("message: expecting 2 to 4 items")
 *     if is_BOTTOM(o_buffer):
 *         if o_counts is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("message: BOTTOM requires counts")
 *         if o_displs is None:
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":414
 *         if o_counts is None:
 *             raise ValueError("message: BOTTOM requires counts")
 *         if o_displs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("message: BOTTOM requires displs")
 *         _addr[0] = MPI_BOTTOM
 */
    __pyx_t_2 = (__pyx_v_o_displs == Py_None);
    if (unlikely(__pyx_t_2)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":415
 *             raise ValueError("message: BOTTOM requires counts")
 *         if o_displs is None:
 *             raise ValueError("message: BOTTOM requires displs")             # <<<<<<<<<<<<<<
 *         _addr[0] = MPI_BOTTOM
 *     elif readonly:
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 415, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(18, 415, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":414
 *         if o_counts is None:
 *             raise ValueError("message: BOTTOM requires counts")
 *         if o_displs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("message: BOTTOM requires displs")
 *         _addr[0] = MPI_BOTTOM
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":416
 *         if o_displs is None:
 *             raise ValueError("message: BOTTOM requires displs")
 *         _addr[0] = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *     elif readonly:
 *         o_buffer = asbuffer_r(o_buffer, _addr, NULL)
 */
    (__pyx_v__addr[0]) = MPI_BOTTOM;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":411
 *     else:
 *         raise ValueError("message: expecting 2 to 4 items")
 *     if is_BOTTOM(o_buffer):             # <<<<<<<<<<<<<<
 *         if o_counts is None:
 *             raise ValueError("message: BOTTOM requires counts")
 */
    goto __pyx_L12;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":417
 *             raise ValueError("message: BOTTOM requires displs")
 *         _addr[0] = MPI_BOTTOM
 *     elif readonly:             # <<<<<<<<<<<<<<
 *         o_buffer = asbuffer_r(o_buffer, _addr, NULL)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_readonly != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":418
 *         _addr[0] = MPI_BOTTOM
 *     elif readonly:
 *         o_buffer = asbuffer_r(o_buffer, _addr, NULL)             # <<<<<<<<<<<<<<
 *     else:
 *         o_buffer = asbuffer_w(o_buffer, _addr, NULL)
 */
    __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_o_buffer, __pyx_v__addr, NULL)); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF_SET(__pyx_v_o_buffer, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":417
 *             raise ValueError("message: BOTTOM requires displs")
 *         _addr[0] = MPI_BOTTOM
 *     elif readonly:             # <<<<<<<<<<<<<<
 *         o_buffer = asbuffer_r(o_buffer, _addr, NULL)
 *     else:
 */
    goto __pyx_L12;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":420
 *         o_buffer = asbuffer_r(o_buffer, _addr, NULL)
 *     else:
 *         o_buffer = asbuffer_w(o_buffer, _addr, NULL)             # <<<<<<<<<<<<<<
 *     if o_counts is None and o_displs is None:
 *         o_counts = newarray(blocks, _counts)
 */
  /*else*/ {
    __pyx_t_8 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_o_buffer, __pyx_v__addr, NULL)); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF_SET(__pyx_v_o_buffer, __pyx_t_8);
    __pyx_t_8 = 0;
  }
  __pyx_L12:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":421
 *     else:
 *         o_buffer = asbuffer_w(o_buffer, _addr, NULL)
 *     if o_counts is None and o_displs is None:             # <<<<<<<<<<<<<<
 *         o_counts = newarray(blocks, _counts)
 *         o_displs = newarray(blocks, _displs)
 */
  __pyx_t_10 = (__pyx_v_o_counts == Py_None);
  if (__pyx_t_10) {
  } else {
    __pyx_t_2 = __pyx_t_10;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_10 = (__pyx_v_o_displs == Py_None);
  __pyx_t_2 = __pyx_t_10;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":422
 *         o_buffer = asbuffer_w(o_buffer, _addr, NULL)
 *     if o_counts is None and o_displs is None:
 *         o_counts = newarray(blocks, _counts)             # <<<<<<<<<<<<<<
 *         o_displs = newarray(blocks, _displs)
 *         for i in range(blocks):
 */
    __pyx_t_8 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_blocks, __pyx_v__counts); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":423
 *     if o_counts is None and o_displs is None:
 *         o_counts = newarray(blocks, _counts)
 *         o_displs = newarray(blocks, _displs)             # <<<<<<<<<<<<<<
 *         for i in range(blocks):
 *             _counts[0][i] = 1
 */
    __pyx_t_8 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_blocks, __pyx_v__displs); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 423, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":424
 *         o_counts = newarray(blocks, _counts)
 *         o_displs = newarray(blocks, _displs)
 *         for i in range(blocks):             # <<<<<<<<<<<<<<
 *             _counts[0][i] = 1
 *             _displs[0][i] = 0
 */
    __pyx_t_11 = __pyx_v_blocks;
    __pyx_t_12 = __pyx_t_11;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":425
 *         o_displs = newarray(blocks, _displs)
 *         for i in range(blocks):
 *             _counts[0][i] = 1             # <<<<<<<<<<<<<<
 *             _displs[0][i] = 0
 *     else:
 */
      ((__pyx_v__counts[0])[__pyx_v_i]) = 1;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":426
 *         for i in range(blocks):
 *             _counts[0][i] = 1
 *             _displs[0][i] = 0             # <<<<<<<<<<<<<<
 *     else:
 *         o_counts = chkarray(o_counts, blocks, _counts)
 */
      ((__pyx_v__displs[0])[__pyx_v_i]) = 0;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":421
 *     else:
 *         o_buffer = asbuffer_w(o_buffer, _addr, NULL)
 *     if o_counts is None and o_displs is None:             # <<<<<<<<<<<<<<
 *         o_counts = newarray(blocks, _counts)
 *         o_displs = newarray(blocks, _displs)
 */
    goto __pyx_L15;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":428
 *             _displs[0][i] = 0
 *     else:
 *         o_counts = chkarray(o_counts, blocks, _counts)             # <<<<<<<<<<<<<<
 *         o_displs = chkarray(o_displs, blocks, _displs)
 *     o_types  = asarray_Datatype(o_types, blocks, _types)
 */
  /*else*/ {
    __pyx_t_8 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_o_counts, __pyx_v_blocks, __pyx_v__counts); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF_SET(__pyx_v_o_counts, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":429
 *     else:
 *         o_counts = chkarray(o_counts, blocks, _counts)
 *         o_displs = chkarray(o_displs, blocks, _displs)             # <<<<<<<<<<<<<<
 *     o_types  = asarray_Datatype(o_types, blocks, _types)
 *     return (o_buffer, o_counts, o_displs, o_types)
 */
    __pyx_t_8 = __pyx_fuse_0_1__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_o_displs, __pyx_v_blocks, __pyx_v__displs); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF_SET(__pyx_v_o_displs, __pyx_t_8);
    __pyx_t_8 = 0;
  }
  __pyx_L15:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":430
 *         o_counts = chkarray(o_counts, blocks, _counts)
 *         o_displs = chkarray(o_displs, blocks, _displs)
 *     o_types  = asarray_Datatype(o_types, blocks, _types)             # <<<<<<<<<<<<<<
 *     return (o_buffer, o_counts, o_displs, o_types)
 * 
 */
  __pyx_t_8 = __pyx_f_6mpi4py_3MPI_asarray_Datatype(__pyx_v_o_types, __pyx_v_blocks, __pyx_v__types); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF_SET(__pyx_v_o_types, __pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":431
 *         o_displs = chkarray(o_displs, blocks, _displs)
 *     o_types  = asarray_Datatype(o_types, blocks, _types)
 *     return (o_buffer, o_counts, o_displs, o_types)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_v_o_buffer);
  __Pyx_GIVEREF(__pyx_v_o_buffer);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_o_buffer)) __PYX_ERR(18, 431, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_o_counts);
  __Pyx_GIVEREF(__pyx_v_o_counts);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_o_counts)) __PYX_ERR(18, 431, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_o_displs);
  __Pyx_GIVEREF(__pyx_v_o_displs);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_o_displs)) __PYX_ERR(18, 431, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_o_types);
  __Pyx_GIVEREF(__pyx_v_o_types);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_o_types)) __PYX_ERR(18, 431, __pyx_L1_error);
  __pyx_r = ((PyObject*)__pyx_t_8);
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":391
 *     return m
 * 
 * cdef tuple message_vector_w(object msg,             # <<<<<<<<<<<<<<
 *                             int readonly,
 *                             int blocks,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.message_vector_w", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o_buffer);
  __Pyx_XDECREF(__pyx_v_o_counts);
  __Pyx_XDECREF(__pyx_v_o_displs);
  __Pyx_XDECREF(__pyx_v_o_types);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":447
 *     cdef object _msg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf   = NULL
 *         self.count = 0
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10_p_msg_p2p_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10_p_msg_p2p_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10_p_msg_p2p___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10_p_msg_p2p___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":448
 * 
 *     def __cinit__(self):
 *         self.buf   = NULL             # <<<<<<<<<<<<<<
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL
 */
  __pyx_v_self->buf = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":449
 *     def __cinit__(self):
 *         self.buf   = NULL
 *         self.count = 0             # <<<<<<<<<<<<<<
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 */
  __pyx_v_self->count = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":450
 *         self.buf   = NULL
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_send(self, object msg, int rank, int parts) except -1:
 */
  __pyx_v_self->dtype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":447
 *     cdef object _msg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf   = NULL
 *         self.count = 0
 */

  /* function exit code */
  __pyx_r = 0;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":452
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef int for_send(self, object msg, int rank, int parts) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 1,  # readonly
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_rank, int __pyx_v_parts) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_send", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":453
 * 
 *     cdef int for_send(self, object msg, int rank, int parts) except -1:
 *         self._msg = message_simple(             # <<<<<<<<<<<<<<
 *             msg, 1,  # readonly
 *             rank, parts,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 1, __pyx_v_rank, __pyx_v_parts, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":460
 *             &self.dtype,
 *         )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_recv(self, object msg, int rank, int parts) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":452
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef int for_send(self, object msg, int rank, int parts) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 1,  # readonly
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_p2p.for_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":462
 *         return 0
 * 
 *     cdef int for_recv(self, object msg, int rank, int parts) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 0,  # writable
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_rank, int __pyx_v_parts) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_recv", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":463
 * 
 *     cdef int for_recv(self, object msg, int rank, int parts) except -1:
 *         self._msg = message_simple(             # <<<<<<<<<<<<<<
 *             msg, 0,  # writable
 *             rank, parts,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 0, __pyx_v_rank, __pyx_v_parts, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":470
 *             &self.dtype,
 *         )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":462
 *         return 0
 * 
 *     cdef int for_recv(self, object msg, int rank, int parts) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 0,  # writable
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_p2p.for_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":473
 * 
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, 1)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_send(PyObject *__pyx_v_sendbuf, int __pyx_v_dest) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_p2p_send", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":474
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)             # <<<<<<<<<<<<<<
 *     msg.for_send(sendbuf, dest, 1)
 *     return msg
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 474, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":475
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, 1)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send(__pyx_v_msg, __pyx_v_sendbuf, __pyx_v_dest, 1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 475, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":476
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, 1)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":473
 * 
 * 
 * cdef inline _p_msg_p2p message_p2p_send(object sendbuf, int dest):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, 1)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_p2p_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":478
 *     return msg
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, 1)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_recv(PyObject *__pyx_v_recvbuf, int __pyx_v_source) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_p2p_recv", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":479
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)             # <<<<<<<<<<<<<<
 *     msg.for_recv(recvbuf, source, 1)
 *     return msg
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 479, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":480
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, 1)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv(__pyx_v_msg, __pyx_v_recvbuf, __pyx_v_source, 1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 480, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":481
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, 1)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_p2p message_p2p_psend(object sendbuf, int dest, int parts):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":478
 *     return msg
 * 
 * cdef inline _p_msg_p2p message_p2p_recv(object recvbuf, int source):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, 1)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_p2p_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":483
 *     return msg
 * 
 * cdef inline _p_msg_p2p message_p2p_psend(object sendbuf, int dest, int parts):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, parts)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_psend(PyObject *__pyx_v_sendbuf, int __pyx_v_dest, int __pyx_v_parts) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_p2p_psend", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":484
 * 
 * cdef inline _p_msg_p2p message_p2p_psend(object sendbuf, int dest, int parts):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)             # <<<<<<<<<<<<<<
 *     msg.for_send(sendbuf, dest, parts)
 *     return msg
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 484, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":485
 * cdef inline _p_msg_p2p message_p2p_psend(object sendbuf, int dest, int parts):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, parts)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send(__pyx_v_msg, __pyx_v_sendbuf, __pyx_v_dest, __pyx_v_parts); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 485, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":486
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, parts)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_p2p message_p2p_precv(object recvbuf, int source, int parts):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":483
 *     return msg
 * 
 * cdef inline _p_msg_p2p message_p2p_psend(object sendbuf, int dest, int parts):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_send(sendbuf, dest, parts)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_p2p_psend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":488
 *     return msg
 * 
 * cdef inline _p_msg_p2p message_p2p_precv(object recvbuf, int source, int parts):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, parts)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_f_6mpi4py_3MPI_message_p2p_precv(PyObject *__pyx_v_recvbuf, int __pyx_v_source, int __pyx_v_parts) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_p2p_precv", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":489
 * 
 * cdef inline _p_msg_p2p message_p2p_precv(object recvbuf, int source, int parts):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)             # <<<<<<<<<<<<<<
 *     msg.for_recv(recvbuf, source, parts)
 *     return msg
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_p2p), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 489, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":490
 * cdef inline _p_msg_p2p message_p2p_precv(object recvbuf, int source, int parts):
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, parts)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv(__pyx_v_msg, __pyx_v_recvbuf, __pyx_v_source, __pyx_v_parts); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 490, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":491
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, parts)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":488
 *     return msg
 * 
 * cdef inline _p_msg_p2p message_p2p_precv(object recvbuf, int source, int parts):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_p2p msg = _p_msg_p2p.__new__(_p_msg_p2p)
 *     msg.for_recv(recvbuf, source, parts)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_p2p_precv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":510
 *     cdef object _rcnt
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.sbuf    = self.rbuf    = NULL
 *         self.scount  = self.rcount  = 0
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10_p_msg_cco_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10_p_msg_cco_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10_p_msg_cco___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10_p_msg_cco___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":511
 * 
 *     def __cinit__(self):
 *         self.sbuf    = self.rbuf    = NULL             # <<<<<<<<<<<<<<
 *         self.scount  = self.rcount  = 0
 *         self.scounts = self.rcounts = NULL
 */
  __pyx_v_self->sbuf = NULL;
  __pyx_v_self->rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":512
 *     def __cinit__(self):
 *         self.sbuf    = self.rbuf    = NULL
 *         self.scount  = self.rcount  = 0             # <<<<<<<<<<<<<<
 *         self.scounts = self.rcounts = NULL
 *         self.sdispls = self.rdispls = NULL
 */
  __pyx_v_self->scount = 0;
  __pyx_v_self->rcount = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":513
 *         self.sbuf    = self.rbuf    = NULL
 *         self.scount  = self.rcount  = 0
 *         self.scounts = self.rcounts = NULL             # <<<<<<<<<<<<<<
 *         self.sdispls = self.rdispls = NULL
 *         self.stype   = self.rtype   = MPI_DATATYPE_NULL
 */
  __pyx_v_self->scounts = NULL;
  __pyx_v_self->rcounts = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":514
 *         self.scount  = self.rcount  = 0
 *         self.scounts = self.rcounts = NULL
 *         self.sdispls = self.rdispls = NULL             # <<<<<<<<<<<<<<
 *         self.stype   = self.rtype   = MPI_DATATYPE_NULL
 * 
 */
  __pyx_v_self->sdispls = NULL;
  __pyx_v_self->rdispls = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":515
 *         self.scounts = self.rcounts = NULL
 *         self.sdispls = self.rdispls = NULL
 *         self.stype   = self.rtype   = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     # Collective Communication Operations
 */
  __pyx_v_self->stype = MPI_DATATYPE_NULL;
  __pyx_v_self->rtype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":510
 *     cdef object _rcnt
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.sbuf    = self.rbuf    = NULL
 *         self.scount  = self.rcount  = 0
 */

  /* function exit code */
  __pyx_r = 0;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":521
 * 
 *     # sendbuf arguments
 *     cdef int for_cco_send(             # <<<<<<<<<<<<<<
 *         self, bint VECTOR, object amsg,
 *         int rank, int blocks,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_VECTOR, PyObject *__pyx_v_amsg, int __pyx_v_rank, int __pyx_v_blocks) {
  int __pyx_v_readonly;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cco_send", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":525
 *         int rank, int blocks,
 *     ) except -1:
 *         cdef bint readonly = 1             # <<<<<<<<<<<<<<
 *         if not VECTOR:  # block variant
 *             self._smsg = message_simple(
 */
  __pyx_v_readonly = 1;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":526
 *     ) except -1:
 *         cdef bint readonly = 1
 *         if not VECTOR:  # block variant             # <<<<<<<<<<<<<<
 *             self._smsg = message_simple(
 *                 amsg, readonly, rank, blocks,
 */
  __pyx_t_1 = (!__pyx_v_VECTOR);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":527
 *         cdef bint readonly = 1
 *         if not VECTOR:  # block variant
 *             self._smsg = message_simple(             # <<<<<<<<<<<<<<
 *                 amsg, readonly, rank, blocks,
 *                 &self.sbuf, &self.scount, &self.stype)
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, __pyx_v_readonly, __pyx_v_rank, __pyx_v_blocks, (&__pyx_v_self->sbuf), (&__pyx_v_self->scount), (&__pyx_v_self->stype))); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_smsg);
    __Pyx_DECREF(__pyx_v_self->_smsg);
    __pyx_v_self->_smsg = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":526
 *     ) except -1:
 *         cdef bint readonly = 1
 *         if not VECTOR:  # block variant             # <<<<<<<<<<<<<<
 *             self._smsg = message_simple(
 *                 amsg, readonly, rank, blocks,
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":531
 *                 &self.sbuf, &self.scount, &self.stype)
 *         else:  # vector variant
 *             self._smsg = message_vector(             # <<<<<<<<<<<<<<
 *                 amsg, readonly, rank, blocks,
 *                 &self.sbuf, &self.scounts,
 */
  /*else*/ {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":534
 *                 amsg, readonly, rank, blocks,
 *                 &self.sbuf, &self.scounts,
 *                 &self.sdispls, &self.stype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_vector(__pyx_v_amsg, __pyx_v_readonly, __pyx_v_rank, __pyx_v_blocks, (&__pyx_v_self->sbuf), (&__pyx_v_self->scounts), (&__pyx_v_self->sdispls), (&__pyx_v_self->stype))); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 531, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":531
 *                 &self.sbuf, &self.scount, &self.stype)
 *         else:  # vector variant
 *             self._smsg = message_vector(             # <<<<<<<<<<<<<<
 *                 amsg, readonly, rank, blocks,
 *                 &self.sbuf, &self.scounts,
 */
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_smsg);
    __Pyx_DECREF(__pyx_v_self->_smsg);
    __pyx_v_self->_smsg = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":535
 *                 &self.sbuf, &self.scounts,
 *                 &self.sdispls, &self.stype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # recvbuf arguments
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":521
 * 
 *     # sendbuf arguments
 *     cdef int for_cco_send(             # <<<<<<<<<<<<<<
 *         self, bint VECTOR, object amsg,
 *         int rank, int blocks,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cco_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":538
 * 
 *     # recvbuf arguments
 *     cdef int for_cco_recv(             # <<<<<<<<<<<<<<
 *         self, bint VECTOR, object amsg,
 *         int rank, int blocks,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_VECTOR, PyObject *__pyx_v_amsg, int __pyx_v_rank, int __pyx_v_blocks) {
  int __pyx_v_readonly;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cco_recv", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":542
 *         int rank, int blocks,
 *     ) except -1:
 *         cdef bint readonly = 0             # <<<<<<<<<<<<<<
 *         if not VECTOR:  # block variant
 *             self._rmsg = message_simple(
 */
  __pyx_v_readonly = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":543
 *     ) except -1:
 *         cdef bint readonly = 0
 *         if not VECTOR:  # block variant             # <<<<<<<<<<<<<<
 *             self._rmsg = message_simple(
 *                 amsg, readonly, rank, blocks,
 */
  __pyx_t_1 = (!__pyx_v_VECTOR);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":544
 *         cdef bint readonly = 0
 *         if not VECTOR:  # block variant
 *             self._rmsg = message_simple(             # <<<<<<<<<<<<<<
 *                 amsg, readonly, rank, blocks,
 *                 &self.rbuf, &self.rcount, &self.rtype)
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, __pyx_v_readonly, __pyx_v_rank, __pyx_v_blocks, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcount), (&__pyx_v_self->rtype))); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_rmsg);
    __Pyx_DECREF(__pyx_v_self->_rmsg);
    __pyx_v_self->_rmsg = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":543
 *     ) except -1:
 *         cdef bint readonly = 0
 *         if not VECTOR:  # block variant             # <<<<<<<<<<<<<<
 *             self._rmsg = message_simple(
 *                 amsg, readonly, rank, blocks,
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":548
 *                 &self.rbuf, &self.rcount, &self.rtype)
 *         else:  # vector variant
 *             self._rmsg = message_vector(             # <<<<<<<<<<<<<<
 *                 amsg, readonly, rank, blocks,
 *                 &self.rbuf, &self.rcounts,
 */
  /*else*/ {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":551
 *                 amsg, readonly, rank, blocks,
 *                 &self.rbuf, &self.rcounts,
 *                 &self.rdispls, &self.rtype)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_vector(__pyx_v_amsg, __pyx_v_readonly, __pyx_v_rank, __pyx_v_blocks, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcounts), (&__pyx_v_self->rdispls), (&__pyx_v_self->rtype))); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":548
 *                 &self.rbuf, &self.rcount, &self.rtype)
 *         else:  # vector variant
 *             self._rmsg = message_vector(             # <<<<<<<<<<<<<<
 *                 amsg, readonly, rank, blocks,
 *                 &self.rbuf, &self.rcounts,
 */
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_rmsg);
    __Pyx_DECREF(__pyx_v_self->_rmsg);
    __pyx_v_self->_rmsg = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":552
 *                 &self.rbuf, &self.rcounts,
 *                 &self.rdispls, &self.rtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # bcast
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":538
 * 
 *     # recvbuf arguments
 *     cdef int for_cco_recv(             # <<<<<<<<<<<<<<
 *         self, bint VECTOR, object amsg,
 *         int rank, int blocks,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cco_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":555
 * 
 *     # bcast
 *     cdef int for_bcast(             # <<<<<<<<<<<<<<
 *         self, object msg,
 *         int root, MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_msg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_rank;
  int __pyx_v_sending;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  void *__pyx_t_4;
  MPI_Count __pyx_t_5;
  MPI_Datatype __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":559
 *         int root, MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":560
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, sending=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_rank = 0;
  __pyx_v_sending = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":561
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 561, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":562
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":563
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cco_send(0, msg, root, 0)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 563, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":564
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":565
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_send(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 1
 *             else:
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 565, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":566
 *             if root == rank:
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 */
      __pyx_v_sending = 1;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":564
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1
 */
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":568
 *                 sending = 1
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 0
 *         else:  # inter-communication
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 568, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":569
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 *                 sending = 0             # <<<<<<<<<<<<<<
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 */
      __pyx_v_sending = 0;
    }
    __pyx_L5:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":562
 *         cdef int inter=0, rank=0, sending=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":571
 *                 sending = 0
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_root == MPI_ROOT);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_root == MPI_PROC_NULL);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L7_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":572
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_send(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 1
 *             else:
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 572, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":573
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 */
      __pyx_v_sending = 1;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":571
 *                 sending = 0
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, msg, root, 0)
 *                 sending = 1
 */
      goto __pyx_L6;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":575
 *                 sending = 1
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)             # <<<<<<<<<<<<<<
 *                 sending = 0
 *         if sending:
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_msg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 575, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":576
 *             else:
 *                 self.for_cco_recv(0, msg, root, 0)
 *                 sending = 0             # <<<<<<<<<<<<<<
 *         if sending:
 *             self.rbuf   = self.sbuf
 */
      __pyx_v_sending = 0;
    }
    __pyx_L6:;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":577
 *                 self.for_cco_recv(0, msg, root, 0)
 *                 sending = 0
 *         if sending:             # <<<<<<<<<<<<<<
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount
 */
  __pyx_t_1 = (__pyx_v_sending != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":578
 *                 sending = 0
 *         if sending:
 *             self.rbuf   = self.sbuf             # <<<<<<<<<<<<<<
 *             self.rcount = self.scount
 *             self.rtype  = self.stype
 */
    __pyx_t_4 = __pyx_v_self->sbuf;
    __pyx_v_self->rbuf = __pyx_t_4;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":579
 *         if sending:
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount             # <<<<<<<<<<<<<<
 *             self.rtype  = self.stype
 *         else:
 */
    __pyx_t_5 = __pyx_v_self->scount;
    __pyx_v_self->rcount = __pyx_t_5;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":580
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount
 *             self.rtype  = self.stype             # <<<<<<<<<<<<<<
 *         else:
 *             self.sbuf   = self.rbuf
 */
    __pyx_t_6 = __pyx_v_self->stype;
    __pyx_v_self->rtype = __pyx_t_6;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":577
 *                 self.for_cco_recv(0, msg, root, 0)
 *                 sending = 0
 *         if sending:             # <<<<<<<<<<<<<<
 *             self.rbuf   = self.sbuf
 *             self.rcount = self.scount
 */
    goto __pyx_L9;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":582
 *             self.rtype  = self.stype
 *         else:
 *             self.sbuf   = self.rbuf             # <<<<<<<<<<<<<<
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 */
  /*else*/ {
    __pyx_t_4 = __pyx_v_self->rbuf;
    __pyx_v_self->sbuf = __pyx_t_4;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":583
 *         else:
 *             self.sbuf   = self.rbuf
 *             self.scount = self.rcount             # <<<<<<<<<<<<<<
 *             self.stype  = self.rtype
 *         return 0
 */
    __pyx_t_5 = __pyx_v_self->rcount;
    __pyx_v_self->scount = __pyx_t_5;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":584
 *             self.sbuf   = self.rbuf
 *             self.scount = self.rcount
 *             self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_6 = __pyx_v_self->rtype;
    __pyx_v_self->stype = __pyx_t_6;
  }
  __pyx_L9:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":585
 *             self.scount = self.rcount
 *             self.stype  = self.rtype
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # gather/gatherv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":555
 * 
 *     # bcast
 *     cdef int for_bcast(             # <<<<<<<<<<<<<<
 *         self, object msg,
 *         int root, MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":588
 * 
 *     # gather/gatherv
 *     cdef int for_gather(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         int root, MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  int __pyx_v_null;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":592
 *         int root, MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":593
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;
  __pyx_v_null = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":594
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 594, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":595
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":596
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 596, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":597
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 597, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":598
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":599
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)             # <<<<<<<<<<<<<<
 *                 if is_IN_PLACE(smsg):
 *                     self.sbuf = MPI_IN_PLACE
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 599, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":600
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *                     self.sbuf = MPI_IN_PLACE
 *                 else:
 */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 600, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":601
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):
 *                     self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                 else:
 *                     self.for_cco_send(0, smsg, 0, 0)
 */
        __pyx_v_self->sbuf = MPI_IN_PLACE;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":600
 *             if root == rank:
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *                     self.sbuf = MPI_IN_PLACE
 *                 else:
 */
        goto __pyx_L6;
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":603
 *                     self.sbuf = MPI_IN_PLACE
 *                 else:
 *                     self.for_cco_send(0, smsg, 0, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 */
      /*else*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, 0, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 603, __pyx_L1_error)
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":598
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 if is_IN_PLACE(smsg):
 */
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":605
 *                     self.for_cco_send(0, smsg, 0, 0)
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, root, 0)
 *         else:  # inter-communication
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 605, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":606
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 *                 self.for_cco_send(0, smsg, root, 0)             # <<<<<<<<<<<<<<
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 606, __pyx_L1_error)
    }
    __pyx_L5:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":595
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":608
 *                 self.for_cco_send(0, smsg, root, 0)
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_recv(v, rmsg, root, size)
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 608, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":609
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 self.for_cco_send(0, smsg, null, 0)
 */
    __pyx_t_3 = (__pyx_v_root == MPI_ROOT);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_root == MPI_PROC_NULL);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":610
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_recv(v, rmsg, root, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, null, 0)
 *             else:
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 610, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":611
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 self.for_cco_send(0, smsg, null, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, __pyx_v_null, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 611, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":609
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(v, rmsg, root, size)
 *                 self.for_cco_send(0, smsg, null, 0)
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":613
 *                 self.for_cco_send(0, smsg, null, 0)
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(0, smsg, root, 0)
 *         return 0
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 613, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":614
 *             else:
 *                 self.for_cco_recv(v, rmsg, null, size)
 *                 self.for_cco_send(0, smsg, root, 0)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 614, __pyx_L1_error)
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":615
 *                 self.for_cco_recv(v, rmsg, null, size)
 *                 self.for_cco_send(0, smsg, root, 0)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # scatter/scatterv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":588
 * 
 *     # gather/gatherv
 *     cdef int for_gather(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         int root, MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":618
 * 
 *     # scatter/scatterv
 *     cdef int for_scatter(             # <<<<<<<<<<<<<<
 *         self, int v,
 *         object smsg, object rmsg,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  int __pyx_v_null;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":623
 *         int root, MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":624
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;
  __pyx_v_null = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":625
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 625, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":626
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":627
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 627, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":628
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 628, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":629
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":630
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)             # <<<<<<<<<<<<<<
 *                 if is_IN_PLACE(rmsg):
 *                     self.rbuf = MPI_IN_PLACE
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 630, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":631
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):             # <<<<<<<<<<<<<<
 *                     self.rbuf = MPI_IN_PLACE
 *                 else:
 */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_rmsg); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 631, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":632
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):
 *                     self.rbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                 else:
 *                     self.for_cco_recv(0, rmsg, root, 0)
 */
        __pyx_v_self->rbuf = MPI_IN_PLACE;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":631
 *             if root == rank:
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):             # <<<<<<<<<<<<<<
 *                     self.rbuf = MPI_IN_PLACE
 *                 else:
 */
        goto __pyx_L6;
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":634
 *                     self.rbuf = MPI_IN_PLACE
 *                 else:
 *                     self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 */
      /*else*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 634, __pyx_L1_error)
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":629
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(v, smsg, root, size)
 *                 if is_IN_PLACE(rmsg):
 */
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":636
 *                     self.for_cco_recv(0, rmsg, root, 0)
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         else:  # inter-communication
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 636, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":637
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 *                 self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 637, __pyx_L1_error)
    }
    __pyx_L5:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":626
 *         cdef int inter=0, size=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":639
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_send(v, smsg, root, size)
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 639, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":640
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(v, smsg, root, size)
 *                 self.for_cco_recv(0, rmsg, null,  0)
 */
    __pyx_t_3 = (__pyx_v_root == MPI_ROOT);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_root == MPI_PROC_NULL);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":641
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_send(v, smsg, root, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, null,  0)
 *             else:
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_root, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 641, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":642
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cco_send(v, smsg, root, size)
 *                 self.for_cco_recv(0, rmsg, null,  0)             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_null, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 642, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":640
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cco_send(v, smsg, root, size)
 *                 self.for_cco_recv(0, rmsg, null,  0)
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":644
 *                 self.for_cco_recv(0, rmsg, null,  0)
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)             # <<<<<<<<<<<<<<
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         return 0
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, __pyx_v_null, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 644, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":645
 *             else:
 *                 self.for_cco_send(v, smsg, null, size)
 *                 self.for_cco_recv(0, rmsg, root, 0)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, __pyx_v_root, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 645, __pyx_L1_error)
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":646
 *                 self.for_cco_send(v, smsg, null, size)
 *                 self.for_cco_recv(0, rmsg, root, 0)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # allgather/allgatherv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":618
 * 
 *     # scatter/scatterv
 *     cdef int for_scatter(             # <<<<<<<<<<<<<<
 *         self, int v,
 *         object smsg, object rmsg,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":649
 * 
 *     # allgather/allgatherv
 *     cdef int for_allgather(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":653
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":654
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":655
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 655, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":656
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":657
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 657, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":656
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":659
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 659, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":661
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 661, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":662
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
  __pyx_t_3 = (!(__pyx_v_inter != 0));
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 662, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":663
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cco_send(0, smsg, 0, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":662
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    goto __pyx_L5;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":665
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cco_send(0, smsg, 0, 0)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, 0, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 665, __pyx_L1_error)
  }
  __pyx_L5:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":666
 *         else:
 *             self.for_cco_send(0, smsg, 0, 0)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # alltoall/alltoallv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":649
 * 
 *     # allgather/allgatherv
 *     cdef int for_allgather(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":669
 * 
 *     # alltoall/alltoallv
 *     cdef int for_alltoall(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":673
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":674
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":675
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 675, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":676
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":677
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 677, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":676
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":679
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 679, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":681
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 681, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":682
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
  __pyx_t_3 = (!(__pyx_v_inter != 0));
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 682, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":683
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cco_send(v, smsg, 0, size)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":682
 *         #
 *         self.for_cco_recv(v, rmsg, 0, size)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    goto __pyx_L5;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":685
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cco_send(v, smsg, 0, size)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 685, __pyx_L1_error)
  }
  __pyx_L5:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":686
 *         else:
 *             self.for_cco_send(v, smsg, 0, size)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # Neighbor Collectives
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":669
 * 
 *     # alltoall/alltoallv
 *     cdef int for_alltoall(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":692
 * 
 *     # neighbor allgather/allgatherv
 *     cdef int for_neighbor_allgather(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_recvsize;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":696
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int recvsize=0
 *         comm_neighbors_count(comm, &recvsize, NULL)
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":697
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int recvsize=0             # <<<<<<<<<<<<<<
 *         comm_neighbors_count(comm, &recvsize, NULL)
 *         self.for_cco_send(0, smsg, 0, 0)
 */
  __pyx_v_recvsize = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":698
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int recvsize=0
 *         comm_neighbors_count(comm, &recvsize, NULL)             # <<<<<<<<<<<<<<
 *         self.for_cco_send(0, smsg, 0, 0)
 *         self.for_cco_recv(v, rmsg, 0, recvsize)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_comm_neighbors_count(__pyx_v_comm, (&__pyx_v_recvsize), NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 698, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":699
 *         cdef int recvsize=0
 *         comm_neighbors_count(comm, &recvsize, NULL)
 *         self.for_cco_send(0, smsg, 0, 0)             # <<<<<<<<<<<<<<
 *         self.for_cco_recv(v, rmsg, 0, recvsize)
 *         return 0
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, 0, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 699, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":700
 *         comm_neighbors_count(comm, &recvsize, NULL)
 *         self.for_cco_send(0, smsg, 0, 0)
 *         self.for_cco_recv(v, rmsg, 0, recvsize)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, 0, __pyx_v_recvsize); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 700, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":701
 *         self.for_cco_send(0, smsg, 0, 0)
 *         self.for_cco_recv(v, rmsg, 0, recvsize)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # neighbor alltoall/alltoallv
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":692
 * 
 *     # neighbor allgather/allgatherv
 *     cdef int for_neighbor_allgather(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_neighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":704
 * 
 *     # neighbor alltoall/alltoallv
 *     cdef int for_neighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, int __pyx_v_v, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_sendsize;
  int __pyx_v_recvsize;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":708
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int sendsize=0, recvsize=0
 *         comm_neighbors_count(comm, &recvsize, &sendsize)
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":709
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int sendsize=0, recvsize=0             # <<<<<<<<<<<<<<
 *         comm_neighbors_count(comm, &recvsize, &sendsize)
 *         self.for_cco_send(v, smsg, 0, sendsize)
 */
  __pyx_v_sendsize = 0;
  __pyx_v_recvsize = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":710
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int sendsize=0, recvsize=0
 *         comm_neighbors_count(comm, &recvsize, &sendsize)             # <<<<<<<<<<<<<<
 *         self.for_cco_send(v, smsg, 0, sendsize)
 *         self.for_cco_recv(v, rmsg, 0, recvsize)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_comm_neighbors_count(__pyx_v_comm, (&__pyx_v_recvsize), (&__pyx_v_sendsize)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 710, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":711
 *         cdef int sendsize=0, recvsize=0
 *         comm_neighbors_count(comm, &recvsize, &sendsize)
 *         self.for_cco_send(v, smsg, 0, sendsize)             # <<<<<<<<<<<<<<
 *         self.for_cco_recv(v, rmsg, 0, recvsize)
 *         return 0
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, __pyx_v_v, __pyx_v_smsg, 0, __pyx_v_sendsize); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 711, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":712
 *         comm_neighbors_count(comm, &recvsize, &sendsize)
 *         self.for_cco_send(v, smsg, 0, sendsize)
 *         self.for_cco_recv(v, rmsg, 0, recvsize)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, __pyx_v_v, __pyx_v_rmsg, 0, __pyx_v_recvsize); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 712, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":713
 *         self.for_cco_send(v, smsg, 0, sendsize)
 *         self.for_cco_recv(v, rmsg, 0, recvsize)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # Collective Reductions Operations
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":704
 * 
 *     # neighbor alltoall/alltoallv
 *     cdef int for_neighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self, int v, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_neighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":719
 * 
 *     # sendbuf
 *     cdef int for_cro_send(             # <<<<<<<<<<<<<<
 *         self, object amsg, int root,
 *     ) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_amsg, int __pyx_v_root) {
  int __pyx_v_readonly;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cro_send", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":722
 *         self, object amsg, int root,
 *     ) except -1:
 *         cdef bint readonly = 1             # <<<<<<<<<<<<<<
 *         self._smsg = message_simple(
 *             amsg, readonly, root, 0,
 */
  __pyx_v_readonly = 1;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":723
 *     ) except -1:
 *         cdef bint readonly = 1
 *         self._smsg = message_simple(             # <<<<<<<<<<<<<<
 *             amsg, readonly, root, 0,
 *             &self.sbuf, &self.scount, &self.stype)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, __pyx_v_readonly, __pyx_v_root, 0, (&__pyx_v_self->sbuf), (&__pyx_v_self->scount), (&__pyx_v_self->stype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_smsg);
  __Pyx_DECREF(__pyx_v_self->_smsg);
  __pyx_v_self->_smsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":726
 *             amsg, readonly, root, 0,
 *             &self.sbuf, &self.scount, &self.stype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # recvbuf
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":719
 * 
 *     # sendbuf
 *     cdef int for_cro_send(             # <<<<<<<<<<<<<<
 *         self, object amsg, int root,
 *     ) except -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cro_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":729
 * 
 *     # recvbuf
 *     cdef int for_cro_recv(             # <<<<<<<<<<<<<<
 *         self, object amsg, int root,
 *     ) except -1:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_amsg, int __pyx_v_root) {
  int __pyx_v_readonly;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_cro_recv", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":732
 *         self, object amsg, int root,
 *     ) except -1:
 *         cdef bint readonly = 0             # <<<<<<<<<<<<<<
 *         self._rmsg = message_simple(
 *             amsg, readonly, root, 0,
 */
  __pyx_v_readonly = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":733
 *     ) except -1:
 *         cdef bint readonly = 0
 *         self._rmsg = message_simple(             # <<<<<<<<<<<<<<
 *             amsg, readonly, root, 0,
 *             &self.rbuf, &self.rcount, &self.rtype)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_amsg, __pyx_v_readonly, __pyx_v_root, 0, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcount), (&__pyx_v_self->rtype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_rmsg);
  __Pyx_DECREF(__pyx_v_self->_rmsg);
  __pyx_v_self->_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":736
 *             amsg, readonly, root, 0,
 *             &self.rbuf, &self.rcount, &self.rtype)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # check counts and datatypes
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":729
 * 
 *     # recvbuf
 *     cdef int for_cro_recv(             # <<<<<<<<<<<<<<
 *         self, object amsg, int root,
 *     ) except -1:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_cro_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":739
 * 
 *     # check counts and datatypes
 *     cdef int chk_cro_args(self) except -1:             # <<<<<<<<<<<<<<
 *         if self.sbuf == MPI_IN_PLACE: return 0
 *         if self.stype != self.rtype:
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chk_cro_args", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":740
 *     # check counts and datatypes
 *     cdef int chk_cro_args(self) except -1:
 *         if self.sbuf == MPI_IN_PLACE: return 0             # <<<<<<<<<<<<<<
 *         if self.stype != self.rtype:
 *             raise ValueError(
 */
  __pyx_t_1 = (__pyx_v_self->sbuf == MPI_IN_PLACE);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":741
 *     cdef int chk_cro_args(self) except -1:
 *         if self.sbuf == MPI_IN_PLACE: return 0
 *         if self.stype != self.rtype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in send and receive MPI datatypes")
 */
  __pyx_t_1 = (__pyx_v_self->stype != __pyx_v_self->rtype);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":742
 *         if self.sbuf == MPI_IN_PLACE: return 0
 *         if self.stype != self.rtype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in send and receive MPI datatypes")
 *         if self.scount != self.rcount:
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 742, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(18, 742, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":741
 *     cdef int chk_cro_args(self) except -1:
 *         if self.sbuf == MPI_IN_PLACE: return 0
 *         if self.stype != self.rtype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in send and receive MPI datatypes")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":744
 *             raise ValueError(
 *                 f"mismatch in send and receive MPI datatypes")
 *         if self.scount != self.rcount:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in send count {self.scount} "
 */
  __pyx_t_1 = (__pyx_v_self->scount != __pyx_v_self->rcount);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":746
 *         if self.scount != self.rcount:
 *             raise ValueError(
 *                 f"mismatch in send count {self.scount} "             # <<<<<<<<<<<<<<
 *                 f"and receive count {self.rcount}")
 *         return 0
 */
    __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = 127;
    __Pyx_INCREF(__pyx_kp_u_mismatch_in_send_count);
    __pyx_t_3 += 23;
    __Pyx_GIVEREF(__pyx_kp_u_mismatch_in_send_count);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_mismatch_in_send_count);
    __pyx_t_5 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->scount); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4;
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u_and_receive_count);
    __pyx_t_3 += 19;
    __Pyx_GIVEREF(__pyx_kp_u_and_receive_count);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_and_receive_count);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":747
 *             raise ValueError(
 *                 f"mismatch in send count {self.scount} "
 *                 f"and receive count {self.rcount}")             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_6 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->rcount); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_4;
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":746
 *         if self.scount != self.rcount:
 *             raise ValueError(
 *                 f"mismatch in send count {self.scount} "             # <<<<<<<<<<<<<<
 *                 f"and receive count {self.rcount}")
 *         return 0
 */
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":745
 *                 f"mismatch in send and receive MPI datatypes")
 *         if self.scount != self.rcount:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in send count {self.scount} "
 *                 f"and receive count {self.rcount}")
 */
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(18, 745, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":744
 *             raise ValueError(
 *                 f"mismatch in send and receive MPI datatypes")
 *         if self.scount != self.rcount:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in send count {self.scount} "
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":748
 *                 f"mismatch in send count {self.scount} "
 *                 f"and receive count {self.rcount}")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_reduce(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":739
 * 
 *     # check counts and datatypes
 *     cdef int chk_cro_args(self) except -1:             # <<<<<<<<<<<<<<
 *         if self.sbuf == MPI_IN_PLACE: return 0
 *         if self.stype != self.rtype:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.chk_cro_args", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":750
 *         return 0
 * 
 *     cdef int for_reduce(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         int root, MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_rank;
  int __pyx_v_null;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  MPI_Count __pyx_t_3;
  MPI_Datatype __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":754
 *         int root, MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":755
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_rank = 0;
  __pyx_v_null = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":756
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 756, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":757
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":758
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *             if root == rank:
 *                 self.for_cro_recv(rmsg, root)
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 758, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":759
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cro_recv(rmsg, root)
 *                 if is_IN_PLACE(smsg):
 */
    __pyx_t_1 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":760
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 *                 self.for_cro_recv(rmsg, root)             # <<<<<<<<<<<<<<
 *                 if is_IN_PLACE(smsg):
 *                     self.sbuf = MPI_IN_PLACE
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_self, __pyx_v_rmsg, __pyx_v_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 760, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":761
 *             if root == rank:
 *                 self.for_cro_recv(rmsg, root)
 *                 if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *                     self.sbuf = MPI_IN_PLACE
 *                 else:
 */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 761, __pyx_L1_error)
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":762
 *                 self.for_cro_recv(rmsg, root)
 *                 if is_IN_PLACE(smsg):
 *                     self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *                 else:
 *                     self.for_cro_send(smsg, root)
 */
        __pyx_v_self->sbuf = MPI_IN_PLACE;

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":761
 *             if root == rank:
 *                 self.for_cro_recv(rmsg, root)
 *                 if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *                     self.sbuf = MPI_IN_PLACE
 *                 else:
 */
        goto __pyx_L6;
      }

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":764
 *                     self.sbuf = MPI_IN_PLACE
 *                 else:
 *                     self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *                     self.chk_cro_args()
 *             else:
 */
      /*else*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_self, __pyx_v_smsg, __pyx_v_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 764, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/msgbuffer.pxi":765
 *                 else:
 *                     self.for_cro_send(smsg, root)
 *                     self.chk_cro_args()             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cro_recv(rmsg, null)
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 765, __pyx_L1_error)
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":759
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:             # <<<<<<<<<<<<<<
 *                 self.for_cro_recv(rmsg, root)
 *                 if is_IN_PLACE(smsg):
 */
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":767
 *                     self.chk_cro_args()
 *             else:
 *                 self.for_cro_recv(rmsg, null)             # <<<<<<<<<<<<<<
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_self, __pyx_v_rmsg, __pyx_v_null); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 767, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":768
 *             else:
 *                 self.for_cro_recv(rmsg, null)
 *                 self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_self, __pyx_v_smsg, __pyx_v_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 768, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":769
 *                 self.for_cro_recv(rmsg, null)
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount             # <<<<<<<<<<<<<<
 *                 self.rtype  = self.stype
 *         else:  # inter-communication
 */
      __pyx_t_3 = __pyx_v_self->scount;
      __pyx_v_self->rcount = __pyx_t_3;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":770
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype             # <<<<<<<<<<<<<<
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 */
      __pyx_t_4 = __pyx_v_self->stype;
      __pyx_v_self->rtype = __pyx_t_4;
    }
    __pyx_L5:;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":757
 *         cdef int inter=0, rank=0, null=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_rank(comm, &rank) )
 *             if root == rank:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":772
 *                 self.rtype  = self.stype
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cro_recv(rmsg, root)
 *                 self.scount = self.rcount
 */
  /*else*/ {
    __pyx_t_5 = (__pyx_v_root == MPI_ROOT);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_1 = __pyx_t_5;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_root == MPI_PROC_NULL);
    __pyx_t_1 = __pyx_t_5;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":773
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cro_recv(rmsg, root)             # <<<<<<<<<<<<<<
 *                 self.scount = self.rcount
 *                 self.stype  = self.rtype
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_self, __pyx_v_rmsg, __pyx_v_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 773, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":774
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:
 *                 self.for_cro_recv(rmsg, root)
 *                 self.scount = self.rcount             # <<<<<<<<<<<<<<
 *                 self.stype  = self.rtype
 *             else:
 */
      __pyx_t_3 = __pyx_v_self->rcount;
      __pyx_v_self->scount = __pyx_t_3;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":775
 *                 self.for_cro_recv(rmsg, root)
 *                 self.scount = self.rcount
 *                 self.stype  = self.rtype             # <<<<<<<<<<<<<<
 *             else:
 *                 self.for_cro_send(smsg, root)
 */
      __pyx_t_4 = __pyx_v_self->rtype;
      __pyx_v_self->stype = __pyx_t_4;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":772
 *                 self.rtype  = self.stype
 *         else:  # inter-communication
 *             if root == MPI_ROOT or root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *                 self.for_cro_recv(rmsg, root)
 *                 self.scount = self.rcount
 */
      goto __pyx_L7;
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":777
 *                 self.stype  = self.rtype
 *             else:
 *                 self.for_cro_send(smsg, root)             # <<<<<<<<<<<<<<
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype
 */
    /*else*/ {
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_self, __pyx_v_smsg, __pyx_v_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 777, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":778
 *             else:
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount             # <<<<<<<<<<<<<<
 *                 self.rtype  = self.stype
 *         return 0
 */
      __pyx_t_3 = __pyx_v_self->scount;
      __pyx_v_self->rcount = __pyx_t_3;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":779
 *                 self.for_cro_send(smsg, root)
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_4 = __pyx_v_self->stype;
      __pyx_v_self->rtype = __pyx_t_4;
    }
    __pyx_L7:;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":780
 *                 self.rcount = self.scount
 *                 self.rtype  = self.stype
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_allreduce(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":750
 *         return 0
 * 
 *     cdef int for_reduce(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         int root, MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":782
 *         return 0
 * 
 *     cdef int for_allreduce(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":786
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":787
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         # get send and recv buffers
 */
  __pyx_v_inter = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":788
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 788, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":790
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 790, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":791
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
  __pyx_t_3 = (!(__pyx_v_inter != 0));
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 791, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":792
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":791
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":794
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *             self.chk_cro_args()
 *         return 0
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 794, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":795
 *         else:
 *             self.for_cro_send(smsg, 0)
 *             self.chk_cro_args()             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 795, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":796
 *             self.for_cro_send(smsg, 0)
 *             self.chk_cro_args()
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_reduce_scatter_block(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":782
 *         return 0
 * 
 *     cdef int for_allreduce(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":798
 *         return 0
 * 
 *     cdef int for_reduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":802
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":803
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":804
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         # get send and recv buffers
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 804, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":805
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         if not inter and is_IN_PLACE(smsg):
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 805, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":807
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         # get send and recv buffers
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.for_cco_recv(0, rmsg, 0, size)
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_3 = (!(__pyx_v_inter != 0));
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 807, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":808
 *         # get send and recv buffers
 *         if not inter and is_IN_PLACE(smsg):
 *             self.for_cco_recv(0, rmsg, 0, size)             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 808, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":809
 *         if not inter and is_IN_PLACE(smsg):
 *             self.for_cco_recv(0, rmsg, 0, size)
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cco_recv(0, rmsg, 0, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":807
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         # get send and recv buffers
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.for_cco_recv(0, rmsg, 0, size)
 *             self.sbuf = MPI_IN_PLACE
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":811
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cco_recv(0, rmsg, 0, 0)             # <<<<<<<<<<<<<<
 *             self.for_cco_send(0, smsg, 0, size)
 *             self.chk_cro_args()
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv(__pyx_v_self, 0, __pyx_v_rmsg, 0, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 811, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":812
 *         else:
 *             self.for_cco_recv(0, rmsg, 0, 0)
 *             self.for_cco_send(0, smsg, 0, size)             # <<<<<<<<<<<<<<
 *             self.chk_cro_args()
 *         return 0
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send(__pyx_v_self, 0, __pyx_v_smsg, 0, __pyx_v_size); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 812, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":813
 *             self.for_cco_recv(0, rmsg, 0, 0)
 *             self.for_cco_send(0, smsg, 0, size)
 *             self.chk_cro_args()             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 813, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":814
 *             self.for_cco_send(0, smsg, 0, size)
 *             self.chk_cro_args()
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_reduce_scatter(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":798
 *         return 0
 * 
 *     cdef int for_reduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_reduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":816
 *         return 0
 * 
 *     cdef int for_reduce_scatter(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg, object rcnt,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, PyObject *__pyx_v_rcnt, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  MPI_Count __pyx_v_sumrcounts;
  int __pyx_v_i;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_UCS4 __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_reduce_scatter", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":820
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":821
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":822
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 822, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":823
 *         cdef int inter=0, size=0, rank=MPI_PROC_NULL
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         # get send and recv buffers
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 823, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":824
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 824, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":826
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 826, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":827
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
  __pyx_t_3 = (!(__pyx_v_inter != 0));
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_3 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 827, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":828
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":827
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":830
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *         # get receive counts
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 830, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":832
 *             self.for_cro_send(smsg, 0)
 *         # get receive counts
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:             # <<<<<<<<<<<<<<
 *             self._rcnt = newarray(size, &self.rcounts)
 *             CHKERR( MPI_Allgather_c(
 */
  __pyx_t_3 = (__pyx_v_rcnt == Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = (!(__pyx_v_inter != 0));
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":833
 *         # get receive counts
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:
 *             self._rcnt = newarray(size, &self.rcounts)             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Allgather_c(
 *                 &self.rcount, 1, MPI_COUNT,
 */
    __pyx_t_4 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_size, (&__pyx_v_self->rcounts)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_rcnt);
    __Pyx_DECREF(__pyx_v_self->_rcnt);
    __pyx_v_self->_rcnt = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":834
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:
 *             self._rcnt = newarray(size, &self.rcounts)
 *             CHKERR( MPI_Allgather_c(             # <<<<<<<<<<<<<<
 *                 &self.rcount, 1, MPI_COUNT,
 *                 self.rcounts, 1, MPI_COUNT, comm) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgather_c((&__pyx_v_self->rcount), 1, MPI_COUNT, __pyx_v_self->rcounts, 1, MPI_COUNT, __pyx_v_comm)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 834, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":832
 *             self.for_cro_send(smsg, 0)
 *         # get receive counts
 *         if rcnt is None and not inter and self.sbuf != MPI_IN_PLACE:             # <<<<<<<<<<<<<<
 *             self._rcnt = newarray(size, &self.rcounts)
 *             CHKERR( MPI_Allgather_c(
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":838
 *                 self.rcounts, 1, MPI_COUNT, comm) )
 *         else:
 *             self._rcnt = chkarray(rcnt, size, &self.rcounts)             # <<<<<<<<<<<<<<
 *         # total sum or receive counts
 *         cdef MPI_Count sumrcounts=0
 */
  /*else*/ {
    __pyx_t_4 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_rcnt, __pyx_v_size, (&__pyx_v_self->rcounts)); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 838, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->_rcnt);
    __Pyx_DECREF(__pyx_v_self->_rcnt);
    __pyx_v_self->_rcnt = __pyx_t_4;
    __pyx_t_4 = 0;
  }
  __pyx_L7:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":840
 *             self._rcnt = chkarray(rcnt, size, &self.rcounts)
 *         # total sum or receive counts
 *         cdef MPI_Count sumrcounts=0             # <<<<<<<<<<<<<<
 *         for i in range(size):
 *             sumrcounts += self.rcounts[i]
 */
  __pyx_v_sumrcounts = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":841
 *         # total sum or receive counts
 *         cdef MPI_Count sumrcounts=0
 *         for i in range(size):             # <<<<<<<<<<<<<<
 *             sumrcounts += self.rcounts[i]
 *         # check counts and datatypes
 */
  __pyx_t_2 = __pyx_v_size;
  __pyx_t_5 = __pyx_t_2;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
    __pyx_v_i = __pyx_t_6;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":842
 *         cdef MPI_Count sumrcounts=0
 *         for i in range(size):
 *             sumrcounts += self.rcounts[i]             # <<<<<<<<<<<<<<
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:
 */
    __pyx_v_sumrcounts = (__pyx_v_sumrcounts + (__pyx_v_self->rcounts[__pyx_v_i]));
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":844
 *             sumrcounts += self.rcounts[i]
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:             # <<<<<<<<<<<<<<
 *             if self.stype != self.rtype:
 *                 raise ValueError(
 */
  __pyx_t_1 = (__pyx_v_self->sbuf != MPI_IN_PLACE);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":845
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in send and receive MPI datatypes")
 */
    __pyx_t_1 = (__pyx_v_self->stype != __pyx_v_self->rtype);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":846
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"mismatch in send and receive MPI datatypes")
 *             if self.scount != sumrcounts:
 */
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 846, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(18, 846, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":845
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:
 *             if self.stype != self.rtype:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in send and receive MPI datatypes")
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":848
 *                 raise ValueError(
 *                     f"mismatch in send and receive MPI datatypes")
 *             if self.scount != sumrcounts:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in send count {self.scount} "
 */
    __pyx_t_1 = (__pyx_v_self->scount != __pyx_v_sumrcounts);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":850
 *             if self.scount != sumrcounts:
 *                 raise ValueError(
 *                     f"mismatch in send count {self.scount} "             # <<<<<<<<<<<<<<
 *                     f"and sum(counts) {sumrcounts}")
 *             if self.rcount != self.rcounts[rank]:
 */
      __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 850, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = 0;
      __pyx_t_8 = 127;
      __Pyx_INCREF(__pyx_kp_u_mismatch_in_send_count);
      __pyx_t_7 += 23;
      __Pyx_GIVEREF(__pyx_kp_u_mismatch_in_send_count);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_mismatch_in_send_count);
      __pyx_t_9 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->scount); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 850, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 850, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) : __pyx_t_8;
      __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10);
      __pyx_t_10 = 0;
      __Pyx_INCREF(__pyx_kp_u_and_sum_counts);
      __pyx_t_7 += 17;
      __Pyx_GIVEREF(__pyx_kp_u_and_sum_counts);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_and_sum_counts);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":851
 *                 raise ValueError(
 *                     f"mismatch in send count {self.scount} "
 *                     f"and sum(counts) {sumrcounts}")             # <<<<<<<<<<<<<<
 *             if self.rcount != self.rcounts[rank]:
 *                 raise ValueError(
 */
      __pyx_t_10 = __Pyx_PyInt_From_MPI_Count(__pyx_v_sumrcounts); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 851, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_10, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 851, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8;
      __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":850
 *             if self.scount != sumrcounts:
 *                 raise ValueError(
 *                     f"mismatch in send count {self.scount} "             # <<<<<<<<<<<<<<
 *                     f"and sum(counts) {sumrcounts}")
 *             if self.rcount != self.rcounts[rank]:
 */
      __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 850, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":849
 *                     f"mismatch in send and receive MPI datatypes")
 *             if self.scount != sumrcounts:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"mismatch in send count {self.scount} "
 *                     f"and sum(counts) {sumrcounts}")
 */
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 849, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(18, 849, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":848
 *                 raise ValueError(
 *                     f"mismatch in send and receive MPI datatypes")
 *             if self.scount != sumrcounts:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in send count {self.scount} "
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":852
 *                     f"mismatch in send count {self.scount} "
 *                     f"and sum(counts) {sumrcounts}")
 *             if self.rcount != self.rcounts[rank]:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "
 */
    __pyx_t_1 = (__pyx_v_self->rcount != (__pyx_v_self->rcounts[__pyx_v_rank]));
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":854
 *             if self.rcount != self.rcounts[rank]:
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "             # <<<<<<<<<<<<<<
 *                     f"and counts[{rank}] {self.rcounts[rank]}")
 *         else:
 */
      __pyx_t_4 = PyTuple_New(6); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 854, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = 0;
      __pyx_t_8 = 127;
      __Pyx_INCREF(__pyx_kp_u_mismatch_in_receive_count);
      __pyx_t_7 += 26;
      __Pyx_GIVEREF(__pyx_kp_u_mismatch_in_receive_count);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_mismatch_in_receive_count);
      __pyx_t_9 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->rcount); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 854, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 854, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) : __pyx_t_8;
      __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10);
      __pyx_t_10 = 0;
      __Pyx_INCREF(__pyx_kp_u_and_counts);
      __pyx_t_7 += 12;
      __Pyx_GIVEREF(__pyx_kp_u_and_counts);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_and_counts);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":855
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "
 *                     f"and counts[{rank}] {self.rcounts[rank]}")             # <<<<<<<<<<<<<<
 *         else:
 *             if self.rcount != sumrcounts:
 */
      __pyx_t_10 = __Pyx_PyUnicode_From_int(__pyx_v_rank, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_10);
      __pyx_t_10 = 0;
      __Pyx_INCREF(__pyx_kp_u__57);
      __pyx_t_7 += 2;
      __Pyx_GIVEREF(__pyx_kp_u__57);
      PyTuple_SET_ITEM(__pyx_t_4, 4, __pyx_kp_u__57);
      __pyx_t_10 = __Pyx_PyInt_From_MPI_Count((__pyx_v_self->rcounts[__pyx_v_rank])); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_10, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8;
      __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 5, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":854
 *             if self.rcount != self.rcounts[rank]:
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "             # <<<<<<<<<<<<<<
 *                     f"and counts[{rank}] {self.rcounts[rank]}")
 *         else:
 */
      __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 6, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 854, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":853
 *                     f"and sum(counts) {sumrcounts}")
 *             if self.rcount != self.rcounts[rank]:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"mismatch in receive count {self.rcount} "
 *                     f"and counts[{rank}] {self.rcounts[rank]}")
 */
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 853, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(18, 853, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":852
 *                     f"mismatch in send count {self.scount} "
 *                     f"and sum(counts) {sumrcounts}")
 *             if self.rcount != self.rcounts[rank]:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":844
 *             sumrcounts += self.rcounts[i]
 *         # check counts and datatypes
 *         if self.sbuf != MPI_IN_PLACE:             # <<<<<<<<<<<<<<
 *             if self.stype != self.rtype:
 *                 raise ValueError(
 */
    goto __pyx_L13;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":857
 *                     f"and counts[{rank}] {self.rcounts[rank]}")
 *         else:
 *             if self.rcount != sumrcounts:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "
 */
  /*else*/ {
    __pyx_t_1 = (__pyx_v_self->rcount != __pyx_v_sumrcounts);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":859
 *             if self.rcount != sumrcounts:
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "             # <<<<<<<<<<<<<<
 *                     f"and sum(counts) {sumrcounts}")
 *         return 0
 */
      __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 859, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = 0;
      __pyx_t_8 = 127;
      __Pyx_INCREF(__pyx_kp_u_mismatch_in_receive_count);
      __pyx_t_7 += 26;
      __Pyx_GIVEREF(__pyx_kp_u_mismatch_in_receive_count);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_mismatch_in_receive_count);
      __pyx_t_9 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->rcount); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 859, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_t_9, __pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 859, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10) : __pyx_t_8;
      __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10);
      __pyx_t_10 = 0;
      __Pyx_INCREF(__pyx_kp_u_and_sum_counts);
      __pyx_t_7 += 17;
      __Pyx_GIVEREF(__pyx_kp_u_and_sum_counts);
      PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_and_sum_counts);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":860
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "
 *                     f"and sum(counts) {sumrcounts}")             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
      __pyx_t_10 = __Pyx_PyInt_From_MPI_Count(__pyx_v_sumrcounts); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_10, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8;
      __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":859
 *             if self.rcount != sumrcounts:
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "             # <<<<<<<<<<<<<<
 *                     f"and sum(counts) {sumrcounts}")
 *         return 0
 */
      __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 859, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":858
 *         else:
 *             if self.rcount != sumrcounts:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"mismatch in receive count {self.rcount} "
 *                     f"and sum(counts) {sumrcounts}")
 */
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(18, 858, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":857
 *                     f"and counts[{rank}] {self.rcounts[rank]}")
 *         else:
 *             if self.rcount != sumrcounts:             # <<<<<<<<<<<<<<
 *                 raise ValueError(
 *                     f"mismatch in receive count {self.rcount} "
 */
    }
  }
  __pyx_L13:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":861
 *                     f"mismatch in receive count {self.rcount} "
 *                     f"and sum(counts) {sumrcounts}")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_scan(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":816
 *         return 0
 * 
 *     cdef int for_reduce_scatter(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg, object rcnt,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_reduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":863
 *         return 0
 * 
 *     cdef int for_scan(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":867
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":869
 *         if comm == MPI_COMM_NULL: return 0
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 869, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":870
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 870, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":871
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":870
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":873
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *             self.chk_cro_args()
 * 
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 873, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":874
 *         else:
 *             self.for_cro_send(smsg, 0)
 *             self.chk_cro_args()             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_exscan(
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 874, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":863
 *         return 0
 * 
 *     cdef int for_scan(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":876
 *             self.chk_cro_args()
 * 
 *     cdef int for_exscan(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":880
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":882
 *         if comm == MPI_COMM_NULL: return 0
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)             # <<<<<<<<<<<<<<
 *         if is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_self, __pyx_v_rmsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 882, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":883
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 883, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":884
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *         else:
 *             self.for_cro_send(smsg, 0)
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":883
 *         # get send and recv buffers
 *         self.for_cro_recv(rmsg, 0)
 *         if is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":886
 *             self.sbuf = MPI_IN_PLACE
 *         else:
 *             self.for_cro_send(smsg, 0)             # <<<<<<<<<<<<<<
 *             self.chk_cro_args()
 * 
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_self, __pyx_v_smsg, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 886, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":887
 *         else:
 *             self.for_cro_send(smsg, 0)
 *             self.chk_cro_args()             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 887, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":876
 *             self.chk_cro_args()
 * 
 *     cdef int for_exscan(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_cco.for_exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":890
 * 
 * 
 * cdef inline _p_msg_cco message_cco():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_cco msg = _p_msg_cco.__new__(_p_msg_cco)
 *     return msg
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_f_6mpi4py_3MPI_message_cco(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_cco", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":891
 * 
 * cdef inline _p_msg_cco message_cco():
 *     cdef _p_msg_cco msg = _p_msg_cco.__new__(_p_msg_cco)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_cco(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_cco), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 891, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":892
 * cdef inline _p_msg_cco message_cco():
 *     cdef _p_msg_cco msg = _p_msg_cco.__new__(_p_msg_cco)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":890
 * 
 * 
 * cdef inline _p_msg_cco message_cco():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_cco msg = _p_msg_cco.__new__(_p_msg_cco)
 *     return msg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_cco", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":909
 *     cdef object _smsg, _rmsg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.sbuf     = self.rbuf     = NULL
 *         self.scounts  = self.rcounts  = NULL
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_11_p_msg_ccow_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_11_p_msg_ccow_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_11_p_msg_ccow___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_11_p_msg_ccow___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":910
 * 
 *     def __cinit__(self):
 *         self.sbuf     = self.rbuf     = NULL             # <<<<<<<<<<<<<<
 *         self.scounts  = self.rcounts  = NULL
 *         self.sdispls  = self.rdispls  = NULL
 */
  __pyx_v_self->sbuf = NULL;
  __pyx_v_self->rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":911
 *     def __cinit__(self):
 *         self.sbuf     = self.rbuf     = NULL
 *         self.scounts  = self.rcounts  = NULL             # <<<<<<<<<<<<<<
 *         self.sdispls  = self.rdispls  = NULL
 *         self.stypes   = self.rtypes   = NULL
 */
  __pyx_v_self->scounts = NULL;
  __pyx_v_self->rcounts = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":912
 *         self.sbuf     = self.rbuf     = NULL
 *         self.scounts  = self.rcounts  = NULL
 *         self.sdispls  = self.rdispls  = NULL             # <<<<<<<<<<<<<<
 *         self.stypes   = self.rtypes   = NULL
 * 
 */
  __pyx_v_self->sdispls = NULL;
  __pyx_v_self->rdispls = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":913
 *         self.scounts  = self.rcounts  = NULL
 *         self.sdispls  = self.rdispls  = NULL
 *         self.stypes   = self.rtypes   = NULL             # <<<<<<<<<<<<<<
 * 
 *     # alltoallw
 */
  __pyx_v_self->stypes = NULL;
  __pyx_v_self->rtypes = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":909
 *     cdef object _smsg, _rmsg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.sbuf     = self.rbuf     = NULL
 *         self.scounts  = self.rcounts  = NULL
 */

  /* function exit code */
  __pyx_r = 0;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":916
 * 
 *     # alltoallw
 *     cdef int for_alltoallw(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_alltoallw(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_alltoallw", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":920
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":921
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":922
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 922, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":923
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":924
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication
 *             CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 924, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":923
 *         cdef int inter=0, size=0
 *         CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *         if not inter:  # intra-communication             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":926
 *             CHKERR( MPI_Comm_size(comm, &size) )
 *         else:  # inter-communication
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         #
 *         self._rmsg = message_vector_w(
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 926, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":928
 *             CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         #
 *         self._rmsg = message_vector_w(             # <<<<<<<<<<<<<<
 *             rmsg, 0, size,
 *             &self.rbuf, &self.rcounts,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_message_vector_w(__pyx_v_rmsg, 0, __pyx_v_size, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcounts), (&__pyx_v_self->rdispls), (&__pyx_v_self->rtypes)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_rmsg);
  __Pyx_DECREF(__pyx_v_self->_rmsg);
  __pyx_v_self->_rmsg = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":932
 *             &self.rbuf, &self.rcounts,
 *             &self.rdispls, &self.rtypes)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *             return 0
 */
  __pyx_t_4 = (!(__pyx_v_inter != 0));
  if (__pyx_t_4) {
  } else {
    __pyx_t_1 = __pyx_t_4;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_is_IN_PLACE(__pyx_v_smsg); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(18, 932, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_4;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":933
 *             &self.rdispls, &self.rtypes)
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE             # <<<<<<<<<<<<<<
 *             return 0
 *         self._smsg = message_vector_w(
 */
    __pyx_v_self->sbuf = MPI_IN_PLACE;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":934
 *         if not inter and is_IN_PLACE(smsg):
 *             self.sbuf = MPI_IN_PLACE
 *             return 0             # <<<<<<<<<<<<<<
 *         self._smsg = message_vector_w(
 *             smsg, 1, size,
 */
    __pyx_r = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":932
 *             &self.rbuf, &self.rcounts,
 *             &self.rdispls, &self.rtypes)
 *         if not inter and is_IN_PLACE(smsg):             # <<<<<<<<<<<<<<
 *             self.sbuf = MPI_IN_PLACE
 *             return 0
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":935
 *             self.sbuf = MPI_IN_PLACE
 *             return 0
 *         self._smsg = message_vector_w(             # <<<<<<<<<<<<<<
 *             smsg, 1, size,
 *             &self.sbuf, &self.scounts,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_message_vector_w(__pyx_v_smsg, 1, __pyx_v_size, (&__pyx_v_self->sbuf), (&__pyx_v_self->scounts), (&__pyx_v_self->sdispls), (&__pyx_v_self->stypes)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_smsg);
  __Pyx_DECREF(__pyx_v_self->_smsg);
  __pyx_v_self->_smsg = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":939
 *             &self.sbuf, &self.scounts,
 *             &self.sdispls, &self.stypes)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     # neighbor alltoallw
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":916
 * 
 *     # alltoallw
 *     cdef int for_alltoallw(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_ccow.for_alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":942
 * 
 *     # neighbor alltoallw
 *     cdef int for_neighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

static int __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_neighbor_alltoallw(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_self, PyObject *__pyx_v_smsg, PyObject *__pyx_v_rmsg, MPI_Comm __pyx_v_comm) {
  int __pyx_v_sendsize;
  int __pyx_v_recvsize;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_neighbor_alltoallw", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":946
 *         MPI_Comm comm,
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0             # <<<<<<<<<<<<<<
 *         cdef int sendsize=0, recvsize=0
 *         comm_neighbors_count(comm, &recvsize, &sendsize)
 */
  __pyx_t_1 = (__pyx_v_comm == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":947
 *     ) except -1:
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int sendsize=0, recvsize=0             # <<<<<<<<<<<<<<
 *         comm_neighbors_count(comm, &recvsize, &sendsize)
 *         self._rmsg = message_vector_w(
 */
  __pyx_v_sendsize = 0;
  __pyx_v_recvsize = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":948
 *         if comm == MPI_COMM_NULL: return 0
 *         cdef int sendsize=0, recvsize=0
 *         comm_neighbors_count(comm, &recvsize, &sendsize)             # <<<<<<<<<<<<<<
 *         self._rmsg = message_vector_w(
 *             rmsg, 0, recvsize,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_comm_neighbors_count(__pyx_v_comm, (&__pyx_v_recvsize), (&__pyx_v_sendsize)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 948, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":949
 *         cdef int sendsize=0, recvsize=0
 *         comm_neighbors_count(comm, &recvsize, &sendsize)
 *         self._rmsg = message_vector_w(             # <<<<<<<<<<<<<<
 *             rmsg, 0, recvsize,
 *             &self.rbuf, &self.rcounts,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_message_vector_w(__pyx_v_rmsg, 0, __pyx_v_recvsize, (&__pyx_v_self->rbuf), (&__pyx_v_self->rcounts), (&__pyx_v_self->rdispls), (&__pyx_v_self->rtypes)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_rmsg);
  __Pyx_DECREF(__pyx_v_self->_rmsg);
  __pyx_v_self->_rmsg = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":953
 *             &self.rbuf, &self.rcounts,
 *             &self.rdispls, &self.rtypes)
 *         self._smsg = message_vector_w(             # <<<<<<<<<<<<<<
 *             smsg, 1, sendsize,
 *             &self.sbuf, &self.scounts,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_message_vector_w(__pyx_v_smsg, 1, __pyx_v_sendsize, (&__pyx_v_self->sbuf), (&__pyx_v_self->scounts), (&__pyx_v_self->sdispls), (&__pyx_v_self->stypes)); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_smsg);
  __Pyx_DECREF(__pyx_v_self->_smsg);
  __pyx_v_self->_smsg = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":957
 *             &self.sbuf, &self.scounts,
 *             &self.sdispls, &self.stypes)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":942
 * 
 *     # neighbor alltoallw
 *     cdef int for_neighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self, object smsg, object rmsg,
 *         MPI_Comm comm,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_ccow.for_neighbor_alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":960
 * 
 * 
 * cdef inline _p_msg_ccow message_ccow():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_ccow msg = _p_msg_ccow.__new__(_p_msg_ccow)
 *     return msg
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_f_6mpi4py_3MPI_message_ccow(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_ccow", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":961
 * 
 * cdef inline _p_msg_ccow message_ccow():
 *     cdef _p_msg_ccow msg = _p_msg_ccow.__new__(_p_msg_ccow)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_ccow(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_ccow), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 961, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":962
 * cdef inline _p_msg_ccow message_ccow():
 *     cdef _p_msg_ccow msg = _p_msg_ccow.__new__(_p_msg_ccow)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":960
 * 
 * 
 * cdef inline _p_msg_ccow message_ccow():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_ccow msg = _p_msg_ccow.__new__(_p_msg_ccow)
 *     return msg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_ccow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":993
 *     cdef object _target
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.oaddr  = NULL
 *         self.ocount = 0
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10_p_msg_rma_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10_p_msg_rma_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10_p_msg_rma___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10_p_msg_rma___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":994
 * 
 *     def __cinit__(self):
 *         self.oaddr  = NULL             # <<<<<<<<<<<<<<
 *         self.ocount = 0
 *         self.otype  = MPI_DATATYPE_NULL
 */
  __pyx_v_self->oaddr = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":995
 *     def __cinit__(self):
 *         self.oaddr  = NULL
 *         self.ocount = 0             # <<<<<<<<<<<<<<
 *         self.otype  = MPI_DATATYPE_NULL
 *         self.raddr  = NULL
 */
  __pyx_v_self->ocount = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":996
 *         self.oaddr  = NULL
 *         self.ocount = 0
 *         self.otype  = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         self.raddr  = NULL
 *         self.rcount = 0
 */
  __pyx_v_self->otype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":997
 *         self.ocount = 0
 *         self.otype  = MPI_DATATYPE_NULL
 *         self.raddr  = NULL             # <<<<<<<<<<<<<<
 *         self.rcount = 0
 *         self.rtype  = MPI_DATATYPE_NULL
 */
  __pyx_v_self->raddr = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":998
 *         self.otype  = MPI_DATATYPE_NULL
 *         self.raddr  = NULL
 *         self.rcount = 0             # <<<<<<<<<<<<<<
 *         self.rtype  = MPI_DATATYPE_NULL
 *         self.tdisp  = 0
 */
  __pyx_v_self->rcount = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":999
 *         self.raddr  = NULL
 *         self.rcount = 0
 *         self.rtype  = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         self.tdisp  = 0
 *         self.tcount = 0
 */
  __pyx_v_self->rtype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1000
 *         self.rcount = 0
 *         self.rtype  = MPI_DATATYPE_NULL
 *         self.tdisp  = 0             # <<<<<<<<<<<<<<
 *         self.tcount = 0
 *         self.ttype  = MPI_DATATYPE_NULL
 */
  __pyx_v_self->tdisp = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1001
 *         self.rtype  = MPI_DATATYPE_NULL
 *         self.tdisp  = 0
 *         self.tcount = 0             # <<<<<<<<<<<<<<
 *         self.ttype  = MPI_DATATYPE_NULL
 * 
 */
  __pyx_v_self->tcount = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1002
 *         self.tdisp  = 0
 *         self.tcount = 0
 *         self.ttype  = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_rma(self, int readonly,
 */
  __pyx_v_self->ttype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":993
 *     cdef object _target
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.oaddr  = NULL
 *         self.ocount = 0
 */

  /* function exit code */
  __pyx_r = 0;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1004
 *         self.ttype  = MPI_DATATYPE_NULL
 * 
 *     cdef int for_rma(self, int readonly,             # <<<<<<<<<<<<<<
 *                      object origin, int rank, object target) except -1:
 *         # ORIGIN
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, int __pyx_v_readonly, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  Py_ssize_t __pyx_v_nargs;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  MPI_Datatype __pyx_t_7;
  MPI_Count __pyx_t_8;
  MPI_Aint __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_rma", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1007
 *                      object origin, int rank, object target) except -1:
 *         # ORIGIN
 *         self._origin = message_simple(             # <<<<<<<<<<<<<<
 *             origin, readonly, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_origin, __pyx_v_readonly, __pyx_v_rank, 0, (&__pyx_v_self->oaddr), (&__pyx_v_self->ocount), (&__pyx_v_self->otype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_origin);
  __Pyx_DECREF(__pyx_v_self->_origin);
  __pyx_v_self->_origin = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1011
 *             &self.oaddr,  &self.ocount,  &self.otype)
 *         if (
 *             (rank == MPI_PROC_NULL) and             # <<<<<<<<<<<<<<
 *             (origin is not None) and
 *             (is_list(origin) or is_tuple(origin)) and
 */
  __pyx_t_3 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1012
 *         if (
 *             (rank == MPI_PROC_NULL) and
 *             (origin is not None) and             # <<<<<<<<<<<<<<
 *             (is_list(origin) or is_tuple(origin)) and
 *             (len(origin) > 0 and is_datatype(origin[-1]))
 */
  __pyx_t_3 = (__pyx_v_origin != Py_None);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1013
 *             (rank == MPI_PROC_NULL) and
 *             (origin is not None) and
 *             (is_list(origin) or is_tuple(origin)) and             # <<<<<<<<<<<<<<
 *             (len(origin) > 0 and is_datatype(origin[-1]))
 *         ):
 */
  __pyx_t_3 = (PyList_Check(__pyx_v_origin) != 0);
  if (!__pyx_t_3) {
  } else {
    goto __pyx_L7_next_and;
  }
  __pyx_t_3 = (PyTuple_Check(__pyx_v_origin) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_L7_next_and:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1014
 *             (origin is not None) and
 *             (is_list(origin) or is_tuple(origin)) and
 *             (len(origin) > 0 and is_datatype(origin[-1]))             # <<<<<<<<<<<<<<
 *         ):
 *             self.otype  = asdatatype(origin[-1]).ob_mpi
 */
  __pyx_t_4 = PyObject_Length(__pyx_v_origin); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(18, 1014, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_4 > 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_origin, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_is_datatype(__pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(18, 1014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_5 != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1010
 *             origin, readonly, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)
 *         if (             # <<<<<<<<<<<<<<
 *             (rank == MPI_PROC_NULL) and
 *             (origin is not None) and
 */
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1016
 *             (len(origin) > 0 and is_datatype(origin[-1]))
 *         ):
 *             self.otype  = asdatatype(origin[-1]).ob_mpi             # <<<<<<<<<<<<<<
 *             self._origin = origin
 *         # TARGET
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_origin, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asdatatype(__pyx_t_1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = ((struct PyMPIDatatypeObject *)__pyx_t_6)->ob_mpi;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_self->otype = __pyx_t_7;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1017
 *         ):
 *             self.otype  = asdatatype(origin[-1]).ob_mpi
 *             self._origin = origin             # <<<<<<<<<<<<<<
 *         # TARGET
 *         cdef Py_ssize_t nargs = 0
 */
    __Pyx_INCREF(__pyx_v_origin);
    __Pyx_GIVEREF(__pyx_v_origin);
    __Pyx_GOTREF(__pyx_v_self->_origin);
    __Pyx_DECREF(__pyx_v_self->_origin);
    __pyx_v_self->_origin = __pyx_v_origin;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1010
 *             origin, readonly, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)
 *         if (             # <<<<<<<<<<<<<<
 *             (rank == MPI_PROC_NULL) and
 *             (origin is not None) and
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1019
 *             self._origin = origin
 *         # TARGET
 *         cdef Py_ssize_t nargs = 0             # <<<<<<<<<<<<<<
 *         if target is None:
 *             self.tdisp  = 0
 */
  __pyx_v_nargs = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1020
 *         # TARGET
 *         cdef Py_ssize_t nargs = 0
 *         if target is None:             # <<<<<<<<<<<<<<
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 */
  __pyx_t_2 = (__pyx_v_target == Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1021
 *         cdef Py_ssize_t nargs = 0
 *         if target is None:
 *             self.tdisp  = 0             # <<<<<<<<<<<<<<
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 */
    __pyx_v_self->tdisp = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1022
 *         if target is None:
 *             self.tdisp  = 0
 *             self.tcount = self.ocount             # <<<<<<<<<<<<<<
 *             self.ttype  = self.otype
 *         elif is_integral(target):
 */
    __pyx_t_8 = __pyx_v_self->ocount;
    __pyx_v_self->tcount = __pyx_t_8;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1023
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype             # <<<<<<<<<<<<<<
 *         elif is_integral(target):
 *             self.tdisp  = <MPI_Aint> PyNumber_Index(target)
 */
    __pyx_t_7 = __pyx_v_self->otype;
    __pyx_v_self->ttype = __pyx_t_7;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1020
 *         # TARGET
 *         cdef Py_ssize_t nargs = 0
 *         if target is None:             # <<<<<<<<<<<<<<
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 */
    goto __pyx_L10;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1024
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 *         elif is_integral(target):             # <<<<<<<<<<<<<<
 *             self.tdisp  = <MPI_Aint> PyNumber_Index(target)
 *             self.tcount = self.ocount
 */
  __pyx_t_2 = (__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_target) != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1025
 *             self.ttype  = self.otype
 *         elif is_integral(target):
 *             self.tdisp  = <MPI_Aint> PyNumber_Index(target)             # <<<<<<<<<<<<<<
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 */
    __pyx_t_6 = PyNumber_Index(__pyx_v_target); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1025, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = __Pyx_PyInt_As_MPI_Aint(__pyx_t_6); if (unlikely((__pyx_t_9 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1025, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_self->tdisp = ((MPI_Aint)__pyx_t_9);

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1026
 *         elif is_integral(target):
 *             self.tdisp  = <MPI_Aint> PyNumber_Index(target)
 *             self.tcount = self.ocount             # <<<<<<<<<<<<<<
 *             self.ttype  = self.otype
 *         elif is_list(target) or is_tuple(target):
 */
    __pyx_t_8 = __pyx_v_self->ocount;
    __pyx_v_self->tcount = __pyx_t_8;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1027
 *             self.tdisp  = <MPI_Aint> PyNumber_Index(target)
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype             # <<<<<<<<<<<<<<
 *         elif is_list(target) or is_tuple(target):
 *             self.tdisp  = 0
 */
    __pyx_t_7 = __pyx_v_self->otype;
    __pyx_v_self->ttype = __pyx_t_7;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1024
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 *         elif is_integral(target):             # <<<<<<<<<<<<<<
 *             self.tdisp  = <MPI_Aint> PyNumber_Index(target)
 *             self.tcount = self.ocount
 */
    goto __pyx_L10;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1028
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 *         elif is_list(target) or is_tuple(target):             # <<<<<<<<<<<<<<
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 */
  __pyx_t_3 = (PyList_Check(__pyx_v_target) != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_3 = (PyTuple_Check(__pyx_v_target) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L11_bool_binop_done:;
  if (likely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1029
 *             self.ttype  = self.otype
 *         elif is_list(target) or is_tuple(target):
 *             self.tdisp  = 0             # <<<<<<<<<<<<<<
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 */
    __pyx_v_self->tdisp = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1030
 *         elif is_list(target) or is_tuple(target):
 *             self.tdisp  = 0
 *             self.tcount = self.ocount             # <<<<<<<<<<<<<<
 *             self.ttype  = self.otype
 *             nargs = len(target)
 */
    __pyx_t_8 = __pyx_v_self->ocount;
    __pyx_v_self->tcount = __pyx_t_8;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1031
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype             # <<<<<<<<<<<<<<
 *             nargs = len(target)
 *             if nargs >= 1:
 */
    __pyx_t_7 = __pyx_v_self->otype;
    __pyx_v_self->ttype = __pyx_t_7;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1032
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 *             nargs = len(target)             # <<<<<<<<<<<<<<
 *             if nargs >= 1:
 *                 self.tdisp  = <MPI_Aint> PyNumber_Index(target[0])
 */
    __pyx_t_4 = PyObject_Length(__pyx_v_target); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(18, 1032, __pyx_L1_error)
    __pyx_v_nargs = __pyx_t_4;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1033
 *             self.ttype  = self.otype
 *             nargs = len(target)
 *             if nargs >= 1:             # <<<<<<<<<<<<<<
 *                 self.tdisp  = <MPI_Aint> PyNumber_Index(target[0])
 *             if nargs >= 2:
 */
    __pyx_t_2 = (__pyx_v_nargs >= 1);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1034
 *             nargs = len(target)
 *             if nargs >= 1:
 *                 self.tdisp  = <MPI_Aint> PyNumber_Index(target[0])             # <<<<<<<<<<<<<<
 *             if nargs >= 2:
 *                 self.tcount = <MPI_Count> PyNumber_Index(target[1])
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_target, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = PyNumber_Index(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1034, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_9 = __Pyx_PyInt_As_MPI_Aint(__pyx_t_1); if (unlikely((__pyx_t_9 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1034, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_self->tdisp = ((MPI_Aint)__pyx_t_9);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1033
 *             self.ttype  = self.otype
 *             nargs = len(target)
 *             if nargs >= 1:             # <<<<<<<<<<<<<<
 *                 self.tdisp  = <MPI_Aint> PyNumber_Index(target[0])
 *             if nargs >= 2:
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1035
 *             if nargs >= 1:
 *                 self.tdisp  = <MPI_Aint> PyNumber_Index(target[0])
 *             if nargs >= 2:             # <<<<<<<<<<<<<<
 *                 self.tcount = <MPI_Count> PyNumber_Index(target[1])
 *             if nargs >= 3:
 */
    __pyx_t_2 = (__pyx_v_nargs >= 2);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1036
 *                 self.tdisp  = <MPI_Aint> PyNumber_Index(target[0])
 *             if nargs >= 2:
 *                 self.tcount = <MPI_Count> PyNumber_Index(target[1])             # <<<<<<<<<<<<<<
 *             if nargs >= 3:
 *                 self.ttype  = asdatatype(target[2]).ob_mpi
 */
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_target, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1036, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyNumber_Index(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1036, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_8 = __Pyx_PyInt_As_MPI_Count(__pyx_t_6); if (unlikely((__pyx_t_8 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(18, 1036, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_self->tcount = ((MPI_Count)__pyx_t_8);

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1035
 *             if nargs >= 1:
 *                 self.tdisp  = <MPI_Aint> PyNumber_Index(target[0])
 *             if nargs >= 2:             # <<<<<<<<<<<<<<
 *                 self.tcount = <MPI_Count> PyNumber_Index(target[1])
 *             if nargs >= 3:
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1037
 *             if nargs >= 2:
 *                 self.tcount = <MPI_Count> PyNumber_Index(target[1])
 *             if nargs >= 3:             # <<<<<<<<<<<<<<
 *                 self.ttype  = asdatatype(target[2]).ob_mpi
 *             if nargs >= 4:
 */
    __pyx_t_2 = (__pyx_v_nargs >= 3);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1038
 *                 self.tcount = <MPI_Count> PyNumber_Index(target[1])
 *             if nargs >= 3:
 *                 self.ttype  = asdatatype(target[2]).ob_mpi             # <<<<<<<<<<<<<<
 *             if nargs >= 4:
 *                 raise ValueError("target: expecting 3 items at most")
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_target, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 1038, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asdatatype(__pyx_t_6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1038, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = ((struct PyMPIDatatypeObject *)__pyx_t_1)->ob_mpi;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_self->ttype = __pyx_t_7;

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1037
 *             if nargs >= 2:
 *                 self.tcount = <MPI_Count> PyNumber_Index(target[1])
 *             if nargs >= 3:             # <<<<<<<<<<<<<<
 *                 self.ttype  = asdatatype(target[2]).ob_mpi
 *             if nargs >= 4:
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1039
 *             if nargs >= 3:
 *                 self.ttype  = asdatatype(target[2]).ob_mpi
 *             if nargs >= 4:             # <<<<<<<<<<<<<<
 *                 raise ValueError("target: expecting 3 items at most")
 *         else:
 */
    __pyx_t_2 = (__pyx_v_nargs >= 4);
    if (unlikely(__pyx_t_2)) {

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1040
 *                 self.ttype  = asdatatype(target[2]).ob_mpi
 *             if nargs >= 4:
 *                 raise ValueError("target: expecting 3 items at most")             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")
 */
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1040, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(18, 1040, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/msgbuffer.pxi":1039
 *             if nargs >= 3:
 *                 self.ttype  = asdatatype(target[2]).ob_mpi
 *             if nargs >= 4:             # <<<<<<<<<<<<<<
 *                 raise ValueError("target: expecting 3 items at most")
 *         else:
 */
    }

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1028
 *             self.tcount = self.ocount
 *             self.ttype  = self.otype
 *         elif is_list(target) or is_tuple(target):             # <<<<<<<<<<<<<<
 *             self.tdisp  = 0
 *             self.tcount = self.ocount
 */
    goto __pyx_L10;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1042
 *                 raise ValueError("target: expecting 3 items at most")
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")             # <<<<<<<<<<<<<<
 *         self._target = target
 *         return 0
 */
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1042, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(18, 1042, __pyx_L1_error)
  }
  __pyx_L10:;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1043
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")
 *         self._target = target             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_GOTREF(__pyx_v_self->_target);
  __Pyx_DECREF(__pyx_v_self->_target);
  __pyx_v_self->_target = __pyx_v_target;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1044
 *             raise ValueError("target: expecting integral or list/tuple")
 *         self._target = target
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_put(self, object origin, int rank, object target) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1004
 *         self.ttype  = MPI_DATATYPE_NULL
 * 
 *     cdef int for_rma(self, int readonly,             # <<<<<<<<<<<<<<
 *                      object origin, int rank, object target) except -1:
 *         # ORIGIN
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_rma", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1046
 *         return 0
 * 
 *     cdef int for_put(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 *         return 0
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1047
 * 
 *     cdef int for_put(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(__pyx_v_self, 1, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1047, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1048
 *     cdef int for_put(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_get(self, object origin, int rank, object target) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1046
 *         return 0
 * 
 *     cdef int for_put(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 *         return 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1050
 *         return 0
 * 
 *     cdef int for_get(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(0, origin, rank, target)
 *         return 0
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1051
 * 
 *     cdef int for_get(self, object origin, int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(__pyx_v_self, 0, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1051, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1052
 *     cdef int for_get(self, object origin, int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1050
 *         return 0
 * 
 *     cdef int for_get(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(0, origin, rank, target)
 *         return 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1054
 *         return 0
 * 
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 *         return 0
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1055
 * 
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(__pyx_v_self, 1, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1055, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1056
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:
 *         self.for_rma(1, origin, rank, target)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int set_origin(self, object origin, int rank) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1054
 *         return 0
 * 
 *     cdef int for_acc(self, object origin, int rank, object target) except -1:             # <<<<<<<<<<<<<<
 *         self.for_rma(1, origin, rank, target)
 *         return 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_acc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1058
 *         return 0
 * 
 *     cdef int set_origin(self, object origin, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._origin = message_simple(
 *             origin, 1, rank, 0,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_origin(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_rank) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Count __pyx_t_2;
  MPI_Datatype __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_origin", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1059
 * 
 *     cdef int set_origin(self, object origin, int rank) except -1:
 *         self._origin = message_simple(             # <<<<<<<<<<<<<<
 *             origin, 1, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_origin, 1, __pyx_v_rank, 0, (&__pyx_v_self->oaddr), (&__pyx_v_self->ocount), (&__pyx_v_self->otype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_origin);
  __Pyx_DECREF(__pyx_v_self->_origin);
  __pyx_v_self->_origin = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1062
 *             origin, 1, rank, 0,
 *             &self.oaddr,  &self.ocount,  &self.otype)
 *         self.tdisp  = 0             # <<<<<<<<<<<<<<
 *         self.tcount = self.ocount
 *         self.ttype  = self.otype
 */
  __pyx_v_self->tdisp = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1063
 *             &self.oaddr,  &self.ocount,  &self.otype)
 *         self.tdisp  = 0
 *         self.tcount = self.ocount             # <<<<<<<<<<<<<<
 *         self.ttype  = self.otype
 * 
 */
  __pyx_t_2 = __pyx_v_self->ocount;
  __pyx_v_self->tcount = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1064
 *         self.tdisp  = 0
 *         self.tcount = self.ocount
 *         self.ttype  = self.otype             # <<<<<<<<<<<<<<
 * 
 *     cdef int set_compare(self, object compare, int rank) except -1:
 */
  __pyx_t_3 = __pyx_v_self->otype;
  __pyx_v_self->ttype = __pyx_t_3;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1058
 *         return 0
 * 
 *     cdef int set_origin(self, object origin, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._origin = message_simple(
 *             origin, 1, rank, 0,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.set_origin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1066
 *         self.ttype  = self.otype
 * 
 *     cdef int set_compare(self, object compare, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._compare = message_simple(
 *             compare, 1, rank, 0,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_compare(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_compare, int __pyx_v_rank) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_compare", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1067
 * 
 *     cdef int set_compare(self, object compare, int rank) except -1:
 *         self._compare = message_simple(             # <<<<<<<<<<<<<<
 *             compare, 1, rank, 0,
 *             &self.caddr,  &self.ccount,  &self.ctype)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_compare, 1, __pyx_v_rank, 0, (&__pyx_v_self->caddr), (&__pyx_v_self->ccount), (&__pyx_v_self->ctype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_compare);
  __Pyx_DECREF(__pyx_v_self->_compare);
  __pyx_v_self->_compare = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1066
 *         self.ttype  = self.otype
 * 
 *     cdef int set_compare(self, object compare, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._compare = message_simple(
 *             compare, 1, rank, 0,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.set_compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1071
 *             &self.caddr,  &self.ccount,  &self.ctype)
 * 
 *     cdef int set_result(self, object result, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._result = message_simple(
 *             result, 0, rank, 0,
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_result(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_result, int __pyx_v_rank) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_result", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1072
 * 
 *     cdef int set_result(self, object result, int rank) except -1:
 *         self._result = message_simple(             # <<<<<<<<<<<<<<
 *             result, 0, rank, 0,
 *             &self.raddr,  &self.rcount,  &self.rtype)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_result, 0, __pyx_v_rank, 0, (&__pyx_v_self->raddr), (&__pyx_v_self->rcount), (&__pyx_v_self->rtype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_result);
  __Pyx_DECREF(__pyx_v_self->_result);
  __pyx_v_self->_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1071
 *             &self.caddr,  &self.ccount,  &self.ctype)
 * 
 *     cdef int set_result(self, object result, int rank) except -1:             # <<<<<<<<<<<<<<
 *         self._result = message_simple(
 *             result, 0, rank, 0,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.set_result", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1076
 *             &self.raddr,  &self.rcount,  &self.rtype)
 * 
 *     cdef int for_get_acc(self, object origin, object result,             # <<<<<<<<<<<<<<
 *                          int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get_acc(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_rank, PyObject *__pyx_v_target) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1078
 *     cdef int for_get_acc(self, object origin, object result,
 *                          int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)             # <<<<<<<<<<<<<<
 *         self.set_result(result, rank)
 *         return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma(__pyx_v_self, 0, __pyx_v_origin, __pyx_v_rank, __pyx_v_target); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1078, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1079
 *                          int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)
 *         self.set_result(result, rank)             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_result(__pyx_v_self, __pyx_v_result, __pyx_v_rank); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1079, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1080
 *         self.for_rma(0, origin, rank, target)
 *         self.set_result(result, rank)
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_fetch_op(self, object origin, object result,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1076
 *             &self.raddr,  &self.rcount,  &self.rtype)
 * 
 *     cdef int for_get_acc(self, object origin, object result,             # <<<<<<<<<<<<<<
 *                          int rank, object target) except -1:
 *         self.for_rma(0, origin, rank, target)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_get_acc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1082
 *         return 0
 * 
 *     cdef int for_fetch_op(self, object origin, object result,             # <<<<<<<<<<<<<<
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_fetch_op(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_rank, MPI_Aint __pyx_v_disp) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  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;
  __Pyx_RefNannySetupContext("for_fetch_op", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1084
 *     cdef int for_fetch_op(self, object origin, object result,
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)             # <<<<<<<<<<<<<<
 *         self.set_result(result, rank)
 *         self.tdisp = disp
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_origin(__pyx_v_self, __pyx_v_origin, __pyx_v_rank); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1084, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1085
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)
 *         self.set_result(result, rank)             # <<<<<<<<<<<<<<
 *         self.tdisp = disp
 *         if rank == MPI_PROC_NULL: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_result(__pyx_v_self, __pyx_v_result, __pyx_v_rank); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1085, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1086
 *         self.set_origin(origin, rank)
 *         self.set_result(result, rank)
 *         self.tdisp = disp             # <<<<<<<<<<<<<<
 *         if rank == MPI_PROC_NULL: return 0
 *         # Check
 */
  __pyx_v_self->tdisp = __pyx_v_disp;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1087
 *         self.set_result(result, rank)
 *         self.tdisp = disp
 *         if rank == MPI_PROC_NULL: return 0             # <<<<<<<<<<<<<<
 *         # Check
 *         if self.ocount != 1:
 */
  __pyx_t_2 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1089
 *         if rank == MPI_PROC_NULL: return 0
 *         # Check
 *         if self.ocount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 */
  __pyx_t_2 = (__pyx_v_self->ocount != 1);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1091
 *         if self.ocount != 1:
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")             # <<<<<<<<<<<<<<
 *         if self.rcount != 1:
 *             raise ValueError(
 */
    __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->ocount); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_origin_expecting_a_single_elemen, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1090
 *         # Check
 *         if self.ocount != 1:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.rcount != 1:
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(18, 1090, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1089
 *         if rank == MPI_PROC_NULL: return 0
 *         # Check
 *         if self.ocount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1092
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.rcount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 */
  __pyx_t_2 = (__pyx_v_self->rcount != 1);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1094
 *         if self.rcount != 1:
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")             # <<<<<<<<<<<<<<
 *         if self.otype != self.rtype:
 *             raise ValueError(
 */
    __pyx_t_4 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->rcount); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_result_expecting_a_single_elemen, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1093
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.rcount != 1:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.rtype:
 */
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(18, 1093, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1092
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.rcount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1095
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.rtype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in origin and result MPI datatypes")
 */
  __pyx_t_2 = (__pyx_v_self->otype != __pyx_v_self->rtype);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1096
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.rtype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in origin and result MPI datatypes")
 *         return 0
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(18, 1096, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1095
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.rtype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in origin and result MPI datatypes")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1098
 *             raise ValueError(
 *                 f"mismatch in origin and result MPI datatypes")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_cmp_swap(self, object origin, object compare, object result,
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1082
 *         return 0
 * 
 *     cdef int for_fetch_op(self, object origin, object result,             # <<<<<<<<<<<<<<
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_fetch_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1100
 *         return 0
 * 
 *     cdef int for_cmp_swap(self, object origin, object compare, object result,             # <<<<<<<<<<<<<<
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)
 */

static int __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_cmp_swap(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_compare, PyObject *__pyx_v_result, int __pyx_v_rank, MPI_Aint __pyx_v_disp) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  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;
  __Pyx_RefNannySetupContext("for_cmp_swap", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1102
 *     cdef int for_cmp_swap(self, object origin, object compare, object result,
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)             # <<<<<<<<<<<<<<
 *         self.set_compare(compare, rank)
 *         self.set_result(result, rank)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_origin(__pyx_v_self, __pyx_v_origin, __pyx_v_rank); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1102, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1103
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)
 *         self.set_compare(compare, rank)             # <<<<<<<<<<<<<<
 *         self.set_result(result, rank)
 *         self.tdisp = disp
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_compare(__pyx_v_self, __pyx_v_compare, __pyx_v_rank); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1103, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1104
 *         self.set_origin(origin, rank)
 *         self.set_compare(compare, rank)
 *         self.set_result(result, rank)             # <<<<<<<<<<<<<<
 *         self.tdisp = disp
 *         if rank == MPI_PROC_NULL: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_result(__pyx_v_self, __pyx_v_result, __pyx_v_rank); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(18, 1104, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1105
 *         self.set_compare(compare, rank)
 *         self.set_result(result, rank)
 *         self.tdisp = disp             # <<<<<<<<<<<<<<
 *         if rank == MPI_PROC_NULL: return 0
 *         # Check
 */
  __pyx_v_self->tdisp = __pyx_v_disp;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1106
 *         self.set_result(result, rank)
 *         self.tdisp = disp
 *         if rank == MPI_PROC_NULL: return 0             # <<<<<<<<<<<<<<
 *         # Check
 *         if self.ocount != 1:
 */
  __pyx_t_2 = (__pyx_v_rank == MPI_PROC_NULL);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1108
 *         if rank == MPI_PROC_NULL: return 0
 *         # Check
 *         if self.ocount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 */
  __pyx_t_2 = (__pyx_v_self->ocount != 1);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1110
 *         if self.ocount != 1:
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")             # <<<<<<<<<<<<<<
 *         if self.ccount != 1:
 *             raise ValueError(
 */
    __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->ocount); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_origin_expecting_a_single_elemen, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1109
 *         # Check
 *         if self.ocount != 1:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.ccount != 1:
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(18, 1109, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1108
 *         if rank == MPI_PROC_NULL: return 0
 *         # Check
 *         if self.ocount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1111
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.ccount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"compare: expecting a single element, got {self.ccount}")
 */
  __pyx_t_2 = (__pyx_v_self->ccount != 1);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1113
 *         if self.ccount != 1:
 *             raise ValueError(
 *                 f"compare: expecting a single element, got {self.ccount}")             # <<<<<<<<<<<<<<
 *         if self.rcount != 1:
 *             raise ValueError(
 */
    __pyx_t_4 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->ccount); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_compare_expecting_a_single_eleme, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1112
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.ccount != 1:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"compare: expecting a single element, got {self.ccount}")
 *         if self.rcount != 1:
 */
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(18, 1112, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1111
 *             raise ValueError(
 *                 f"origin: expecting a single element, got {self.ocount}")
 *         if self.ccount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"compare: expecting a single element, got {self.ccount}")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1114
 *             raise ValueError(
 *                 f"compare: expecting a single element, got {self.ccount}")
 *         if self.rcount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 */
  __pyx_t_2 = (__pyx_v_self->rcount != 1);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1116
 *         if self.rcount != 1:
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")             # <<<<<<<<<<<<<<
 *         if self.otype != self.ctype:
 *             raise ValueError(
 */
    __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_self->rcount); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_result_expecting_a_single_elemen, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 1116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1115
 *                 f"compare: expecting a single element, got {self.ccount}")
 *         if self.rcount != 1:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.ctype:
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(18, 1115, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1114
 *             raise ValueError(
 *                 f"compare: expecting a single element, got {self.ccount}")
 *         if self.rcount != 1:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1117
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.ctype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in origin and compare MPI datatypes")
 */
  __pyx_t_2 = (__pyx_v_self->otype != __pyx_v_self->ctype);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1118
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.ctype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in origin and compare MPI datatypes")
 *         if self.otype != self.rtype:
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(18, 1118, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1117
 *             raise ValueError(
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.ctype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in origin and compare MPI datatypes")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1120
 *             raise ValueError(
 *                 f"mismatch in origin and compare MPI datatypes")
 *         if self.otype != self.rtype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in origin and result MPI datatypes")
 */
  __pyx_t_2 = (__pyx_v_self->otype != __pyx_v_self->rtype);
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1121
 *                 f"mismatch in origin and compare MPI datatypes")
 *         if self.otype != self.rtype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in origin and result MPI datatypes")
 *         return 0
 */
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 1121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(18, 1121, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgbuffer.pxi":1120
 *             raise ValueError(
 *                 f"mismatch in origin and compare MPI datatypes")
 *         if self.otype != self.rtype:             # <<<<<<<<<<<<<<
 *             raise ValueError(
 *                 f"mismatch in origin and result MPI datatypes")
 */
  }

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1123
 *             raise ValueError(
 *                 f"mismatch in origin and result MPI datatypes")
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1100
 *         return 0
 * 
 *     cdef int for_cmp_swap(self, object origin, object compare, object result,             # <<<<<<<<<<<<<<
 *                           int rank, MPI_Aint disp) except -1:
 *         self.set_origin(origin, rank)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_rma.for_cmp_swap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1126
 * 
 * 
 * cdef inline _p_msg_rma message_rma():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_rma msg = _p_msg_rma.__new__(_p_msg_rma)
 *     return msg
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_f_6mpi4py_3MPI_message_rma(void) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_rma", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1127
 * 
 * cdef inline _p_msg_rma message_rma():
 *     cdef _p_msg_rma msg = _p_msg_rma.__new__(_p_msg_rma)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_rma(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_rma), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1127, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1128
 * cdef inline _p_msg_rma message_rma():
 *     cdef _p_msg_rma msg = _p_msg_rma.__new__(_p_msg_rma)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1126
 * 
 * 
 * cdef inline _p_msg_rma message_rma():             # <<<<<<<<<<<<<<
 *     cdef _p_msg_rma msg = _p_msg_rma.__new__(_p_msg_rma)
 *     return msg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_rma", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1144
 *     cdef object _msg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf   = NULL
 *         self.count = 0
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9_p_msg_io_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9_p_msg_io_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9_p_msg_io___cinit__(((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9_p_msg_io___cinit__(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1145
 * 
 *     def __cinit__(self):
 *         self.buf   = NULL             # <<<<<<<<<<<<<<
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL
 */
  __pyx_v_self->buf = NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1146
 *     def __cinit__(self):
 *         self.buf   = NULL
 *         self.count = 0             # <<<<<<<<<<<<<<
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 */
  __pyx_v_self->count = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1147
 *         self.buf   = NULL
 *         self.count = 0
 *         self.dtype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_read(self, object msg) except -1:
 */
  __pyx_v_self->dtype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1144
 *     cdef object _msg
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.buf   = NULL
 *         self.count = 0
 */

  /* function exit code */
  __pyx_r = 0;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1149
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef int for_read(self, object msg) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 0,  # writable
 */

static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self, PyObject *__pyx_v_msg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_read", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1150
 * 
 *     cdef int for_read(self, object msg) except -1:
 *         self._msg = message_simple(             # <<<<<<<<<<<<<<
 *             msg, 0,  # writable
 *             0, 0,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 0, 0, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1157
 *             &self.dtype,
 *         )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cdef int for_write(self, object msg) except -1:
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1149
 *         self.dtype = MPI_DATATYPE_NULL
 * 
 *     cdef int for_read(self, object msg) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 0,  # writable
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_io.for_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1159
 *         return 0
 * 
 *     cdef int for_write(self, object msg) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 1,  # readonly
 */

static int __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_self, PyObject *__pyx_v_msg) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("for_write", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1160
 * 
 *     cdef int for_write(self, object msg) except -1:
 *         self._msg = message_simple(             # <<<<<<<<<<<<<<
 *             msg, 1,  # readonly
 *             0, 0,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_simple(__pyx_v_msg, 1, 0, 0, (&__pyx_v_self->buf), (&__pyx_v_self->count), (&__pyx_v_self->dtype))); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_msg);
  __Pyx_DECREF(__pyx_v_self->_msg);
  __pyx_v_self->_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1167
 *             &self.dtype,
 *         )
 *         return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1159
 *         return 0
 * 
 *     cdef int for_write(self, object msg) except -1:             # <<<<<<<<<<<<<<
 *         self._msg = message_simple(
 *             msg, 1,  # readonly
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._p_msg_io.for_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1170
 * 
 * 
 * cdef inline _p_msg_io message_io_read(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_read(buf)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_read(PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_io_read", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1171
 * 
 * cdef inline _p_msg_io message_io_read(object buf):
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)             # <<<<<<<<<<<<<<
 *     msg.for_read(buf)
 *     return msg
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_io(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_io), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1171, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1172
 * cdef inline _p_msg_io message_io_read(object buf):
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_read(buf)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read(__pyx_v_msg, __pyx_v_buf); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 1172, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1173
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_read(buf)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * cdef inline _p_msg_io message_io_write(object buf):
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1170
 * 
 * 
 * cdef inline _p_msg_io message_io_read(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_read(buf)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_io_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgbuffer.pxi":1175
 *     return msg
 * 
 * cdef inline _p_msg_io message_io_write(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_write(buf)
 */

static CYTHON_INLINE struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_f_6mpi4py_3MPI_message_io_write(PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_msg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("message_io_write", 1);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1176
 * 
 * cdef inline _p_msg_io message_io_write(object buf):
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)             # <<<<<<<<<<<<<<
 *     msg.for_write(buf)
 *     return msg
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_msg_io(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_msg_io), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 1176, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1177
 * cdef inline _p_msg_io message_io_write(object buf):
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_write(buf)             # <<<<<<<<<<<<<<
 *     return msg
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write(__pyx_v_msg, __pyx_v_buf); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(18, 1177, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1178
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_write(buf)
 *     return msg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1175
 *     return msg
 * 
 * cdef inline _p_msg_io message_io_write(object buf):             # <<<<<<<<<<<<<<
 *     cdef _p_msg_io msg = _p_msg_io.__new__(_p_msg_io)
 *     msg.for_write(buf)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.message_io_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":36
 *     cdef object ob_THRES
 * 
 *     def __cinit__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         <void> args    # unused
 *         <void> kwargs  # unused
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Pickle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Pickle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle___cinit__(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Pickle___cinit__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":37
 * 
 *     def __cinit__(self, *args, **kwargs):
 *         <void> args    # unused             # <<<<<<<<<<<<<<
 *         <void> kwargs  # unused
 *         self.ob_dumps = PyPickle_dumps
 */
  ((void)__pyx_v_args);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":38
 *     def __cinit__(self, *args, **kwargs):
 *         <void> args    # unused
 *         <void> kwargs  # unused             # <<<<<<<<<<<<<<
 *         self.ob_dumps = PyPickle_dumps
 *         self.ob_loads = PyPickle_loads
 */
  ((void)__pyx_v_kwargs);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":39
 *         <void> args    # unused
 *         <void> kwargs  # unused
 *         self.ob_dumps = PyPickle_dumps             # <<<<<<<<<<<<<<
 *         self.ob_loads = PyPickle_loads
 *         self.ob_PROTO = PyPickle_PROTOCOL
 */
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  __Pyx_GOTREF(__pyx_v_self->ob_dumps);
  __Pyx_DECREF(__pyx_v_self->ob_dumps);
  __pyx_v_self->ob_dumps = __pyx_v_6mpi4py_3MPI_PyPickle_dumps;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":40
 *         <void> kwargs  # unused
 *         self.ob_dumps = PyPickle_dumps
 *         self.ob_loads = PyPickle_loads             # <<<<<<<<<<<<<<
 *         self.ob_PROTO = PyPickle_PROTOCOL
 *         self.ob_THRES = PyPickle_THRESHOLD
 */
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
  __Pyx_GOTREF(__pyx_v_self->ob_loads);
  __Pyx_DECREF(__pyx_v_self->ob_loads);
  __pyx_v_self->ob_loads = __pyx_v_6mpi4py_3MPI_PyPickle_loads;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":41
 *         self.ob_dumps = PyPickle_dumps
 *         self.ob_loads = PyPickle_loads
 *         self.ob_PROTO = PyPickle_PROTOCOL             # <<<<<<<<<<<<<<
 *         self.ob_THRES = PyPickle_THRESHOLD
 * 
 */
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_GOTREF(__pyx_v_self->ob_PROTO);
  __Pyx_DECREF(__pyx_v_self->ob_PROTO);
  __pyx_v_self->ob_PROTO = __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":42
 *         self.ob_loads = PyPickle_loads
 *         self.ob_PROTO = PyPickle_PROTOCOL
 *         self.ob_THRES = PyPickle_THRESHOLD             # <<<<<<<<<<<<<<
 * 
 *     def __init__(
 */
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
  __Pyx_GOTREF(__pyx_v_self->ob_THRES);
  __Pyx_DECREF(__pyx_v_self->ob_THRES);
  __pyx_v_self->ob_THRES = __pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":36
 *     cdef object ob_THRES
 * 
 *     def __cinit__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         <void> args    # unused
 *         <void> kwargs  # unused
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":44
 *         self.ob_THRES = PyPickle_THRESHOLD
 * 
 *     def __init__(             # <<<<<<<<<<<<<<
 *         self,
 *         dumps: Callable[[Any, int], bytes] | None = None,
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Pickle_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Pickle_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dumps = 0;
  PyObject *__pyx_v_loads = 0;
  PyObject *__pyx_v_protocol = 0;
  PyObject *__pyx_v_threshold = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dumps,&__pyx_n_s_loads,&__pyx_n_s_protocol,&__pyx_n_s_threshold,0};

    /* "src/mpi4py/MPI.src/msgpickle.pxi":46
 *     def __init__(
 *         self,
 *         dumps: Callable[[Any, int], bytes] | None = None,             # <<<<<<<<<<<<<<
 *         loads: Callable[[Buffer], Any] | None = None,
 *         protocol: int | None = None,
 */
    values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/msgpickle.pxi":47
 *         self,
 *         dumps: Callable[[Any, int], bytes] | None = None,
 *         loads: Callable[[Buffer], Any] | None = None,             # <<<<<<<<<<<<<<
 *         protocol: int | None = None,
 *         threshold: int | None = None,
 */
    values[1] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/msgpickle.pxi":48
 *         dumps: Callable[[Any, int], bytes] | None = None,
 *         loads: Callable[[Buffer], Any] | None = None,
 *         protocol: int | None = None,             # <<<<<<<<<<<<<<
 *         threshold: int | None = None,
 *     ) -> None:
 */
    values[2] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/msgpickle.pxi":49
 *         loads: Callable[[Buffer], Any] | None = None,
 *         protocol: int | None = None,
 *         threshold: int | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         if dumps is None:
 */
    values[3] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dumps);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 44, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loads);
          if (value) { values[1] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 44, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_protocol);
          if (value) { values[2] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 44, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_threshold);
          if (value) { values[3] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 44, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(7, 44, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dumps = values[0];
    __pyx_v_loads = values[1];
    __pyx_v_protocol = values[2];
    __pyx_v_threshold = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 4, __pyx_nargs); __PYX_ERR(7, 44, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_2__init__(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), __pyx_v_dumps, __pyx_v_loads, __pyx_v_protocol, __pyx_v_threshold);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":44
 *         self.ob_THRES = PyPickle_THRESHOLD
 * 
 *     def __init__(             # <<<<<<<<<<<<<<
 *         self,
 *         dumps: Callable[[Any, int], bytes] | None = None,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Pickle_2__init__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_dumps, PyObject *__pyx_v_loads, PyObject *__pyx_v_protocol, PyObject *__pyx_v_threshold) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dumps);
  __Pyx_INCREF(__pyx_v_loads);
  __Pyx_INCREF(__pyx_v_protocol);
  __Pyx_INCREF(__pyx_v_threshold);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":51
 *         threshold: int | None = None,
 *     ) -> None:
 *         if dumps is None:             # <<<<<<<<<<<<<<
 *             dumps = PyPickle_dumps
 *         if loads is None:
 */
  __pyx_t_1 = (__pyx_v_dumps == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":52
 *     ) -> None:
 *         if dumps is None:
 *             dumps = PyPickle_dumps             # <<<<<<<<<<<<<<
 *         if loads is None:
 *             loads = PyPickle_loads
 */
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
    __Pyx_DECREF_SET(__pyx_v_dumps, __pyx_v_6mpi4py_3MPI_PyPickle_dumps);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":51
 *         threshold: int | None = None,
 *     ) -> None:
 *         if dumps is None:             # <<<<<<<<<<<<<<
 *             dumps = PyPickle_dumps
 *         if loads is None:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":53
 *         if dumps is None:
 *             dumps = PyPickle_dumps
 *         if loads is None:             # <<<<<<<<<<<<<<
 *             loads = PyPickle_loads
 *         if protocol is None:
 */
  __pyx_t_1 = (__pyx_v_loads == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":54
 *             dumps = PyPickle_dumps
 *         if loads is None:
 *             loads = PyPickle_loads             # <<<<<<<<<<<<<<
 *         if protocol is None:
 *             if dumps is PyPickle_dumps:
 */
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
    __Pyx_DECREF_SET(__pyx_v_loads, __pyx_v_6mpi4py_3MPI_PyPickle_loads);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":53
 *         if dumps is None:
 *             dumps = PyPickle_dumps
 *         if loads is None:             # <<<<<<<<<<<<<<
 *             loads = PyPickle_loads
 *         if protocol is None:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":55
 *         if loads is None:
 *             loads = PyPickle_loads
 *         if protocol is None:             # <<<<<<<<<<<<<<
 *             if dumps is PyPickle_dumps:
 *                 protocol = PyPickle_PROTOCOL
 */
  __pyx_t_1 = (__pyx_v_protocol == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":56
 *             loads = PyPickle_loads
 *         if protocol is None:
 *             if dumps is PyPickle_dumps:             # <<<<<<<<<<<<<<
 *                 protocol = PyPickle_PROTOCOL
 *         if threshold is None:
 */
    __pyx_t_1 = (__pyx_v_dumps == __pyx_v_6mpi4py_3MPI_PyPickle_dumps);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":57
 *         if protocol is None:
 *             if dumps is PyPickle_dumps:
 *                 protocol = PyPickle_PROTOCOL             # <<<<<<<<<<<<<<
 *         if threshold is None:
 *             threshold = PyPickle_THRESHOLD
 */
      __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
      __Pyx_DECREF_SET(__pyx_v_protocol, __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);

      /* "src/mpi4py/MPI.src/msgpickle.pxi":56
 *             loads = PyPickle_loads
 *         if protocol is None:
 *             if dumps is PyPickle_dumps:             # <<<<<<<<<<<<<<
 *                 protocol = PyPickle_PROTOCOL
 *         if threshold is None:
 */
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":55
 *         if loads is None:
 *             loads = PyPickle_loads
 *         if protocol is None:             # <<<<<<<<<<<<<<
 *             if dumps is PyPickle_dumps:
 *                 protocol = PyPickle_PROTOCOL
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":58
 *             if dumps is PyPickle_dumps:
 *                 protocol = PyPickle_PROTOCOL
 *         if threshold is None:             # <<<<<<<<<<<<<<
 *             threshold = PyPickle_THRESHOLD
 *         self.ob_dumps = dumps
 */
  __pyx_t_1 = (__pyx_v_threshold == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":59
 *                 protocol = PyPickle_PROTOCOL
 *         if threshold is None:
 *             threshold = PyPickle_THRESHOLD             # <<<<<<<<<<<<<<
 *         self.ob_dumps = dumps
 *         self.ob_loads = loads
 */
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
    __Pyx_DECREF_SET(__pyx_v_threshold, __pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":58
 *             if dumps is PyPickle_dumps:
 *                 protocol = PyPickle_PROTOCOL
 *         if threshold is None:             # <<<<<<<<<<<<<<
 *             threshold = PyPickle_THRESHOLD
 *         self.ob_dumps = dumps
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":60
 *         if threshold is None:
 *             threshold = PyPickle_THRESHOLD
 *         self.ob_dumps = dumps             # <<<<<<<<<<<<<<
 *         self.ob_loads = loads
 *         self.ob_PROTO = protocol
 */
  __Pyx_INCREF(__pyx_v_dumps);
  __Pyx_GIVEREF(__pyx_v_dumps);
  __Pyx_GOTREF(__pyx_v_self->ob_dumps);
  __Pyx_DECREF(__pyx_v_self->ob_dumps);
  __pyx_v_self->ob_dumps = __pyx_v_dumps;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":61
 *             threshold = PyPickle_THRESHOLD
 *         self.ob_dumps = dumps
 *         self.ob_loads = loads             # <<<<<<<<<<<<<<
 *         self.ob_PROTO = protocol
 *         self.ob_THRES = threshold
 */
  __Pyx_INCREF(__pyx_v_loads);
  __Pyx_GIVEREF(__pyx_v_loads);
  __Pyx_GOTREF(__pyx_v_self->ob_loads);
  __Pyx_DECREF(__pyx_v_self->ob_loads);
  __pyx_v_self->ob_loads = __pyx_v_loads;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":62
 *         self.ob_dumps = dumps
 *         self.ob_loads = loads
 *         self.ob_PROTO = protocol             # <<<<<<<<<<<<<<
 *         self.ob_THRES = threshold
 * 
 */
  __Pyx_INCREF(__pyx_v_protocol);
  __Pyx_GIVEREF(__pyx_v_protocol);
  __Pyx_GOTREF(__pyx_v_self->ob_PROTO);
  __Pyx_DECREF(__pyx_v_self->ob_PROTO);
  __pyx_v_self->ob_PROTO = __pyx_v_protocol;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":63
 *         self.ob_loads = loads
 *         self.ob_PROTO = protocol
 *         self.ob_THRES = threshold             # <<<<<<<<<<<<<<
 * 
 *     def dumps(
 */
  __Pyx_INCREF(__pyx_v_threshold);
  __Pyx_GIVEREF(__pyx_v_threshold);
  __Pyx_GOTREF(__pyx_v_self->ob_THRES);
  __Pyx_DECREF(__pyx_v_self->ob_THRES);
  __pyx_v_self->ob_THRES = __pyx_v_threshold;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":44
 *         self.ob_THRES = PyPickle_THRESHOLD
 * 
 *     def __init__(             # <<<<<<<<<<<<<<
 *         self,
 *         dumps: Callable[[Any, int], bytes] | None = None,
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_XDECREF(__pyx_v_dumps);
  __Pyx_XDECREF(__pyx_v_loads);
  __Pyx_XDECREF(__pyx_v_protocol);
  __Pyx_XDECREF(__pyx_v_threshold);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":65
 *         self.ob_THRES = threshold
 * 
 *     def dumps(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_5dumps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Pickle_4dumps, "dumps(self, obj: Any) -> bytes\n\n        Serialize object to pickle data stream.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_5dumps = {"dumps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_5dumps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_4dumps};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_5dumps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dumps (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 65, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "dumps") < 0)) __PYX_ERR(7, 65, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dumps", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 65, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.dumps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_4dumps(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), __pyx_v_obj);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_4dumps(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dumps", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":72
 *         Serialize object to pickle data stream.
 *         """
 *         return cdumps(self, obj)             # <<<<<<<<<<<<<<
 * 
 *     def loads(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_cdumps(__pyx_v_self, __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":65
 *         self.ob_THRES = threshold
 * 
 *     def dumps(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.dumps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":74
 *         return cdumps(self, obj)
 * 
 *     def loads(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_7loads(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Pickle_6loads, "loads(self, data: Buffer) -> Any\n\n        Deserialize object from pickle data stream.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_7loads = {"loads", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_7loads, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_6loads};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_7loads(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loads (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 74, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "loads") < 0)) __PYX_ERR(7, 74, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("loads", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 74, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.loads", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_6loads(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_6loads(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("loads", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":81
 *         Deserialize object from pickle data stream.
 *         """
 *         return cloads(self, data)             # <<<<<<<<<<<<<<
 * 
 *     def dumps_oob(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_cloads(__pyx_v_self, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":74
 *         return cdumps(self, obj)
 * 
 *     def loads(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.loads", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":83
 *         return cloads(self, data)
 * 
 *     def dumps_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_9dumps_oob(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Pickle_8dumps_oob, "dumps_oob(self, obj: Any) -> tuple[bytes, list[buffer]]\n\n        Serialize object to pickle data stream and out-of-band buffers.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_9dumps_oob = {"dumps_oob", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_9dumps_oob, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_8dumps_oob};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_9dumps_oob(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dumps_oob (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 83, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "dumps_oob") < 0)) __PYX_ERR(7, 83, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dumps_oob", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 83, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.dumps_oob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_8dumps_oob(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), __pyx_v_obj);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_8dumps_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dumps_oob", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":90
 *         Serialize object to pickle data stream and out-of-band buffers.
 *         """
 *         return cdumps_oob(self, obj)             # <<<<<<<<<<<<<<
 * 
 *     def loads_oob(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_cdumps_oob(__pyx_v_self, __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":83
 *         return cloads(self, data)
 * 
 *     def dumps_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.dumps_oob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":92
 *         return cdumps_oob(self, obj)
 * 
 *     def loads_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_11loads_oob(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Pickle_10loads_oob, "loads_oob(self, data: Buffer, buffers: Iterable[Buffer]) -> Any\n\n        Deserialize object from pickle data stream and out-of-band buffers.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Pickle_11loads_oob = {"loads_oob", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_11loads_oob, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_10loads_oob};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_11loads_oob(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_buffers = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("loads_oob (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_data,&__pyx_n_s_buffers,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_data)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 92, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buffers)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 92, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("loads_oob", 1, 2, 2, 1); __PYX_ERR(7, 92, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "loads_oob") < 0)) __PYX_ERR(7, 92, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_data = values[0];
    __pyx_v_buffers = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("loads_oob", 1, 2, 2, __pyx_nargs); __PYX_ERR(7, 92, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.loads_oob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_10loads_oob(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), __pyx_v_data, __pyx_v_buffers);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_10loads_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_data, PyObject *__pyx_v_buffers) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("loads_oob", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":100
 *         Deserialize object from pickle data stream and out-of-band buffers.
 *         """
 *         return cloads_oob(self, data, buffers)             # <<<<<<<<<<<<<<
 * 
 *     property PROTOCOL:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_cloads_oob(__pyx_v_self, __pyx_v_data, __pyx_v_buffers); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":92
 *         return cdumps_oob(self, obj)
 * 
 *     def loads_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Pickle.loads_oob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":104
 *     property PROTOCOL:
 *         """Protocol version."""
 *         def __get__(self) -> int | None:             # <<<<<<<<<<<<<<
 *             return self.ob_PROTO
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_8PROTOCOL_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_8PROTOCOL_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_8PROTOCOL___get__(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_8PROTOCOL___get__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":105
 *         """Protocol version."""
 *         def __get__(self) -> int | None:
 *             return self.ob_PROTO             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, protocol: int | None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->ob_PROTO);
  __pyx_r = __pyx_v_self->ob_PROTO;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":104
 *     property PROTOCOL:
 *         """Protocol version."""
 *         def __get__(self) -> int | None:             # <<<<<<<<<<<<<<
 *             return self.ob_PROTO
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":107
 *             return self.ob_PROTO
 * 
 *         def __set__(self, protocol: int | None):             # <<<<<<<<<<<<<<
 *             if protocol is None:
 *                 if self.ob_dumps is PyPickle_dumps:
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Pickle_8PROTOCOL_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_protocol); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Pickle_8PROTOCOL_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_protocol) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_8PROTOCOL_2__set__(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), ((PyObject *)__pyx_v_protocol));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Pickle_8PROTOCOL_2__set__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_protocol) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_protocol);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":108
 * 
 *         def __set__(self, protocol: int | None):
 *             if protocol is None:             # <<<<<<<<<<<<<<
 *                 if self.ob_dumps is PyPickle_dumps:
 *                     protocol = PyPickle_PROTOCOL
 */
  __pyx_t_1 = (__pyx_v_protocol == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":109
 *         def __set__(self, protocol: int | None):
 *             if protocol is None:
 *                 if self.ob_dumps is PyPickle_dumps:             # <<<<<<<<<<<<<<
 *                     protocol = PyPickle_PROTOCOL
 *             self.ob_PROTO = protocol
 */
    __pyx_t_1 = (__pyx_v_self->ob_dumps == __pyx_v_6mpi4py_3MPI_PyPickle_dumps);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":110
 *             if protocol is None:
 *                 if self.ob_dumps is PyPickle_dumps:
 *                     protocol = PyPickle_PROTOCOL             # <<<<<<<<<<<<<<
 *             self.ob_PROTO = protocol
 * 
 */
      __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
      __Pyx_DECREF_SET(__pyx_v_protocol, __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);

      /* "src/mpi4py/MPI.src/msgpickle.pxi":109
 *         def __set__(self, protocol: int | None):
 *             if protocol is None:
 *                 if self.ob_dumps is PyPickle_dumps:             # <<<<<<<<<<<<<<
 *                     protocol = PyPickle_PROTOCOL
 *             self.ob_PROTO = protocol
 */
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":108
 * 
 *         def __set__(self, protocol: int | None):
 *             if protocol is None:             # <<<<<<<<<<<<<<
 *                 if self.ob_dumps is PyPickle_dumps:
 *                     protocol = PyPickle_PROTOCOL
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":111
 *                 if self.ob_dumps is PyPickle_dumps:
 *                     protocol = PyPickle_PROTOCOL
 *             self.ob_PROTO = protocol             # <<<<<<<<<<<<<<
 * 
 *     property THRESHOLD:
 */
  __Pyx_INCREF(__pyx_v_protocol);
  __Pyx_GIVEREF(__pyx_v_protocol);
  __Pyx_GOTREF(__pyx_v_self->ob_PROTO);
  __Pyx_DECREF(__pyx_v_self->ob_PROTO);
  __pyx_v_self->ob_PROTO = __pyx_v_protocol;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":107
 *             return self.ob_PROTO
 * 
 *         def __set__(self, protocol: int | None):             # <<<<<<<<<<<<<<
 *             if protocol is None:
 *                 if self.ob_dumps is PyPickle_dumps:
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_XDECREF(__pyx_v_protocol);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":115
 *     property THRESHOLD:
 *         """Out-of-band threshold."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.ob_THRES
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_9THRESHOLD_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Pickle_9THRESHOLD_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_9THRESHOLD___get__(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Pickle_9THRESHOLD___get__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":116
 *         """Out-of-band threshold."""
 *         def __get__(self) -> int:
 *             return self.ob_THRES             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, threshold: int | None):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->ob_THRES);
  __pyx_r = __pyx_v_self->ob_THRES;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":115
 *     property THRESHOLD:
 *         """Out-of-band threshold."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.ob_THRES
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":118
 *             return self.ob_THRES
 * 
 *         def __set__(self, threshold: int | None):             # <<<<<<<<<<<<<<
 *             if threshold is None:
 *                 threshold = PyPickle_THRESHOLD
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Pickle_9THRESHOLD_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_threshold); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Pickle_9THRESHOLD_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_threshold) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Pickle_9THRESHOLD_2__set__(((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_v_self), ((PyObject *)__pyx_v_threshold));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Pickle_9THRESHOLD_2__set__(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_self, PyObject *__pyx_v_threshold) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_threshold);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":119
 * 
 *         def __set__(self, threshold: int | None):
 *             if threshold is None:             # <<<<<<<<<<<<<<
 *                 threshold = PyPickle_THRESHOLD
 *             self.ob_THRES = threshold
 */
  __pyx_t_1 = (__pyx_v_threshold == Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":120
 *         def __set__(self, threshold: int | None):
 *             if threshold is None:
 *                 threshold = PyPickle_THRESHOLD             # <<<<<<<<<<<<<<
 *             self.ob_THRES = threshold
 * 
 */
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
    __Pyx_DECREF_SET(__pyx_v_threshold, __pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":119
 * 
 *         def __set__(self, threshold: int | None):
 *             if threshold is None:             # <<<<<<<<<<<<<<
 *                 threshold = PyPickle_THRESHOLD
 *             self.ob_THRES = threshold
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":121
 *             if threshold is None:
 *                 threshold = PyPickle_THRESHOLD
 *             self.ob_THRES = threshold             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(__pyx_v_threshold);
  __Pyx_GIVEREF(__pyx_v_threshold);
  __Pyx_GOTREF(__pyx_v_self->ob_THRES);
  __Pyx_DECREF(__pyx_v_self->ob_THRES);
  __pyx_v_self->ob_THRES = __pyx_v_threshold;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":118
 *             return self.ob_THRES
 * 
 *         def __set__(self, threshold: int | None):             # <<<<<<<<<<<<<<
 *             if threshold is None:
 *                 threshold = PyPickle_THRESHOLD
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_XDECREF(__pyx_v_threshold);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":133
 * cdef object PyPickle5_loads = None                        # ~> legacy
 * 
 * cdef int import_pickle5() except -1:                      # ~> legacy             # <<<<<<<<<<<<<<
 *     global have_pickle5                                   # ~> legacy
 *     global PyPickle5_dumps                                # ~> legacy
 */

static int __pyx_f_6mpi4py_3MPI_import_pickle5(void) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("import_pickle5", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":137
 *     global PyPickle5_dumps                                # ~> legacy
 *     global PyPickle5_loads                                # ~> legacy
 *     if have_pickle5 < 0:                                  # ~> legacy             # <<<<<<<<<<<<<<
 *         try:                                              # ~> legacy
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy
 */
  __pyx_t_1 = (__pyx_v_6mpi4py_3MPI_have_pickle5 < 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":138
 *     global PyPickle5_loads                                # ~> legacy
 *     if have_pickle5 < 0:                                  # ~> legacy
 *         try:                                              # ~> legacy             # <<<<<<<<<<<<<<
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy
 *             from pickle5 import loads as PyPickle5_loads  # ~> legacy
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":139
 *     if have_pickle5 < 0:                                  # ~> legacy
 *         try:                                              # ~> legacy
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy             # <<<<<<<<<<<<<<
 *             from pickle5 import loads as PyPickle5_loads  # ~> legacy
 *             have_pickle5 = 1                              # ~> legacy
 */
        __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 139, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_n_s_dumps);
        __Pyx_GIVEREF(__pyx_n_s_dumps);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_n_s_dumps)) __PYX_ERR(7, 139, __pyx_L4_error);
        __pyx_t_6 = __Pyx_Import(__pyx_n_s_pickle5, __pyx_t_5, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 139, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __Pyx_ImportFrom(__pyx_t_6, __pyx_n_s_dumps); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 139, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":140
 *         try:                                              # ~> legacy
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy
 *             from pickle5 import loads as PyPickle5_loads  # ~> legacy             # <<<<<<<<<<<<<<
 *             have_pickle5 = 1                              # ~> legacy
 *         except ImportError:                               # ~> legacy
 */
        __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 140, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_n_s_loads);
        __Pyx_GIVEREF(__pyx_n_s_loads);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_loads)) __PYX_ERR(7, 140, __pyx_L4_error);
        __pyx_t_5 = __Pyx_Import(__pyx_n_s_pickle5, __pyx_t_6, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 140, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_ImportFrom(__pyx_t_5, __pyx_n_s_loads); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 140, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle5_loads);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle5_loads, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":141
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy
 *             from pickle5 import loads as PyPickle5_loads  # ~> legacy
 *             have_pickle5 = 1                              # ~> legacy             # <<<<<<<<<<<<<<
 *         except ImportError:                               # ~> legacy
 *             PyPickle5_dumps = None                        # ~> legacy
 */
        __pyx_v_6mpi4py_3MPI_have_pickle5 = 1;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":138
 *     global PyPickle5_loads                                # ~> legacy
 *     if have_pickle5 < 0:                                  # ~> legacy
 *         try:                                              # ~> legacy             # <<<<<<<<<<<<<<
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy
 *             from pickle5 import loads as PyPickle5_loads  # ~> legacy
 */
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":142
 *             from pickle5 import loads as PyPickle5_loads  # ~> legacy
 *             have_pickle5 = 1                              # ~> legacy
 *         except ImportError:                               # ~> legacy             # <<<<<<<<<<<<<<
 *             PyPickle5_dumps = None                        # ~> legacy
 *             PyPickle5_loads = None                        # ~> legacy
 */
      __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
      if (__pyx_t_7) {
        __Pyx_AddTraceback("mpi4py.MPI.import_pickle5", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_8) < 0) __PYX_ERR(7, 142, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_8);

        /* "src/mpi4py/MPI.src/msgpickle.pxi":143
 *             have_pickle5 = 1                              # ~> legacy
 *         except ImportError:                               # ~> legacy
 *             PyPickle5_dumps = None                        # ~> legacy             # <<<<<<<<<<<<<<
 *             PyPickle5_loads = None                        # ~> legacy
 *             have_pickle5 = 0                              # ~> legacy
 */
        __Pyx_INCREF(Py_None);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps, Py_None);
        __Pyx_GIVEREF(Py_None);

        /* "src/mpi4py/MPI.src/msgpickle.pxi":144
 *         except ImportError:                               # ~> legacy
 *             PyPickle5_dumps = None                        # ~> legacy
 *             PyPickle5_loads = None                        # ~> legacy             # <<<<<<<<<<<<<<
 *             have_pickle5 = 0                              # ~> legacy
 *     return have_pickle5                                   # ~> legacy
 */
        __Pyx_INCREF(Py_None);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle5_loads);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle5_loads, Py_None);
        __Pyx_GIVEREF(Py_None);

        /* "src/mpi4py/MPI.src/msgpickle.pxi":145
 *             PyPickle5_dumps = None                        # ~> legacy
 *             PyPickle5_loads = None                        # ~> legacy
 *             have_pickle5 = 0                              # ~> legacy             # <<<<<<<<<<<<<<
 *     return have_pickle5                                   # ~> legacy
 * 
 */
        __pyx_v_6mpi4py_3MPI_have_pickle5 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":138
 *     global PyPickle5_loads                                # ~> legacy
 *     if have_pickle5 < 0:                                  # ~> legacy
 *         try:                                              # ~> legacy             # <<<<<<<<<<<<<<
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy
 *             from pickle5 import loads as PyPickle5_loads  # ~> legacy
 */
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":137
 *     global PyPickle5_dumps                                # ~> legacy
 *     global PyPickle5_loads                                # ~> legacy
 *     if have_pickle5 < 0:                                  # ~> legacy             # <<<<<<<<<<<<<<
 *         try:                                              # ~> legacy
 *             from pickle5 import dumps as PyPickle5_dumps  # ~> legacy
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":146
 *             PyPickle5_loads = None                        # ~> legacy
 *             have_pickle5 = 0                              # ~> legacy
 *     return have_pickle5                                   # ~> legacy             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_6mpi4py_3MPI_have_pickle5;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":133
 * cdef object PyPickle5_loads = None                        # ~> legacy
 * 
 * cdef int import_pickle5() except -1:                      # ~> legacy             # <<<<<<<<<<<<<<
 *     global have_pickle5                                   # ~> legacy
 *     global PyPickle5_dumps                                # ~> legacy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.import_pickle5", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":150
 * 
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):
 *     def buffer_callback(ob):             # <<<<<<<<<<<<<<
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 *         if buf.view.len >= threshold:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19get_buffer_callback_1buffer_callback(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_19get_buffer_callback_1buffer_callback = {"buffer_callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_19get_buffer_callback_1buffer_callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6mpi4py_3MPI_19get_buffer_callback_1buffer_callback(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ob = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("buffer_callback (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ob,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ob)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 150, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "buffer_callback") < 0)) __PYX_ERR(7, 150, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ob = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("buffer_callback", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 150, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.get_buffer_callback.buffer_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_19get_buffer_callback_buffer_callback(__pyx_self, __pyx_v_ob);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_19get_buffer_callback_buffer_callback(PyObject *__pyx_self, PyObject *__pyx_v_ob) {
  struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *__pyx_cur_scope;
  struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *__pyx_outer_scope;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("buffer_callback", 1);
  __pyx_outer_scope = (struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":151
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):
 *     def buffer_callback(ob):
 *         cdef buffer buf = getbuffer(ob, 1, 0)             # <<<<<<<<<<<<<<
 *         if buf.view.len >= threshold:
 *             buffers.append(buf)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(__pyx_v_ob, 1, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":152
 *     def buffer_callback(ob):
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 *         if buf.view.len >= threshold:             # <<<<<<<<<<<<<<
 *             buffers.append(buf)
 *             return False
 */
  __pyx_t_2 = (__pyx_v_buf->view.len >= __pyx_cur_scope->__pyx_v_threshold);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":153
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 *         if buf.view.len >= threshold:
 *             buffers.append(buf)             # <<<<<<<<<<<<<<
 *             return False
 *         else:
 */
    if (unlikely(!__pyx_cur_scope->__pyx_v_buffers)) { __Pyx_RaiseClosureNameError("buffers"); __PYX_ERR(7, 153, __pyx_L1_error) }
    if (unlikely(__pyx_cur_scope->__pyx_v_buffers == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
      __PYX_ERR(7, 153, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_buffers, ((PyObject *)__pyx_v_buf)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 153, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":154
 *         if buf.view.len >= threshold:
 *             buffers.append(buf)
 *             return False             # <<<<<<<<<<<<<<
 *         else:
 *             return True
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":152
 *     def buffer_callback(ob):
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 *         if buf.view.len >= threshold:             # <<<<<<<<<<<<<<
 *             buffers.append(buf)
 *             return False
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":156
 *             return False
 *         else:
 *             return True             # <<<<<<<<<<<<<<
 *     return buffer_callback
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":150
 * 
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):
 *     def buffer_callback(ob):             # <<<<<<<<<<<<<<
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 *         if buf.view.len >= threshold:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.get_buffer_callback.buffer_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":149
 * 
 * 
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):             # <<<<<<<<<<<<<<
 *     def buffer_callback(ob):
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_get_buffer_callback(PyObject *__pyx_v_buffers, Py_ssize_t __pyx_v_threshold) {
  struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *__pyx_cur_scope;
  PyObject *__pyx_v_buffer_callback = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_buffer_callback", 0);
  __pyx_cur_scope = (struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *)__pyx_tp_new_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback(__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(7, 149, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_buffers = __pyx_v_buffers;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_buffers);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_buffers);
  __pyx_cur_scope->__pyx_v_threshold = __pyx_v_threshold;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":150
 * 
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):
 *     def buffer_callback(ob):             # <<<<<<<<<<<<<<
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 *         if buf.view.len >= threshold:
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_19get_buffer_callback_1buffer_callback, 0, __pyx_n_s_get_buffer_callback_locals_buffe, ((PyObject*)__pyx_cur_scope), __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buffer_callback = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":157
 *         else:
 *             return True
 *     return buffer_callback             # <<<<<<<<<<<<<<
 * 
 * cdef object cdumps_oob(Pickle pkl, object obj):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buffer_callback);
  __pyx_r = __pyx_v_buffer_callback;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":149
 * 
 * 
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):             # <<<<<<<<<<<<<<
 *     def buffer_callback(ob):
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.get_buffer_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buffer_callback);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":159
 *     return buffer_callback
 * 
 * cdef object cdumps_oob(Pickle pkl, object obj):             # <<<<<<<<<<<<<<
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy
 */

static PyObject *__pyx_f_6mpi4py_3MPI_cdumps_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, PyObject *__pyx_v_obj) {
  PyObject *__pyx_v_pkl_dumps = 0;
  PyObject *__pyx_v_protocol = 0;
  PyObject *__pyx_v_buffers = 0;
  Py_ssize_t __pyx_v_threshold;
  PyObject *__pyx_v_buf_cb = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cdumps_oob", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":160
 * 
 * cdef object cdumps_oob(Pickle pkl, object obj):
 *     cdef object pkl_dumps = pkl.ob_dumps             # <<<<<<<<<<<<<<
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy
 */
  __pyx_t_1 = __pyx_v_pkl->ob_dumps;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_pkl_dumps = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":161
 * cdef object cdumps_oob(Pickle pkl, object obj):
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy             # <<<<<<<<<<<<<<
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy
 *             if not import_pickle5():         # ~> legacy
 */
  __pyx_t_2 = (PY_VERSION_HEX < 0x03080000);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":162
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy             # <<<<<<<<<<<<<<
 *             if not import_pickle5():         # ~> legacy
 *                 return cdumps(pkl, obj), []  # ~> legacy
 */
    __pyx_t_2 = (__pyx_v_pkl_dumps == __pyx_v_6mpi4py_3MPI_PyPickle_dumps);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":163
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy
 *             if not import_pickle5():         # ~> legacy             # <<<<<<<<<<<<<<
 *                 return cdumps(pkl, obj), []  # ~> legacy
 *             pkl_dumps = PyPickle5_dumps      # ~> legacy
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_import_pickle5(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 163, __pyx_L1_error)
      __pyx_t_2 = (!(__pyx_t_3 != 0));
      if (__pyx_t_2) {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":164
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy
 *             if not import_pickle5():         # ~> legacy
 *                 return cdumps(pkl, obj), []  # ~> legacy             # <<<<<<<<<<<<<<
 *             pkl_dumps = PyPickle5_dumps      # ~> legacy
 *     cdef object protocol = pkl.ob_PROTO
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_cdumps(__pyx_v_pkl, __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_1);
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(7, 164, __pyx_L1_error);
        __Pyx_GIVEREF(__pyx_t_4);
        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4)) __PYX_ERR(7, 164, __pyx_L1_error);
        __pyx_t_1 = 0;
        __pyx_t_4 = 0;
        __pyx_r = __pyx_t_5;
        __pyx_t_5 = 0;
        goto __pyx_L0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":163
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy
 *             if not import_pickle5():         # ~> legacy             # <<<<<<<<<<<<<<
 *                 return cdumps(pkl, obj), []  # ~> legacy
 *             pkl_dumps = PyPickle5_dumps      # ~> legacy
 */
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":165
 *             if not import_pickle5():         # ~> legacy
 *                 return cdumps(pkl, obj), []  # ~> legacy
 *             pkl_dumps = PyPickle5_dumps      # ~> legacy             # <<<<<<<<<<<<<<
 *     cdef object protocol = pkl.ob_PROTO
 *     if protocol is None:
 */
      __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps);
      __Pyx_DECREF_SET(__pyx_v_pkl_dumps, __pyx_v_6mpi4py_3MPI_PyPickle5_dumps);

      /* "src/mpi4py/MPI.src/msgpickle.pxi":162
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy             # <<<<<<<<<<<<<<
 *             if not import_pickle5():         # ~> legacy
 *                 return cdumps(pkl, obj), []  # ~> legacy
 */
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":161
 * cdef object cdumps_oob(Pickle pkl, object obj):
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy             # <<<<<<<<<<<<<<
 *         if pkl_dumps is PyPickle_dumps:      # ~> legacy
 *             if not import_pickle5():         # ~> legacy
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":166
 *                 return cdumps(pkl, obj), []  # ~> legacy
 *             pkl_dumps = PyPickle5_dumps      # ~> legacy
 *     cdef object protocol = pkl.ob_PROTO             # <<<<<<<<<<<<<<
 *     if protocol is None:
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered
 */
  __pyx_t_5 = __pyx_v_pkl->ob_PROTO;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_v_protocol = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":167
 *             pkl_dumps = PyPickle5_dumps      # ~> legacy
 *     cdef object protocol = pkl.ob_PROTO
 *     if protocol is None:             # <<<<<<<<<<<<<<
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered
 *     protocol = max(protocol, 5)
 */
  __pyx_t_2 = (__pyx_v_protocol == Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":168
 *     cdef object protocol = pkl.ob_PROTO
 *     if protocol is None:
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered             # <<<<<<<<<<<<<<
 *     protocol = max(protocol, 5)
 *     cdef list buffers = []
 */
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
    __Pyx_DECREF_SET(__pyx_v_protocol, __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":167
 *             pkl_dumps = PyPickle5_dumps      # ~> legacy
 *     cdef object protocol = pkl.ob_PROTO
 *     if protocol is None:             # <<<<<<<<<<<<<<
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered
 *     protocol = max(protocol, 5)
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":169
 *     if protocol is None:
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered
 *     protocol = max(protocol, 5)             # <<<<<<<<<<<<<<
 *     cdef list buffers = []
 *     cdef Py_ssize_t threshold = pkl.ob_THRES
 */
  __pyx_t_6 = 5;
  __Pyx_INCREF(__pyx_v_protocol);
  __pyx_t_5 = __pyx_v_protocol;
  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_1, __pyx_t_5, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(7, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_2) {
    __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = __pyx_t_7;
    __pyx_t_7 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = __pyx_t_5;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF_SET(__pyx_v_protocol, __pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":170
 *         protocol = PyPickle_PROTOCOL         # ~> uncovered
 *     protocol = max(protocol, 5)
 *     cdef list buffers = []             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t threshold = pkl.ob_THRES
 *     cdef object buf_cb = get_buffer_callback(buffers, threshold)
 */
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_buffers = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":171
 *     protocol = max(protocol, 5)
 *     cdef list buffers = []
 *     cdef Py_ssize_t threshold = pkl.ob_THRES             # <<<<<<<<<<<<<<
 *     cdef object buf_cb = get_buffer_callback(buffers, threshold)
 *     cdef object data = pkl_dumps(obj, protocol, buffer_callback=buf_cb)
 */
  __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_pkl->ob_THRES); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(7, 171, __pyx_L1_error)
  __pyx_v_threshold = __pyx_t_8;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":172
 *     cdef list buffers = []
 *     cdef Py_ssize_t threshold = pkl.ob_THRES
 *     cdef object buf_cb = get_buffer_callback(buffers, threshold)             # <<<<<<<<<<<<<<
 *     cdef object data = pkl_dumps(obj, protocol, buffer_callback=buf_cb)
 *     return data, buffers
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_get_buffer_callback(__pyx_v_buffers, __pyx_v_threshold); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_buf_cb = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":173
 *     cdef Py_ssize_t threshold = pkl.ob_THRES
 *     cdef object buf_cb = get_buffer_callback(buffers, threshold)
 *     cdef object data = pkl_dumps(obj, protocol, buffer_callback=buf_cb)             # <<<<<<<<<<<<<<
 *     return data, buffers
 * 
 */
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_obj);
  __Pyx_GIVEREF(__pyx_v_obj);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_obj)) __PYX_ERR(7, 173, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_protocol);
  __Pyx_GIVEREF(__pyx_v_protocol);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_protocol)) __PYX_ERR(7, 173, __pyx_L1_error);
  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_buffer_callback, __pyx_v_buf_cb) < 0) __PYX_ERR(7, 173, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_pkl_dumps, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_data = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":174
 *     cdef object buf_cb = get_buffer_callback(buffers, threshold)
 *     cdef object data = pkl_dumps(obj, protocol, buffer_callback=buf_cb)
 *     return data, buffers             # <<<<<<<<<<<<<<
 * 
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_data);
  __Pyx_GIVEREF(__pyx_v_data);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_data)) __PYX_ERR(7, 174, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_buffers);
  __Pyx_GIVEREF(__pyx_v_buffers);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_buffers)) __PYX_ERR(7, 174, __pyx_L1_error);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":159
 *     return buffer_callback
 * 
 * cdef object cdumps_oob(Pickle pkl, object obj):             # <<<<<<<<<<<<<<
 *     cdef object pkl_dumps = pkl.ob_dumps
 *     if PY_VERSION_HEX < 0x03080000:          # ~> legacy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.cdumps_oob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pkl_dumps);
  __Pyx_XDECREF(__pyx_v_protocol);
  __Pyx_XDECREF(__pyx_v_buffers);
  __Pyx_XDECREF(__pyx_v_buf_cb);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":176
 *     return data, buffers
 * 
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):             # <<<<<<<<<<<<<<
 *     cdef object pkl_loads = pkl.ob_loads
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy
 */

static PyObject *__pyx_f_6mpi4py_3MPI_cloads_oob(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, PyObject *__pyx_v_data, PyObject *__pyx_v_buffers) {
  PyObject *__pyx_v_pkl_loads = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cloads_oob", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":177
 * 
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):
 *     cdef object pkl_loads = pkl.ob_loads             # <<<<<<<<<<<<<<
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy
 *         if pkl_loads is PyPickle_loads:   # ~> legacy
 */
  __pyx_t_1 = __pyx_v_pkl->ob_loads;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_pkl_loads = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":178
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):
 *     cdef object pkl_loads = pkl.ob_loads
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy             # <<<<<<<<<<<<<<
 *         if pkl_loads is PyPickle_loads:   # ~> legacy
 *             if not import_pickle5():      # ~> legacy
 */
  __pyx_t_2 = (PY_VERSION_HEX < 0x03080000);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":179
 *     cdef object pkl_loads = pkl.ob_loads
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy
 *         if pkl_loads is PyPickle_loads:   # ~> legacy             # <<<<<<<<<<<<<<
 *             if not import_pickle5():      # ~> legacy
 *                 return cloads(pkl, data)  # ~> legacy
 */
    __pyx_t_2 = (__pyx_v_pkl_loads == __pyx_v_6mpi4py_3MPI_PyPickle_loads);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":180
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy
 *         if pkl_loads is PyPickle_loads:   # ~> legacy
 *             if not import_pickle5():      # ~> legacy             # <<<<<<<<<<<<<<
 *                 return cloads(pkl, data)  # ~> legacy
 *             pkl_loads = PyPickle5_loads   # ~> legacy
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_import_pickle5(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 180, __pyx_L1_error)
      __pyx_t_2 = (!(__pyx_t_3 != 0));
      if (__pyx_t_2) {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":181
 *         if pkl_loads is PyPickle_loads:   # ~> legacy
 *             if not import_pickle5():      # ~> legacy
 *                 return cloads(pkl, data)  # ~> legacy             # <<<<<<<<<<<<<<
 *             pkl_loads = PyPickle5_loads   # ~> legacy
 *     return pkl_loads(data, buffers=buffers)
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_cloads(__pyx_v_pkl, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":180
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy
 *         if pkl_loads is PyPickle_loads:   # ~> legacy
 *             if not import_pickle5():      # ~> legacy             # <<<<<<<<<<<<<<
 *                 return cloads(pkl, data)  # ~> legacy
 *             pkl_loads = PyPickle5_loads   # ~> legacy
 */
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":182
 *             if not import_pickle5():      # ~> legacy
 *                 return cloads(pkl, data)  # ~> legacy
 *             pkl_loads = PyPickle5_loads   # ~> legacy             # <<<<<<<<<<<<<<
 *     return pkl_loads(data, buffers=buffers)
 * 
 */
      __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_PyPickle5_loads);
      __Pyx_DECREF_SET(__pyx_v_pkl_loads, __pyx_v_6mpi4py_3MPI_PyPickle5_loads);

      /* "src/mpi4py/MPI.src/msgpickle.pxi":179
 *     cdef object pkl_loads = pkl.ob_loads
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy
 *         if pkl_loads is PyPickle_loads:   # ~> legacy             # <<<<<<<<<<<<<<
 *             if not import_pickle5():      # ~> legacy
 *                 return cloads(pkl, data)  # ~> legacy
 */
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":178
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):
 *     cdef object pkl_loads = pkl.ob_loads
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy             # <<<<<<<<<<<<<<
 *         if pkl_loads is PyPickle_loads:   # ~> legacy
 *             if not import_pickle5():      # ~> legacy
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":183
 *                 return cloads(pkl, data)  # ~> legacy
 *             pkl_loads = PyPickle5_loads   # ~> legacy
 *     return pkl_loads(data, buffers=buffers)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_data);
  __Pyx_GIVEREF(__pyx_v_data);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_data)) __PYX_ERR(7, 183, __pyx_L1_error);
  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_buffers, __pyx_v_buffers) < 0) __PYX_ERR(7, 183, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_pkl_loads, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":176
 *     return data, buffers
 * 
 * cdef object cloads_oob(Pickle pkl, object data, object buffers):             # <<<<<<<<<<<<<<
 *     cdef object pkl_loads = pkl.ob_loads
 *     if PY_VERSION_HEX < 0x03080000:       # ~> legacy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.cloads_oob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pkl_loads);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":188
 * # -----------------------------------------------------------------------------
 * 
 * cdef object cdumps(Pickle pkl, object obj):             # <<<<<<<<<<<<<<
 *     if pkl.ob_PROTO is not None:
 *         return pkl.ob_dumps(obj, pkl.ob_PROTO)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_cdumps(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cdumps", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":189
 * 
 * cdef object cdumps(Pickle pkl, object obj):
 *     if pkl.ob_PROTO is not None:             # <<<<<<<<<<<<<<
 *         return pkl.ob_dumps(obj, pkl.ob_PROTO)
 *     else:
 */
  __pyx_t_1 = (__pyx_v_pkl->ob_PROTO != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":190
 * cdef object cdumps(Pickle pkl, object obj):
 *     if pkl.ob_PROTO is not None:
 *         return pkl.ob_dumps(obj, pkl.ob_PROTO)             # <<<<<<<<<<<<<<
 *     else:
 *         return pkl.ob_dumps(obj)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_pkl->ob_dumps);
    __pyx_t_3 = __pyx_v_pkl->ob_dumps; __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_v_obj, __pyx_v_pkl->ob_PROTO};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":189
 * 
 * cdef object cdumps(Pickle pkl, object obj):
 *     if pkl.ob_PROTO is not None:             # <<<<<<<<<<<<<<
 *         return pkl.ob_dumps(obj, pkl.ob_PROTO)
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":192
 *         return pkl.ob_dumps(obj, pkl.ob_PROTO)
 *     else:
 *         return pkl.ob_dumps(obj)             # <<<<<<<<<<<<<<
 * 
 * cdef object cloads(Pickle pkl, object buf):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_pkl->ob_dumps);
    __pyx_t_3 = __pyx_v_pkl->ob_dumps; __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_obj};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 192, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":188
 * # -----------------------------------------------------------------------------
 * 
 * cdef object cdumps(Pickle pkl, object obj):             # <<<<<<<<<<<<<<
 *     if pkl.ob_PROTO is not None:
 *         return pkl.ob_dumps(obj, pkl.ob_PROTO)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.cdumps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":194
 *         return pkl.ob_dumps(obj)
 * 
 * cdef object cloads(Pickle pkl, object buf):             # <<<<<<<<<<<<<<
 *     return pkl.ob_loads(buf)
 * 
 */

static PyObject *__pyx_f_6mpi4py_3MPI_cloads(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, PyObject *__pyx_v_buf) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cloads", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":195
 * 
 * cdef object cloads(Pickle pkl, object buf):
 *     return pkl.ob_loads(buf)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_pkl->ob_loads);
  __pyx_t_2 = __pyx_v_pkl->ob_loads; __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_buf};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":194
 *         return pkl.ob_dumps(obj)
 * 
 * cdef object cloads(Pickle pkl, object buf):             # <<<<<<<<<<<<<<
 *     return pkl.ob_loads(buf)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.cloads", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":198
 * 
 * 
 * cdef object pickle_dump(Pickle pkl, object obj, void **p, MPI_Count *n):             # <<<<<<<<<<<<<<
 *     cdef object buf = cdumps(pkl, obj)
 *     p[0] = PyBytes_AsString(buf)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_pickle_dump(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, PyObject *__pyx_v_obj, void **__pyx_v_p, MPI_Count *__pyx_v_n) {
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pickle_dump", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":199
 * 
 * cdef object pickle_dump(Pickle pkl, object obj, void **p, MPI_Count *n):
 *     cdef object buf = cdumps(pkl, obj)             # <<<<<<<<<<<<<<
 *     p[0] = PyBytes_AsString(buf)
 *     n[0] = PyBytes_Size(buf)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_cdumps(__pyx_v_pkl, __pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":200
 * cdef object pickle_dump(Pickle pkl, object obj, void **p, MPI_Count *n):
 *     cdef object buf = cdumps(pkl, obj)
 *     p[0] = PyBytes_AsString(buf)             # <<<<<<<<<<<<<<
 *     n[0] = PyBytes_Size(buf)
 *     return buf
 */
  __pyx_t_2 = PyBytes_AsString(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((char *)NULL))) __PYX_ERR(7, 200, __pyx_L1_error)
  (__pyx_v_p[0]) = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":201
 *     cdef object buf = cdumps(pkl, obj)
 *     p[0] = PyBytes_AsString(buf)
 *     n[0] = PyBytes_Size(buf)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_3 = PyBytes_Size(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1L))) __PYX_ERR(7, 201, __pyx_L1_error)
  (__pyx_v_n[0]) = __pyx_t_3;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":202
 *     p[0] = PyBytes_AsString(buf)
 *     n[0] = PyBytes_Size(buf)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef object pickle_load(Pickle pkl, void *p, MPI_Count n):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":198
 * 
 * 
 * cdef object pickle_dump(Pickle pkl, object obj, void **p, MPI_Count *n):             # <<<<<<<<<<<<<<
 *     cdef object buf = cdumps(pkl, obj)
 *     p[0] = PyBytes_AsString(buf)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.pickle_dump", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":204
 *     return buf
 * 
 * cdef object pickle_load(Pickle pkl, void *p, MPI_Count n):             # <<<<<<<<<<<<<<
 *     if p == NULL or n == 0: return None
 *     return cloads(pkl, mpibuf(p, n))
 */

static PyObject *__pyx_f_6mpi4py_3MPI_pickle_load(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, void *__pyx_v_p, MPI_Count __pyx_v_n) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  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;
  __Pyx_RefNannySetupContext("pickle_load", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":205
 * 
 * cdef object pickle_load(Pickle pkl, void *p, MPI_Count n):
 *     if p == NULL or n == 0: return None             # <<<<<<<<<<<<<<
 *     return cloads(pkl, mpibuf(p, n))
 * 
 */
  __pyx_t_2 = (__pyx_v_p == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_n == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":206
 * cdef object pickle_load(Pickle pkl, void *p, MPI_Count n):
 *     if p == NULL or n == 0: return None
 *     return cloads(pkl, mpibuf(p, n))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_p, __pyx_v_n)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_cloads(__pyx_v_pkl, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":204
 *     return buf
 * 
 * cdef object pickle_load(Pickle pkl, void *p, MPI_Count n):             # <<<<<<<<<<<<<<
 *     if p == NULL or n == 0: return None
 *     return cloads(pkl, mpibuf(p, n))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.pickle_load", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":209
 * 
 * 
 * cdef object pickle_dumpv(             # <<<<<<<<<<<<<<
 *     Pickle pkl, object obj,
 *     void **p, int n, MPI_Count cnt[], MPI_Aint dsp[],
 */

static PyObject *__pyx_f_6mpi4py_3MPI_pickle_dumpv(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, PyObject *__pyx_v_obj, void **__pyx_v_p, int __pyx_v_n, MPI_Count *__pyx_v_cnt, MPI_Aint *__pyx_v_dsp) {
  Py_ssize_t __pyx_v_m;
  PyObject *__pyx_v_items = 0;
  MPI_Count __pyx_v_c;
  MPI_Aint __pyx_v_d;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  char *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pickle_dumpv", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":213
 *     void **p, int n, MPI_Count cnt[], MPI_Aint dsp[],
 * ):
 *     cdef Py_ssize_t m = n             # <<<<<<<<<<<<<<
 *     cdef object items
 *     if obj is None: items = [None] * m
 */
  __pyx_v_m = __pyx_v_n;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":215
 *     cdef Py_ssize_t m = n
 *     cdef object items
 *     if obj is None: items = [None] * m             # <<<<<<<<<<<<<<
 *     else:           items = list(obj)
 *     m = len(items)
 */
  __pyx_t_1 = (__pyx_v_obj == Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = PyList_New(1 * ((__pyx_v_m<0) ? 0:__pyx_v_m)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    { Py_ssize_t __pyx_temp;
      for (__pyx_temp=0; __pyx_temp < __pyx_v_m; __pyx_temp++) {
        __Pyx_INCREF(Py_None);
        __Pyx_GIVEREF(Py_None);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_2, __pyx_temp, Py_None)) __PYX_ERR(7, 215, __pyx_L1_error);
      }
    }
    __pyx_v_items = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":216
 *     cdef object items
 *     if obj is None: items = [None] * m
 *     else:           items = list(obj)             # <<<<<<<<<<<<<<
 *     m = len(items)
 *     if m != n:
 */
  /*else*/ {
    __pyx_t_2 = PySequence_List(__pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_items = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":217
 *     if obj is None: items = [None] * m
 *     else:           items = list(obj)
 *     m = len(items)             # <<<<<<<<<<<<<<
 *     if m != n:
 *         raise ValueError(f"expecting {n} items, got {m}")
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_items); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(7, 217, __pyx_L1_error)
  __pyx_v_m = __pyx_t_3;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":218
 *     else:           items = list(obj)
 *     m = len(items)
 *     if m != n:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {m}")
 *     cdef MPI_Count c = 0
 */
  __pyx_t_1 = (__pyx_v_m != __pyx_v_n);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":219
 *     m = len(items)
 *     if m != n:
 *         raise ValueError(f"expecting {n} items, got {m}")             # <<<<<<<<<<<<<<
 *     cdef MPI_Count c = 0
 *     cdef MPI_Aint  d = 0
 */
    __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = 0;
    __pyx_t_4 = 127;
    __Pyx_INCREF(__pyx_kp_u_expecting);
    __pyx_t_3 += 10;
    __Pyx_GIVEREF(__pyx_kp_u_expecting);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_expecting);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_n, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_kp_u_items_got);
    __pyx_t_3 += 12;
    __Pyx_GIVEREF(__pyx_kp_u_items_got);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_items_got);
    __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_m, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(7, 219, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":218
 *     else:           items = list(obj)
 *     m = len(items)
 *     if m != n:             # <<<<<<<<<<<<<<
 *         raise ValueError(f"expecting {n} items, got {m}")
 *     cdef MPI_Count c = 0
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":220
 *     if m != n:
 *         raise ValueError(f"expecting {n} items, got {m}")
 *     cdef MPI_Count c = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  d = 0
 *     for i in range(m):
 */
  __pyx_v_c = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":221
 *         raise ValueError(f"expecting {n} items, got {m}")
 *     cdef MPI_Count c = 0
 *     cdef MPI_Aint  d = 0             # <<<<<<<<<<<<<<
 *     for i in range(m):
 *         items[i] = pickle_dump(pkl, items[i], p, &c)
 */
  __pyx_v_d = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":222
 *     cdef MPI_Count c = 0
 *     cdef MPI_Aint  d = 0
 *     for i in range(m):             # <<<<<<<<<<<<<<
 *         items[i] = pickle_dump(pkl, items[i], p, &c)
 *         cnt[i] = c
 */
  __pyx_t_3 = __pyx_v_m;
  __pyx_t_6 = __pyx_t_3;
  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":223
 *     cdef MPI_Aint  d = 0
 *     for i in range(m):
 *         items[i] = pickle_dump(pkl, items[i], p, &c)             # <<<<<<<<<<<<<<
 *         cnt[i] = c
 *         dsp[i] = d
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_items, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pkl, __pyx_t_2, __pyx_v_p, (&__pyx_v_c)); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely((__Pyx_SetItemInt(__pyx_v_items, __pyx_v_i, __pyx_t_5, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0))) __PYX_ERR(7, 223, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":224
 *     for i in range(m):
 *         items[i] = pickle_dump(pkl, items[i], p, &c)
 *         cnt[i] = c             # <<<<<<<<<<<<<<
 *         dsp[i] = d
 *         d = d + <MPI_Aint> c
 */
    (__pyx_v_cnt[__pyx_v_i]) = __pyx_v_c;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":225
 *         items[i] = pickle_dump(pkl, items[i], p, &c)
 *         cnt[i] = c
 *         dsp[i] = d             # <<<<<<<<<<<<<<
 *         d = d + <MPI_Aint> c
 *     cdef object buf = b''.join(items)
 */
    (__pyx_v_dsp[__pyx_v_i]) = __pyx_v_d;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":226
 *         cnt[i] = c
 *         dsp[i] = d
 *         d = d + <MPI_Aint> c             # <<<<<<<<<<<<<<
 *     cdef object buf = b''.join(items)
 *     p[0] = PyBytes_AsString(buf)
 */
    __pyx_v_d = (__pyx_v_d + ((MPI_Aint)__pyx_v_c));
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":227
 *         dsp[i] = d
 *         d = d + <MPI_Aint> c
 *     cdef object buf = b''.join(items)             # <<<<<<<<<<<<<<
 *     p[0] = PyBytes_AsString(buf)
 *     return buf
 */
  __pyx_t_5 = __Pyx_PyBytes_Join(__pyx_kp_b_, __pyx_v_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_buf = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":228
 *         d = d + <MPI_Aint> c
 *     cdef object buf = b''.join(items)
 *     p[0] = PyBytes_AsString(buf)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_8 = PyBytes_AsString(__pyx_v_buf); if (unlikely(__pyx_t_8 == ((char *)NULL))) __PYX_ERR(7, 228, __pyx_L1_error)
  (__pyx_v_p[0]) = __pyx_t_8;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":229
 *     cdef object buf = b''.join(items)
 *     p[0] = PyBytes_AsString(buf)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef object pickle_loadv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":209
 * 
 * 
 * cdef object pickle_dumpv(             # <<<<<<<<<<<<<<
 *     Pickle pkl, object obj,
 *     void **p, int n, MPI_Count cnt[], MPI_Aint dsp[],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.pickle_dumpv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":231
 *     return buf
 * 
 * cdef object pickle_loadv(             # <<<<<<<<<<<<<<
 *     Pickle pkl,
 *     void *p, int n, MPI_Count cnt[], MPI_Aint dsp[],
 */

static PyObject *__pyx_f_6mpi4py_3MPI_pickle_loadv(struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pkl, void *__pyx_v_p, int __pyx_v_n, MPI_Count *__pyx_v_cnt, MPI_Aint *__pyx_v_dsp) {
  Py_ssize_t __pyx_v_m;
  PyObject *__pyx_v_items = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pickle_loadv", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":235
 *     void *p, int n, MPI_Count cnt[], MPI_Aint dsp[],
 * ):
 *     cdef Py_ssize_t m = n             # <<<<<<<<<<<<<<
 *     cdef object items = [None] * m
 *     if p == NULL: return items
 */
  __pyx_v_m = __pyx_v_n;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":236
 * ):
 *     cdef Py_ssize_t m = n
 *     cdef object items = [None] * m             # <<<<<<<<<<<<<<
 *     if p == NULL: return items
 *     for i in range(m):
 */
  __pyx_t_1 = PyList_New(1 * ((__pyx_v_m<0) ? 0:__pyx_v_m)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < __pyx_v_m; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, Py_None)) __PYX_ERR(7, 236, __pyx_L1_error);
    }
  }
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":237
 *     cdef Py_ssize_t m = n
 *     cdef object items = [None] * m
 *     if p == NULL: return items             # <<<<<<<<<<<<<<
 *     for i in range(m):
 *         items[i] = pickle_load(pkl, <char*>p + dsp[i], cnt[i])
 */
  __pyx_t_2 = (__pyx_v_p == NULL);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_items);
    __pyx_r = __pyx_v_items;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":238
 *     cdef object items = [None] * m
 *     if p == NULL: return items
 *     for i in range(m):             # <<<<<<<<<<<<<<
 *         items[i] = pickle_load(pkl, <char*>p + dsp[i], cnt[i])
 *     return items
 */
  __pyx_t_3 = __pyx_v_m;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":239
 *     if p == NULL: return items
 *     for i in range(m):
 *         items[i] = pickle_load(pkl, <char*>p + dsp[i], cnt[i])             # <<<<<<<<<<<<<<
 *     return items
 * 
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pkl, (((char *)__pyx_v_p) + (__pyx_v_dsp[__pyx_v_i])), (__pyx_v_cnt[__pyx_v_i])); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((__Pyx_SetItemInt(__pyx_v_items, __pyx_v_i, __pyx_t_1, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0))) __PYX_ERR(7, 239, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":240
 *     for i in range(m):
 *         items[i] = pickle_load(pkl, <char*>p + dsp[i], cnt[i])
 *     return items             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_items);
  __pyx_r = __pyx_v_items;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":231
 *     return buf
 * 
 * cdef object pickle_loadv(             # <<<<<<<<<<<<<<
 *     Pickle pkl,
 *     void *p, int n, MPI_Count cnt[], MPI_Aint dsp[],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.pickle_loadv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":243
 * 
 * 
 * cdef object pickle_alloc(void **p, MPI_Count n):             # <<<<<<<<<<<<<<
 *     cdef object buf = PyBytes_FromStringAndSize(NULL, <MPI_Aint>n)
 *     p[0] = PyBytes_AsString(buf)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_pickle_alloc(void **__pyx_v_p, MPI_Count __pyx_v_n) {
  PyObject *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  char *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pickle_alloc", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":244
 * 
 * cdef object pickle_alloc(void **p, MPI_Count n):
 *     cdef object buf = PyBytes_FromStringAndSize(NULL, <MPI_Aint>n)             # <<<<<<<<<<<<<<
 *     p[0] = PyBytes_AsString(buf)
 *     return buf
 */
  __pyx_t_1 = PyBytes_FromStringAndSize(NULL, ((MPI_Aint)__pyx_v_n)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":245
 * cdef object pickle_alloc(void **p, MPI_Count n):
 *     cdef object buf = PyBytes_FromStringAndSize(NULL, <MPI_Aint>n)
 *     p[0] = PyBytes_AsString(buf)             # <<<<<<<<<<<<<<
 *     return buf
 * 
 */
  __pyx_t_2 = PyBytes_AsString(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((char *)NULL))) __PYX_ERR(7, 245, __pyx_L1_error)
  (__pyx_v_p[0]) = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":246
 *     cdef object buf = PyBytes_FromStringAndSize(NULL, <MPI_Aint>n)
 *     p[0] = PyBytes_AsString(buf)
 *     return buf             # <<<<<<<<<<<<<<
 * 
 * cdef object pickle_allocv(void **p, int n, MPI_Count cnt[], MPI_Aint dsp[]):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buf);
  __pyx_r = __pyx_v_buf;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":243
 * 
 * 
 * cdef object pickle_alloc(void **p, MPI_Count n):             # <<<<<<<<<<<<<<
 *     cdef object buf = PyBytes_FromStringAndSize(NULL, <MPI_Aint>n)
 *     p[0] = PyBytes_AsString(buf)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.pickle_alloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":248
 *     return buf
 * 
 * cdef object pickle_allocv(void **p, int n, MPI_Count cnt[], MPI_Aint dsp[]):             # <<<<<<<<<<<<<<
 *     cdef MPI_Count d=0
 *     for i in range(n):
 */

static PyObject *__pyx_f_6mpi4py_3MPI_pickle_allocv(void **__pyx_v_p, int __pyx_v_n, MPI_Count *__pyx_v_cnt, MPI_Aint *__pyx_v_dsp) {
  MPI_Count __pyx_v_d;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pickle_allocv", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":249
 * 
 * cdef object pickle_allocv(void **p, int n, MPI_Count cnt[], MPI_Aint dsp[]):
 *     cdef MPI_Count d=0             # <<<<<<<<<<<<<<
 *     for i in range(n):
 *         dsp[i] = <MPI_Aint> d
 */
  __pyx_v_d = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":250
 * cdef object pickle_allocv(void **p, int n, MPI_Count cnt[], MPI_Aint dsp[]):
 *     cdef MPI_Count d=0
 *     for i in range(n):             # <<<<<<<<<<<<<<
 *         dsp[i] = <MPI_Aint> d
 *         d += cnt[i]
 */
  __pyx_t_1 = __pyx_v_n;
  __pyx_t_2 = __pyx_t_1;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":251
 *     cdef MPI_Count d=0
 *     for i in range(n):
 *         dsp[i] = <MPI_Aint> d             # <<<<<<<<<<<<<<
 *         d += cnt[i]
 *     return pickle_alloc(p, d)
 */
    (__pyx_v_dsp[__pyx_v_i]) = ((MPI_Aint)__pyx_v_d);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":252
 *     for i in range(n):
 *         dsp[i] = <MPI_Aint> d
 *         d += cnt[i]             # <<<<<<<<<<<<<<
 *     return pickle_alloc(p, d)
 * 
 */
    __pyx_v_d = (__pyx_v_d + (__pyx_v_cnt[__pyx_v_i]));
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":253
 *         dsp[i] = <MPI_Aint> d
 *         d += cnt[i]
 *     return pickle_alloc(p, d)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_alloc(__pyx_v_p, __pyx_v_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":248
 *     return buf
 * 
 * cdef object pickle_allocv(void **p, int n, MPI_Count cnt[], MPI_Aint dsp[]):             # <<<<<<<<<<<<<<
 *     cdef MPI_Count d=0
 *     for i in range(n):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.pickle_allocv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":256
 * 
 * 
 * cdef object allocate_count_displ(int n, MPI_Count **p, MPI_Aint **q):             # <<<<<<<<<<<<<<
 *     cdef object mem1 = allocate(n, sizeof(MPI_Count), p)
 *     cdef object mem2 = allocate(n, sizeof(MPI_Aint),  q)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_allocate_count_displ(int __pyx_v_n, MPI_Count **__pyx_v_p, MPI_Aint **__pyx_v_q) {
  PyObject *__pyx_v_mem1 = 0;
  PyObject *__pyx_v_mem2 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allocate_count_displ", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":257
 * 
 * cdef object allocate_count_displ(int n, MPI_Count **p, MPI_Aint **q):
 *     cdef object mem1 = allocate(n, sizeof(MPI_Count), p)             # <<<<<<<<<<<<<<
 *     cdef object mem2 = allocate(n, sizeof(MPI_Aint),  q)
 *     return (mem1, mem2)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_n, (sizeof(MPI_Count)), __pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":258
 * cdef object allocate_count_displ(int n, MPI_Count **p, MPI_Aint **q):
 *     cdef object mem1 = allocate(n, sizeof(MPI_Count), p)
 *     cdef object mem2 = allocate(n, sizeof(MPI_Aint),  q)             # <<<<<<<<<<<<<<
 *     return (mem1, mem2)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_n, (sizeof(MPI_Aint)), __pyx_v_q)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mem2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":259
 *     cdef object mem1 = allocate(n, sizeof(MPI_Count), p)
 *     cdef object mem2 = allocate(n, sizeof(MPI_Aint),  q)
 *     return (mem1, mem2)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_mem1);
  __Pyx_GIVEREF(__pyx_v_mem1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mem1)) __PYX_ERR(7, 259, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_mem2);
  __Pyx_GIVEREF(__pyx_v_mem2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_mem2)) __PYX_ERR(7, 259, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":256
 * 
 * 
 * cdef object allocate_count_displ(int n, MPI_Count **p, MPI_Aint **q):             # <<<<<<<<<<<<<<
 *     cdef object mem1 = allocate(n, sizeof(MPI_Count), p)
 *     cdef object mem2 = allocate(n, sizeof(MPI_Aint),  q)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.allocate_count_displ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mem1);
  __Pyx_XDECREF(__pyx_v_mem2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":263
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_send(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_send(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_send", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":265
 * cdef object PyMPI_send(object obj, int dest, int tag,
 *                        MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":267
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":268
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":269
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":271
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":272
 *     #
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":273
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Send_c(
 *         sbuf, scount, stype,
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":272
 *     #
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":274
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":276
 *     with nogil: CHKERR( MPI_Send_c(
 *         sbuf, scount, stype,
 *         dest, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 274, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":274
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":277
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":263
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_send(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":280
 * 
 * 
 * cdef object PyMPI_bsend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bsend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_bsend", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":282
 * cdef object PyMPI_bsend(object obj, int dest, int tag,
 *                         MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":284
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":285
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":286
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":288
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":289
 *     #
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend_c(
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":290
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Bsend_c(
 *         sbuf, scount, stype,
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":289
 *     #
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend_c(
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":291
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":293
 *     with nogil: CHKERR( MPI_Bsend_c(
 *         sbuf, scount, stype,
 *         dest, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bsend_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 291, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":291
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Bsend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":294
 *         sbuf, scount, stype,
 *         dest, tag, comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":280
 * 
 * 
 * cdef object PyMPI_bsend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":297
 * 
 * 
 * cdef object PyMPI_ssend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ssend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_ssend", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":299
 * cdef object PyMPI_ssend(object obj, int dest, int tag,
 *                         MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":301
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":302
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":303
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":305
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":306
 *     #
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend_c(
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":307
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Ssend_c(
 *         sbuf, scount, stype, dest, tag, comm) )
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":306
 *     #
 *     cdef object unuseds = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend_c(
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":308
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype, dest, tag, comm) )
 *     return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":309
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend_c(
 *         sbuf, scount, stype, dest, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ssend_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 308, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":308
 *     if dest != MPI_PROC_NULL:
 *         unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ssend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype, dest, tag, comm) )
 *     return None
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":310
 *     with nogil: CHKERR( MPI_Ssend_c(
 *         sbuf, scount, stype, dest, tag, comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":297
 * 
 * 
 * cdef object PyMPI_ssend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":314
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_recv_obarg(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_obarg(PyObject *__pyx_v_obj, int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  MPI_Status __pyx_v_rsts;
  PyObject *__pyx_v_rmsg = 0;
  MPI_Aint __pyx_v_rlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  MPI_Count __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_recv_obarg", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":316
 * cdef object PyMPI_recv_obarg(object obj, int source, int tag,
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *rbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":318
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":319
 *     #
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status rsts
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":320
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     cdef object   rmsg = None
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":322
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status rsts
 *     cdef object   rmsg = None             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint rlen = 0
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":323
 *     cdef MPI_Status rsts
 *     cdef object   rmsg = None
 *     cdef MPI_Aint rlen = 0             # <<<<<<<<<<<<<<
 *     #
 *     PyErr_WarnFormat(
 */
  __pyx_v_rlen = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":325
 *     cdef MPI_Aint rlen = 0
 *     #
 *     PyErr_WarnFormat(             # <<<<<<<<<<<<<<
 *         UserWarning, 1, b"%s",
 *         b"the 'buf' argument is deprecated",
 */
  __pyx_t_1 = PyErr_WarnFormat(__pyx_builtin_UserWarning, 1, ((char *)"%s"), ((char *)"the 'buf' argument is deprecated")); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 325, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":330
 *     )
 *     #
 *     if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 */
  __pyx_t_2 = (__pyx_v_source != MPI_PROC_NULL);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":331
 *     #
 *     if source != MPI_PROC_NULL:
 *         if is_integral(obj):             # <<<<<<<<<<<<<<
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 *             rmsg = pickle_alloc(&rbuf, rcount)
 */
    __pyx_t_2 = (__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_obj) != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":332
 *     if source != MPI_PROC_NULL:
 *         if is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)             # <<<<<<<<<<<<<<
 *             rmsg = pickle_alloc(&rbuf, rcount)
 *         else:
 */
      __pyx_t_3 = PyNumber_Index(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 332, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyInt_As_MPI_Count(__pyx_t_3); if (unlikely((__pyx_t_4 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(7, 332, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_rcount = ((MPI_Count)__pyx_t_4);

      /* "src/mpi4py/MPI.src/msgpickle.pxi":333
 *         if is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 *             rmsg = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *         else:
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":331
 *     #
 *     if source != MPI_PROC_NULL:
 *         if is_integral(obj):             # <<<<<<<<<<<<<<
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 *             rmsg = pickle_alloc(&rbuf, rcount)
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":335
 *             rmsg = pickle_alloc(&rbuf, rcount)
 *         else:
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)             # <<<<<<<<<<<<<<
 *             rcount = <MPI_Count> rlen
 *         if status == MPI_STATUS_IGNORE:
 */
    /*else*/ {
      __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_obj, (&__pyx_v_rbuf), (&__pyx_v_rlen))); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 335, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":336
 *         else:
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)
 *             rcount = <MPI_Count> rlen             # <<<<<<<<<<<<<<
 *         if status == MPI_STATUS_IGNORE:
 *             status = &rsts
 */
      __pyx_v_rcount = ((MPI_Count)__pyx_v_rlen);
    }
    __pyx_L4:;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":337
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)
 *             rcount = <MPI_Count> rlen
 *         if status == MPI_STATUS_IGNORE:             # <<<<<<<<<<<<<<
 *             status = &rsts
 *         <void> rmsg
 */
    __pyx_t_2 = (__pyx_v_status == MPI_STATUS_IGNORE);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":338
 *             rcount = <MPI_Count> rlen
 *         if status == MPI_STATUS_IGNORE:
 *             status = &rsts             # <<<<<<<<<<<<<<
 *         <void> rmsg
 *     with nogil:
 */
      __pyx_v_status = (&__pyx_v_rsts);

      /* "src/mpi4py/MPI.src/msgpickle.pxi":337
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)
 *             rcount = <MPI_Count> rlen
 *         if status == MPI_STATUS_IGNORE:             # <<<<<<<<<<<<<<
 *             status = &rsts
 *         <void> rmsg
 */
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":339
 *         if status == MPI_STATUS_IGNORE:
 *             status = &rsts
 *         <void> rmsg             # <<<<<<<<<<<<<<
 *     with nogil:
 *         CHKERR( MPI_Recv_c(
 */
    ((void)__pyx_v_rmsg);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":330
 *     )
 *     #
 *     if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":340
 *             status = &rsts
 *         <void> rmsg
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Recv_c(
 *             rbuf, rcount, rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":341
 *         <void> rmsg
 *     with nogil:
 *         CHKERR( MPI_Recv_c(             # <<<<<<<<<<<<<<
 *             rbuf, rcount, rtype,
 *             source, tag, comm, status) )
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv_c(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_status)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 341, __pyx_L7_error)

        /* "src/mpi4py/MPI.src/msgpickle.pxi":344
 *             rbuf, rcount, rtype,
 *             source, tag, comm, status) )
 *         if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     #
 */
        __pyx_t_2 = (__pyx_v_source != MPI_PROC_NULL);
        if (__pyx_t_2) {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":345
 *             source, tag, comm, status) )
 *         if source != MPI_PROC_NULL:
 *             CHKERR( MPI_Get_count_c(status, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     #
 *     if rcount <= 0: return None
 */
          __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count_c(__pyx_v_status, __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 345, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/msgpickle.pxi":344
 *             rbuf, rcount, rtype,
 *             source, tag, comm, status) )
 *         if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     #
 */
        }
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":340
 *             status = &rsts
 *         <void> rmsg
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Recv_c(
 *             rbuf, rcount, rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":347
 *             CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     #
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 */
  __pyx_t_2 = (__pyx_v_rcount <= 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":348
 *     #
 *     if rcount <= 0: return None
 *     return pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":314
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_recv_obarg(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_recv_obarg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":351
 * 
 * 
 * cdef object PyMPI_recv_match(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_match(PyObject *__pyx_v_obj, int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  MPI_Message __pyx_v_match;
  MPI_Status __pyx_v_rsts;
  CYTHON_UNUSED PyObject *__pyx_v_unusedr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_recv_match", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":353
 * cdef object PyMPI_recv_match(object obj, int source, int tag,
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *rbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":355
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":356
 *     #
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":357
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef MPI_Message match = MPI_MESSAGE_NULL
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":359
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef MPI_Message match = MPI_MESSAGE_NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     <void> obj  # unused
 */
  __pyx_v_match = MPI_MESSAGE_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":361
 *     cdef MPI_Message match = MPI_MESSAGE_NULL
 *     cdef MPI_Status rsts
 *     <void> obj  # unused             # <<<<<<<<<<<<<<
 *     #
 *     with nogil:
 */
  ((void)__pyx_v_obj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":363
 *     <void> obj  # unused
 *     #
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Mprobe(source, tag, comm, &match, &rsts) )
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":364
 *     #
 *     with nogil:
 *         CHKERR( MPI_Mprobe(source, tag, comm, &match, &rsts) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Mprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_match), (&__pyx_v_rsts))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 364, __pyx_L4_error)

        /* "src/mpi4py/MPI.src/msgpickle.pxi":365
 *     with nogil:
 *         CHKERR( MPI_Mprobe(source, tag, comm, &match, &rsts) )
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil:
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count_c((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 365, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":363
 *     <void> obj  # unused
 *     #
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Mprobe(source, tag, comm, &match, &rsts) )
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":366
 *         CHKERR( MPI_Mprobe(source, tag, comm, &match, &rsts) )
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     with nogil:
 *         CHKERR( MPI_Mrecv_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unusedr = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":367
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Mrecv_c(
 *             rbuf, rcount, rtype, &match, status) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":368
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil:
 *         CHKERR( MPI_Mrecv_c(             # <<<<<<<<<<<<<<
 *             rbuf, rcount, rtype, &match, status) )
 *     #
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Mrecv_c(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, (&__pyx_v_match), __pyx_v_status)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 368, __pyx_L7_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":367
 *         CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Mrecv_c(
 *             rbuf, rcount, rtype, &match, status) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":371
 *             rbuf, rcount, rtype, &match, status) )
 *     #
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 */
  __pyx_t_3 = (__pyx_v_rcount <= 0);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":372
 *     #
 *     if rcount <= 0: return None
 *     return pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":351
 * 
 * 
 * cdef object PyMPI_recv_match(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_recv_match", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unusedr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":375
 * 
 * 
 * cdef object PyMPI_recv_probe(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_probe(PyObject *__pyx_v_obj, int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  MPI_Status __pyx_v_rsts;
  CYTHON_UNUSED PyObject *__pyx_v_unusedr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_recv_probe", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":377
 * cdef object PyMPI_recv_probe(object obj, int source, int tag,
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *rbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":379
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":380
 *     #
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":381
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef MPI_Status rsts
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":385
 *     cdef MPI_Status rsts
 *     cdef object unusedr
 *     <void> obj  # unused             # <<<<<<<<<<<<<<
 *     #
 *     with PyMPI_Lock(comm, "recv"):
 */
  ((void)__pyx_v_obj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":387
 *     <void> obj  # unused
 *     #
 *     with PyMPI_Lock(comm, "recv"):             # <<<<<<<<<<<<<<
 *         with nogil:
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 */
  /*with:*/ {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_recv); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 387, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 387, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":388
 *     #
 *     with PyMPI_Lock(comm, "recv"):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *             CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":389
 *     with PyMPI_Lock(comm, "recv"):
 *         with nogil:
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 *             CHKERR( MPI_Status_get_source(&rsts, &source) )
 */
                __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_rsts))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(7, 389, __pyx_L14_error)

                /* "src/mpi4py/MPI.src/msgpickle.pxi":390
 *         with nogil:
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *             CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Status_get_source(&rsts, &source) )
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )
 */
                __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count_c((&__pyx_v_rsts), __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(7, 390, __pyx_L14_error)

                /* "src/mpi4py/MPI.src/msgpickle.pxi":391
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *             CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 *             CHKERR( MPI_Status_get_source(&rsts, &source) )             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )
 *         unusedr = pickle_alloc(&rbuf, rcount)
 */
                __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_get_source((&__pyx_v_rsts), (&__pyx_v_source))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(7, 391, __pyx_L14_error)

                /* "src/mpi4py/MPI.src/msgpickle.pxi":392
 *             CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 *             CHKERR( MPI_Status_get_source(&rsts, &source) )
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )             # <<<<<<<<<<<<<<
 *         unusedr = pickle_alloc(&rbuf, rcount)
 *         with nogil:
 */
                __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_get_tag((&__pyx_v_rsts), (&__pyx_v_tag))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(7, 392, __pyx_L14_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":388
 *     #
 *     with PyMPI_Lock(comm, "recv"):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 *             CHKERR( MPI_Get_count_c(&rsts, rtype, &rcount) )
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L15;
                }
                __pyx_L14_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L7_error;
                }
                __pyx_L15:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":393
 *             CHKERR( MPI_Status_get_source(&rsts, &source) )
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )
 *         unusedr = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *         with nogil:
 *             CHKERR( MPI_Recv_c(
 */
          __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 393, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_v_unusedr = __pyx_t_1;
          __pyx_t_1 = 0;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":394
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )
 *         unusedr = pickle_alloc(&rbuf, rcount)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Recv_c(
 *                 rbuf, rcount, rtype,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":395
 *         unusedr = pickle_alloc(&rbuf, rcount)
 *         with nogil:
 *             CHKERR( MPI_Recv_c(             # <<<<<<<<<<<<<<
 *                 rbuf, rcount, rtype,
 *                 source, tag, comm, status) )
 */
                __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv_c(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_status)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(7, 395, __pyx_L17_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":394
 *             CHKERR( MPI_Status_get_tag(&rsts, &tag) )
 *         unusedr = pickle_alloc(&rbuf, rcount)
 *         with nogil:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Recv_c(
 *                 rbuf, rcount, rtype,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L18;
                }
                __pyx_L17_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L7_error;
                }
                __pyx_L18:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":387
 *     <void> obj  # unused
 *     #
 *     with PyMPI_Lock(comm, "recv"):             # <<<<<<<<<<<<<<
 *         with nogil:
 *             CHKERR( MPI_Probe(source, tag, comm, &rsts) )
 */
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_recv_probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(7, 387, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 387, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 387, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (__pyx_t_12 < 0) __PYX_ERR(7, 387, __pyx_L9_except_error)
          __pyx_t_13 = (!__pyx_t_12);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(7, 387, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 387, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L22;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L22:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":399
 *                 source, tag, comm, status) )
 *     #
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 */
  __pyx_t_13 = (__pyx_v_rcount <= 0);
  if (__pyx_t_13) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":400
 *     #
 *     if rcount <= 0: return None
 *     return pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":375
 * 
 * 
 * cdef object PyMPI_recv_probe(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_recv_probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unusedr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":403
 * 
 * 
 * cdef object PyMPI_recv(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm, MPI_Status *status):
 *     if obj is not None:
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv(PyObject *__pyx_v_obj, int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_recv", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":405
 * cdef object PyMPI_recv(object obj, int source, int tag,
 *                        MPI_Comm comm, MPI_Status *status):
 *     if obj is not None:             # <<<<<<<<<<<<<<
 *         return PyMPI_recv_obarg(obj, source, tag, comm, status)
 *     elif options.recv_mprobe:
 */
  __pyx_t_1 = (__pyx_v_obj != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":406
 *                        MPI_Comm comm, MPI_Status *status):
 *     if obj is not None:
 *         return PyMPI_recv_obarg(obj, source, tag, comm, status)             # <<<<<<<<<<<<<<
 *     elif options.recv_mprobe:
 *         return PyMPI_recv_match(obj, source, tag, comm, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_recv_obarg(__pyx_v_obj, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":405
 * cdef object PyMPI_recv(object obj, int source, int tag,
 *                        MPI_Comm comm, MPI_Status *status):
 *     if obj is not None:             # <<<<<<<<<<<<<<
 *         return PyMPI_recv_obarg(obj, source, tag, comm, status)
 *     elif options.recv_mprobe:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":407
 *     if obj is not None:
 *         return PyMPI_recv_obarg(obj, source, tag, comm, status)
 *     elif options.recv_mprobe:             # <<<<<<<<<<<<<<
 *         return PyMPI_recv_match(obj, source, tag, comm, status)
 *     else:
 */
  if (__pyx_v_6mpi4py_3MPI_options.recv_mprobe) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":408
 *         return PyMPI_recv_obarg(obj, source, tag, comm, status)
 *     elif options.recv_mprobe:
 *         return PyMPI_recv_match(obj, source, tag, comm, status)             # <<<<<<<<<<<<<<
 *     else:
 *         return PyMPI_recv_probe(obj, source, tag, comm, status)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_recv_match(__pyx_v_obj, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":407
 *     if obj is not None:
 *         return PyMPI_recv_obarg(obj, source, tag, comm, status)
 *     elif options.recv_mprobe:             # <<<<<<<<<<<<<<
 *         return PyMPI_recv_match(obj, source, tag, comm, status)
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":410
 *         return PyMPI_recv_match(obj, source, tag, comm, status)
 *     else:
 *         return PyMPI_recv_probe(obj, source, tag, comm, status)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_recv_probe(__pyx_v_obj, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":403
 * 
 * 
 * cdef object PyMPI_recv(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                        MPI_Comm comm, MPI_Status *status):
 *     if obj is not None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":414
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_isend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_isend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_isend", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":416
 * cdef object PyMPI_isend(object obj, int dest, int tag,
 *                         MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":418
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":419
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":420
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":422
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":423
 *     #
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend_c(
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":424
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Isend_c(
 *         sbuf, scount, stype,
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_smsg, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":423
 *     #
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend_c(
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":425
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":427
 *     with nogil: CHKERR( MPI_Isend_c(
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return smsg
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Isend_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 425, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":425
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Isend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":428
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 *     return smsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_smsg);
  __pyx_r = __pyx_v_smsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":414
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_isend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":431
 * 
 * 
 * cdef object PyMPI_ibsend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_ibsend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_ibsend", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":433
 * cdef object PyMPI_ibsend(object obj, int dest, int tag,
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":435
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":436
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":437
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":439
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":440
 *     #
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend_c(
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":441
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Ibsend_c(
 *         sbuf, scount, stype,
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_smsg, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":440
 *     #
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend_c(
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":442
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":444
 *     with nogil: CHKERR( MPI_Ibsend_c(
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return smsg
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ibsend_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 442, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":442
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Ibsend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":445
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 *     return smsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_smsg);
  __pyx_r = __pyx_v_smsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":431
 * 
 * 
 * cdef object PyMPI_ibsend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":448
 * 
 * 
 * cdef object PyMPI_issend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_issend(PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_issend", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":450
 * cdef object PyMPI_issend(object obj, int dest, int tag,
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":452
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":453
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":454
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":456
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":457
 *     #
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend_c(
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":458
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Issend_c(
 *         sbuf, scount, stype,
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_smsg, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":457
 *     #
 *     cdef object smsg = None
 *     if dest != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend_c(
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":459
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":461
 *     with nogil: CHKERR( MPI_Issend_c(
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return smsg
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Issend_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 459, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":459
 *     if dest != MPI_PROC_NULL:
 *         smsg = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Issend_c(             # <<<<<<<<<<<<<<
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":462
 *         sbuf, scount, stype,
 *         dest, tag, comm, request) )
 *     return smsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_smsg);
  __pyx_r = __pyx_v_smsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":448
 * 
 * 
 * cdef object PyMPI_issend(object obj, int dest, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Request *request):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":465
 * 
 * 
 * cdef object PyMPI_irecv(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Request *request):
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_irecv(PyObject *__pyx_v_obj, int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Request *__pyx_v_request) {
  void *__pyx_v_rbuf;
  MPI_Aint __pyx_v_rlen;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Count __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_irecv", 0);
  __Pyx_INCREF(__pyx_v_obj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":468
 *                         MPI_Comm comm, MPI_Request *request):
 *     #
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Count rcount = 0
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":469
 *     #
 *     cdef void *rbuf = NULL
 *     cdef MPI_Aint rlen = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rlen = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":470
 *     cdef void *rbuf = NULL
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":471
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef object rmsg = None
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":473
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     if source != MPI_PROC_NULL:
 *         if obj is None:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":474
 *     #
 *     cdef object rmsg = None
 *     if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             rcount = options.irecv_bufsz
 */
  __pyx_t_1 = (__pyx_v_source != MPI_PROC_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":475
 *     cdef object rmsg = None
 *     if source != MPI_PROC_NULL:
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             rcount = options.irecv_bufsz
 *             obj = pickle_alloc(&rbuf, rcount)
 */
    __pyx_t_1 = (__pyx_v_obj == Py_None);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":476
 *     if source != MPI_PROC_NULL:
 *         if obj is None:
 *             rcount = options.irecv_bufsz             # <<<<<<<<<<<<<<
 *             obj = pickle_alloc(&rbuf, rcount)
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 */
      __pyx_t_2 = __pyx_v_6mpi4py_3MPI_options.irecv_bufsz;
      __pyx_v_rcount = __pyx_t_2;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":477
 *         if obj is None:
 *             rcount = options.irecv_bufsz
 *             obj = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 *         elif is_integral(obj):
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 477, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":478
 *             rcount = options.irecv_bufsz
 *             obj = pickle_alloc(&rbuf, rcount)
 *             rmsg = asbuffer_r(obj, NULL, NULL)             # <<<<<<<<<<<<<<
 *         elif is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 */
      __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_obj, NULL, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":475
 *     cdef object rmsg = None
 *     if source != MPI_PROC_NULL:
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             rcount = options.irecv_bufsz
 *             obj = pickle_alloc(&rbuf, rcount)
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":479
 *             obj = pickle_alloc(&rbuf, rcount)
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 *         elif is_integral(obj):             # <<<<<<<<<<<<<<
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 *             obj = pickle_alloc(&rbuf, rcount)
 */
    __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_obj) != 0);
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":480
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 *         elif is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)             # <<<<<<<<<<<<<<
 *             obj = pickle_alloc(&rbuf, rcount)
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 */
      __pyx_t_3 = PyNumber_Index(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 480, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyInt_As_MPI_Count(__pyx_t_3); if (unlikely((__pyx_t_2 == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(7, 480, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_rcount = ((MPI_Count)__pyx_t_2);

      /* "src/mpi4py/MPI.src/msgpickle.pxi":481
 *         elif is_integral(obj):
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 *             obj = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 *         else:
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 481, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":482
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 *             obj = pickle_alloc(&rbuf, rcount)
 *             rmsg = asbuffer_r(obj, NULL, NULL)             # <<<<<<<<<<<<<<
 *         else:
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)
 */
      __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_obj, NULL, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 482, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":479
 *             obj = pickle_alloc(&rbuf, rcount)
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 *         elif is_integral(obj):             # <<<<<<<<<<<<<<
 *             rcount = <MPI_Count> PyNumber_Index(obj)
 *             obj = pickle_alloc(&rbuf, rcount)
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":484
 *             rmsg = asbuffer_r(obj, NULL, NULL)
 *         else:
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)             # <<<<<<<<<<<<<<
 *             rcount = <MPI_Count> rlen
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 */
    /*else*/ {
      __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_obj, (&__pyx_v_rbuf), (&__pyx_v_rlen))); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 484, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":485
 *         else:
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)
 *             rcount = <MPI_Count> rlen             # <<<<<<<<<<<<<<
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     with nogil: CHKERR( MPI_Irecv_c(
 */
      __pyx_v_rcount = ((MPI_Count)__pyx_v_rlen);
    }
    __pyx_L4:;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":486
 *             rmsg = asbuffer_w(obj, &rbuf, &rlen)
 *             rcount = <MPI_Count> rlen
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Irecv_c(
 *         rbuf, rcount, rtype,
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_wrap_buffer(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_rmsg)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":474
 *     #
 *     cdef object rmsg = None
 *     if source != MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *         if obj is None:
 *             rcount = options.irecv_bufsz
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":487
 *             rcount = <MPI_Count> rlen
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     with nogil: CHKERR( MPI_Irecv_c(             # <<<<<<<<<<<<<<
 *         rbuf, rcount, rtype,
 *         source, tag, comm, request) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":489
 *     with nogil: CHKERR( MPI_Irecv_c(
 *         rbuf, rcount, rtype,
 *         source, tag, comm, request) )             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Irecv_c(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_request)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(7, 487, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":487
 *             rcount = <MPI_Count> rlen
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     with nogil: CHKERR( MPI_Irecv_c(             # <<<<<<<<<<<<<<
 *         rbuf, rcount, rtype,
 *         source, tag, comm, request) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":490
 *         rbuf, rcount, rtype,
 *         source, tag, comm, request) )
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":465
 * 
 * 
 * cdef object PyMPI_irecv(object obj, int source, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Request *request):
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":494
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_sendrecv(object sobj, int dest,   int sendtag,             # <<<<<<<<<<<<<<
 *                            object robj, int source, int recvtag,
 *                            MPI_Comm comm, MPI_Status *status):
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_sendrecv(PyObject *__pyx_v_sobj, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_robj, int __pyx_v_source, int __pyx_v_recvtag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  MPI_Request __pyx_v_request;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_sendrecv", 0);
  __Pyx_INCREF(__pyx_v_sobj);
  __Pyx_INCREF(__pyx_v_robj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":497
 *                            object robj, int source, int recvtag,
 *                            MPI_Comm comm, MPI_Status *status):
 *     cdef MPI_Request request = MPI_REQUEST_NULL             # <<<<<<<<<<<<<<
 *     sobj = PyMPI_isend(sobj, dest,   sendtag, comm, &request)
 *     robj = PyMPI_recv (robj, source, recvtag, comm, status)
 */
  __pyx_v_request = MPI_REQUEST_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":498
 *                            MPI_Comm comm, MPI_Status *status):
 *     cdef MPI_Request request = MPI_REQUEST_NULL
 *     sobj = PyMPI_isend(sobj, dest,   sendtag, comm, &request)             # <<<<<<<<<<<<<<
 *     robj = PyMPI_recv (robj, source, recvtag, comm, status)
 *     with nogil: CHKERR( MPI_Wait(&request, MPI_STATUS_IGNORE) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_isend(__pyx_v_sobj, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_comm, (&__pyx_v_request)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_sobj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":499
 *     cdef MPI_Request request = MPI_REQUEST_NULL
 *     sobj = PyMPI_isend(sobj, dest,   sendtag, comm, &request)
 *     robj = PyMPI_recv (robj, source, recvtag, comm, status)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Wait(&request, MPI_STATUS_IGNORE) )
 *     return robj
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_recv(__pyx_v_robj, __pyx_v_source, __pyx_v_recvtag, __pyx_v_comm, __pyx_v_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_robj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":500
 *     sobj = PyMPI_isend(sobj, dest,   sendtag, comm, &request)
 *     robj = PyMPI_recv (robj, source, recvtag, comm, status)
 *     with nogil: CHKERR( MPI_Wait(&request, MPI_STATUS_IGNORE) )             # <<<<<<<<<<<<<<
 *     return robj
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Wait((&__pyx_v_request), MPI_STATUS_IGNORE)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 500, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":501
 *     robj = PyMPI_recv (robj, source, recvtag, comm, status)
 *     with nogil: CHKERR( MPI_Wait(&request, MPI_STATUS_IGNORE) )
 *     return robj             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_robj);
  __pyx_r = __pyx_v_robj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":494
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_sendrecv(object sobj, int dest,   int sendtag,             # <<<<<<<<<<<<<<
 *                            object robj, int source, int recvtag,
 *                            MPI_Comm comm, MPI_Status *status):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sobj);
  __Pyx_XDECREF(__pyx_v_robj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":511
 *     cdef buffer buf
 * 
 * cdef inline object PyMPI_wrap_buffer(buffer buf):             # <<<<<<<<<<<<<<
 *     cdef _p_req_buf ob = _p_req_buf.__new__(_p_req_buf)
 *     ob.buf = buf
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wrap_buffer(struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_req_buf *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_wrap_buffer", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":512
 * 
 * cdef inline object PyMPI_wrap_buffer(buffer buf):
 *     cdef _p_req_buf ob = _p_req_buf.__new__(_p_req_buf)             # <<<<<<<<<<<<<<
 *     ob.buf = buf
 *     return ob
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_req_buf(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_req_buf), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 512, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_ob = ((struct __pyx_obj_6mpi4py_3MPI__p_req_buf *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":513
 * cdef inline object PyMPI_wrap_buffer(buffer buf):
 *     cdef _p_req_buf ob = _p_req_buf.__new__(_p_req_buf)
 *     ob.buf = buf             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_buf);
  __Pyx_GIVEREF((PyObject *)__pyx_v_buf);
  __Pyx_GOTREF((PyObject *)__pyx_v_ob->buf);
  __Pyx_DECREF((PyObject *)__pyx_v_ob->buf);
  __pyx_v_ob->buf = __pyx_v_buf;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":514
 *     cdef _p_req_buf ob = _p_req_buf.__new__(_p_req_buf)
 *     ob.buf = buf
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyMPI_load_buffer(_p_req_buf ob, MPI_Status *status):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ob);
  __pyx_r = ((PyObject *)__pyx_v_ob);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":511
 *     cdef buffer buf
 * 
 * cdef inline object PyMPI_wrap_buffer(buffer buf):             # <<<<<<<<<<<<<<
 *     cdef _p_req_buf ob = _p_req_buf.__new__(_p_req_buf)
 *     ob.buf = buf
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_wrap_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":516
 *     return ob
 * 
 * cdef inline object PyMPI_load_buffer(_p_req_buf ob, MPI_Status *status):             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_load_buffer(struct __pyx_obj_6mpi4py_3MPI__p_req_buf *__pyx_v_ob, MPI_Status *__pyx_v_status) {
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  void *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_load_buffer", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":517
 * 
 * cdef inline object PyMPI_load_buffer(_p_req_buf ob, MPI_Status *status):
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":518
 * cdef inline object PyMPI_load_buffer(_p_req_buf ob, MPI_Status *status):
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     if rcount <= 0: return None
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":519
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     if rcount <= 0: return None
 *     cdef Pickle pickle = PyMPI_PICKLE
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count_c(__pyx_v_status, __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 519, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":520
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     if rcount <= 0: return None             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *rbuf = ob.buf.view.buf
 */
  __pyx_t_2 = (__pyx_v_rcount <= 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":521
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     if rcount <= 0: return None
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = ob.buf.view.buf
 *     return pickle_load(pickle, rbuf, rcount)
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":522
 *     if rcount <= 0: return None
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *rbuf = ob.buf.view.buf             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 */
  __pyx_t_3 = __pyx_v_ob->buf->view.buf;
  __pyx_v_rbuf = __pyx_t_3;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":523
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *rbuf = ob.buf.view.buf
 *     return pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":516
 *     return ob
 * 
 * cdef inline object PyMPI_load_buffer(_p_req_buf ob, MPI_Status *status):             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_load_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":531
 *     cdef object obj
 * 
 * cdef inline object PyMPI_wrap_object(object obj):             # <<<<<<<<<<<<<<
 *     cdef _p_req_obj ob = _p_req_obj.__new__(_p_req_obj)
 *     ob.obj = obj
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wrap_object(PyObject *__pyx_v_obj) {
  struct __pyx_obj_6mpi4py_3MPI__p_req_obj *__pyx_v_ob = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_wrap_object", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":532
 * 
 * cdef inline object PyMPI_wrap_object(object obj):
 *     cdef _p_req_obj ob = _p_req_obj.__new__(_p_req_obj)             # <<<<<<<<<<<<<<
 *     ob.obj = obj
 *     return ob
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_req_obj(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_req_obj), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 532, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_ob = ((struct __pyx_obj_6mpi4py_3MPI__p_req_obj *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":533
 * cdef inline object PyMPI_wrap_object(object obj):
 *     cdef _p_req_obj ob = _p_req_obj.__new__(_p_req_obj)
 *     ob.obj = obj             # <<<<<<<<<<<<<<
 *     return ob
 * 
 */
  __Pyx_INCREF(__pyx_v_obj);
  __Pyx_GIVEREF(__pyx_v_obj);
  __Pyx_GOTREF(__pyx_v_ob->obj);
  __Pyx_DECREF(__pyx_v_ob->obj);
  __pyx_v_ob->obj = __pyx_v_obj;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":534
 *     cdef _p_req_obj ob = _p_req_obj.__new__(_p_req_obj)
 *     ob.obj = obj
 *     return ob             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyMPI_load_object(_p_req_obj ob):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ob);
  __pyx_r = ((PyObject *)__pyx_v_ob);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":531
 *     cdef object obj
 * 
 * cdef inline object PyMPI_wrap_object(object obj):             # <<<<<<<<<<<<<<
 *     cdef _p_req_obj ob = _p_req_obj.__new__(_p_req_obj)
 *     ob.obj = obj
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_wrap_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ob);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":536
 *     return ob
 * 
 * cdef inline object PyMPI_load_object(_p_req_obj ob):             # <<<<<<<<<<<<<<
 *     return ob.obj
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_load_object(struct __pyx_obj_6mpi4py_3MPI__p_req_obj *__pyx_v_ob) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("PyMPI_load_object", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":537
 * 
 * cdef inline object PyMPI_load_object(_p_req_obj ob):
 *     return ob.obj             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ob->obj);
  __pyx_r = __pyx_v_ob->obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":536
 *     return ob
 * 
 * cdef inline object PyMPI_load_object(_p_req_obj ob):             # <<<<<<<<<<<<<<
 *     return ob.obj
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":540
 * 
 * 
 * cdef inline object PyMPI_load(object ob, MPI_Status *status):             # <<<<<<<<<<<<<<
 *     if type(ob) is _p_req_buf:
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_load(PyObject *__pyx_v_ob, MPI_Status *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_load", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":541
 * 
 * cdef inline object PyMPI_load(object ob, MPI_Status *status):
 *     if type(ob) is _p_req_buf:             # <<<<<<<<<<<<<<
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)
 *     if type(ob) is _p_req_obj:
 */
  __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_ob)) == ((PyObject *)__pyx_ptype_6mpi4py_3MPI__p_req_buf));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":542
 * cdef inline object PyMPI_load(object ob, MPI_Status *status):
 *     if type(ob) is _p_req_buf:
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)             # <<<<<<<<<<<<<<
 *     if type(ob) is _p_req_obj:
 *         return PyMPI_load_object(<_p_req_obj>ob)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_load_buffer(((struct __pyx_obj_6mpi4py_3MPI__p_req_buf *)__pyx_v_ob), __pyx_v_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":541
 * 
 * cdef inline object PyMPI_load(object ob, MPI_Status *status):
 *     if type(ob) is _p_req_buf:             # <<<<<<<<<<<<<<
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)
 *     if type(ob) is _p_req_obj:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":543
 *     if type(ob) is _p_req_buf:
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)
 *     if type(ob) is _p_req_obj:             # <<<<<<<<<<<<<<
 *         return PyMPI_load_object(<_p_req_obj>ob)
 *     return None
 */
  __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_ob)) == ((PyObject *)__pyx_ptype_6mpi4py_3MPI__p_req_obj));
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":544
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)
 *     if type(ob) is _p_req_obj:
 *         return PyMPI_load_object(<_p_req_obj>ob)             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_load_object(((struct __pyx_obj_6mpi4py_3MPI__p_req_obj *)__pyx_v_ob)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":543
 *     if type(ob) is _p_req_buf:
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)
 *     if type(ob) is _p_req_obj:             # <<<<<<<<<<<<<<
 *         return PyMPI_load_object(<_p_req_obj>ob)
 *     return None
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":545
 *     if type(ob) is _p_req_obj:
 *         return PyMPI_load_object(<_p_req_obj>ob)
 *     return None             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":540
 * 
 * 
 * cdef inline object PyMPI_load(object ob, MPI_Status *status):             # <<<<<<<<<<<<<<
 *     if type(ob) is _p_req_buf:
 *         return PyMPI_load_buffer(<_p_req_buf>ob, status)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_load", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":549
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_wait(Request request, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_wait(struct PyMPIRequestObject *__pyx_v_request, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_wait", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":550
 * 
 * cdef object PyMPI_wait(Request request, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.set_request(request)
 *     rs.set_status(status)
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 550, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":551
 * cdef object PyMPI_wait(Request request, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)             # <<<<<<<<<<<<<<
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, rs.status) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_set_request(__pyx_v_rs, __pyx_v_request); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 551, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":552
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)
 *     rs.set_status(status)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, rs.status) )
 *     return rs.get_result()
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_set_status(__pyx_v_rs, __pyx_v_status); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 552, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":553
 *     rs.set_request(request)
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, rs.status) )             # <<<<<<<<<<<<<<
 *     return rs.get_result()
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Wait((&__pyx_v_request->ob_mpi), __pyx_v_rs->status)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 553, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":554
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Wait(&request.ob_mpi, rs.status) )
 *     return rs.get_result()             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_test(Request request, int *flag, Status status):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_result(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":549
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_wait(Request request, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":556
 *     return rs.get_result()
 * 
 * cdef object PyMPI_test(Request request, int *flag, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_test(struct PyMPIRequestObject *__pyx_v_request, int *__pyx_v_flag, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_test", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":557
 * 
 * cdef object PyMPI_test(Request request, int *flag, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.set_request(request)
 *     rs.set_status(status)
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 557, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":558
 * cdef object PyMPI_test(Request request, int *flag, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)             # <<<<<<<<<<<<<<
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, rs.status) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_set_request(__pyx_v_rs, __pyx_v_request); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 558, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":559
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)
 *     rs.set_status(status)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, rs.status) )
 *     if not flag[0]:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_set_status(__pyx_v_rs, __pyx_v_status); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 559, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":560
 *     rs.set_request(request)
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, rs.status) )             # <<<<<<<<<<<<<<
 *     if not flag[0]:
 *         return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test((&__pyx_v_request->ob_mpi), __pyx_v_flag, __pyx_v_rs->status)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 560, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":561
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, rs.status) )
 *     if not flag[0]:             # <<<<<<<<<<<<<<
 *         return None
 *     return rs.get_result()
 */
  __pyx_t_3 = (!((__pyx_v_flag[0]) != 0));
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":562
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, rs.status) )
 *     if not flag[0]:
 *         return None             # <<<<<<<<<<<<<<
 *     return rs.get_result()
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":561
 *     rs.set_status(status)
 *     with nogil: CHKERR( MPI_Test(&request.ob_mpi, flag, rs.status) )
 *     if not flag[0]:             # <<<<<<<<<<<<<<
 *         return None
 *     return rs.get_result()
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":563
 *     if not flag[0]:
 *         return None
 *     return rs.get_result()             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_waitany(requests, int *index, Status status):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_result(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":556
 *     return rs.get_result()
 * 
 * cdef object PyMPI_test(Request request, int *flag, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.set_request(request)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":565
 *     return rs.get_result()
 * 
 * cdef object PyMPI_waitany(requests, int *index, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitany(PyObject *__pyx_v_requests, int *__pyx_v_index, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_waitany", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":566
 * 
 * cdef object PyMPI_waitany(requests, int *index, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.acquire(requests)
 *     rs.set_status(status)
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 566, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":567
 * cdef object PyMPI_waitany(requests, int *index, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)             # <<<<<<<<<<<<<<
 *     rs.set_status(status)
 *     cdef object obj = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 567, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":568
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 *     rs.set_status(status)             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     try:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_set_status(__pyx_v_rs, __pyx_v_status); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 568, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":569
 *     rs.acquire(requests)
 *     rs.set_status(status)
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":570
 *     rs.set_status(status)
 *     cdef object obj = None
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Waitany(
 *             rs.count, rs.requests, index, rs.status) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":571
 *     cdef object obj = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, index, rs.status) )
 *         if index[0] != MPI_UNDEFINED:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":572
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(
 *             rs.count, rs.requests, index, rs.status) )             # <<<<<<<<<<<<<<
 *         if index[0] != MPI_UNDEFINED:
 *             obj = rs.get_object(index[0])
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitany(__pyx_v_rs->count, __pyx_v_rs->requests, __pyx_v_index, __pyx_v_rs->status)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 571, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":571
 *     cdef object obj = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitany(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, index, rs.status) )
 *         if index[0] != MPI_UNDEFINED:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":573
 *         with nogil: CHKERR( MPI_Waitany(
 *             rs.count, rs.requests, index, rs.status) )
 *         if index[0] != MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             obj = rs.get_object(index[0])
 *     finally:
 */
    __pyx_t_3 = ((__pyx_v_index[0]) != MPI_UNDEFINED);
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":574
 *             rs.count, rs.requests, index, rs.status) )
 *         if index[0] != MPI_UNDEFINED:
 *             obj = rs.get_object(index[0])             # <<<<<<<<<<<<<<
 *     finally:
 *         rs.release()
 */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_object(__pyx_v_rs, (__pyx_v_index[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 574, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":573
 *         with nogil: CHKERR( MPI_Waitany(
 *             rs.count, rs.requests, index, rs.status) )
 *         if index[0] != MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             obj = rs.get_object(index[0])
 *     finally:
 */
    }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":576
 *             obj = rs.get_object(index[0])
 *     finally:
 *         rs.release()             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 576, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_2 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_12 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(7, 576, __pyx_L11_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L11_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":577
 *     finally:
 *         rs.release()
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_testany(requests, int *index, int *flag, Status status):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":565
 *     return rs.get_result()
 * 
 * cdef object PyMPI_waitany(requests, int *index, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":579
 *     return obj
 * 
 * cdef object PyMPI_testany(requests, int *index, int *flag, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testany(PyObject *__pyx_v_requests, int *__pyx_v_index, int *__pyx_v_flag, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_testany", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":580
 * 
 * cdef object PyMPI_testany(requests, int *index, int *flag, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.acquire(requests)
 *     rs.set_status(status)
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 580, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":581
 * cdef object PyMPI_testany(requests, int *index, int *flag, Status status):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)             # <<<<<<<<<<<<<<
 *     rs.set_status(status)
 *     cdef object obj = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 581, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":582
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 *     rs.set_status(status)             # <<<<<<<<<<<<<<
 *     cdef object obj = None
 *     try:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_set_status(__pyx_v_rs, __pyx_v_status); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 582, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":583
 *     rs.acquire(requests)
 *     rs.set_status(status)
 *     cdef object obj = None             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Testany(
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_obj = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":584
 *     rs.set_status(status)
 *     cdef object obj = None
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Testany(
 *             rs.count, rs.requests, index, flag, rs.status) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":585
 *     cdef object obj = None
 *     try:
 *         with nogil: CHKERR( MPI_Testany(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, index, flag, rs.status) )
 *         if index[0] != MPI_UNDEFINED and flag[0]:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":586
 *     try:
 *         with nogil: CHKERR( MPI_Testany(
 *             rs.count, rs.requests, index, flag, rs.status) )             # <<<<<<<<<<<<<<
 *         if index[0] != MPI_UNDEFINED and flag[0]:
 *             obj = rs.get_object(index[0])
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testany(__pyx_v_rs->count, __pyx_v_rs->requests, __pyx_v_index, __pyx_v_flag, __pyx_v_rs->status)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 585, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":585
 *     cdef object obj = None
 *     try:
 *         with nogil: CHKERR( MPI_Testany(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, index, flag, rs.status) )
 *         if index[0] != MPI_UNDEFINED and flag[0]:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":587
 *         with nogil: CHKERR( MPI_Testany(
 *             rs.count, rs.requests, index, flag, rs.status) )
 *         if index[0] != MPI_UNDEFINED and flag[0]:             # <<<<<<<<<<<<<<
 *             obj = rs.get_object(index[0])
 *     finally:
 */
    __pyx_t_4 = ((__pyx_v_index[0]) != MPI_UNDEFINED);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_4 = ((__pyx_v_flag[0]) != 0);
    __pyx_t_3 = __pyx_t_4;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":588
 *             rs.count, rs.requests, index, flag, rs.status) )
 *         if index[0] != MPI_UNDEFINED and flag[0]:
 *             obj = rs.get_object(index[0])             # <<<<<<<<<<<<<<
 *     finally:
 *         rs.release()
 */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_object(__pyx_v_rs, (__pyx_v_index[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 588, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":587
 *         with nogil: CHKERR( MPI_Testany(
 *             rs.count, rs.requests, index, flag, rs.status) )
 *         if index[0] != MPI_UNDEFINED and flag[0]:             # <<<<<<<<<<<<<<
 *             obj = rs.get_object(index[0])
 *     finally:
 */
    }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":590
 *             obj = rs.get_object(index[0])
 *     finally:
 *         rs.release()             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 590, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(7, 590, __pyx_L13_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L13_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":591
 *     finally:
 *         rs.release()
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_waitall(requests, statuses):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":579
 *     return obj
 * 
 * cdef object PyMPI_testany(requests, int *index, int *flag, Status status):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":593
 *     return obj
 * 
 * cdef object PyMPI_waitall(requests, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitall(PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_v_objects = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_waitall", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":594
 * 
 * cdef object PyMPI_waitall(requests, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.acquire(requests)
 *     rs.add_statuses()
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 594, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":595
 * cdef object PyMPI_waitall(requests, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)             # <<<<<<<<<<<<<<
 *     rs.add_statuses()
 *     cdef object objects = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 595, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":596
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 *     rs.add_statuses()             # <<<<<<<<<<<<<<
 *     cdef object objects = None
 *     try:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 596, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":597
 *     rs.acquire(requests)
 *     rs.add_statuses()
 *     cdef object objects = None             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_objects = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":598
 *     rs.add_statuses()
 *     cdef object objects = None
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Waitall(
 *             rs.count, rs.requests, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":599
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, rs.statuses) )
 *         objects = rs.get_objects()
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":600
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(
 *             rs.count, rs.requests, rs.statuses) )             # <<<<<<<<<<<<<<
 *         objects = rs.get_objects()
 *     finally:
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitall(__pyx_v_rs->count, __pyx_v_rs->requests, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 599, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":599
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, rs.statuses) )
 *         objects = rs.get_objects()
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":601
 *         with nogil: CHKERR( MPI_Waitall(
 *             rs.count, rs.requests, rs.statuses) )
 *         objects = rs.get_objects()             # <<<<<<<<<<<<<<
 *     finally:
 *         rs.release(statuses)
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_objects(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 601, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_objects, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":603
 *         objects = rs.get_objects()
 *     finally:
 *         rs.release(statuses)             # <<<<<<<<<<<<<<
 *     return objects
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_3.__pyx_n = 1;
      __pyx_t_3.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 603, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_2 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_3.__pyx_n = 1;
        __pyx_t_3.statuses = __pyx_v_statuses;
        __pyx_t_12 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(7, 603, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":604
 *     finally:
 *         rs.release(statuses)
 *     return objects             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_testall(requests, int *flag, statuses):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_objects);
  __pyx_r = __pyx_v_objects;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":593
 *     return obj
 * 
 * cdef object PyMPI_waitall(requests, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XDECREF(__pyx_v_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":606
 *     return objects
 * 
 * cdef object PyMPI_testall(requests, int *flag, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testall(PyObject *__pyx_v_requests, int *__pyx_v_flag, PyObject *__pyx_v_statuses) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_v_objects = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_testall", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":607
 * 
 * cdef object PyMPI_testall(requests, int *flag, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.acquire(requests)
 *     rs.add_statuses()
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 607, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":608
 * cdef object PyMPI_testall(requests, int *flag, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)             # <<<<<<<<<<<<<<
 *     rs.add_statuses()
 *     cdef object objects = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 608, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":609
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 *     rs.add_statuses()             # <<<<<<<<<<<<<<
 *     cdef object objects = None
 *     try:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 609, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":610
 *     rs.acquire(requests)
 *     rs.add_statuses()
 *     cdef object objects = None             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Testall(
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_objects = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":611
 *     rs.add_statuses()
 *     cdef object objects = None
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Testall(
 *             rs.count, rs.requests, flag, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":612
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, flag, rs.statuses) )
 *         if flag[0]:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":613
 *     try:
 *         with nogil: CHKERR( MPI_Testall(
 *             rs.count, rs.requests, flag, rs.statuses) )             # <<<<<<<<<<<<<<
 *         if flag[0]:
 *             objects = rs.get_objects()
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testall(__pyx_v_rs->count, __pyx_v_rs->requests, __pyx_v_flag, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 612, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":612
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, flag, rs.statuses) )
 *         if flag[0]:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":614
 *         with nogil: CHKERR( MPI_Testall(
 *             rs.count, rs.requests, flag, rs.statuses) )
 *         if flag[0]:             # <<<<<<<<<<<<<<
 *             objects = rs.get_objects()
 *     finally:
 */
    __pyx_t_3 = ((__pyx_v_flag[0]) != 0);
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":615
 *             rs.count, rs.requests, flag, rs.statuses) )
 *         if flag[0]:
 *             objects = rs.get_objects()             # <<<<<<<<<<<<<<
 *     finally:
 *         rs.release(statuses)
 */
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_objects(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 615, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_objects, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":614
 *         with nogil: CHKERR( MPI_Testall(
 *             rs.count, rs.requests, flag, rs.statuses) )
 *         if flag[0]:             # <<<<<<<<<<<<<<
 *             objects = rs.get_objects()
 *     finally:
 */
    }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":617
 *             objects = rs.get_objects()
 *     finally:
 *         rs.release(statuses)             # <<<<<<<<<<<<<<
 *     return objects
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_4.__pyx_n = 1;
      __pyx_t_4.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 617, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_4.__pyx_n = 1;
        __pyx_t_4.statuses = __pyx_v_statuses;
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(7, 617, __pyx_L11_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L11_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":618
 *     finally:
 *         rs.release(statuses)
 *     return objects             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_waitsome(requests, statuses):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_objects);
  __pyx_r = __pyx_v_objects;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":606
 *     return objects
 * 
 * cdef object PyMPI_testall(requests, int *flag, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XDECREF(__pyx_v_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":620
 *     return objects
 * 
 * cdef object PyMPI_waitsome(requests, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_waitsome(PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_v_indices = 0;
  PyObject *__pyx_v_objects = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_waitsome", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":621
 * 
 * cdef object PyMPI_waitsome(requests, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.acquire(requests)
 *     rs.add_indices()
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 621, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":622
 * cdef object PyMPI_waitsome(requests, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)             # <<<<<<<<<<<<<<
 *     rs.add_indices()
 *     rs.add_statuses()
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 622, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":623
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 *     rs.add_indices()             # <<<<<<<<<<<<<<
 *     rs.add_statuses()
 *     cdef object indices = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 623, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":624
 *     rs.acquire(requests)
 *     rs.add_indices()
 *     rs.add_statuses()             # <<<<<<<<<<<<<<
 *     cdef object indices = None
 *     cdef object objects = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 624, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":625
 *     rs.add_indices()
 *     rs.add_statuses()
 *     cdef object indices = None             # <<<<<<<<<<<<<<
 *     cdef object objects = None
 *     try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_indices = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":626
 *     rs.add_statuses()
 *     cdef object indices = None
 *     cdef object objects = None             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Waitsome(
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_objects = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":627
 *     cdef object indices = None
 *     cdef object objects = None
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Waitsome(
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":628
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitsome(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":629
 *     try:
 *         with nogil: CHKERR( MPI_Waitsome(
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )             # <<<<<<<<<<<<<<
 *         indices = rs.get_indices()
 *         objects = rs.get_objects()
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitsome(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_rs->outcount), __pyx_v_rs->indices, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 628, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":628
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Waitsome(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":630
 *         with nogil: CHKERR( MPI_Waitsome(
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()             # <<<<<<<<<<<<<<
 *         objects = rs.get_objects()
 *     finally:
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 630, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_indices, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":631
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
 *         objects = rs.get_objects()             # <<<<<<<<<<<<<<
 *     finally:
 *         rs.release(statuses)
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_objects(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 631, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_objects, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":633
 *         objects = rs.get_objects()
 *     finally:
 *         rs.release(statuses)             # <<<<<<<<<<<<<<
 *     return (indices, objects)
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_3.__pyx_n = 1;
      __pyx_t_3.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 633, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_2 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_3.__pyx_n = 1;
        __pyx_t_3.statuses = __pyx_v_statuses;
        __pyx_t_12 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(7, 633, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":634
 *     finally:
 *         rs.release(statuses)
 *     return (indices, objects)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_testsome(requests, statuses):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_indices);
  __Pyx_GIVEREF(__pyx_v_indices);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_indices)) __PYX_ERR(7, 634, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_objects);
  __Pyx_GIVEREF(__pyx_v_objects);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_objects)) __PYX_ERR(7, 634, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":620
 *     return objects
 * 
 * cdef object PyMPI_waitsome(requests, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_waitsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XDECREF(__pyx_v_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":636
 *     return (indices, objects)
 * 
 * cdef object PyMPI_testsome(requests, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_testsome(PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_v_indices = 0;
  PyObject *__pyx_v_objects = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_testsome", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":637
 * 
 * cdef object PyMPI_testsome(requests, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *     rs.acquire(requests)
 *     rs.add_indices()
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 637, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":638
 * cdef object PyMPI_testsome(requests, statuses):
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)             # <<<<<<<<<<<<<<
 *     rs.add_indices()
 *     rs.add_statuses()
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 638, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":639
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 *     rs.add_indices()             # <<<<<<<<<<<<<<
 *     rs.add_statuses()
 *     cdef object indices = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 639, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":640
 *     rs.acquire(requests)
 *     rs.add_indices()
 *     rs.add_statuses()             # <<<<<<<<<<<<<<
 *     cdef object indices = None
 *     cdef object objects = None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 640, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":641
 *     rs.add_indices()
 *     rs.add_statuses()
 *     cdef object indices = None             # <<<<<<<<<<<<<<
 *     cdef object objects = None
 *     try:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_indices = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":642
 *     rs.add_statuses()
 *     cdef object indices = None
 *     cdef object objects = None             # <<<<<<<<<<<<<<
 *     try:
 *         with nogil: CHKERR( MPI_Testsome(
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_objects = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":643
 *     cdef object indices = None
 *     cdef object objects = None
 *     try:             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Testsome(
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":644
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Testsome(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":645
 *     try:
 *         with nogil: CHKERR( MPI_Testsome(
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )             # <<<<<<<<<<<<<<
 *         indices = rs.get_indices()
 *         objects = rs.get_objects()
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testsome(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_rs->outcount), __pyx_v_rs->indices, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 644, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":644
 *     cdef object objects = None
 *     try:
 *         with nogil: CHKERR( MPI_Testsome(             # <<<<<<<<<<<<<<
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":646
 *         with nogil: CHKERR( MPI_Testsome(
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()             # <<<<<<<<<<<<<<
 *         objects = rs.get_objects()
 *     finally:
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 646, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_indices, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":647
 *             rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *         indices = rs.get_indices()
 *         objects = rs.get_objects()             # <<<<<<<<<<<<<<
 *     finally:
 *         rs.release(statuses)
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_objects(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 647, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_objects, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":649
 *         objects = rs.get_objects()
 *     finally:
 *         rs.release(statuses)             # <<<<<<<<<<<<<<
 *     return (indices, objects)
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_3.__pyx_n = 1;
      __pyx_t_3.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 649, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_2 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_3.__pyx_n = 1;
        __pyx_t_3.statuses = __pyx_v_statuses;
        __pyx_t_12 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(7, 649, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":650
 *     finally:
 *         rs.release(statuses)
 *     return (indices, objects)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_indices);
  __Pyx_GIVEREF(__pyx_v_indices);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_indices)) __PYX_ERR(7, 650, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_objects);
  __Pyx_GIVEREF(__pyx_v_objects);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_objects)) __PYX_ERR(7, 650, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":636
 *     return (indices, objects)
 * 
 * cdef object PyMPI_testsome(requests, statuses):             # <<<<<<<<<<<<<<
 *     cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *     rs.acquire(requests)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_testsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XDECREF(__pyx_v_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":654
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_probe(int source, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Status *status):
 *     with nogil: CHKERR( MPI_Probe(source, tag, comm, status) )
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_probe(int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_probe", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":656
 * cdef object PyMPI_probe(int source, int tag,
 *                         MPI_Comm comm, MPI_Status *status):
 *     with nogil: CHKERR( MPI_Probe(source, tag, comm, status) )             # <<<<<<<<<<<<<<
 *     return True
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_status)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 656, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":657
 *                         MPI_Comm comm, MPI_Status *status):
 *     with nogil: CHKERR( MPI_Probe(source, tag, comm, status) )
 *     return True             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_iprobe(int source, int tag,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":654
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_probe(int source, int tag,             # <<<<<<<<<<<<<<
 *                         MPI_Comm comm, MPI_Status *status):
 *     with nogil: CHKERR( MPI_Probe(source, tag, comm, status) )
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":659
 *     return True
 * 
 * cdef object PyMPI_iprobe(int source, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Status *status):
 *     cdef int flag = 0
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_iprobe(int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Status *__pyx_v_status) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_iprobe", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":661
 * cdef object PyMPI_iprobe(int source, int tag,
 *                          MPI_Comm comm, MPI_Status *status):
 *     cdef int flag = 0             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Iprobe(source, tag, comm, &flag, status) )
 *     return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":662
 *                          MPI_Comm comm, MPI_Status *status):
 *     cdef int flag = 0
 *     with nogil: CHKERR( MPI_Iprobe(source, tag, comm, &flag, status) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_flag), __pyx_v_status)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 662, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":663
 *     cdef int flag = 0
 *     with nogil: CHKERR( MPI_Iprobe(source, tag, comm, &flag, status) )
 *     return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_mprobe(int source, int tag, MPI_Comm comm,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":659
 *     return True
 * 
 * cdef object PyMPI_iprobe(int source, int tag,             # <<<<<<<<<<<<<<
 *                          MPI_Comm comm, MPI_Status *status):
 *     cdef int flag = 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":665
 *     return <bint>flag
 * 
 * cdef object PyMPI_mprobe(int source, int tag, MPI_Comm comm,             # <<<<<<<<<<<<<<
 *                          MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_mprobe(int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, MPI_Message *__pyx_v_message, MPI_Status *__pyx_v_status) {
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  MPI_Status __pyx_v_rsts;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_mprobe", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":667
 * cdef object PyMPI_mprobe(int source, int tag, MPI_Comm comm,
 *                          MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":668
 *                          MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status rsts
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":669
 *     cdef void* rbuf = NULL
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     if (status == MPI_STATUS_IGNORE): status = &rsts
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":671
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status rsts
 *     if (status == MPI_STATUS_IGNORE): status = &rsts             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Mprobe(source, tag, comm, message, status) )
 *     if message[0] == MPI_MESSAGE_NO_PROC: return None
 */
  __pyx_t_1 = (__pyx_v_status == MPI_STATUS_IGNORE);
  if (__pyx_t_1) {
    __pyx_v_status = (&__pyx_v_rsts);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":672
 *     cdef MPI_Status rsts
 *     if (status == MPI_STATUS_IGNORE): status = &rsts
 *     with nogil: CHKERR( MPI_Mprobe(source, tag, comm, message, status) )             # <<<<<<<<<<<<<<
 *     if message[0] == MPI_MESSAGE_NO_PROC: return None
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Mprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_message, __pyx_v_status)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 672, __pyx_L5_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":673
 *     if (status == MPI_STATUS_IGNORE): status = &rsts
 *     with nogil: CHKERR( MPI_Mprobe(source, tag, comm, message, status) )
 *     if message[0] == MPI_MESSAGE_NO_PROC: return None             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)
 */
  __pyx_t_1 = ((__pyx_v_message[0]) == MPI_MESSAGE_NO_PROC);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":674
 *     with nogil: CHKERR( MPI_Mprobe(source, tag, comm, message, status) )
 *     if message[0] == MPI_MESSAGE_NO_PROC: return None
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)
 *     return rmsg
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count_c(__pyx_v_status, __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 674, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":675
 *     if message[0] == MPI_MESSAGE_NO_PROC: return None
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 675, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_rmsg = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":676
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_improbe(int source, int tag, MPI_Comm comm, int *flag,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":665
 *     return <bint>flag
 * 
 * cdef object PyMPI_mprobe(int source, int tag, MPI_Comm comm,             # <<<<<<<<<<<<<<
 *                          MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_mprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":678
 *     return rmsg
 * 
 * cdef object PyMPI_improbe(int source, int tag, MPI_Comm comm, int *flag,             # <<<<<<<<<<<<<<
 *                           MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_improbe(int __pyx_v_source, int __pyx_v_tag, MPI_Comm __pyx_v_comm, int *__pyx_v_flag, MPI_Message *__pyx_v_message, MPI_Status *__pyx_v_status) {
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  MPI_Status __pyx_v_rsts;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_improbe", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":680
 * cdef object PyMPI_improbe(int source, int tag, MPI_Comm comm, int *flag,
 *                           MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":681
 *                           MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status rsts
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":682
 *     cdef void* rbuf = NULL
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef MPI_Status rsts
 *     if (status == MPI_STATUS_IGNORE): status = &rsts
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":684
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status rsts
 *     if (status == MPI_STATUS_IGNORE): status = &rsts             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Improbe(source, tag, comm, flag, message, status) )
 *     if flag[0] == 0 or message[0] == MPI_MESSAGE_NO_PROC: return None
 */
  __pyx_t_1 = (__pyx_v_status == MPI_STATUS_IGNORE);
  if (__pyx_t_1) {
    __pyx_v_status = (&__pyx_v_rsts);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":685
 *     cdef MPI_Status rsts
 *     if (status == MPI_STATUS_IGNORE): status = &rsts
 *     with nogil: CHKERR( MPI_Improbe(source, tag, comm, flag, message, status) )             # <<<<<<<<<<<<<<
 *     if flag[0] == 0 or message[0] == MPI_MESSAGE_NO_PROC: return None
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Improbe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_flag, __pyx_v_message, __pyx_v_status)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 685, __pyx_L5_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":686
 *     if (status == MPI_STATUS_IGNORE): status = &rsts
 *     with nogil: CHKERR( MPI_Improbe(source, tag, comm, flag, message, status) )
 *     if flag[0] == 0 or message[0] == MPI_MESSAGE_NO_PROC: return None             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)
 */
  __pyx_t_3 = ((__pyx_v_flag[0]) == 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_message[0]) == MPI_MESSAGE_NO_PROC);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":687
 *     with nogil: CHKERR( MPI_Improbe(source, tag, comm, flag, message, status) )
 *     if flag[0] == 0 or message[0] == MPI_MESSAGE_NO_PROC: return None
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )             # <<<<<<<<<<<<<<
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)
 *     return rmsg
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count_c(__pyx_v_status, __pyx_v_rtype, (&__pyx_v_rcount))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 687, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":688
 *     if flag[0] == 0 or message[0] == MPI_MESSAGE_NO_PROC: return None
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_rmsg = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":689
 *     CHKERR( MPI_Get_count_c(status, rtype, &rcount) )
 *     cdef object rmsg = pickle_alloc(&rbuf, rcount)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_mrecv(object rmsg,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":678
 *     return rmsg
 * 
 * cdef object PyMPI_improbe(int source, int tag, MPI_Comm comm, int *flag,             # <<<<<<<<<<<<<<
 *                           MPI_Message *message, MPI_Status *status):
 *     cdef void* rbuf = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_improbe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":691
 *     return rmsg
 * 
 * cdef object PyMPI_mrecv(object rmsg,             # <<<<<<<<<<<<<<
 *                         MPI_Message *message, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_mrecv(PyObject *__pyx_v_rmsg, MPI_Message *__pyx_v_message, MPI_Status *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  MPI_Aint __pyx_v_rlen;
  MPI_Datatype __pyx_v_rtype;
  MPI_Count __pyx_v_rcount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_mrecv", 0);
  __Pyx_INCREF(__pyx_v_rmsg);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":693
 * cdef object PyMPI_mrecv(object rmsg,
 *                         MPI_Message *message, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     cdef void* rbuf = NULL
 *     cdef MPI_Aint rlen = 0
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":694
 *                         MPI_Message *message, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void* rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":695
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void* rbuf = NULL
 *     cdef MPI_Aint rlen = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 */
  __pyx_v_rlen = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":696
 *     cdef void* rbuf = NULL
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 *         rmsg = None
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":697
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *         rmsg = None
 *     elif rmsg is None:
 */
  __pyx_t_1 = ((__pyx_v_message[0]) == MPI_MESSAGE_NO_PROC);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":698
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 *         rmsg = None             # <<<<<<<<<<<<<<
 *     elif rmsg is None:
 *         pass
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_rmsg, Py_None);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":697
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *         rmsg = None
 *     elif rmsg is None:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":699
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 *         rmsg = None
 *     elif rmsg is None:             # <<<<<<<<<<<<<<
 *         pass
 *     elif PyBytes_CheckExact(rmsg):
 */
  __pyx_t_1 = (__pyx_v_rmsg == Py_None);
  if (__pyx_t_1) {
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":701
 *     elif rmsg is None:
 *         pass
 *     elif PyBytes_CheckExact(rmsg):             # <<<<<<<<<<<<<<
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)
 *     else:
 */
  __pyx_t_1 = PyBytes_CheckExact(__pyx_v_rmsg);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":702
 *         pass
 *     elif PyBytes_CheckExact(rmsg):
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)             # <<<<<<<<<<<<<<
 *     else:
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_rmsg, (&__pyx_v_rbuf), (&__pyx_v_rlen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":701
 *     elif rmsg is None:
 *         pass
 *     elif PyBytes_CheckExact(rmsg):             # <<<<<<<<<<<<<<
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":704
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)
 *     else:
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Mrecv_c(
 */
  /*else*/ {
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_rmsg, (&__pyx_v_rbuf), (&__pyx_v_rlen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":705
 *     else:
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 *     cdef MPI_Count rcount = <MPI_Count> rlen             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Mrecv_c(
 *         rbuf, rcount, rtype, message, status) )
 */
  __pyx_v_rcount = ((MPI_Count)__pyx_v_rlen);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":706
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Mrecv_c(             # <<<<<<<<<<<<<<
 *         rbuf, rcount, rtype, message, status) )
 *     rmsg = pickle_load(pickle, rbuf, rcount)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":707
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Mrecv_c(
 *         rbuf, rcount, rtype, message, status) )             # <<<<<<<<<<<<<<
 *     rmsg = pickle_load(pickle, rbuf, rcount)
 *     return rmsg
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Mrecv_c(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_message, __pyx_v_status)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 706, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":706
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Mrecv_c(             # <<<<<<<<<<<<<<
 *         rbuf, rcount, rtype, message, status) )
 *     rmsg = pickle_load(pickle, rbuf, rcount)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":708
 *     with nogil: CHKERR( MPI_Mrecv_c(
 *         rbuf, rcount, rtype, message, status) )
 *     rmsg = pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":709
 *         rbuf, rcount, rtype, message, status) )
 *     rmsg = pickle_load(pickle, rbuf, rcount)
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_imrecv(object rmsg,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":691
 *     return rmsg
 * 
 * cdef object PyMPI_mrecv(object rmsg,             # <<<<<<<<<<<<<<
 *                         MPI_Message *message, MPI_Status *status):
 *     cdef Pickle pickle = PyMPI_PICKLE
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_mrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":711
 *     return rmsg
 * 
 * cdef object PyMPI_imrecv(object rmsg,             # <<<<<<<<<<<<<<
 *                          MPI_Message *message, MPI_Request *request):
 *     cdef void* rbuf = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_imrecv(PyObject *__pyx_v_rmsg, MPI_Message *__pyx_v_message, MPI_Request *__pyx_v_request) {
  void *__pyx_v_rbuf;
  MPI_Aint __pyx_v_rlen;
  MPI_Datatype __pyx_v_rtype;
  MPI_Count __pyx_v_rcount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_imrecv", 0);
  __Pyx_INCREF(__pyx_v_rmsg);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":713
 * cdef object PyMPI_imrecv(object rmsg,
 *                          MPI_Message *message, MPI_Request *request):
 *     cdef void* rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":714
 *                          MPI_Message *message, MPI_Request *request):
 *     cdef void* rbuf = NULL
 *     cdef MPI_Aint rlen = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 */
  __pyx_v_rlen = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":715
 *     cdef void* rbuf = NULL
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 *         rmsg = None
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":716
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *         rmsg = None
 *     elif rmsg is None:
 */
  __pyx_t_1 = ((__pyx_v_message[0]) == MPI_MESSAGE_NO_PROC);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":717
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 *         rmsg = None             # <<<<<<<<<<<<<<
 *     elif rmsg is None:
 *         pass
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_rmsg, Py_None);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":716
 *     cdef MPI_Aint rlen = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     if message[0] == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *         rmsg = None
 *     elif rmsg is None:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":718
 *     if message[0] == MPI_MESSAGE_NO_PROC:
 *         rmsg = None
 *     elif rmsg is None:             # <<<<<<<<<<<<<<
 *         pass
 *     elif PyBytes_CheckExact(rmsg):
 */
  __pyx_t_1 = (__pyx_v_rmsg == Py_None);
  if (__pyx_t_1) {
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":720
 *     elif rmsg is None:
 *         pass
 *     elif PyBytes_CheckExact(rmsg):             # <<<<<<<<<<<<<<
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)
 *     else:
 */
  __pyx_t_1 = PyBytes_CheckExact(__pyx_v_rmsg);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":721
 *         pass
 *     elif PyBytes_CheckExact(rmsg):
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)             # <<<<<<<<<<<<<<
 *     else:
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_rmsg, (&__pyx_v_rbuf), (&__pyx_v_rlen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 721, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":720
 *     elif rmsg is None:
 *         pass
 *     elif PyBytes_CheckExact(rmsg):             # <<<<<<<<<<<<<<
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":723
 *         rmsg = asbuffer_r(rmsg, &rbuf, &rlen)
 *     else:
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if rmsg is not None:
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 */
  /*else*/ {
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_rmsg, (&__pyx_v_rbuf), (&__pyx_v_rlen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":724
 *     else:
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 *     if rmsg is not None:             # <<<<<<<<<<<<<<
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 */
  __pyx_t_1 = (__pyx_v_rmsg != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":725
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 *     if rmsg is not None:
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Imrecv_c(
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_wrap_buffer(((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_v_rmsg)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 725, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":724
 *     else:
 *         rmsg = asbuffer_w(rmsg, &rbuf, &rlen)  # ~> unreachable
 *     if rmsg is not None:             # <<<<<<<<<<<<<<
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":726
 *     if rmsg is not None:
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     cdef MPI_Count rcount = <MPI_Count> rlen             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Imrecv_c(
 *         rbuf, rcount, rtype, message, request) )
 */
  __pyx_v_rcount = ((MPI_Count)__pyx_v_rlen);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":727
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Imrecv_c(             # <<<<<<<<<<<<<<
 *         rbuf, rcount, rtype, message, request) )
 *     return rmsg
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":728
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Imrecv_c(
 *         rbuf, rcount, rtype, message, request) )             # <<<<<<<<<<<<<<
 *     return rmsg
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Imrecv_c(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_message, __pyx_v_request)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 727, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":727
 *         rmsg = PyMPI_wrap_buffer(<buffer>rmsg)
 *     cdef MPI_Count rcount = <MPI_Count> rlen
 *     with nogil: CHKERR( MPI_Imrecv_c(             # <<<<<<<<<<<<<<
 *         rbuf, rcount, rtype, message, request) )
 *     return rmsg
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":729
 *     with nogil: CHKERR( MPI_Imrecv_c(
 *         rbuf, rcount, rtype, message, request) )
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":711
 *     return rmsg
 * 
 * cdef object PyMPI_imrecv(object rmsg,             # <<<<<<<<<<<<<<
 *                          MPI_Message *message, MPI_Request *request):
 *     cdef void* rbuf = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_imrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":733
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_barrier(MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Barrier(comm) )
 *     return None
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_barrier(MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_barrier", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":734
 * 
 * cdef object PyMPI_barrier(MPI_Comm comm):
 *     with nogil: CHKERR( MPI_Barrier(comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier(__pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 734, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":735
 * cdef object PyMPI_barrier(MPI_Comm comm):
 *     with nogil: CHKERR( MPI_Barrier(comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":733
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyMPI_barrier(MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Barrier(comm) )
 *     return None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_barrier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":738
 * 
 * 
 * cdef object PyMPI_bcast(object obj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bcast(PyObject *__pyx_v_obj, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_buf;
  MPI_Count __pyx_v_count;
  MPI_Datatype __pyx_v_dtype;
  int __pyx_v_dosend;
  int __pyx_v_dorecv;
  int __pyx_v_inter;
  int __pyx_v_rank;
  PyObject *__pyx_v_smsg = 0;
  PyObject *__pyx_v_rmsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  unsigned int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_bcast", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":739
 * 
 * cdef object PyMPI_bcast(object obj, int root, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *buf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":741
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *buf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE
 */
  __pyx_v_buf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":742
 *     #
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     #
 */
  __pyx_v_count = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":743
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend=0, dorecv=0
 */
  __pyx_v_dtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":745
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     #
 *     cdef int dosend=0, dorecv=0             # <<<<<<<<<<<<<<
 *     cdef int inter=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_v_dosend = 0;
  __pyx_v_dorecv = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":746
 *     #
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, rank=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_rank = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":747
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         if root == MPI_PROC_NULL:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 747, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":748
 *     cdef int inter=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 */
  __pyx_t_2 = (__pyx_v_inter != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":749
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         if root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 */
    __pyx_t_2 = (__pyx_v_root == MPI_PROC_NULL);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":750
 *     if inter:
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0             # <<<<<<<<<<<<<<
 *         elif root == MPI_ROOT:
 *             dosend, dorecv = 1, 0
 */
      __pyx_t_1 = 0;
      __pyx_t_3 = 0;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":749
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         if root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":751
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 0
 *         else:
 */
    __pyx_t_2 = (__pyx_v_root == MPI_ROOT);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":752
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 *             dosend, dorecv = 1, 0             # <<<<<<<<<<<<<<
 *         else:
 *             dosend, dorecv = 0, 1
 */
      __pyx_t_3 = 1;
      __pyx_t_1 = 0;
      __pyx_v_dosend = __pyx_t_3;
      __pyx_v_dorecv = __pyx_t_1;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":751
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 0
 *         else:
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":754
 *             dosend, dorecv = 1, 0
 *         else:
 *             dosend, dorecv = 0, 1             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 */
    /*else*/ {
      __pyx_t_1 = 0;
      __pyx_t_3 = 1;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;
    }
    __pyx_L4:;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":748
 *     cdef int inter=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":756
 *             dosend, dorecv = 0, 1
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend, dorecv = 1, 1
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 756, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":757
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 1
 *         else:
 */
    __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":758
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 *             dosend, dorecv = 1, 1             # <<<<<<<<<<<<<<
 *         else:
 *             dosend, dorecv = 0, 1
 */
      __pyx_t_3 = 1;
      __pyx_t_1 = 1;
      __pyx_v_dosend = __pyx_t_3;
      __pyx_v_dorecv = __pyx_t_1;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":757
 *     else:
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 1
 *         else:
 */
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":760
 *             dosend, dorecv = 1, 1
 *         else:
 *             dosend, dorecv = 0, 1             # <<<<<<<<<<<<<<
 *     #
 *     cdef object smsg = None
 */
    /*else*/ {
      __pyx_t_1 = 0;
      __pyx_t_3 = 1;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":762
 *             dosend, dorecv = 0, 1
 *     #
 *     cdef object smsg = None             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_smsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":763
 *     #
 *     cdef object smsg = None
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     #
 *     if dosend: smsg = pickle_dump(pickle, obj, &buf, &count)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":765
 *     cdef object rmsg = None
 *     #
 *     if dosend: smsg = pickle_dump(pickle, obj, &buf, &count)             # <<<<<<<<<<<<<<
 *     if dosend and dorecv: rmsg = smsg
 *     with PyMPI_Lock(comm, "bcast"):
 */
  __pyx_t_2 = (__pyx_v_dosend != 0);
  if (__pyx_t_2) {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_buf), (&__pyx_v_count)); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_smsg, __pyx_t_4);
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":766
 *     #
 *     if dosend: smsg = pickle_dump(pickle, obj, &buf, &count)
 *     if dosend and dorecv: rmsg = smsg             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "bcast"):
 *         with nogil: CHKERR( MPI_Bcast_c(
 */
  __pyx_t_5 = (__pyx_v_dosend != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_2 = __pyx_t_5;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_dorecv != 0);
  __pyx_t_2 = __pyx_t_5;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_2) {
    __Pyx_INCREF(__pyx_v_smsg);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_v_smsg);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":767
 *     if dosend: smsg = pickle_dump(pickle, obj, &buf, &count)
 *     if dosend and dorecv: rmsg = smsg
 *     with PyMPI_Lock(comm, "bcast"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_c(
 *             &count, 1, MPI_COUNT,
 */
  /*with:*/ {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_bcast); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 767, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = NULL;
    __pyx_t_10 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
        __pyx_t_10 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 767, __pyx_L10_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_13);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":768
 *     if dosend and dorecv: rmsg = smsg
 *     with PyMPI_Lock(comm, "bcast"):
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             &count, 1, MPI_COUNT,
 *             root, comm) )
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":770
 *         with nogil: CHKERR( MPI_Bcast_c(
 *             &count, 1, MPI_COUNT,
 *             root, comm) )             # <<<<<<<<<<<<<<
 *         if dorecv and not dosend:
 *             rmsg = pickle_alloc(&buf, count)
 */
                __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast_c((&__pyx_v_count), 1, MPI_COUNT, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 768, __pyx_L21_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":768
 *     if dosend and dorecv: rmsg = smsg
 *     with PyMPI_Lock(comm, "bcast"):
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             &count, 1, MPI_COUNT,
 *             root, comm) )
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L22;
                }
                __pyx_L21_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L14_error;
                }
                __pyx_L22:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":771
 *             &count, 1, MPI_COUNT,
 *             root, comm) )
 *         if dorecv and not dosend:             # <<<<<<<<<<<<<<
 *             rmsg = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(
 */
          __pyx_t_5 = (__pyx_v_dorecv != 0);
          if (__pyx_t_5) {
          } else {
            __pyx_t_2 = __pyx_t_5;
            goto __pyx_L24_bool_binop_done;
          }
          __pyx_t_5 = (!(__pyx_v_dosend != 0));
          __pyx_t_2 = __pyx_t_5;
          __pyx_L24_bool_binop_done:;
          if (__pyx_t_2) {

            /* "src/mpi4py/MPI.src/msgpickle.pxi":772
 *             root, comm) )
 *         if dorecv and not dosend:
 *             rmsg = pickle_alloc(&buf, count)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_c(
 *             buf, count, dtype,
 */
            __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_buf), __pyx_v_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 772, __pyx_L14_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_4);
            __pyx_t_4 = 0;

            /* "src/mpi4py/MPI.src/msgpickle.pxi":771
 *             &count, 1, MPI_COUNT,
 *             root, comm) )
 *         if dorecv and not dosend:             # <<<<<<<<<<<<<<
 *             rmsg = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(
 */
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":773
 *         if dorecv and not dosend:
 *             rmsg = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             buf, count, dtype,
 *             root, comm) )
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":775
 *         with nogil: CHKERR( MPI_Bcast_c(
 *             buf, count, dtype,
 *             root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle_load(pickle, buf, count)
 *     #
 */
                __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast_c(__pyx_v_buf, __pyx_v_count, __pyx_v_dtype, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 773, __pyx_L27_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":773
 *         if dorecv and not dosend:
 *             rmsg = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             buf, count, dtype,
 *             root, comm) )
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L28;
                }
                __pyx_L27_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L14_error;
                }
                __pyx_L28:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":767
 *     if dosend: smsg = pickle_dump(pickle, obj, &buf, &count)
 *     if dosend and dorecv: rmsg = smsg
 *     with PyMPI_Lock(comm, "bcast"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_c(
 *             &count, 1, MPI_COUNT,
 */
        }
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        goto __pyx_L19_try_end;
        __pyx_L14_error:;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(7, 767, __pyx_L16_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_8);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 767, __pyx_L16_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_14)) __PYX_ERR(7, 767, __pyx_L16_except_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(7, 767, __pyx_L16_except_error)
          __pyx_t_5 = (!__pyx_t_2);
          if (unlikely(__pyx_t_5)) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_7);
            __Pyx_XGIVEREF(__pyx_t_8);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_7, __pyx_t_8);
            __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; 
            __PYX_ERR(7, 767, __pyx_L16_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L15_exception_handled;
        }
        __pyx_L16_except_error:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        goto __pyx_L1_error;
        __pyx_L15_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        __pyx_L19_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_6) {
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 767, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
        goto __pyx_L13;
      }
      __pyx_L13:;
    }
    goto __pyx_L32;
    __pyx_L10_error:;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L1_error;
    __pyx_L32:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":776
 *             buf, count, dtype,
 *             root, comm) )
 *     if dorecv: rmsg = pickle_load(pickle, buf, count)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
 */
  __pyx_t_5 = (__pyx_v_dorecv != 0);
  if (__pyx_t_5) {
    __pyx_t_8 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_buf, __pyx_v_count); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_8);
    __pyx_t_8 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":778
 *     if dorecv: rmsg = pickle_load(pickle, buf, count)
 *     #
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":738
 * 
 * 
 * cdef object PyMPI_bcast(object obj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_smsg);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":781
 * 
 * 
 * cdef object PyMPI_gather(object sendobj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_gather(PyObject *__pyx_v_sendobj, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  MPI_Count *__pyx_v_rcounts;
  MPI_Aint *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_dosend;
  int __pyx_v_dorecv;
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_v_rmsg = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_gather", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":782
 * 
 * cdef object PyMPI_gather(object sendobj, int root, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":784
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":785
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":786
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":787
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":788
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":789
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":790
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend=0, dorecv=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":792
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int dosend=0, dorecv=0             # <<<<<<<<<<<<<<
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_v_dosend = 0;
  __pyx_v_dorecv = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":793
 *     #
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":794
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 794, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":795
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:
 */
  __pyx_t_2 = (__pyx_v_inter != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":796
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 796, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":797
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 */
    __pyx_t_2 = (__pyx_v_root == MPI_PROC_NULL);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":798
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0             # <<<<<<<<<<<<<<
 *         elif root == MPI_ROOT:
 *             dosend, dorecv = 0, 1
 */
      __pyx_t_1 = 0;
      __pyx_t_3 = 0;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":797
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":799
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 1
 *         else:
 */
    __pyx_t_2 = (__pyx_v_root == MPI_ROOT);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":800
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 *             dosend, dorecv = 0, 1             # <<<<<<<<<<<<<<
 *         else:
 *             dosend, dorecv = 1, 0
 */
      __pyx_t_3 = 0;
      __pyx_t_1 = 1;
      __pyx_v_dosend = __pyx_t_3;
      __pyx_v_dorecv = __pyx_t_1;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":799
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 1
 *         else:
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":802
 *             dosend, dorecv = 0, 1
 *         else:
 *             dosend, dorecv = 1, 0             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
    /*else*/ {
      __pyx_t_1 = 1;
      __pyx_t_3 = 0;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;
    }
    __pyx_L4:;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":795
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":804
 *             dosend, dorecv = 1, 0
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 804, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":805
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend, dorecv = 1, 1
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 805, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":806
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 1
 *         else:
 */
    __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":807
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 *             dosend, dorecv = 1, 1             # <<<<<<<<<<<<<<
 *         else:
 *             dosend, dorecv = 1, 0
 */
      __pyx_t_3 = 1;
      __pyx_t_1 = 1;
      __pyx_v_dosend = __pyx_t_3;
      __pyx_v_dorecv = __pyx_t_1;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":806
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 1
 *         else:
 */
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":809
 *             dosend, dorecv = 1, 1
 *         else:
 *             dosend, dorecv = 1, 0             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
    /*else*/ {
      __pyx_t_1 = 1;
      __pyx_t_3 = 0;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":811
 *             dosend, dorecv = 1, 0
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     cdef object unused1
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":812
 *     #
 *     cdef object unuseds = None
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef object unused1
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":815
 *     cdef object unused1
 *     #
 *     if dorecv: unused1 = allocate_count_displ(size, &rcounts, &rdispls)             # <<<<<<<<<<<<<<
 *     if dosend: unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "gather"):
 */
  __pyx_t_2 = (__pyx_v_dorecv != 0);
  if (__pyx_t_2) {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_size, (&__pyx_v_rcounts), (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_unused1 = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":816
 *     #
 *     if dorecv: unused1 = allocate_count_displ(size, &rcounts, &rdispls)
 *     if dosend: unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "gather"):
 *         with nogil: CHKERR( MPI_Gather_c(
 */
  __pyx_t_2 = (__pyx_v_dosend != 0);
  if (__pyx_t_2) {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 816, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_4);
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":817
 *     if dorecv: unused1 = allocate_count_displ(size, &rcounts, &rdispls)
 *     if dosend: unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "gather"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gather_c(
 *             &scount, 1, MPI_COUNT,
 */
  /*with:*/ {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_gather); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 817, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 817, __pyx_L8_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 817, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":818
 *     if dosend: unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "gather"):
 *         with nogil: CHKERR( MPI_Gather_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":821
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 *             root, comm) )             # <<<<<<<<<<<<<<
 *         if dorecv: rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Gatherv_c(
 */
                __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gather_c((&__pyx_v_scount), 1, MPI_COUNT, __pyx_v_rcounts, 1, MPI_COUNT, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 818, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":818
 *     if dosend: unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "gather"):
 *         with nogil: CHKERR( MPI_Gather_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L12_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":822
 *             rcounts, 1, MPI_COUNT,
 *             root, comm) )
 *         if dorecv: rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gatherv_c(
 *             sbuf, scount,           stype,
 */
          __pyx_t_2 = (__pyx_v_dorecv != 0);
          if (__pyx_t_2) {
            __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_allocv((&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 822, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_4);
            __pyx_t_4 = 0;
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":823
 *             root, comm) )
 *         if dorecv: rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Gatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":826
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 *             root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)
 *     #
 */
                __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gatherv_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 823, __pyx_L23_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":823
 *             root, comm) )
 *         if dorecv: rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Gatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L24;
                }
                __pyx_L23_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L12_error;
                }
                __pyx_L24:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":817
 *     if dorecv: unused1 = allocate_count_displ(size, &rcounts, &rdispls)
 *     if dosend: unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "gather"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gather_c(
 *             &scount, 1, MPI_COUNT,
 */
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L17_try_end;
        __pyx_L12_error:;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(7, 817, __pyx_L14_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_8 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 817, __pyx_L14_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 817, __pyx_L14_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(7, 817, __pyx_L14_except_error)
          __pyx_t_14 = (!__pyx_t_2);
          if (unlikely(__pyx_t_14)) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_6);
            __Pyx_XGIVEREF(__pyx_t_7);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_6, __pyx_t_7);
            __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
            __PYX_ERR(7, 817, __pyx_L14_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L13_exception_handled;
        }
        __pyx_L14_except_error:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        goto __pyx_L1_error;
        __pyx_L13_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        __pyx_L17_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_5) {
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 817, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        goto __pyx_L11;
      }
      __pyx_L11:;
    }
    goto __pyx_L28;
    __pyx_L8_error:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L1_error;
    __pyx_L28:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":827
 *             rbuf, rcounts, rdispls, rtype,
 *             root, comm) )
 *     if dorecv: rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
 */
  __pyx_t_14 = (__pyx_v_dorecv != 0);
  if (__pyx_t_14) {
    __pyx_t_7 = __pyx_f_6mpi4py_3MPI_pickle_loadv(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_7);
    __pyx_t_7 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":829
 *     if dorecv: rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)
 *     #
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":781
 * 
 * 
 * cdef object PyMPI_gather(object sendobj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":832
 * 
 * 
 * cdef object PyMPI_scatter(object sendobj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scatter(PyObject *__pyx_v_sendobj, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count *__pyx_v_scounts;
  MPI_Aint *__pyx_v_sdispls;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_dosend;
  int __pyx_v_dorecv;
  int __pyx_v_inter;
  int __pyx_v_size;
  int __pyx_v_rank;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_v_rmsg = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scatter", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":833
 * 
 * cdef object PyMPI_scatter(object sendobj, int root, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":835
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":836
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count *scounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_scounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":837
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_sdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":838
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":839
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":840
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":841
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int dosend=0, dorecv=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":843
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int dosend=0, dorecv=0             # <<<<<<<<<<<<<<
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */
  __pyx_v_dosend = 0;
  __pyx_v_dorecv = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":844
 *     #
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;
  __pyx_v_rank = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":845
 *     cdef int dosend=0, dorecv=0
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 845, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":846
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:
 */
  __pyx_t_2 = (__pyx_v_inter != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":847
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 847, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":848
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 */
    __pyx_t_2 = (__pyx_v_root == MPI_PROC_NULL);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":849
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0             # <<<<<<<<<<<<<<
 *         elif root == MPI_ROOT:
 *             dosend, dorecv = 1, 0
 */
      __pyx_t_1 = 0;
      __pyx_t_3 = 0;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":848
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":850
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 0
 *         else:
 */
    __pyx_t_2 = (__pyx_v_root == MPI_ROOT);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":851
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:
 *             dosend, dorecv = 1, 0             # <<<<<<<<<<<<<<
 *         else:
 *             dosend, dorecv = 0, 1
 */
      __pyx_t_3 = 1;
      __pyx_t_1 = 0;
      __pyx_v_dosend = __pyx_t_3;
      __pyx_v_dorecv = __pyx_t_1;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":850
 *         if root == MPI_PROC_NULL:
 *             dosend, dorecv = 0, 0
 *         elif root == MPI_ROOT:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 0
 *         else:
 */
      goto __pyx_L4;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":853
 *             dosend, dorecv = 1, 0
 *         else:
 *             dosend, dorecv = 0, 1             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
    /*else*/ {
      __pyx_t_1 = 0;
      __pyx_t_3 = 1;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;
    }
    __pyx_L4:;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":846
 *     cdef int inter=0, size=0, rank=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *         if root == MPI_PROC_NULL:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":855
 *             dosend, dorecv = 0, 1
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 855, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":856
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             dosend, dorecv = 1, 1
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 856, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":857
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 1
 *         else:
 */
    __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":858
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:
 *             dosend, dorecv = 1, 1             # <<<<<<<<<<<<<<
 *         else:
 *             dosend, dorecv = 0, 1
 */
      __pyx_t_3 = 1;
      __pyx_t_1 = 1;
      __pyx_v_dosend = __pyx_t_3;
      __pyx_v_dorecv = __pyx_t_1;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":857
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *         CHKERR( MPI_Comm_rank(comm, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             dosend, dorecv = 1, 1
 *         else:
 */
      goto __pyx_L5;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":860
 *             dosend, dorecv = 1, 1
 *         else:
 *             dosend, dorecv = 0, 1             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
    /*else*/ {
      __pyx_t_1 = 0;
      __pyx_t_3 = 1;
      __pyx_v_dosend = __pyx_t_1;
      __pyx_v_dorecv = __pyx_t_3;
    }
    __pyx_L5:;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":862
 *             dosend, dorecv = 0, 1
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     cdef object unused1
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":863
 *     #
 *     cdef object unuseds = None
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef object unused1
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":866
 *     cdef object unused1
 *     #
 *     if dosend: unused1 = allocate_count_displ(size, &scounts, &sdispls)             # <<<<<<<<<<<<<<
 *     if dosend: unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "scatter"):
 */
  __pyx_t_2 = (__pyx_v_dosend != 0);
  if (__pyx_t_2) {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_size, (&__pyx_v_scounts), (&__pyx_v_sdispls)); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_unused1 = __pyx_t_4;
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":867
 *     #
 *     if dosend: unused1 = allocate_count_displ(size, &scounts, &sdispls)
 *     if dosend: unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "scatter"):
 *         with nogil: CHKERR( MPI_Scatter_c(
 */
  __pyx_t_2 = (__pyx_v_dosend != 0);
  if (__pyx_t_2) {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_dumpv(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), __pyx_v_size, __pyx_v_scounts, __pyx_v_sdispls); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 867, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_4);
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":868
 *     if dosend: unused1 = allocate_count_displ(size, &scounts, &sdispls)
 *     if dosend: unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "scatter"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatter_c(
 *             scounts, 1, MPI_COUNT,
 */
  /*with:*/ {
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_scatter); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 868, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 868, __pyx_L8_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 868, __pyx_L8_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":869
 *     if dosend: unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "scatter"):
 *         with nogil: CHKERR( MPI_Scatter_c(             # <<<<<<<<<<<<<<
 *             scounts, 1, MPI_COUNT,
 *             &rcount, 1, MPI_COUNT,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":872
 *             scounts, 1, MPI_COUNT,
 *             &rcount, 1, MPI_COUNT,
 *             root, comm) )             # <<<<<<<<<<<<<<
 *         if dorecv: rmsg = pickle_alloc(&rbuf, rcount)
 *         with nogil: CHKERR( MPI_Scatterv_c(
 */
                __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatter_c(__pyx_v_scounts, 1, MPI_COUNT, (&__pyx_v_rcount), 1, MPI_COUNT, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 869, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":869
 *     if dosend: unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "scatter"):
 *         with nogil: CHKERR( MPI_Scatter_c(             # <<<<<<<<<<<<<<
 *             scounts, 1, MPI_COUNT,
 *             &rcount, 1, MPI_COUNT,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L12_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":873
 *             &rcount, 1, MPI_COUNT,
 *             root, comm) )
 *         if dorecv: rmsg = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatterv_c(
 *             sbuf, scounts, sdispls, stype,
 */
          __pyx_t_2 = (__pyx_v_dorecv != 0);
          if (__pyx_t_2) {
            __pyx_t_4 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 873, __pyx_L12_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_4);
            __pyx_t_4 = 0;
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":874
 *             root, comm) )
 *         if dorecv: rmsg = pickle_alloc(&rbuf, rcount)
 *         with nogil: CHKERR( MPI_Scatterv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcount,           rtype,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":877
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcount,           rtype,
 *             root, comm) )             # <<<<<<<<<<<<<<
 *     if dorecv: rmsg = pickle_load(pickle, rbuf, rcount)
 *     #
 */
                __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatterv_c(__pyx_v_sbuf, __pyx_v_scounts, __pyx_v_sdispls, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 874, __pyx_L23_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":874
 *             root, comm) )
 *         if dorecv: rmsg = pickle_alloc(&rbuf, rcount)
 *         with nogil: CHKERR( MPI_Scatterv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcount,           rtype,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L24;
                }
                __pyx_L23_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L12_error;
                }
                __pyx_L24:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":868
 *     if dosend: unused1 = allocate_count_displ(size, &scounts, &sdispls)
 *     if dosend: unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "scatter"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatter_c(
 *             scounts, 1, MPI_COUNT,
 */
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L17_try_end;
        __pyx_L12_error:;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(7, 868, __pyx_L14_except_error)
          __Pyx_XGOTREF(__pyx_t_4);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_8 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 868, __pyx_L14_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 868, __pyx_L14_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(7, 868, __pyx_L14_except_error)
          __pyx_t_14 = (!__pyx_t_2);
          if (unlikely(__pyx_t_14)) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_6);
            __Pyx_XGIVEREF(__pyx_t_7);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_6, __pyx_t_7);
            __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
            __PYX_ERR(7, 868, __pyx_L14_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L13_exception_handled;
        }
        __pyx_L14_except_error:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        goto __pyx_L1_error;
        __pyx_L13_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        __pyx_L17_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_5) {
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 868, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        goto __pyx_L11;
      }
      __pyx_L11:;
    }
    goto __pyx_L28;
    __pyx_L8_error:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L1_error;
    __pyx_L28:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":878
 *             rbuf, rcount,           rtype,
 *             root, comm) )
 *     if dorecv: rmsg = pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
 */
  __pyx_t_14 = (__pyx_v_dorecv != 0);
  if (__pyx_t_14) {
    __pyx_t_7 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 878, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_7);
    __pyx_t_7 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":880
 *     if dorecv: rmsg = pickle_load(pickle, rbuf, rcount)
 *     #
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":832
 * 
 * 
 * cdef object PyMPI_scatter(object sendobj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":883
 * 
 * 
 * cdef object PyMPI_allgather(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allgather(PyObject *__pyx_v_sendobj, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  MPI_Count *__pyx_v_rcounts;
  MPI_Aint *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_inter;
  int __pyx_v_size;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_v_rmsg = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_allgather", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":884
 * 
 * cdef object PyMPI_allgather(object sendobj, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":886
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":887
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":888
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":889
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":890
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":891
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":892
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int inter=0, size=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":894
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":895
 *     #
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 895, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":896
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
  __pyx_t_2 = (__pyx_v_inter != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":897
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 897, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":896
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":899
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
  /*else*/ {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 899, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":901
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     cdef object unused1
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":902
 *     #
 *     cdef object unuseds = None
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef object unused1
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":905
 *     cdef object unused1
 *     #
 *     unused1 = allocate_count_displ(size, &rcounts, &rdispls)             # <<<<<<<<<<<<<<
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "allgather"):
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_size, (&__pyx_v_rcounts), (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_unused1 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":906
 *     #
 *     unused1 = allocate_count_displ(size, &rcounts, &rdispls)
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "allgather"):
 *         with nogil: CHKERR( MPI_Allgather_c(
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 906, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":907
 *     unused1 = allocate_count_displ(size, &rcounts, &rdispls)
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "allgather"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgather_c(
 *             &scount, 1, MPI_COUNT,
 */
  /*with:*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_allgather); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 907, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 907, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 907, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 907, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":908
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "allgather"):
 *         with nogil: CHKERR( MPI_Allgather_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":911
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 *             comm) )             # <<<<<<<<<<<<<<
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Allgatherv_c(
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgather_c((&__pyx_v_scount), 1, MPI_COUNT, __pyx_v_rcounts, 1, MPI_COUNT, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 908, __pyx_L15_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":908
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "allgather"):
 *         with nogil: CHKERR( MPI_Allgather_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L16;
                }
                __pyx_L15_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L8_error;
                }
                __pyx_L16:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":912
 *             rcounts, 1, MPI_COUNT,
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgatherv_c(
 *             sbuf, scount,           stype,
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_allocv((&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 912, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":913
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Allgatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":916
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)
 *     #
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgatherv_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 913, __pyx_L18_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":913
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Allgatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L19;
                }
                __pyx_L18_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L8_error;
                }
                __pyx_L19:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":907
 *     unused1 = allocate_count_displ(size, &rcounts, &rdispls)
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "allgather"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgather_c(
 *             &scount, 1, MPI_COUNT,
 */
        }
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L13_try_end;
        __pyx_L8_error:;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(7, 907, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 907, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 907, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(7, 907, __pyx_L10_except_error)
          __pyx_t_13 = (!__pyx_t_2);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_6);
            __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(7, 907, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        __pyx_L13_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 907, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L23;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L23:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":917
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
 */
  __pyx_t_6 = __pyx_f_6mpi4py_3MPI_pickle_loadv(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":919
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)
 *     #
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":883
 * 
 * 
 * cdef object PyMPI_allgather(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":922
 * 
 * 
 * cdef object PyMPI_alltoall(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_alltoall(PyObject *__pyx_v_sendobj, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count *__pyx_v_scounts;
  MPI_Aint *__pyx_v_sdispls;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  MPI_Count *__pyx_v_rcounts;
  MPI_Aint *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_inter;
  int __pyx_v_size;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_v_rmsg = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_alltoall", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":923
 * 
 * cdef object PyMPI_alltoall(object sendobj, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":925
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":926
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count *scounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_scounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":927
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_sdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":928
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":929
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":930
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":931
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":932
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int inter=0, size=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":934
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int inter=0, size=0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 */
  __pyx_v_inter = 0;
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":935
 *     #
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 935, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":936
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
  __pyx_t_2 = (__pyx_v_inter != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":937
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 937, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":936
 *     cdef int inter=0, size=0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter:             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":939
 *         CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     else:
 *         CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
  /*else*/ {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 939, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":941
 *         CHKERR( MPI_Comm_size(comm, &size) )
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     cdef object unused1, unused2
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":942
 *     #
 *     cdef object unuseds = None
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef object unused1, unused2
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":945
 *     cdef object unused1, unused2
 *     #
 *     unused1 = allocate_count_displ(size, &scounts, &sdispls)             # <<<<<<<<<<<<<<
 *     unused2 = allocate_count_displ(size, &rcounts, &rdispls)
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_size, (&__pyx_v_scounts), (&__pyx_v_sdispls)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_unused1 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":946
 *     #
 *     unused1 = allocate_count_displ(size, &scounts, &sdispls)
 *     unused2 = allocate_count_displ(size, &rcounts, &rdispls)             # <<<<<<<<<<<<<<
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "alltoall"):
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_size, (&__pyx_v_rcounts), (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_unused2 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":947
 *     unused1 = allocate_count_displ(size, &scounts, &sdispls)
 *     unused2 = allocate_count_displ(size, &rcounts, &rdispls)
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "alltoall"):
 *         with nogil: CHKERR( MPI_Alltoall_c(
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_dumpv(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), __pyx_v_size, __pyx_v_scounts, __pyx_v_sdispls); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":948
 *     unused2 = allocate_count_displ(size, &rcounts, &rdispls)
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "alltoall"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoall_c(
 *             scounts, 1, MPI_COUNT,
 */
  /*with:*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_alltoall); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 948, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 948, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":949
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "alltoall"):
 *         with nogil: CHKERR( MPI_Alltoall_c(             # <<<<<<<<<<<<<<
 *             scounts, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":952
 *             scounts, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 *             comm) )             # <<<<<<<<<<<<<<
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Alltoallv_c(
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoall_c(__pyx_v_scounts, 1, MPI_COUNT, __pyx_v_rcounts, 1, MPI_COUNT, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 949, __pyx_L15_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":949
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "alltoall"):
 *         with nogil: CHKERR( MPI_Alltoall_c(             # <<<<<<<<<<<<<<
 *             scounts, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L16;
                }
                __pyx_L15_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L8_error;
                }
                __pyx_L16:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":953
 *             rcounts, 1, MPI_COUNT,
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoallv_c(
 *             sbuf, scounts, sdispls, stype,
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_allocv((&__pyx_v_rbuf), __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 953, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":954
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Alltoallv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":957
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)
 *     #
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallv_c(__pyx_v_sbuf, __pyx_v_scounts, __pyx_v_sdispls, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 954, __pyx_L18_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":954
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, size, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Alltoallv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L19;
                }
                __pyx_L18_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L8_error;
                }
                __pyx_L19:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":948
 *     unused2 = allocate_count_displ(size, &rcounts, &rdispls)
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, size, scounts, sdispls)
 *     with PyMPI_Lock(comm, "alltoall"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoall_c(
 *             scounts, 1, MPI_COUNT,
 */
        }
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L13_try_end;
        __pyx_L8_error:;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(7, 948, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 948, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 948, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(7, 948, __pyx_L10_except_error)
          __pyx_t_13 = (!__pyx_t_2);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_6);
            __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(7, 948, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        __pyx_L13_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 948, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L23;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L23:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":958
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
 */
  __pyx_t_6 = __pyx_f_6mpi4py_3MPI_pickle_loadv(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_size, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":960
 *     rmsg = pickle_loadv(pickle, rbuf, size, rcounts, rdispls)
 *     #
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":922
 * 
 * 
 * cdef object PyMPI_alltoall(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":963
 * 
 * 
 * cdef object PyMPI_neighbor_allgather(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_neighbor_allgather(PyObject *__pyx_v_sendobj, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  MPI_Count *__pyx_v_rcounts;
  MPI_Aint *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_rsize;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_v_rmsg = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_neighbor_allgather", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":964
 * 
 * cdef object PyMPI_neighbor_allgather(object sendobj, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":966
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":967
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":968
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":969
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":970
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":971
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":972
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int rsize=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":974
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int rsize=0             # <<<<<<<<<<<<<<
 *     comm_neighbors_count(comm, &rsize, NULL)
 *     #
 */
  __pyx_v_rsize = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":975
 *     #
 *     cdef int rsize=0
 *     comm_neighbors_count(comm, &rsize, NULL)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_neighbors_count(__pyx_v_comm, (&__pyx_v_rsize), NULL); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 975, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":977
 *     comm_neighbors_count(comm, &rsize, NULL)
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     cdef object unused1
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":978
 *     #
 *     cdef object unuseds = None
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef object unused1
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":981
 *     cdef object unused1
 *     #
 *     unused1 = allocate_count_displ(rsize, &rcounts, &rdispls)             # <<<<<<<<<<<<<<
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_rsize, (&__pyx_v_rcounts), (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":982
 *     #
 *     unused1 = allocate_count_displ(rsize, &rcounts, &rdispls)
 *     for i in range(rsize): rcounts[i] = 0             # <<<<<<<<<<<<<<
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "neighbor_allgather"):
 */
  __pyx_t_1 = __pyx_v_rsize;
  __pyx_t_3 = __pyx_t_1;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;
    (__pyx_v_rcounts[__pyx_v_i]) = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":983
 *     unused1 = allocate_count_displ(rsize, &rcounts, &rdispls)
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "neighbor_allgather"):
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":984
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "neighbor_allgather"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(
 *             &scount, 1, MPI_COUNT,
 */
  /*with:*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_neighbor_allgather); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 984, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 984, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 984, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 984, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":985
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "neighbor_allgather"):
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":988
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 *             comm) )             # <<<<<<<<<<<<<<
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_allgather_c((&__pyx_v_scount), 1, MPI_COUNT, __pyx_v_rcounts, 1, MPI_COUNT, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 985, __pyx_L16_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":985
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "neighbor_allgather"):
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L17;
                }
                __pyx_L16_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L9_error;
                }
                __pyx_L17:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":989
 *             rcounts, 1, MPI_COUNT,
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(
 *             sbuf, scount,           stype,
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_allocv((&__pyx_v_rbuf), __pyx_v_rsize, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 989, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
          __pyx_t_2 = 0;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":990
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":993
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)
 *     #
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_allgatherv_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 990, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":990
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount,           stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L9_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":984
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dump(pickle, sendobj, &sbuf, &scount)
 *     with PyMPI_Lock(comm, "neighbor_allgather"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(
 *             &scount, 1, MPI_COUNT,
 */
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L14_try_end;
        __pyx_L9_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_neighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(7, 984, __pyx_L11_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_8 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 984, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 984, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_14 < 0) __PYX_ERR(7, 984, __pyx_L11_except_error)
          __pyx_t_15 = (!__pyx_t_14);
          if (unlikely(__pyx_t_15)) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_6);
            __Pyx_XGIVEREF(__pyx_t_7);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_7);
            __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
            __PYX_ERR(7, 984, __pyx_L11_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L10_exception_handled;
        }
        __pyx_L11_except_error:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        goto __pyx_L1_error;
        __pyx_L10_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        __pyx_L14_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_5) {
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 984, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        goto __pyx_L8;
      }
      __pyx_L8:;
    }
    goto __pyx_L24;
    __pyx_L5_error:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L1_error;
    __pyx_L24:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":994
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_pickle_loadv(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rsize, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":996
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)
 *     #
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":963
 * 
 * 
 * cdef object PyMPI_neighbor_allgather(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_neighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":999
 * 
 * 
 * cdef object PyMPI_neighbor_alltoall(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_neighbor_alltoall(PyObject *__pyx_v_sendobj, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count *__pyx_v_scounts;
  MPI_Aint *__pyx_v_sdispls;
  MPI_Datatype __pyx_v_stype;
  void *__pyx_v_rbuf;
  MPI_Count *__pyx_v_rcounts;
  MPI_Aint *__pyx_v_rdispls;
  MPI_Datatype __pyx_v_rtype;
  int __pyx_v_ssize;
  int __pyx_v_rsize;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_v_rmsg = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  int __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_neighbor_alltoall", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1000
 * 
 * cdef object PyMPI_neighbor_alltoall(object sendobj, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     #
 *     cdef void *sbuf = NULL
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1002
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1003
 *     #
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count *scounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_scounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1004
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 */
  __pyx_v_sdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1005
 *     cdef MPI_Count *scounts = NULL
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1006
 *     cdef MPI_Aint  *sdispls = NULL
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1007
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rcounts = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1008
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 */
  __pyx_v_rdispls = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1009
 *     cdef MPI_Count *rcounts = NULL
 *     cdef MPI_Aint  *rdispls = NULL
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     #
 *     cdef int ssize=0, rsize=0
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1011
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     #
 *     cdef int ssize=0, rsize=0             # <<<<<<<<<<<<<<
 *     comm_neighbors_count(comm, &rsize, &ssize)
 *     #
 */
  __pyx_v_ssize = 0;
  __pyx_v_rsize = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1012
 *     #
 *     cdef int ssize=0, rsize=0
 *     comm_neighbors_count(comm, &rsize, &ssize)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object unuseds = None
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_neighbors_count(__pyx_v_comm, (&__pyx_v_rsize), (&__pyx_v_ssize)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1012, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1014
 *     comm_neighbors_count(comm, &rsize, &ssize)
 *     #
 *     cdef object unuseds = None             # <<<<<<<<<<<<<<
 *     cdef object rmsg = None
 *     cdef object unused1, unused2
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unuseds = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1015
 *     #
 *     cdef object unuseds = None
 *     cdef object rmsg = None             # <<<<<<<<<<<<<<
 *     cdef object unused1, unused2
 *     #
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_rmsg = Py_None;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1018
 *     cdef object unused1, unused2
 *     #
 *     unused1 = allocate_count_displ(ssize, &scounts, &sdispls)             # <<<<<<<<<<<<<<
 *     unused2 = allocate_count_displ(rsize, &rcounts, &rdispls)
 *     for i in range(rsize): rcounts[i] = 0
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_ssize, (&__pyx_v_scounts), (&__pyx_v_sdispls)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1019
 *     #
 *     unused1 = allocate_count_displ(ssize, &scounts, &sdispls)
 *     unused2 = allocate_count_displ(rsize, &rcounts, &rdispls)             # <<<<<<<<<<<<<<
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, ssize, scounts, sdispls)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_allocate_count_displ(__pyx_v_rsize, (&__pyx_v_rcounts), (&__pyx_v_rdispls)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1020
 *     unused1 = allocate_count_displ(ssize, &scounts, &sdispls)
 *     unused2 = allocate_count_displ(rsize, &rcounts, &rdispls)
 *     for i in range(rsize): rcounts[i] = 0             # <<<<<<<<<<<<<<
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, ssize, scounts, sdispls)
 *     with PyMPI_Lock(comm, "neighbor_alltoall"):
 */
  __pyx_t_1 = __pyx_v_rsize;
  __pyx_t_3 = __pyx_t_1;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;
    (__pyx_v_rcounts[__pyx_v_i]) = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1021
 *     unused2 = allocate_count_displ(rsize, &rcounts, &rdispls)
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, ssize, scounts, sdispls)             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "neighbor_alltoall"):
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_dumpv(__pyx_v_pickle, __pyx_v_sendobj, (&__pyx_v_sbuf), __pyx_v_ssize, __pyx_v_scounts, __pyx_v_sdispls); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_unuseds, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1022
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, ssize, scounts, sdispls)
 *     with PyMPI_Lock(comm, "neighbor_alltoall"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(
 *             scounts, 1, MPI_COUNT,
 */
  /*with:*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_n_s_neighbor_alltoall); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 1022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 1022, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 1022, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1023
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, ssize, scounts, sdispls)
 *     with PyMPI_Lock(comm, "neighbor_alltoall"):
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(             # <<<<<<<<<<<<<<
 *             scounts, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":1026
 *             scounts, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 *             comm) )             # <<<<<<<<<<<<<<
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoall_c(__pyx_v_scounts, 1, MPI_COUNT, __pyx_v_rcounts, 1, MPI_COUNT, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1023, __pyx_L16_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":1023
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, ssize, scounts, sdispls)
 *     with PyMPI_Lock(comm, "neighbor_alltoall"):
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(             # <<<<<<<<<<<<<<
 *             scounts, 1, MPI_COUNT,
 *             rcounts, 1, MPI_COUNT,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L17;
                }
                __pyx_L16_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L9_error;
                }
                __pyx_L17:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1027
 *             rcounts, 1, MPI_COUNT,
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(
 *             sbuf, scounts, sdispls, stype,
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_allocv((&__pyx_v_rbuf), __pyx_v_rsize, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1027, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_2);
          __pyx_t_2 = 0;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1028
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {

                /* "src/mpi4py/MPI.src/msgpickle.pxi":1031
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )             # <<<<<<<<<<<<<<
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)
 *     #
 */
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoallv_c(__pyx_v_sbuf, __pyx_v_scounts, __pyx_v_sdispls, __pyx_v_stype, __pyx_v_rbuf, __pyx_v_rcounts, __pyx_v_rdispls, __pyx_v_rtype, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1028, __pyx_L19_error)
              }

              /* "src/mpi4py/MPI.src/msgpickle.pxi":1028
 *             comm) )
 *         rmsg = pickle_allocv(&rbuf, rsize, rcounts, rdispls)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scounts, sdispls, stype,
 *             rbuf, rcounts, rdispls, rtype,
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L9_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1022
 *     for i in range(rsize): rcounts[i] = 0
 *     unuseds = pickle_dumpv(pickle, sendobj, &sbuf, ssize, scounts, sdispls)
 *     with PyMPI_Lock(comm, "neighbor_alltoall"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(
 *             scounts, 1, MPI_COUNT,
 */
        }
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L14_try_end;
        __pyx_L9_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_neighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(7, 1022, __pyx_L11_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_8 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 1022, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 1022, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_14 < 0) __PYX_ERR(7, 1022, __pyx_L11_except_error)
          __pyx_t_15 = (!__pyx_t_14);
          if (unlikely(__pyx_t_15)) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_6);
            __Pyx_XGIVEREF(__pyx_t_7);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_6, __pyx_t_7);
            __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; 
            __PYX_ERR(7, 1022, __pyx_L11_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L10_exception_handled;
        }
        __pyx_L11_except_error:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        goto __pyx_L1_error;
        __pyx_L10_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
        __pyx_L14_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_5) {
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 1022, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        goto __pyx_L8;
      }
      __pyx_L8:;
    }
    goto __pyx_L24;
    __pyx_L5_error:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L1_error;
    __pyx_L24:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1032
 *             rbuf, rcounts, rdispls, rtype,
 *             comm) )
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)             # <<<<<<<<<<<<<<
 *     #
 *     return rmsg
 */
  __pyx_t_7 = __pyx_f_6mpi4py_3MPI_pickle_loadv(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rsize, __pyx_v_rcounts, __pyx_v_rdispls); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1034
 *     rmsg = pickle_loadv(pickle, rbuf, rsize, rcounts, rdispls)
 *     #
 *     return rmsg             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":999
 * 
 * 
 * cdef object PyMPI_neighbor_alltoall(object sendobj, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     #
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_neighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1038
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object _py_reduce(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_reduce(PyObject *__pyx_v_seq, PyObject *__pyx_v_op) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_v_res = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  unsigned int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_reduce", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1039
 * 
 * cdef inline object _py_reduce(object seq, object op):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, n = len(seq)
 *     cdef object res = seq[0]
 */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1040
 * cdef inline object _py_reduce(object seq, object op):
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)             # <<<<<<<<<<<<<<
 *     cdef object res = seq[0]
 *     for i in range(1, n):
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_seq); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(7, 1040, __pyx_L1_error)
  __pyx_v_n = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1041
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)
 *     cdef object res = seq[0]             # <<<<<<<<<<<<<<
 *     for i in range(1, n):
 *         res = op(res, seq[i])
 */
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_seq, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_res = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1042
 *     cdef Py_ssize_t i, n = len(seq)
 *     cdef object res = seq[0]
 *     for i in range(1, n):             # <<<<<<<<<<<<<<
 *         res = op(res, seq[i])
 *     return res
 */
  __pyx_t_2 = __pyx_v_n;
  __pyx_t_4 = __pyx_t_2;
  for (__pyx_t_5 = 1; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1043
 *     cdef object res = seq[0]
 *     for i in range(1, n):
 *         res = op(res, seq[i])             # <<<<<<<<<<<<<<
 *     return res
 * 
 */
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 1043, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_v_op);
    __pyx_t_7 = __pyx_v_op; __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_9 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_res, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1043, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_res, __pyx_t_3);
    __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1044
 *     for i in range(1, n):
 *         res = op(res, seq[i])
 *     return res             # <<<<<<<<<<<<<<
 * 
 * cdef inline object _py_scan(object seq, object op):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_res);
  __pyx_r = __pyx_v_res;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1038
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline object _py_reduce(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI._py_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_res);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1046
 *     return res
 * 
 * cdef inline object _py_scan(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_scan(PyObject *__pyx_v_seq, PyObject *__pyx_v_op) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  unsigned int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_scan", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1047
 * 
 * cdef inline object _py_scan(object seq, object op):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, n = len(seq)
 *     for i in range(1, n):
 */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1048
 * cdef inline object _py_scan(object seq, object op):
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)             # <<<<<<<<<<<<<<
 *     for i in range(1, n):
 *         seq[i] = op(seq[i-1], seq[i])
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_seq); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(7, 1048, __pyx_L1_error)
  __pyx_v_n = __pyx_t_2;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1049
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)
 *     for i in range(1, n):             # <<<<<<<<<<<<<<
 *         seq[i] = op(seq[i-1], seq[i])
 *     return seq
 */
  __pyx_t_2 = __pyx_v_n;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 1; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1050
 *     cdef Py_ssize_t i, n = len(seq)
 *     for i in range(1, n):
 *         seq[i] = op(seq[i-1], seq[i])             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
    __pyx_t_6 = (__pyx_v_i - 1);
    __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_t_6, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 1050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_seq, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 1050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(__pyx_v_op);
    __pyx_t_9 = __pyx_v_op; __pyx_t_10 = NULL;
    __pyx_t_11 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
        __pyx_t_11 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_t_7, __pyx_t_8};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_11, 2+__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 1050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    if (unlikely((__Pyx_SetItemInt(__pyx_v_seq, __pyx_v_i, __pyx_t_5, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0))) __PYX_ERR(7, 1050, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1051
 *     for i in range(1, n):
 *         seq[i] = op(seq[i-1], seq[i])
 *     return seq             # <<<<<<<<<<<<<<
 * 
 * cdef inline object _py_exscan(object seq, object op):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_seq);
  __pyx_r = __pyx_v_seq;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1046
 *     return res
 * 
 * cdef inline object _py_scan(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     cdef Py_ssize_t i, n = len(seq)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI._py_scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1053
 *     return seq
 * 
 * cdef inline object _py_exscan(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI__py_exscan(PyObject *__pyx_v_seq, PyObject *__pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_py_exscan", 0);
  __Pyx_INCREF(__pyx_v_seq);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1054
 * 
 * cdef inline object _py_exscan(object seq, object op):
 *     if seq is None: return None             # <<<<<<<<<<<<<<
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 */
  __pyx_t_1 = (__pyx_v_seq == Py_None);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1055
 * cdef inline object _py_exscan(object seq, object op):
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)             # <<<<<<<<<<<<<<
 *     seq.pop(-1)
 *     seq.insert(0, None)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI__py_scan(__pyx_v_seq, __pyx_v_op); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_seq, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1056
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)             # <<<<<<<<<<<<<<
 *     seq.insert(0, None)
 *     return seq
 */
  __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_v_seq, __pyx_int_neg_1, -1L, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1057
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 *     seq.insert(0, None)             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_seq, __pyx_n_s_insert); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1058
 *     seq.pop(-1)
 *     seq.insert(0, None)
 *     return seq             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_reduce_naive(object sendobj, object op,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_seq);
  __pyx_r = __pyx_v_seq;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1053
 *     return seq
 * 
 * cdef inline object _py_exscan(object seq, object op):             # <<<<<<<<<<<<<<
 *     if seq is None: return None
 *     seq = _py_scan(seq, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._py_exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_seq);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1060
 *     return seq
 * 
 * cdef object PyMPI_reduce_naive(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                                int root, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, root, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_naive(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_reduce_naive", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1062
 * cdef object PyMPI_reduce_naive(object sendobj, object op,
 *                                int root, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, root, comm)             # <<<<<<<<<<<<<<
 *     return _py_reduce(items, op)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1062, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1063
 *                                int root, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, root, comm)
 *     return _py_reduce(items, op)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_allreduce_naive(object sendobj, object op, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_reduce(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1060
 *     return seq
 * 
 * cdef object PyMPI_reduce_naive(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                                int root, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, root, comm)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_reduce_naive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1065
 *     return _py_reduce(items, op)
 * 
 * cdef object PyMPI_allreduce_naive(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef object items = PyMPI_allgather(sendobj, comm)
 *     return _py_reduce(items, op)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce_naive(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_allreduce_naive", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1066
 * 
 * cdef object PyMPI_allreduce_naive(object sendobj, object op, MPI_Comm comm):
 *     cdef object items = PyMPI_allgather(sendobj, comm)             # <<<<<<<<<<<<<<
 *     return _py_reduce(items, op)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_allgather(__pyx_v_sendobj, __pyx_v_comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1067
 * cdef object PyMPI_allreduce_naive(object sendobj, object op, MPI_Comm comm):
 *     cdef object items = PyMPI_allgather(sendobj, comm)
 *     return _py_reduce(items, op)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_scan_naive(object sendobj, object op, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_reduce(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1065
 *     return _py_reduce(items, op)
 * 
 * cdef object PyMPI_allreduce_naive(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef object items = PyMPI_allgather(sendobj, comm)
 *     return _py_reduce(items, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allreduce_naive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1069
 *     return _py_reduce(items, op)
 * 
 * cdef object PyMPI_scan_naive(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_scan(items, op)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan_naive(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scan_naive", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1070
 * 
 * cdef object PyMPI_scan_naive(object sendobj, object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)             # <<<<<<<<<<<<<<
 *     items = _py_scan(items, op)
 *     return PyMPI_scatter(items, 0, comm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1071
 * cdef object PyMPI_scan_naive(object sendobj, object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_scan(items, op)             # <<<<<<<<<<<<<<
 *     return PyMPI_scatter(items, 0, comm)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_scan(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_items, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1072
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_scan(items, op)
 *     return PyMPI_scatter(items, 0, comm)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_exscan_naive(object sendobj, object op, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_items, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1069
 *     return _py_reduce(items, op)
 * 
 * cdef object PyMPI_scan_naive(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_scan(items, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scan_naive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1074
 *     return PyMPI_scatter(items, 0, comm)
 * 
 * cdef object PyMPI_exscan_naive(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_exscan(items, op)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan_naive(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_exscan_naive", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1075
 * 
 * cdef object PyMPI_exscan_naive(object sendobj, object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)             # <<<<<<<<<<<<<<
 *     items = _py_exscan(items, op)
 *     return PyMPI_scatter(items, 0, comm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_items = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1076
 * cdef object PyMPI_exscan_naive(object sendobj, object op, MPI_Comm comm):
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_exscan(items, op)             # <<<<<<<<<<<<<<
 *     return PyMPI_scatter(items, 0, comm)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__py_exscan(__pyx_v_items, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_items, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1077
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_exscan(items, op)
 *     return PyMPI_scatter(items, 0, comm)             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_items, 0, __pyx_v_comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1077, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1074
 *     return PyMPI_scatter(items, 0, comm)
 * 
 * cdef object PyMPI_exscan_naive(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef object items = PyMPI_gather(sendobj, 0, comm)
 *     items = _py_exscan(items, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_exscan_naive", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1081
 * # ---
 * 
 * cdef object PyMPI_copy(object obj):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_copy(PyObject *__pyx_v_obj) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_buf;
  MPI_Count __pyx_v_count;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_copy", 0);
  __Pyx_INCREF(__pyx_v_obj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1082
 * 
 * cdef object PyMPI_copy(object obj):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1083
 * cdef object PyMPI_copy(object obj):
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count count = 0
 *     obj = pickle_dump(pickle, obj, &buf, &count)
 */
  __pyx_v_buf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1084
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0             # <<<<<<<<<<<<<<
 *     obj = pickle_dump(pickle, obj, &buf, &count)
 *     return pickle_load(pickle, buf, count)
 */
  __pyx_v_count = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1085
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0
 *     obj = pickle_dump(pickle, obj, &buf, &count)             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, buf, count)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_buf), (&__pyx_v_count)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1086
 *     cdef MPI_Count count = 0
 *     obj = pickle_dump(pickle, obj, &buf, &count)
 *     return pickle_load(pickle, buf, count)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_send_p2p(object obj, int dst, int tag, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_buf, __pyx_v_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1081
 * # ---
 * 
 * cdef object PyMPI_copy(object obj):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1088
 *     return pickle_load(pickle, buf, count)
 * 
 * cdef object PyMPI_send_p2p(object obj, int dst, int tag, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *sbuf = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_send_p2p(PyObject *__pyx_v_obj, int __pyx_v_dst, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  MPI_Count __pyx_v_scount;
  MPI_Datatype __pyx_v_stype;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_send_p2p", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1089
 * 
 * cdef object PyMPI_send_p2p(object obj, int dst, int tag, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1090
 * cdef object PyMPI_send_p2p(object obj, int dst, int tag, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *sbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1091
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __pyx_v_scount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1092
 *     cdef void *sbuf = NULL
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(&scount, 1, MPI_COUNT, dst, tag, comm) )
 */
  __pyx_v_stype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1093
 *     cdef MPI_Count scount = 0
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Send_c(&scount, 1, MPI_COUNT, dst, tag, comm) )
 *     with nogil: CHKERR( MPI_Send_c(sbuf, scount, stype, dst, tag, comm) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unuseds = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1094
 *     cdef MPI_Datatype stype = MPI_BYTE
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(&scount, 1, MPI_COUNT, dst, tag, comm) )             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Send_c(sbuf, scount, stype, dst, tag, comm) )
 *     return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send_c((&__pyx_v_scount), 1, MPI_COUNT, __pyx_v_dst, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 1094, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1095
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Send_c(&scount, 1, MPI_COUNT, dst, tag, comm) )
 *     with nogil: CHKERR( MPI_Send_c(sbuf, scount, stype, dst, tag, comm) )             # <<<<<<<<<<<<<<
 *     return None
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_stype, __pyx_v_dst, __pyx_v_tag, __pyx_v_comm)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 1095, __pyx_L7_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1096
 *     with nogil: CHKERR( MPI_Send_c(&scount, 1, MPI_COUNT, dst, tag, comm) )
 *     with nogil: CHKERR( MPI_Send_c(sbuf, scount, stype, dst, tag, comm) )
 *     return None             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_recv_p2p(int src, int tag, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1088
 *     return pickle_load(pickle, buf, count)
 * 
 * cdef object PyMPI_send_p2p(object obj, int dst, int tag, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *sbuf = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_send_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1098
 *     return None
 * 
 * cdef object PyMPI_recv_p2p(int src, int tag, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *rbuf = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_recv_p2p(int __pyx_v_src, int __pyx_v_tag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_rtype;
  MPI_Status *__pyx_v_status;
  CYTHON_UNUSED PyObject *__pyx_v_unusedr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_recv_p2p", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1099
 * 
 * cdef object PyMPI_recv_p2p(int src, int tag, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1100
 * cdef object PyMPI_recv_p2p(int src, int tag, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 */
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1101
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status *status = MPI_STATUS_IGNORE
 */
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1102
 *     cdef void *rbuf = NULL
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef MPI_Status *status = MPI_STATUS_IGNORE
 *     with nogil: CHKERR( MPI_Recv_c(&rcount, 1, MPI_COUNT, src, tag, comm, status) )
 */
  __pyx_v_rtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1103
 *     cdef MPI_Count rcount = 0
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status *status = MPI_STATUS_IGNORE             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Recv_c(&rcount, 1, MPI_COUNT, src, tag, comm, status) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 */
  __pyx_v_status = MPI_STATUS_IGNORE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1104
 *     cdef MPI_Datatype rtype = MPI_BYTE
 *     cdef MPI_Status *status = MPI_STATUS_IGNORE
 *     with nogil: CHKERR( MPI_Recv_c(&rcount, 1, MPI_COUNT, src, tag, comm, status) )             # <<<<<<<<<<<<<<
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv_c(rbuf, rcount, rtype, src, tag, comm, status) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv_c((&__pyx_v_rcount), 1, MPI_COUNT, __pyx_v_src, __pyx_v_tag, __pyx_v_comm, __pyx_v_status)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1104, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1105
 *     cdef MPI_Status *status = MPI_STATUS_IGNORE
 *     with nogil: CHKERR( MPI_Recv_c(&rcount, 1, MPI_COUNT, src, tag, comm, status) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Recv_c(rbuf, rcount, rtype, src, tag, comm, status) )
 *     return pickle_load(pickle, rbuf, rcount)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unusedr = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1106
 *     with nogil: CHKERR( MPI_Recv_c(&rcount, 1, MPI_COUNT, src, tag, comm, status) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv_c(rbuf, rcount, rtype, src, tag, comm, status) )             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv_c(__pyx_v_rbuf, __pyx_v_rcount, __pyx_v_rtype, __pyx_v_src, __pyx_v_tag, __pyx_v_comm, __pyx_v_status)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1106, __pyx_L7_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1107
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Recv_c(rbuf, rcount, rtype, src, tag, comm, status) )
 *     return pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_sendrecv_p2p(object obj,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1098
 *     return None
 * 
 * cdef object PyMPI_recv_p2p(int src, int tag, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *rbuf = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_recv_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unusedr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1109
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 * cdef object PyMPI_sendrecv_p2p(object obj,             # <<<<<<<<<<<<<<
 *                                int dst, int stag,
 *                                int src, int rtag,
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_sendrecv_p2p(PyObject *__pyx_v_obj, int __pyx_v_dst, int __pyx_v_stag, int __pyx_v_src, int __pyx_v_rtag, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_sbuf;
  void *__pyx_v_rbuf;
  MPI_Count __pyx_v_scount;
  MPI_Count __pyx_v_rcount;
  MPI_Datatype __pyx_v_dtype;
  CYTHON_UNUSED PyObject *__pyx_v_unuseds = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unusedr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_sendrecv_p2p", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1113
 *                                int src, int rtag,
 *                                MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     cdef void *sbuf = NULL, *rbuf = NULL
 *     cdef MPI_Count scount = 0, rcount = 0
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1114
 *                                MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *sbuf = NULL, *rbuf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count scount = 0, rcount = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE
 */
  __pyx_v_sbuf = NULL;
  __pyx_v_rbuf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1115
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *sbuf = NULL, *rbuf = NULL
 *     cdef MPI_Count scount = 0, rcount = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 */
  __pyx_v_scount = 0;
  __pyx_v_rcount = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1116
 *     cdef void *sbuf = NULL, *rbuf = NULL
 *     cdef MPI_Count scount = 0, rcount = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Sendrecv_c(
 */
  __pyx_v_dtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1117
 *     cdef MPI_Count scount = 0, rcount = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Sendrecv_c(
 *             &scount, 1, MPI_COUNT, dst, stag,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_sbuf), (&__pyx_v_scount)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unuseds = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1118
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Sendrecv_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT, dst, stag,
 *             &rcount, 1, MPI_COUNT, src, rtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1121
 *             &scount, 1, MPI_COUNT, dst, stag,
 *             &rcount, 1, MPI_COUNT, src, rtag,
 *             comm, MPI_STATUS_IGNORE) )             # <<<<<<<<<<<<<<
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Sendrecv_c(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Sendrecv_c((&__pyx_v_scount), 1, MPI_COUNT, __pyx_v_dst, __pyx_v_stag, (&__pyx_v_rcount), 1, MPI_COUNT, __pyx_v_src, __pyx_v_rtag, __pyx_v_comm, MPI_STATUS_IGNORE)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 1118, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1118
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     cdef object unuseds = pickle_dump(pickle, obj, &sbuf, &scount)
 *     with nogil: CHKERR( MPI_Sendrecv_c(             # <<<<<<<<<<<<<<
 *             &scount, 1, MPI_COUNT, dst, stag,
 *             &rcount, 1, MPI_COUNT, src, rtag,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1122
 *             &rcount, 1, MPI_COUNT, src, rtag,
 *             comm, MPI_STATUS_IGNORE) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Sendrecv_c(
 *             sbuf, scount, dtype, dst, stag,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_rbuf), __pyx_v_rcount); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unusedr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1123
 *             comm, MPI_STATUS_IGNORE) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Sendrecv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount, dtype, dst, stag,
 *             rbuf, rcount, dtype, src, rtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1126
 *             sbuf, scount, dtype, dst, stag,
 *             rbuf, rcount, dtype, src, rtag,
 *             comm, MPI_STATUS_IGNORE) )             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Sendrecv_c(__pyx_v_sbuf, __pyx_v_scount, __pyx_v_dtype, __pyx_v_dst, __pyx_v_stag, __pyx_v_rbuf, __pyx_v_rcount, __pyx_v_dtype, __pyx_v_src, __pyx_v_rtag, __pyx_v_comm, MPI_STATUS_IGNORE)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(7, 1123, __pyx_L7_error)
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1123
 *             comm, MPI_STATUS_IGNORE) )
 *     cdef object unusedr = pickle_alloc(&rbuf, rcount)
 *     with nogil: CHKERR( MPI_Sendrecv_c(             # <<<<<<<<<<<<<<
 *             sbuf, scount, dtype, dst, stag,
 *             rbuf, rcount, dtype, src, rtag,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1127
 *             rbuf, rcount, dtype, src, rtag,
 *             comm, MPI_STATUS_IGNORE) )
 *     return pickle_load(pickle, rbuf, rcount)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_bcast_p2p(object obj, int root, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_rbuf, __pyx_v_rcount); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1109
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 * cdef object PyMPI_sendrecv_p2p(object obj,             # <<<<<<<<<<<<<<
 *                                int dst, int stag,
 *                                int src, int rtag,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_sendrecv_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_unuseds);
  __Pyx_XDECREF(__pyx_v_unusedr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1129
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 * cdef object PyMPI_bcast_p2p(object obj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_bcast_p2p(PyObject *__pyx_v_obj, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *__pyx_v_pickle = 0;
  void *__pyx_v_buf;
  MPI_Count __pyx_v_count;
  MPI_Datatype __pyx_v_dtype;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_bcast_p2p", 0);
  __Pyx_INCREF(__pyx_v_obj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1130
 * 
 * cdef object PyMPI_bcast_p2p(object obj, int root, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __pyx_v_pickle = __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1131
 * cdef object PyMPI_bcast_p2p(object obj, int root, MPI_Comm comm):
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE
 */
  __pyx_v_buf = NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1132
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     cdef int rank = MPI_PROC_NULL
 */
  __pyx_v_count = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1133
 *     cdef void *buf = NULL
 *     cdef MPI_Count count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE             # <<<<<<<<<<<<<<
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_v_dtype = MPI_BYTE;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1134
 *     cdef MPI_Count count = 0
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     if root == rank: obj = pickle_dump(pickle, obj, &buf, &count)
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1135
 *     cdef MPI_Datatype dtype = MPI_BYTE
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *     if root == rank: obj = pickle_dump(pickle, obj, &buf, &count)
 *     with PyMPI_Lock(comm, "@bcast_p2p@"):
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1135, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1136
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     if root == rank: obj = pickle_dump(pickle, obj, &buf, &count)             # <<<<<<<<<<<<<<
 *     with PyMPI_Lock(comm, "@bcast_p2p@"):
 *         with nogil: CHKERR( MPI_Bcast_c(&count, 1, MPI_COUNT, root, comm) )
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_dump(__pyx_v_pickle, __pyx_v_obj, (&__pyx_v_buf), (&__pyx_v_count)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_3);
    __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1137
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     if root == rank: obj = pickle_dump(pickle, obj, &buf, &count)
 *     with PyMPI_Lock(comm, "@bcast_p2p@"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_c(&count, 1, MPI_COUNT, root, comm) )
 *         if root != rank: obj = pickle_alloc(&buf, count)
 */
  /*with:*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_kp_s_bcast_p2p); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 1137, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 1137, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1138
 *     if root == rank: obj = pickle_dump(pickle, obj, &buf, &count)
 *     with PyMPI_Lock(comm, "@bcast_p2p@"):
 *         with nogil: CHKERR( MPI_Bcast_c(&count, 1, MPI_COUNT, root, comm) )             # <<<<<<<<<<<<<<
 *         if root != rank: obj = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(buf, count, dtype, root, comm) )
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast_c((&__pyx_v_count), 1, MPI_COUNT, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1138, __pyx_L15_error)
              }
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L16;
                }
                __pyx_L15_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L8_error;
                }
                __pyx_L16:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1139
 *     with PyMPI_Lock(comm, "@bcast_p2p@"):
 *         with nogil: CHKERR( MPI_Bcast_c(&count, 1, MPI_COUNT, root, comm) )
 *         if root != rank: obj = pickle_alloc(&buf, count)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_c(buf, count, dtype, root, comm) )
 *     return pickle_load(pickle, buf, count)
 */
          __pyx_t_2 = (__pyx_v_root != __pyx_v_rank);
          if (__pyx_t_2) {
            __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pickle_alloc((&__pyx_v_buf), __pyx_v_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1139, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF_SET(__pyx_v_obj, __pyx_t_3);
            __pyx_t_3 = 0;
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1140
 *         with nogil: CHKERR( MPI_Bcast_c(&count, 1, MPI_COUNT, root, comm) )
 *         if root != rank: obj = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(buf, count, dtype, root, comm) )             # <<<<<<<<<<<<<<
 *     return pickle_load(pickle, buf, count)
 * 
 */
          {
              #ifdef WITH_THREAD
              PyThreadState *_save;
              _save = NULL;
              Py_UNBLOCK_THREADS
              __Pyx_FastGIL_Remember();
              #endif
              /*try:*/ {
                __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast_c(__pyx_v_buf, __pyx_v_count, __pyx_v_dtype, __pyx_v_root, __pyx_v_comm)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1140, __pyx_L19_error)
              }
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L20;
                }
                __pyx_L19_error: {
                  #ifdef WITH_THREAD
                  __Pyx_FastGIL_Forget();
                  Py_BLOCK_THREADS
                  #endif
                  goto __pyx_L8_error;
                }
                __pyx_L20:;
              }
          }

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1137
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     if root == rank: obj = pickle_dump(pickle, obj, &buf, &count)
 *     with PyMPI_Lock(comm, "@bcast_p2p@"):             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_c(&count, 1, MPI_COUNT, root, comm) )
 *         if root != rank: obj = pickle_alloc(&buf, count)
 */
        }
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L13_try_end;
        __pyx_L8_error:;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_bcast_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(7, 1137, __pyx_L10_except_error)
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_5);
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_7 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 1137, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 1137, __pyx_L10_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_2 < 0) __PYX_ERR(7, 1137, __pyx_L10_except_error)
          __pyx_t_13 = (!__pyx_t_2);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_5);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_5, __pyx_t_6);
            __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(7, 1137, __pyx_L10_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L9_exception_handled;
        }
        __pyx_L10_except_error:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        goto __pyx_L1_error;
        __pyx_L9_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        __pyx_L13_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 1137, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        }
        goto __pyx_L7;
      }
      __pyx_L7:;
    }
    goto __pyx_L24;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L24:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1141
 *         if root != rank: obj = pickle_alloc(&buf, count)
 *         with nogil: CHKERR( MPI_Bcast_c(buf, count, dtype, root, comm) )
 *     return pickle_load(pickle, buf, count)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_reduce_p2p(object sendobj, object op, int root,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __pyx_f_6mpi4py_3MPI_pickle_load(__pyx_v_pickle, __pyx_v_buf, __pyx_v_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 1141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1129
 *     return pickle_load(pickle, rbuf, rcount)
 * 
 * cdef object PyMPI_bcast_p2p(object obj, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef Pickle pickle = PyMPI_PICKLE
 *     cdef void *buf = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_bcast_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pickle);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1143
 *     return pickle_load(pickle, buf, count)
 * 
 * cdef object PyMPI_reduce_p2p(object sendobj, object op, int root,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_p2p(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, int __pyx_v_root, MPI_Comm __pyx_v_comm, int __pyx_v_tag) {
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_unused = 0;
  unsigned int __pyx_v_umask;
  unsigned int __pyx_v_usize;
  unsigned int __pyx_v_urank;
  int __pyx_v_target;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_reduce_p2p", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1146
 *                              MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 *     cdef int size = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_v_size = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1147
 *     # Get communicator size and rank
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1148
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     # Check root argument
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1148, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1149
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *     # Check root argument
 *     if root < 0 or root >= size:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1149, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1151
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     # Check root argument
 *     if root < 0 or root >= size:             # <<<<<<<<<<<<<<
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)
 *         raise MPIException(MPI_ERR_ROOT)
 */
  __pyx_t_3 = (__pyx_v_root < 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_root >= __pyx_v_size);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1152
 *     # Check root argument
 *     if root < 0 or root >= size:
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)             # <<<<<<<<<<<<<<
 *         raise MPIException(MPI_ERR_ROOT)
 *     #
 */
    ((void)MPI_Comm_call_errhandler(__pyx_v_comm, MPI_ERR_ROOT));

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1153
 *     if root < 0 or root >= size:
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)
 *         raise MPIException(MPI_ERR_ROOT)             # <<<<<<<<<<<<<<
 *     #
 *     cdef object result = PyMPI_copy(sendobj)
 */
    __pyx_t_5 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_ROOT); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 1153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_MPIException);
    __pyx_t_6 = __pyx_v_6mpi4py_3MPI_MPIException; __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(7, 1153, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1151
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     # Check root argument
 *     if root < 0 or root >= size:             # <<<<<<<<<<<<<<
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)
 *         raise MPIException(MPI_ERR_ROOT)
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1155
 *         raise MPIException(MPI_ERR_ROOT)
 *     #
 *     cdef object result = PyMPI_copy(sendobj)             # <<<<<<<<<<<<<<
 *     cdef object unused
 *     # Compute reduction at process 0
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_copy(__pyx_v_sendobj); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_result = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1158
 *     cdef object unused
 *     # Compute reduction at process 0
 *     cdef unsigned int umask = <unsigned int> 1             # <<<<<<<<<<<<<<
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank
 */
  __pyx_v_umask = ((unsigned int)1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1159
 *     # Compute reduction at process 0
 *     cdef unsigned int umask = <unsigned int> 1
 *     cdef unsigned int usize = <unsigned int> size             # <<<<<<<<<<<<<<
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef int target = 0
 */
  __pyx_v_usize = ((unsigned int)__pyx_v_size);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1160
 *     cdef unsigned int umask = <unsigned int> 1
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank             # <<<<<<<<<<<<<<
 *     cdef int target = 0
 *     while umask < usize:
 */
  __pyx_v_urank = ((unsigned int)__pyx_v_rank);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1161
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef int target = 0             # <<<<<<<<<<<<<<
 *     while umask < usize:
 *         if (umask & urank) != 0:
 */
  __pyx_v_target = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1162
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef int target = 0
 *     while umask < usize:             # <<<<<<<<<<<<<<
 *         if (umask & urank) != 0:
 *             target = <int> ((urank & ~umask) % usize)
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_umask < __pyx_v_usize);
    if (!__pyx_t_2) break;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1163
 *     cdef int target = 0
 *     while umask < usize:
 *         if (umask & urank) != 0:             # <<<<<<<<<<<<<<
 *             target = <int> ((urank & ~umask) % usize)
 *             PyMPI_send_p2p(result, target, tag, comm)
 */
    __pyx_t_2 = ((__pyx_v_umask & __pyx_v_urank) != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1164
 *     while umask < usize:
 *         if (umask & urank) != 0:
 *             target = <int> ((urank & ~umask) % usize)             # <<<<<<<<<<<<<<
 *             PyMPI_send_p2p(result, target, tag, comm)
 *         else:
 */
      __pyx_v_target = ((int)((__pyx_v_urank & (~__pyx_v_umask)) % __pyx_v_usize));

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1165
 *         if (umask & urank) != 0:
 *             target = <int> ((urank & ~umask) % usize)
 *             PyMPI_send_p2p(result, target, tag, comm)             # <<<<<<<<<<<<<<
 *         else:
 *             target = <int> (urank | umask)
 */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_send_p2p(__pyx_v_result, __pyx_v_target, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1165, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1163
 *     cdef int target = 0
 *     while umask < usize:
 *         if (umask & urank) != 0:             # <<<<<<<<<<<<<<
 *             target = <int> ((urank & ~umask) % usize)
 *             PyMPI_send_p2p(result, target, tag, comm)
 */
      goto __pyx_L8;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1167
 *             PyMPI_send_p2p(result, target, tag, comm)
 *         else:
 *             target = <int> (urank | umask)             # <<<<<<<<<<<<<<
 *             if target < size:
 *                 unused = PyMPI_recv_p2p(target, tag, comm)
 */
    /*else*/ {
      __pyx_v_target = ((int)(__pyx_v_urank | __pyx_v_umask));

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1168
 *         else:
 *             target = <int> (urank | umask)
 *             if target < size:             # <<<<<<<<<<<<<<
 *                 unused = PyMPI_recv_p2p(target, tag, comm)
 *                 result = op(result, unused)
 */
      __pyx_t_2 = (__pyx_v_target < __pyx_v_size);
      if (__pyx_t_2) {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1169
 *             target = <int> (urank | umask)
 *             if target < size:
 *                 unused = PyMPI_recv_p2p(target, tag, comm)             # <<<<<<<<<<<<<<
 *                 result = op(result, unused)
 *         umask <<= 1
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_recv_p2p(__pyx_v_target, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1169, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_XDECREF_SET(__pyx_v_unused, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1170
 *             if target < size:
 *                 unused = PyMPI_recv_p2p(target, tag, comm)
 *                 result = op(result, unused)             # <<<<<<<<<<<<<<
 *         umask <<= 1
 *     # Send reduction to root
 */
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_6 = __pyx_v_op; __pyx_t_5 = NULL;
        __pyx_t_8 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_result, __pyx_v_unused};
          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1170, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1168
 *         else:
 *             target = <int> (urank | umask)
 *             if target < size:             # <<<<<<<<<<<<<<
 *                 unused = PyMPI_recv_p2p(target, tag, comm)
 *                 result = op(result, unused)
 */
      }
    }
    __pyx_L8:;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1171
 *                 unused = PyMPI_recv_p2p(target, tag, comm)
 *                 result = op(result, unused)
 *         umask <<= 1             # <<<<<<<<<<<<<<
 *     # Send reduction to root
 *     if root != 0:
 */
    __pyx_v_umask = (__pyx_v_umask << 1);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1173
 *         umask <<= 1
 *     # Send reduction to root
 *     if root != 0:             # <<<<<<<<<<<<<<
 *         if rank == 0:
 *             PyMPI_send_p2p(result, root, tag, comm)
 */
  __pyx_t_2 = (__pyx_v_root != 0);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1174
 *     # Send reduction to root
 *     if root != 0:
 *         if rank == 0:             # <<<<<<<<<<<<<<
 *             PyMPI_send_p2p(result, root, tag, comm)
 *         elif rank == root:
 */
    __pyx_t_2 = (__pyx_v_rank == 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1175
 *     if root != 0:
 *         if rank == 0:
 *             PyMPI_send_p2p(result, root, tag, comm)             # <<<<<<<<<<<<<<
 *         elif rank == root:
 *             result = PyMPI_recv_p2p(0, tag, comm)
 */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_send_p2p(__pyx_v_result, __pyx_v_root, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1174
 *     # Send reduction to root
 *     if root != 0:
 *         if rank == 0:             # <<<<<<<<<<<<<<
 *             PyMPI_send_p2p(result, root, tag, comm)
 *         elif rank == root:
 */
      goto __pyx_L11;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1176
 *         if rank == 0:
 *             PyMPI_send_p2p(result, root, tag, comm)
 *         elif rank == root:             # <<<<<<<<<<<<<<
 *             result = PyMPI_recv_p2p(0, tag, comm)
 *     if rank != root:
 */
    __pyx_t_2 = (__pyx_v_rank == __pyx_v_root);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1177
 *             PyMPI_send_p2p(result, root, tag, comm)
 *         elif rank == root:
 *             result = PyMPI_recv_p2p(0, tag, comm)             # <<<<<<<<<<<<<<
 *     if rank != root:
 *         result = None
 */
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_recv_p2p(0, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1177, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1176
 *         if rank == 0:
 *             PyMPI_send_p2p(result, root, tag, comm)
 *         elif rank == root:             # <<<<<<<<<<<<<<
 *             result = PyMPI_recv_p2p(0, tag, comm)
 *     if rank != root:
 */
    }
    __pyx_L11:;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1173
 *         umask <<= 1
 *     # Send reduction to root
 *     if root != 0:             # <<<<<<<<<<<<<<
 *         if rank == 0:
 *             PyMPI_send_p2p(result, root, tag, comm)
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1178
 *         elif rank == root:
 *             result = PyMPI_recv_p2p(0, tag, comm)
 *     if rank != root:             # <<<<<<<<<<<<<<
 *         result = None
 *     #
 */
  __pyx_t_2 = (__pyx_v_rank != __pyx_v_root);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1179
 *             result = PyMPI_recv_p2p(0, tag, comm)
 *     if rank != root:
 *         result = None             # <<<<<<<<<<<<<<
 *     #
 *     return result
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_result, Py_None);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1178
 *         elif rank == root:
 *             result = PyMPI_recv_p2p(0, tag, comm)
 *     if rank != root:             # <<<<<<<<<<<<<<
 *         result = None
 *     #
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1181
 *         result = None
 *     #
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_scan_p2p(object sendobj, object op,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1143
 *     return pickle_load(pickle, buf, count)
 * 
 * cdef object PyMPI_reduce_p2p(object sendobj, object op, int root,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_reduce_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1183
 *     return result
 * 
 * cdef object PyMPI_scan_p2p(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                            MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan_p2p(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm, int __pyx_v_tag) {
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_partial = 0;
  PyObject *__pyx_v_unused = 0;
  unsigned int __pyx_v_umask;
  unsigned int __pyx_v_usize;
  unsigned int __pyx_v_urank;
  int __pyx_v_target;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scan_p2p", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1186
 *                            MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 *     cdef int size = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_v_size = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1187
 *     # Get communicator size and rank
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1188
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1188, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1189
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object result  = PyMPI_copy(sendobj)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1189, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1191
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     #
 *     cdef object result  = PyMPI_copy(sendobj)             # <<<<<<<<<<<<<<
 *     cdef object partial = result
 *     cdef object unused
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_copy(__pyx_v_sendobj); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_result = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1192
 *     #
 *     cdef object result  = PyMPI_copy(sendobj)
 *     cdef object partial = result             # <<<<<<<<<<<<<<
 *     cdef object unused
 *     # Compute prefix reduction
 */
  __Pyx_INCREF(__pyx_v_result);
  __pyx_v_partial = __pyx_v_result;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1195
 *     cdef object unused
 *     # Compute prefix reduction
 *     cdef unsigned int umask = <unsigned int> 1             # <<<<<<<<<<<<<<
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank
 */
  __pyx_v_umask = ((unsigned int)1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1196
 *     # Compute prefix reduction
 *     cdef unsigned int umask = <unsigned int> 1
 *     cdef unsigned int usize = <unsigned int> size             # <<<<<<<<<<<<<<
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef int target = 0
 */
  __pyx_v_usize = ((unsigned int)__pyx_v_size);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1197
 *     cdef unsigned int umask = <unsigned int> 1
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank             # <<<<<<<<<<<<<<
 *     cdef int target = 0
 *     while umask < usize:
 */
  __pyx_v_urank = ((unsigned int)__pyx_v_rank);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1198
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef int target = 0             # <<<<<<<<<<<<<<
 *     while umask < usize:
 *         target = <int> (urank ^ umask)
 */
  __pyx_v_target = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1199
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef int target = 0
 *     while umask < usize:             # <<<<<<<<<<<<<<
 *         target = <int> (urank ^ umask)
 *         if target < size:
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_umask < __pyx_v_usize);
    if (!__pyx_t_3) break;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1200
 *     cdef int target = 0
 *     while umask < usize:
 *         target = <int> (urank ^ umask)             # <<<<<<<<<<<<<<
 *         if target < size:
 *             unused = PyMPI_sendrecv_p2p(
 */
    __pyx_v_target = ((int)(__pyx_v_urank ^ __pyx_v_umask));

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1201
 *     while umask < usize:
 *         target = <int> (urank ^ umask)
 *         if target < size:             # <<<<<<<<<<<<<<
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 */
    __pyx_t_3 = (__pyx_v_target < __pyx_v_size);
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1202
 *         target = <int> (urank ^ umask)
 *         if target < size:
 *             unused = PyMPI_sendrecv_p2p(             # <<<<<<<<<<<<<<
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_sendrecv_p2p(__pyx_v_partial, __pyx_v_target, __pyx_v_tag, __pyx_v_target, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_unused, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1204
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:             # <<<<<<<<<<<<<<
 *                 partial = op(unused, partial)
 *                 result = op(unused, result)
 */
      __pyx_t_3 = (__pyx_v_rank > __pyx_v_target);
      if (__pyx_t_3) {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1205
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:
 *                 partial = op(unused, partial)             # <<<<<<<<<<<<<<
 *                 result = op(unused, result)
 *             else:
 */
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_4 = __pyx_v_op; __pyx_t_5 = NULL;
        __pyx_t_6 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_6 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_unused, __pyx_v_partial};
          __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1205, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __Pyx_DECREF_SET(__pyx_v_partial, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1206
 *             if rank > target:
 *                 partial = op(unused, partial)
 *                 result = op(unused, result)             # <<<<<<<<<<<<<<
 *             else:
 *                 unused = op(partial, unused)
 */
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_4 = __pyx_v_op; __pyx_t_5 = NULL;
        __pyx_t_6 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_6 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_unused, __pyx_v_result};
          __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1206, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1204
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:             # <<<<<<<<<<<<<<
 *                 partial = op(unused, partial)
 *                 result = op(unused, result)
 */
        goto __pyx_L6;
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1208
 *                 result = op(unused, result)
 *             else:
 *                 unused = op(partial, unused)             # <<<<<<<<<<<<<<
 *                 partial = unused
 *         umask <<= 1
 */
      /*else*/ {
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_4 = __pyx_v_op; __pyx_t_5 = NULL;
        __pyx_t_6 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_6 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_partial, __pyx_v_unused};
          __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1208, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __Pyx_DECREF_SET(__pyx_v_unused, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1209
 *             else:
 *                 unused = op(partial, unused)
 *                 partial = unused             # <<<<<<<<<<<<<<
 *         umask <<= 1
 *     #
 */
        __Pyx_INCREF(__pyx_v_unused);
        __Pyx_DECREF_SET(__pyx_v_partial, __pyx_v_unused);
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1201
 *     while umask < usize:
 *         target = <int> (urank ^ umask)
 *         if target < size:             # <<<<<<<<<<<<<<
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 */
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1210
 *                 unused = op(partial, unused)
 *                 partial = unused
 *         umask <<= 1             # <<<<<<<<<<<<<<
 *     #
 *     return result
 */
    __pyx_v_umask = (__pyx_v_umask << 1);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1212
 *         umask <<= 1
 *     #
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_exscan_p2p(object sendobj, object op,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1183
 *     return result
 * 
 * cdef object PyMPI_scan_p2p(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                            MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scan_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_partial);
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1214
 *     return result
 * 
 * cdef object PyMPI_exscan_p2p(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan_p2p(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm, int __pyx_v_tag) {
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_v_partial = 0;
  PyObject *__pyx_v_unused = 0;
  unsigned int __pyx_v_umask;
  unsigned int __pyx_v_usize;
  unsigned int __pyx_v_urank;
  unsigned int __pyx_v_uflag;
  int __pyx_v_target;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_exscan_p2p", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1217
 *                              MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 *     cdef int size = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )
 */
  __pyx_v_size = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1218
 *     # Get communicator size and rank
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1219
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1219, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1220
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *     #
 *     cdef object result  = PyMPI_copy(sendobj)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1220, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1222
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     #
 *     cdef object result  = PyMPI_copy(sendobj)             # <<<<<<<<<<<<<<
 *     cdef object partial = result
 *     cdef object unused
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_copy(__pyx_v_sendobj); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_result = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1223
 *     #
 *     cdef object result  = PyMPI_copy(sendobj)
 *     cdef object partial = result             # <<<<<<<<<<<<<<
 *     cdef object unused
 *     # Compute prefix reduction
 */
  __Pyx_INCREF(__pyx_v_result);
  __pyx_v_partial = __pyx_v_result;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1226
 *     cdef object unused
 *     # Compute prefix reduction
 *     cdef unsigned int umask = <unsigned int> 1             # <<<<<<<<<<<<<<
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank
 */
  __pyx_v_umask = ((unsigned int)1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1227
 *     # Compute prefix reduction
 *     cdef unsigned int umask = <unsigned int> 1
 *     cdef unsigned int usize = <unsigned int> size             # <<<<<<<<<<<<<<
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef unsigned int uflag = <unsigned int> 0
 */
  __pyx_v_usize = ((unsigned int)__pyx_v_size);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1228
 *     cdef unsigned int umask = <unsigned int> 1
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank             # <<<<<<<<<<<<<<
 *     cdef unsigned int uflag = <unsigned int> 0
 *     cdef int target = 0
 */
  __pyx_v_urank = ((unsigned int)__pyx_v_rank);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1229
 *     cdef unsigned int usize = <unsigned int> size
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef unsigned int uflag = <unsigned int> 0             # <<<<<<<<<<<<<<
 *     cdef int target = 0
 *     while umask < usize:
 */
  __pyx_v_uflag = ((unsigned int)0);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1230
 *     cdef unsigned int urank = <unsigned int> rank
 *     cdef unsigned int uflag = <unsigned int> 0
 *     cdef int target = 0             # <<<<<<<<<<<<<<
 *     while umask < usize:
 *         target = <int> (urank ^ umask)
 */
  __pyx_v_target = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1231
 *     cdef unsigned int uflag = <unsigned int> 0
 *     cdef int target = 0
 *     while umask < usize:             # <<<<<<<<<<<<<<
 *         target = <int> (urank ^ umask)
 *         if target < size:
 */
  while (1) {
    __pyx_t_3 = (__pyx_v_umask < __pyx_v_usize);
    if (!__pyx_t_3) break;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1232
 *     cdef int target = 0
 *     while umask < usize:
 *         target = <int> (urank ^ umask)             # <<<<<<<<<<<<<<
 *         if target < size:
 *             unused = PyMPI_sendrecv_p2p(
 */
    __pyx_v_target = ((int)(__pyx_v_urank ^ __pyx_v_umask));

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1233
 *     while umask < usize:
 *         target = <int> (urank ^ umask)
 *         if target < size:             # <<<<<<<<<<<<<<
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 */
    __pyx_t_3 = (__pyx_v_target < __pyx_v_size);
    if (__pyx_t_3) {

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1234
 *         target = <int> (urank ^ umask)
 *         if target < size:
 *             unused = PyMPI_sendrecv_p2p(             # <<<<<<<<<<<<<<
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:
 */
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_sendrecv_p2p(__pyx_v_partial, __pyx_v_target, __pyx_v_tag, __pyx_v_target, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1234, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_unused, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1236
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:             # <<<<<<<<<<<<<<
 *                 partial = op(unused, partial)
 *                 if uflag == 0:
 */
      __pyx_t_3 = (__pyx_v_rank > __pyx_v_target);
      if (__pyx_t_3) {

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1237
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:
 *                 partial = op(unused, partial)             # <<<<<<<<<<<<<<
 *                 if uflag == 0:
 *                     uflag = 1
 */
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_4 = __pyx_v_op; __pyx_t_5 = NULL;
        __pyx_t_6 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_6 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_unused, __pyx_v_partial};
          __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1237, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __Pyx_DECREF_SET(__pyx_v_partial, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1238
 *             if rank > target:
 *                 partial = op(unused, partial)
 *                 if uflag == 0:             # <<<<<<<<<<<<<<
 *                     uflag = 1
 *                     result = unused
 */
        __pyx_t_3 = (__pyx_v_uflag == 0);
        if (__pyx_t_3) {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1239
 *                 partial = op(unused, partial)
 *                 if uflag == 0:
 *                     uflag = 1             # <<<<<<<<<<<<<<
 *                     result = unused
 *                 else:
 */
          __pyx_v_uflag = 1;

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1240
 *                 if uflag == 0:
 *                     uflag = 1
 *                     result = unused             # <<<<<<<<<<<<<<
 *                 else:
 *                     result = op(unused, result)
 */
          __Pyx_INCREF(__pyx_v_unused);
          __Pyx_DECREF_SET(__pyx_v_result, __pyx_v_unused);

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1238
 *             if rank > target:
 *                 partial = op(unused, partial)
 *                 if uflag == 0:             # <<<<<<<<<<<<<<
 *                     uflag = 1
 *                     result = unused
 */
          goto __pyx_L7;
        }

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1242
 *                     result = unused
 *                 else:
 *                     result = op(unused, result)             # <<<<<<<<<<<<<<
 *             else:
 *                 unused = op(partial, unused)
 */
        /*else*/ {
          __Pyx_INCREF(__pyx_v_op);
          __pyx_t_4 = __pyx_v_op; __pyx_t_5 = NULL;
          __pyx_t_6 = 0;
          #if CYTHON_UNPACK_METHODS
          if (unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
              __pyx_t_6 = 1;
            }
          }
          #endif
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_unused, __pyx_v_result};
            __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1242, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          }
          __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_2);
          __pyx_t_2 = 0;
        }
        __pyx_L7:;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1236
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 *             if rank > target:             # <<<<<<<<<<<<<<
 *                 partial = op(unused, partial)
 *                 if uflag == 0:
 */
        goto __pyx_L6;
      }

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1244
 *                     result = op(unused, result)
 *             else:
 *                 unused = op(partial, unused)             # <<<<<<<<<<<<<<
 *                 partial = unused
 *         umask <<= 1
 */
      /*else*/ {
        __Pyx_INCREF(__pyx_v_op);
        __pyx_t_4 = __pyx_v_op; __pyx_t_5 = NULL;
        __pyx_t_6 = 0;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_6 = 1;
          }
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_partial, __pyx_v_unused};
          __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1244, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __Pyx_DECREF_SET(__pyx_v_unused, __pyx_t_2);
        __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/msgpickle.pxi":1245
 *             else:
 *                 unused = op(partial, unused)
 *                 partial = unused             # <<<<<<<<<<<<<<
 *         umask <<= 1
 *     #
 */
        __Pyx_INCREF(__pyx_v_unused);
        __Pyx_DECREF_SET(__pyx_v_partial, __pyx_v_unused);
      }
      __pyx_L6:;

      /* "src/mpi4py/MPI.src/msgpickle.pxi":1233
 *     while umask < usize:
 *         target = <int> (urank ^ umask)
 *         if target < size:             # <<<<<<<<<<<<<<
 *             unused = PyMPI_sendrecv_p2p(
 *                 partial, target, tag, target, tag, comm)
 */
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1246
 *                 unused = op(partial, unused)
 *                 partial = unused
 *         umask <<= 1             # <<<<<<<<<<<<<<
 *     #
 *     if rank == 0:
 */
    __pyx_v_umask = (__pyx_v_umask << 1);
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1248
 *         umask <<= 1
 *     #
 *     if rank == 0:             # <<<<<<<<<<<<<<
 *         result = None
 *     return result
 */
  __pyx_t_3 = (__pyx_v_rank == 0);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1249
 *     #
 *     if rank == 0:
 *         result = None             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_result, Py_None);

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1248
 *         umask <<= 1
 *     #
 *     if rank == 0:             # <<<<<<<<<<<<<<
 *         result = None
 *     return result
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1250
 *     if rank == 0:
 *         result = None
 *     return result             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1214
 *     return result
 * 
 * cdef object PyMPI_exscan_p2p(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                              MPI_Comm comm, int tag):
 *     # Get communicator size and rank
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_exscan_p2p", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_partial);
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1259
 *     int PyMPI_Commctx_finalize()
 * 
 * cdef int PyMPI_Commctx_INTRA(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     MPI_Comm *dupcomm, int *tag,
 */

static int __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTRA(MPI_Comm __pyx_v_comm, MPI_Comm *__pyx_v_dupcomm, int *__pyx_v_tag) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_Commctx_INTRA", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1263
 *     MPI_Comm *dupcomm, int *tag,
 * ) except -1:
 *     with PyMPI_Lock(comm, "@commctx_intra"):             # <<<<<<<<<<<<<<
 *         CHKERR( PyMPI_Commctx_intra(comm, dupcomm, tag) )
 *     return 0
 */
  /*with:*/ {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_kp_s_commctx_intra); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1263, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1263, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1263, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1264
 * ) except -1:
 *     with PyMPI_Lock(comm, "@commctx_intra"):
 *         CHKERR( PyMPI_Commctx_intra(comm, dupcomm, tag) )             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
          __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(PyMPI_Commctx_intra(__pyx_v_comm, __pyx_v_dupcomm, __pyx_v_tag)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(7, 1264, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1263
 *     MPI_Comm *dupcomm, int *tag,
 * ) except -1:
 *     with PyMPI_Lock(comm, "@commctx_intra"):             # <<<<<<<<<<<<<<
 *         CHKERR( PyMPI_Commctx_intra(comm, dupcomm, tag) )
 *     return 0
 */
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Commctx_INTRA", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(7, 1263, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 1263, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 1263, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (__pyx_t_12 < 0) __PYX_ERR(7, 1263, __pyx_L9_except_error)
          __pyx_t_13 = (!__pyx_t_12);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(7, 1263, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 1263, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1265
 *     with PyMPI_Lock(comm, "@commctx_intra"):
 *         CHKERR( PyMPI_Commctx_intra(comm, dupcomm, tag) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_Commctx_INTER(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1259
 *     int PyMPI_Commctx_finalize()
 * 
 * cdef int PyMPI_Commctx_INTRA(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     MPI_Comm *dupcomm, int *tag,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Commctx_INTRA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1267
 *     return 0
 * 
 * cdef int PyMPI_Commctx_INTER(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     MPI_Comm *dupcomm, int *tag,
 */

static int __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTER(MPI_Comm __pyx_v_comm, MPI_Comm *__pyx_v_dupcomm, int *__pyx_v_tag, MPI_Comm *__pyx_v_localcomm, int *__pyx_v_low_group) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_Commctx_INTER", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1272
 *     MPI_Comm *localcomm, int *low_group,
 * ) except -1:
 *     with PyMPI_Lock(comm, "@commctx_inter"):             # <<<<<<<<<<<<<<
 *         CHKERR( PyMPI_Commctx_inter(comm, dupcomm, tag,
 *                                     localcomm, low_group) )
 */
  /*with:*/ {
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Lock(__pyx_v_comm, __pyx_kp_s_commctx_inter); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1272, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 1272, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1273
 * ) except -1:
 *     with PyMPI_Lock(comm, "@commctx_inter"):
 *         CHKERR( PyMPI_Commctx_inter(comm, dupcomm, tag,             # <<<<<<<<<<<<<<
 *                                     localcomm, low_group) )
 *     return 0
 */
          __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(PyMPI_Commctx_inter(__pyx_v_comm, __pyx_v_dupcomm, __pyx_v_tag, __pyx_v_localcomm, __pyx_v_low_group)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(7, 1273, __pyx_L7_error)

          /* "src/mpi4py/MPI.src/msgpickle.pxi":1272
 *     MPI_Comm *localcomm, int *low_group,
 * ) except -1:
 *     with PyMPI_Lock(comm, "@commctx_inter"):             # <<<<<<<<<<<<<<
 *         CHKERR( PyMPI_Commctx_inter(comm, dupcomm, tag,
 *                                     localcomm, low_group) )
 */
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Commctx_INTER", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(7, 1272, __pyx_L9_except_error)
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 1272, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 1272, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (__pyx_t_12 < 0) __PYX_ERR(7, 1272, __pyx_L9_except_error)
          __pyx_t_13 = (!__pyx_t_12);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(7, 1272, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 1272, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1275
 *         CHKERR( PyMPI_Commctx_inter(comm, dupcomm, tag,
 *                                     localcomm, low_group) )
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1267
 *     return 0
 * 
 * cdef int PyMPI_Commctx_INTER(             # <<<<<<<<<<<<<<
 *     MPI_Comm comm,
 *     MPI_Comm *dupcomm, int *tag,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_Commctx_INTER", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1278
 * 
 * 
 * def _commctx_intra(             # <<<<<<<<<<<<<<
 *     Intracomm comm: Intracomm,
 * ) -> tuple[Intracomm, int]:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7_commctx_intra(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6_commctx_intra, "_commctx_intra(comm: Intracomm) -> tuple[Intracomm, int]\n\n    Create/get intracommunicator duplicate.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7_commctx_intra = {"_commctx_intra", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7_commctx_intra, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6_commctx_intra};
static PyObject *__pyx_pw_6mpi4py_3MPI_7_commctx_intra(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_commctx_intra (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 1278, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_commctx_intra") < 0)) __PYX_ERR(7, 1278, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_commctx_intra", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 1278, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._commctx_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(7, 1279, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6_commctx_intra(__pyx_self, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6_commctx_intra(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIIntracommObject *__pyx_v_comm) {
  int __pyx_v_tag;
  struct PyMPIIntracommObject *__pyx_v_dupcomm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_commctx_intra", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1284
 *     Create/get intracommunicator duplicate.
 *     """
 *     cdef int tag = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef Intracomm dupcomm = <Intracomm>New(Intracomm)
 *     PyMPI_Commctx_INTRA(comm.ob_mpi, &dupcomm.ob_mpi, &tag)
 */
  __pyx_v_tag = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1285
 *     """
 *     cdef int tag = MPI_UNDEFINED
 *     cdef Intracomm dupcomm = <Intracomm>New(Intracomm)             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTRA(comm.ob_mpi, &dupcomm.ob_mpi, &tag)
 *     return (dupcomm, tag)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_dupcomm = ((struct PyMPIIntracommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1286
 *     cdef int tag = MPI_UNDEFINED
 *     cdef Intracomm dupcomm = <Intracomm>New(Intracomm)
 *     PyMPI_Commctx_INTRA(comm.ob_mpi, &dupcomm.ob_mpi, &tag)             # <<<<<<<<<<<<<<
 *     return (dupcomm, tag)
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTRA(__pyx_v_comm->__pyx_base.ob_mpi, (&__pyx_v_dupcomm->__pyx_base.ob_mpi), (&__pyx_v_tag)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 1286, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1287
 *     cdef Intracomm dupcomm = <Intracomm>New(Intracomm)
 *     PyMPI_Commctx_INTRA(comm.ob_mpi, &dupcomm.ob_mpi, &tag)
 *     return (dupcomm, tag)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__pyx_v_dupcomm);
  __Pyx_GIVEREF((PyObject *)__pyx_v_dupcomm);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_dupcomm))) __PYX_ERR(7, 1287, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(7, 1287, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1278
 * 
 * 
 * def _commctx_intra(             # <<<<<<<<<<<<<<
 *     Intracomm comm: Intracomm,
 * ) -> tuple[Intracomm, int]:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._commctx_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dupcomm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1290
 * 
 * 
 * def _commctx_inter(             # <<<<<<<<<<<<<<
 *     Intercomm comm: Intercomm,
 * ) -> tuple[Intercomm, int, Intracomm, bool]:
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9_commctx_inter(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8_commctx_inter, "_commctx_inter(comm: Intercomm) -> tuple[Intercomm, int, Intracomm, bool]\n\n    Create/get intercommunicator duplicate.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9_commctx_inter = {"_commctx_inter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9_commctx_inter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8_commctx_inter};
static PyObject *__pyx_pw_6mpi4py_3MPI_9_commctx_inter(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_commctx_inter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 1290, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_commctx_inter") < 0)) __PYX_ERR(7, 1290, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_comm = ((struct PyMPIIntercommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_commctx_inter", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 1290, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._commctx_inter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intercomm, 0, "comm", 0))) __PYX_ERR(7, 1291, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8_commctx_inter(__pyx_self, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8_commctx_inter(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIIntercommObject *__pyx_v_comm) {
  int __pyx_v_tag;
  int __pyx_v_low_group;
  struct PyMPIIntercommObject *__pyx_v_dupcomm = 0;
  struct PyMPIIntracommObject *__pyx_v_localcomm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_commctx_inter", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1296
 *     Create/get intercommunicator duplicate.
 *     """
 *     cdef int tag = MPI_UNDEFINED, low_group = 0             # <<<<<<<<<<<<<<
 *     cdef Intercomm dupcomm = <Intercomm>New(Intercomm)
 *     cdef Intracomm localcomm = <Intracomm>New(Intracomm)
 */
  __pyx_v_tag = MPI_UNDEFINED;
  __pyx_v_low_group = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1297
 *     """
 *     cdef int tag = MPI_UNDEFINED, low_group = 0
 *     cdef Intercomm dupcomm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *     cdef Intracomm localcomm = <Intracomm>New(Intracomm)
 *     PyMPI_Commctx_INTER(comm.ob_mpi, &dupcomm.ob_mpi, &tag,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_dupcomm = ((struct PyMPIIntercommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1298
 *     cdef int tag = MPI_UNDEFINED, low_group = 0
 *     cdef Intercomm dupcomm = <Intercomm>New(Intercomm)
 *     cdef Intracomm localcomm = <Intracomm>New(Intracomm)             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTER(comm.ob_mpi, &dupcomm.ob_mpi, &tag,
 *                         &localcomm.ob_mpi, &low_group)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_localcomm = ((struct PyMPIIntracommObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1299
 *     cdef Intercomm dupcomm = <Intercomm>New(Intercomm)
 *     cdef Intracomm localcomm = <Intracomm>New(Intracomm)
 *     PyMPI_Commctx_INTER(comm.ob_mpi, &dupcomm.ob_mpi, &tag,             # <<<<<<<<<<<<<<
 *                         &localcomm.ob_mpi, &low_group)
 *     return (dupcomm, tag, localcomm, <bint>low_group)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTER(__pyx_v_comm->__pyx_base.ob_mpi, (&__pyx_v_dupcomm->__pyx_base.ob_mpi), (&__pyx_v_tag), (&__pyx_v_localcomm->__pyx_base.ob_mpi), (&__pyx_v_low_group)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(7, 1299, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1301
 *     PyMPI_Commctx_INTER(comm.ob_mpi, &dupcomm.ob_mpi, &tag,
 *                         &localcomm.ob_mpi, &low_group)
 *     return (dupcomm, tag, localcomm, <bint>low_group)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_low_group != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF((PyObject *)__pyx_v_dupcomm);
  __Pyx_GIVEREF((PyObject *)__pyx_v_dupcomm);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_dupcomm))) __PYX_ERR(7, 1301, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(7, 1301, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_localcomm);
  __Pyx_GIVEREF((PyObject *)__pyx_v_localcomm);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, ((PyObject *)__pyx_v_localcomm))) __PYX_ERR(7, 1301, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_2)) __PYX_ERR(7, 1301, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1290
 * 
 * 
 * def _commctx_inter(             # <<<<<<<<<<<<<<
 *     Intercomm comm: Intercomm,
 * ) -> tuple[Intercomm, int, Intracomm, bool]:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI._commctx_inter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dupcomm);
  __Pyx_XDECREF((PyObject *)__pyx_v_localcomm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1306
 * # ---
 * 
 * cdef object PyMPI_reduce_intra(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_intra(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_tag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_reduce_intra", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1308
 * cdef object PyMPI_reduce_intra(object sendobj, object op,
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     return PyMPI_reduce_p2p(sendobj, op, root, comm, tag)
 */
  __pyx_v_tag = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1309
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)             # <<<<<<<<<<<<<<
 *     return PyMPI_reduce_p2p(sendobj, op, root, comm, tag)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTRA(__pyx_v_comm, (&__pyx_v_comm), (&__pyx_v_tag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1309, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1310
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     return PyMPI_reduce_p2p(sendobj, op, root, comm, tag)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_reduce_inter(object sendobj, object op,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce_p2p(__pyx_v_sendobj, __pyx_v_op, __pyx_v_root, __pyx_v_comm, __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1306
 * # ---
 * 
 * cdef object PyMPI_reduce_intra(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_reduce_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1312
 *     return PyMPI_reduce_p2p(sendobj, op, root, comm, tag)
 * 
 * cdef object PyMPI_reduce_inter(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce_inter(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  int __pyx_v_tag;
  MPI_Comm __pyx_v_localcomm;
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  unsigned int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_reduce_inter", 0);
  __Pyx_INCREF(__pyx_v_sendobj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1314
 * cdef object PyMPI_reduce_inter(object sendobj, object op,
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)
 */
  __pyx_v_tag = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1315
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)
 *     # Get communicator remote size and rank
 */
  __pyx_v_localcomm = MPI_COMM_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1316
 *     cdef int tag = MPI_UNDEFINED
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)             # <<<<<<<<<<<<<<
 *     # Get communicator remote size and rank
 *     cdef int size = MPI_UNDEFINED
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTER(__pyx_v_comm, (&__pyx_v_comm), (&__pyx_v_tag), (&__pyx_v_localcomm), NULL); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1316, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1318
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)
 *     # Get communicator remote size and rank
 *     cdef int size = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_remote_size(comm, &size) )
 */
  __pyx_v_size = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1319
 *     # Get communicator remote size and rank
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1320
 *     cdef int size = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_remote_size(comm, &size) )             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     if root >= 0 and root < size:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_comm, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1320, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1321
 *     cdef int rank = MPI_PROC_NULL
 *     CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *     if root >= 0 and root < size:
 *         # Reduce in local group and send to remote root
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1321, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1322
 *     CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     if root >= 0 and root < size:             # <<<<<<<<<<<<<<
 *         # Reduce in local group and send to remote root
 *         sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 */
  __pyx_t_3 = (__pyx_v_root >= 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_root < __pyx_v_size);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1324
 *     if root >= 0 and root < size:
 *         # Reduce in local group and send to remote root
 *         sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)             # <<<<<<<<<<<<<<
 *         if rank == 0: PyMPI_send_p2p(sendobj, root, tag, comm)
 *         return None
 */
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce_p2p(__pyx_v_sendobj, __pyx_v_op, 0, __pyx_v_localcomm, __pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1324, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF_SET(__pyx_v_sendobj, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1325
 *         # Reduce in local group and send to remote root
 *         sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 *         if rank == 0: PyMPI_send_p2p(sendobj, root, tag, comm)             # <<<<<<<<<<<<<<
 *         return None
 *     elif root == MPI_ROOT:  # Receive from remote group
 */
    __pyx_t_2 = (__pyx_v_rank == 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_send_p2p(__pyx_v_sendobj, __pyx_v_root, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1325, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1326
 *         sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 *         if rank == 0: PyMPI_send_p2p(sendobj, root, tag, comm)
 *         return None             # <<<<<<<<<<<<<<
 *     elif root == MPI_ROOT:  # Receive from remote group
 *         return PyMPI_recv_p2p(0, tag, comm)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1322
 *     CHKERR( MPI_Comm_remote_size(comm, &size) )
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     if root >= 0 and root < size:             # <<<<<<<<<<<<<<
 *         # Reduce in local group and send to remote root
 *         sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1327
 *         if rank == 0: PyMPI_send_p2p(sendobj, root, tag, comm)
 *         return None
 *     elif root == MPI_ROOT:  # Receive from remote group             # <<<<<<<<<<<<<<
 *         return PyMPI_recv_p2p(0, tag, comm)
 *     elif root == MPI_PROC_NULL:  # This process does nothing
 */
  __pyx_t_2 = (__pyx_v_root == MPI_ROOT);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1328
 *         return None
 *     elif root == MPI_ROOT:  # Receive from remote group
 *         return PyMPI_recv_p2p(0, tag, comm)             # <<<<<<<<<<<<<<
 *     elif root == MPI_PROC_NULL:  # This process does nothing
 *         return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_recv_p2p(0, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1328, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1327
 *         if rank == 0: PyMPI_send_p2p(sendobj, root, tag, comm)
 *         return None
 *     elif root == MPI_ROOT:  # Receive from remote group             # <<<<<<<<<<<<<<
 *         return PyMPI_recv_p2p(0, tag, comm)
 *     elif root == MPI_PROC_NULL:  # This process does nothing
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1329
 *     elif root == MPI_ROOT:  # Receive from remote group
 *         return PyMPI_recv_p2p(0, tag, comm)
 *     elif root == MPI_PROC_NULL:  # This process does nothing             # <<<<<<<<<<<<<<
 *         return None
 *     else:  # Wrong root argument
 */
  __pyx_t_2 = (__pyx_v_root == MPI_PROC_NULL);
  if (likely(__pyx_t_2)) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1330
 *         return PyMPI_recv_p2p(0, tag, comm)
 *     elif root == MPI_PROC_NULL:  # This process does nothing
 *         return None             # <<<<<<<<<<<<<<
 *     else:  # Wrong root argument
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1329
 *     elif root == MPI_ROOT:  # Receive from remote group
 *         return PyMPI_recv_p2p(0, tag, comm)
 *     elif root == MPI_PROC_NULL:  # This process does nothing             # <<<<<<<<<<<<<<
 *         return None
 *     else:  # Wrong root argument
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1332
 *         return None
 *     else:  # Wrong root argument
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)             # <<<<<<<<<<<<<<
 *         raise MPIException(MPI_ERR_ROOT)
 * 
 */
  /*else*/ {
    ((void)MPI_Comm_call_errhandler(__pyx_v_comm, MPI_ERR_ROOT));

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1333
 *     else:  # Wrong root argument
 *         <void>MPI_Comm_call_errhandler(comm, MPI_ERR_ROOT)
 *         raise MPIException(MPI_ERR_ROOT)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_5 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_ROOT); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 1333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_MPIException);
    __pyx_t_6 = __pyx_v_6mpi4py_3MPI_MPIException; __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 1333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(7, 1333, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1312
 *     return PyMPI_reduce_p2p(sendobj, op, root, comm, tag)
 * 
 * cdef object PyMPI_reduce_inter(object sendobj, object op,             # <<<<<<<<<<<<<<
 *                                int root, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_reduce_inter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sendobj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1336
 * 
 * 
 * cdef object PyMPI_allreduce_intra(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce_intra(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  int __pyx_v_tag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_allreduce_intra", 0);
  __Pyx_INCREF(__pyx_v_sendobj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1337
 * 
 * cdef object PyMPI_allreduce_intra(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, comm, tag)
 */
  __pyx_v_tag = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1338
 * cdef object PyMPI_allreduce_intra(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)             # <<<<<<<<<<<<<<
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, comm, tag)
 *     return PyMPI_bcast_p2p(sendobj, 0, comm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTRA(__pyx_v_comm, (&__pyx_v_comm), (&__pyx_v_tag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1338, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1339
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, comm, tag)             # <<<<<<<<<<<<<<
 *     return PyMPI_bcast_p2p(sendobj, 0, comm)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce_p2p(__pyx_v_sendobj, __pyx_v_op, 0, __pyx_v_comm, __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_sendobj, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1340
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, comm, tag)
 *     return PyMPI_bcast_p2p(sendobj, 0, comm)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_allreduce_inter(object sendobj, object op, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_bcast_p2p(__pyx_v_sendobj, 0, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1336
 * 
 * 
 * cdef object PyMPI_allreduce_intra(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allreduce_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sendobj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1342
 *     return PyMPI_bcast_p2p(sendobj, 0, comm)
 * 
 * cdef object PyMPI_allreduce_inter(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce_inter(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  int __pyx_v_tag;
  int __pyx_v_rank;
  MPI_Comm __pyx_v_localcomm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_allreduce_inter", 0);
  __Pyx_INCREF(__pyx_v_sendobj);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1343
 * 
 * cdef object PyMPI_allreduce_inter(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef int rank = MPI_PROC_NULL
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL
 */
  __pyx_v_tag = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1344
 * cdef object PyMPI_allreduce_inter(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1345
 *     cdef int tag = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 */
  __pyx_v_localcomm = MPI_COMM_NULL;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1346
 *     cdef int rank = MPI_PROC_NULL
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     # Reduce in local group, exchange, and broadcast in local group
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTER(__pyx_v_comm, (&__pyx_v_comm), (&__pyx_v_tag), (&__pyx_v_localcomm), NULL); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1346, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1347
 *     cdef MPI_Comm localcomm = MPI_COMM_NULL
 *     PyMPI_Commctx_INTER(comm, &comm, &tag, &localcomm, NULL)
 *     CHKERR( MPI_Comm_rank(comm, &rank) )             # <<<<<<<<<<<<<<
 *     # Reduce in local group, exchange, and broadcast in local group
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_comm, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1347, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1349
 *     CHKERR( MPI_Comm_rank(comm, &rank) )
 *     # Reduce in local group, exchange, and broadcast in local group
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)             # <<<<<<<<<<<<<<
 *     if rank == 0:
 *         sendobj = PyMPI_sendrecv_p2p(sendobj, 0, tag, 0, tag, comm)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce_p2p(__pyx_v_sendobj, __pyx_v_op, 0, __pyx_v_localcomm, __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_sendobj, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1350
 *     # Reduce in local group, exchange, and broadcast in local group
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 *     if rank == 0:             # <<<<<<<<<<<<<<
 *         sendobj = PyMPI_sendrecv_p2p(sendobj, 0, tag, 0, tag, comm)
 *     return PyMPI_bcast_p2p(sendobj, 0, localcomm)
 */
  __pyx_t_3 = (__pyx_v_rank == 0);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1351
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 *     if rank == 0:
 *         sendobj = PyMPI_sendrecv_p2p(sendobj, 0, tag, 0, tag, comm)             # <<<<<<<<<<<<<<
 *     return PyMPI_bcast_p2p(sendobj, 0, localcomm)
 * 
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_sendrecv_p2p(__pyx_v_sendobj, 0, __pyx_v_tag, 0, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1351, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_sendobj, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1350
 *     # Reduce in local group, exchange, and broadcast in local group
 *     sendobj = PyMPI_reduce_p2p(sendobj, op, 0, localcomm, tag)
 *     if rank == 0:             # <<<<<<<<<<<<<<
 *         sendobj = PyMPI_sendrecv_p2p(sendobj, 0, tag, 0, tag, comm)
 *     return PyMPI_bcast_p2p(sendobj, 0, localcomm)
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1352
 *     if rank == 0:
 *         sendobj = PyMPI_sendrecv_p2p(sendobj, 0, tag, 0, tag, comm)
 *     return PyMPI_bcast_p2p(sendobj, 0, localcomm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_bcast_p2p(__pyx_v_sendobj, 0, __pyx_v_localcomm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1342
 *     return PyMPI_bcast_p2p(sendobj, 0, comm)
 * 
 * cdef object PyMPI_allreduce_inter(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     cdef int rank = MPI_PROC_NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allreduce_inter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sendobj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1355
 * 
 * 
 * cdef object PyMPI_scan_intra(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan_intra(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  int __pyx_v_tag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scan_intra", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1356
 * 
 * cdef object PyMPI_scan_intra(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     return PyMPI_scan_p2p(sendobj, op, comm, tag)
 */
  __pyx_v_tag = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1357
 * cdef object PyMPI_scan_intra(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)             # <<<<<<<<<<<<<<
 *     return PyMPI_scan_p2p(sendobj, op, comm, tag)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTRA(__pyx_v_comm, (&__pyx_v_comm), (&__pyx_v_tag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1357, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1358
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     return PyMPI_scan_p2p(sendobj, op, comm, tag)             # <<<<<<<<<<<<<<
 * 
 * cdef object PyMPI_exscan_intra(object sendobj, object op, MPI_Comm comm):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_scan_p2p(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm, __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1355
 * 
 * 
 * cdef object PyMPI_scan_intra(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scan_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1360
 *     return PyMPI_scan_p2p(sendobj, op, comm, tag)
 * 
 * cdef object PyMPI_exscan_intra(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan_intra(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  int __pyx_v_tag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_exscan_intra", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1361
 * 
 * cdef object PyMPI_exscan_intra(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     return PyMPI_exscan_p2p(sendobj, op, comm, tag)
 */
  __pyx_v_tag = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1362
 * cdef object PyMPI_exscan_intra(object sendobj, object op, MPI_Comm comm):
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)             # <<<<<<<<<<<<<<
 *     return PyMPI_exscan_p2p(sendobj, op, comm, tag)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_Commctx_INTRA(__pyx_v_comm, (&__pyx_v_comm), (&__pyx_v_tag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1362, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1363
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 *     return PyMPI_exscan_p2p(sendobj, op, comm, tag)             # <<<<<<<<<<<<<<
 * 
 * # ---
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_exscan_p2p(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm, __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1360
 *     return PyMPI_scan_p2p(sendobj, op, comm, tag)
 * 
 * cdef object PyMPI_exscan_intra(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     cdef int tag = MPI_UNDEFINED
 *     PyMPI_Commctx_INTRA(comm, &comm, &tag)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_exscan_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1367
 * # ---
 * 
 * cdef inline bint comm_is_intra(MPI_Comm comm) except -1 nogil:             # <<<<<<<<<<<<<<
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_comm_is_intra(MPI_Comm __pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1368
 * 
 * cdef inline bint comm_is_intra(MPI_Comm comm) except -1 nogil:
 *     cdef int inter = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter: return 0
 */
  __pyx_v_inter = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1369
 * cdef inline bint comm_is_intra(MPI_Comm comm) except -1 nogil:
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )             # <<<<<<<<<<<<<<
 *     if inter: return 0
 *     else:     return 1
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_comm, (&__pyx_v_inter))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1369, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1370
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter: return 0             # <<<<<<<<<<<<<<
 *     else:     return 1
 * 
 */
  __pyx_t_2 = (__pyx_v_inter != 0);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1371
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 *     if inter: return 0
 *     else:     return 1             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_r = 1;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1367
 * # ---
 * 
 * cdef inline bint comm_is_intra(MPI_Comm comm) except -1 nogil:             # <<<<<<<<<<<<<<
 *     cdef int inter = 0
 *     CHKERR( MPI_Comm_test_inter(comm, &inter) )
 */

  /* function exit code */
  __pyx_L1_error:;
  #ifdef WITH_THREAD
  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_AddTraceback("mpi4py.MPI.comm_is_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1374
 * 
 * 
 * cdef object PyMPI_reduce(object sendobj, object op, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_reduce(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, int __pyx_v_root, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_reduce", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1375
 * 
 * cdef object PyMPI_reduce(object sendobj, object op, int root, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)
 *     elif comm_is_intra(comm):
 */
  __pyx_t_1 = (!__pyx_v_6mpi4py_3MPI_options.fast_reduce);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1376
 * cdef object PyMPI_reduce(object sendobj, object op, int root, MPI_Comm comm):
 *     if not options.fast_reduce:
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)             # <<<<<<<<<<<<<<
 *     elif comm_is_intra(comm):
 *         return PyMPI_reduce_intra(sendobj, op, root, comm)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce_naive(__pyx_v_sendobj, __pyx_v_op, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1375
 * 
 * cdef object PyMPI_reduce(object sendobj, object op, int root, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)
 *     elif comm_is_intra(comm):
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1377
 *     if not options.fast_reduce:
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)
 *     elif comm_is_intra(comm):             # <<<<<<<<<<<<<<
 *         return PyMPI_reduce_intra(sendobj, op, root, comm)
 *     else:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_is_intra(__pyx_v_comm); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1377, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1378
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)
 *     elif comm_is_intra(comm):
 *         return PyMPI_reduce_intra(sendobj, op, root, comm)             # <<<<<<<<<<<<<<
 *     else:
 *         return PyMPI_reduce_inter(sendobj, op, root, comm)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce_intra(__pyx_v_sendobj, __pyx_v_op, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1378, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1377
 *     if not options.fast_reduce:
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)
 *     elif comm_is_intra(comm):             # <<<<<<<<<<<<<<
 *         return PyMPI_reduce_intra(sendobj, op, root, comm)
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1380
 *         return PyMPI_reduce_intra(sendobj, op, root, comm)
 *     else:
 *         return PyMPI_reduce_inter(sendobj, op, root, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce_inter(__pyx_v_sendobj, __pyx_v_op, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1374
 * 
 * 
 * cdef object PyMPI_reduce(object sendobj, object op, int root, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_reduce_naive(sendobj, op, root, comm)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1383
 * 
 * 
 * cdef object PyMPI_allreduce(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_allreduce_naive(sendobj, op, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_allreduce(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_allreduce", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1384
 * 
 * cdef object PyMPI_allreduce(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_allreduce_naive(sendobj, op, comm)
 *     elif comm_is_intra(comm):
 */
  __pyx_t_1 = (!__pyx_v_6mpi4py_3MPI_options.fast_reduce);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1385
 * cdef object PyMPI_allreduce(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:
 *         return PyMPI_allreduce_naive(sendobj, op, comm)             # <<<<<<<<<<<<<<
 *     elif comm_is_intra(comm):
 *         return PyMPI_allreduce_intra(sendobj, op, comm)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_allreduce_naive(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1384
 * 
 * cdef object PyMPI_allreduce(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_allreduce_naive(sendobj, op, comm)
 *     elif comm_is_intra(comm):
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1386
 *     if not options.fast_reduce:
 *         return PyMPI_allreduce_naive(sendobj, op, comm)
 *     elif comm_is_intra(comm):             # <<<<<<<<<<<<<<
 *         return PyMPI_allreduce_intra(sendobj, op, comm)
 *     else:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_is_intra(__pyx_v_comm); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(7, 1386, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1387
 *         return PyMPI_allreduce_naive(sendobj, op, comm)
 *     elif comm_is_intra(comm):
 *         return PyMPI_allreduce_intra(sendobj, op, comm)             # <<<<<<<<<<<<<<
 *     else:
 *         return PyMPI_allreduce_inter(sendobj, op, comm)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_allreduce_intra(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1386
 *     if not options.fast_reduce:
 *         return PyMPI_allreduce_naive(sendobj, op, comm)
 *     elif comm_is_intra(comm):             # <<<<<<<<<<<<<<
 *         return PyMPI_allreduce_intra(sendobj, op, comm)
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1389
 *         return PyMPI_allreduce_intra(sendobj, op, comm)
 *     else:
 *         return PyMPI_allreduce_inter(sendobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_allreduce_inter(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1383
 * 
 * 
 * cdef object PyMPI_allreduce(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_allreduce_naive(sendobj, op, comm)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1392
 * 
 * 
 * cdef object PyMPI_scan(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_scan_naive(sendobj, op, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_scan(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_scan", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1393
 * 
 * cdef object PyMPI_scan(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_scan_naive(sendobj, op, comm)
 *     else:
 */
  __pyx_t_1 = (!__pyx_v_6mpi4py_3MPI_options.fast_reduce);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1394
 * cdef object PyMPI_scan(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:
 *         return PyMPI_scan_naive(sendobj, op, comm)             # <<<<<<<<<<<<<<
 *     else:
 *         return PyMPI_scan_intra(sendobj, op, comm)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_scan_naive(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1393
 * 
 * cdef object PyMPI_scan(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_scan_naive(sendobj, op, comm)
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1396
 *         return PyMPI_scan_naive(sendobj, op, comm)
 *     else:
 *         return PyMPI_scan_intra(sendobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_scan_intra(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1392
 * 
 * 
 * cdef object PyMPI_scan(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_scan_naive(sendobj, op, comm)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/msgpickle.pxi":1399
 * 
 * 
 * cdef object PyMPI_exscan(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_exscan_naive(sendobj, op, comm)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPI_exscan(PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, MPI_Comm __pyx_v_comm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPI_exscan", 1);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1400
 * 
 * cdef object PyMPI_exscan(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_exscan_naive(sendobj, op, comm)
 *     else:
 */
  __pyx_t_1 = (!__pyx_v_6mpi4py_3MPI_options.fast_reduce);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1401
 * cdef object PyMPI_exscan(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:
 *         return PyMPI_exscan_naive(sendobj, op, comm)             # <<<<<<<<<<<<<<
 *     else:
 *         return PyMPI_exscan_intra(sendobj, op, comm)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_exscan_naive(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":1400
 * 
 * cdef object PyMPI_exscan(object sendobj, object op, MPI_Comm comm):
 *     if not options.fast_reduce:             # <<<<<<<<<<<<<<
 *         return PyMPI_exscan_naive(sendobj, op, comm)
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1403
 *         return PyMPI_exscan_naive(sendobj, op, comm)
 *     else:
 *         return PyMPI_exscan_intra(sendobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_exscan_intra(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1399
 * 
 * 
 * cdef object PyMPI_exscan(object sendobj, object op, MPI_Comm comm):             # <<<<<<<<<<<<<<
 *     if not options.fast_reduce:
 *         return PyMPI_exscan_naive(sendobj, op, comm)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPI_exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":5
 * #  Datatype
 * 
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_New(MPI_Datatype __pyx_v_arg) {
  struct PyMPIDatatypeObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIDatatype_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":6
 * 
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):
 *     cdef Datatype obj = Datatype.__new__(Datatype)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Datatype(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Datatype), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 6, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIDatatypeObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":7
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":8
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":9
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":5
 * #  Datatype
 * 
 * cdef api object PyMPIDatatype_New(MPI_Datatype arg):             # <<<<<<<<<<<<<<
 *     cdef Datatype obj = Datatype.__new__(Datatype)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIDatatype_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":11
 *     return obj
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Datatype?>arg).ob_mpi
 * 
 */

static MPI_Datatype *__pyx_f_6mpi4py_3MPI_PyMPIDatatype_Get(PyObject *__pyx_v_arg) {
  MPI_Datatype *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":12
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:
 *     return &(<Datatype?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(19, 12, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIDatatypeObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":11
 *     return obj
 * 
 * cdef api MPI_Datatype* PyMPIDatatype_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Datatype?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIDatatype_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":18
 * #  Status
 * 
 * cdef api object PyMPIStatus_New(MPI_Status *arg):             # <<<<<<<<<<<<<<
 *     cdef Status obj = Status.__new__(Status)
 *     if (
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIStatus_New(MPI_Status *__pyx_v_arg) {
  struct PyMPIStatusObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIStatus_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":19
 * 
 * cdef api object PyMPIStatus_New(MPI_Status *arg):
 *     cdef Status obj = Status.__new__(Status)             # <<<<<<<<<<<<<<
 *     if (
 *         arg != NULL and
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Status(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Status), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 19, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIStatusObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":21
 *     cdef Status obj = Status.__new__(Status)
 *     if (
 *         arg != NULL and             # <<<<<<<<<<<<<<
 *         arg != MPI_STATUS_IGNORE and
 *         arg != MPI_STATUSES_IGNORE
 */
  __pyx_t_3 = (__pyx_v_arg != NULL);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/CAPI.pxi":22
 *     if (
 *         arg != NULL and
 *         arg != MPI_STATUS_IGNORE and             # <<<<<<<<<<<<<<
 *         arg != MPI_STATUSES_IGNORE
 *     ):
 */
  __pyx_t_3 = (__pyx_v_arg != MPI_STATUS_IGNORE);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/CAPI.pxi":23
 *         arg != NULL and
 *         arg != MPI_STATUS_IGNORE and
 *         arg != MPI_STATUSES_IGNORE             # <<<<<<<<<<<<<<
 *     ):
 *         obj.ob_mpi = arg[0]
 */
  __pyx_t_3 = (__pyx_v_arg != MPI_STATUSES_IGNORE);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;

  /* "src/mpi4py/MPI.src/CAPI.pxi":20
 * cdef api object PyMPIStatus_New(MPI_Status *arg):
 *     cdef Status obj = Status.__new__(Status)
 *     if (             # <<<<<<<<<<<<<<
 *         arg != NULL and
 *         arg != MPI_STATUS_IGNORE and
 */
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/CAPI.pxi":25
 *         arg != MPI_STATUSES_IGNORE
 *     ):
 *         obj.ob_mpi = arg[0]             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
    __pyx_v_obj->ob_mpi = (__pyx_v_arg[0]);

    /* "src/mpi4py/MPI.src/CAPI.pxi":20
 * cdef api object PyMPIStatus_New(MPI_Status *arg):
 *     cdef Status obj = Status.__new__(Status)
 *     if (             # <<<<<<<<<<<<<<
 *         arg != NULL and
 *         arg != MPI_STATUS_IGNORE and
 */
  }

  /* "src/mpi4py/MPI.src/CAPI.pxi":26
 *     ):
 *         obj.ob_mpi = arg[0]
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":18
 * #  Status
 * 
 * cdef api object PyMPIStatus_New(MPI_Status *arg):             # <<<<<<<<<<<<<<
 *     cdef Status obj = Status.__new__(Status)
 *     if (
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIStatus_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":28
 *     return obj
 * 
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:             # <<<<<<<<<<<<<<
 *     if arg is None: return MPI_STATUS_IGNORE
 *     return &(<Status?>arg).ob_mpi
 */

static MPI_Status *__pyx_f_6mpi4py_3MPI_PyMPIStatus_Get(PyObject *__pyx_v_arg) {
  MPI_Status *__pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":29
 * 
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:
 *     if arg is None: return MPI_STATUS_IGNORE             # <<<<<<<<<<<<<<
 *     return &(<Status?>arg).ob_mpi
 * 
 */
  __pyx_t_1 = (__pyx_v_arg == Py_None);
  if (__pyx_t_1) {
    __pyx_r = MPI_STATUS_IGNORE;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/CAPI.pxi":30
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:
 *     if arg is None: return MPI_STATUS_IGNORE
 *     return &(<Status?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Status)))) __PYX_ERR(19, 30, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIStatusObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":28
 *     return obj
 * 
 * cdef api MPI_Status* PyMPIStatus_Get(object arg) except? NULL:             # <<<<<<<<<<<<<<
 *     if arg is None: return MPI_STATUS_IGNORE
 *     return &(<Status?>arg).ob_mpi
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIStatus_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":36
 * #  Request
 * 
 * cdef api object PyMPIRequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIRequest_New(MPI_Request __pyx_v_arg) {
  struct PyMPIRequestObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIRequest_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":37
 * 
 * cdef api object PyMPIRequest_New(MPI_Request arg):
 *     cdef Request obj = Request.__new__(Request)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Request(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Request), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 37, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":38
 * cdef api object PyMPIRequest_New(MPI_Request arg):
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":39
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":40
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api object PyMPIPrequest_New(MPI_Request arg):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":36
 * #  Request
 * 
 * cdef api object PyMPIRequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Request obj = Request.__new__(Request)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIRequest_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":42
 *     return obj
 * 
 * cdef api object PyMPIPrequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Prequest obj = Prequest.__new__(Prequest)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIPrequest_New(MPI_Request __pyx_v_arg) {
  struct PyMPIPrequestObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIPrequest_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":43
 * 
 * cdef api object PyMPIPrequest_New(MPI_Request arg):
 *     cdef Prequest obj = Prequest.__new__(Prequest)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Prequest(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Prequest), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 43, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIPrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":44
 * cdef api object PyMPIPrequest_New(MPI_Request arg):
 *     cdef Prequest obj = Prequest.__new__(Prequest)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->__pyx_base.ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":45
 *     cdef Prequest obj = Prequest.__new__(Prequest)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->__pyx_base.flags = (__pyx_v_obj->__pyx_base.flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":46
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api object PyMPIGrequest_New(MPI_Request arg):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":42
 *     return obj
 * 
 * cdef api object PyMPIPrequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Prequest obj = Prequest.__new__(Prequest)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIPrequest_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":48
 *     return obj
 * 
 * cdef api object PyMPIGrequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Grequest obj = Grequest.__new__(Grequest)
 *     obj.ob_grequest = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIGrequest_New(MPI_Request __pyx_v_arg) {
  struct PyMPIGrequestObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIGrequest_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":49
 * 
 * cdef api object PyMPIGrequest_New(MPI_Request arg):
 *     cdef Grequest obj = Grequest.__new__(Grequest)             # <<<<<<<<<<<<<<
 *     obj.ob_grequest = arg
 *     obj.ob_mpi = arg
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Grequest(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Grequest), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 49, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIGrequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":50
 * cdef api object PyMPIGrequest_New(MPI_Request arg):
 *     cdef Grequest obj = Grequest.__new__(Grequest)
 *     obj.ob_grequest = arg             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_v_obj->ob_grequest = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":51
 *     cdef Grequest obj = Grequest.__new__(Grequest)
 *     obj.ob_grequest = arg
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->__pyx_base.ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":52
 *     obj.ob_grequest = arg
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->__pyx_base.flags = (__pyx_v_obj->__pyx_base.flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":53
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":48
 *     return obj
 * 
 * cdef api object PyMPIGrequest_New(MPI_Request arg):             # <<<<<<<<<<<<<<
 *     cdef Grequest obj = Grequest.__new__(Grequest)
 *     obj.ob_grequest = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIGrequest_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":55
 *     return obj
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Request?>arg).ob_mpi
 * 
 */

static MPI_Request *__pyx_f_6mpi4py_3MPI_PyMPIRequest_Get(PyObject *__pyx_v_arg) {
  MPI_Request *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":56
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:
 *     return &(<Request?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Request)))) __PYX_ERR(19, 56, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIRequestObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":55
 *     return obj
 * 
 * cdef api MPI_Request* PyMPIRequest_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Request?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIRequest_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":62
 * #  Message
 * 
 * cdef api object PyMPIMessage_New(MPI_Message arg):             # <<<<<<<<<<<<<<
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIMessage_New(MPI_Message __pyx_v_arg) {
  struct PyMPIMessageObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIMessage_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":63
 * 
 * cdef api object PyMPIMessage_New(MPI_Message arg):
 *     cdef Message obj = Message.__new__(Message)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Message(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Message), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 63, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIMessageObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":64
 * cdef api object PyMPIMessage_New(MPI_Message arg):
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":65
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":66
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Message* PyMPIMessage_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":62
 * #  Message
 * 
 * cdef api object PyMPIMessage_New(MPI_Message arg):             # <<<<<<<<<<<<<<
 *     cdef Message obj = Message.__new__(Message)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIMessage_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":68
 *     return obj
 * 
 * cdef api MPI_Message* PyMPIMessage_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Message?>arg).ob_mpi
 * 
 */

static MPI_Message *__pyx_f_6mpi4py_3MPI_PyMPIMessage_Get(PyObject *__pyx_v_arg) {
  MPI_Message *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":69
 * 
 * cdef api MPI_Message* PyMPIMessage_Get(object arg) except NULL:
 *     return &(<Message?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Message)))) __PYX_ERR(19, 69, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIMessageObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":68
 *     return obj
 * 
 * cdef api MPI_Message* PyMPIMessage_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Message?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIMessage_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":75
 * #  Op
 * 
 * cdef api object PyMPIOp_New(MPI_Op arg):             # <<<<<<<<<<<<<<
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIOp_New(MPI_Op __pyx_v_arg) {
  struct PyMPIOpObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIOp_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":76
 * 
 * cdef api object PyMPIOp_New(MPI_Op arg):
 *     cdef Op obj = Op.__new__(Op)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Op(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Op), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 76, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIOpObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":77
 * cdef api object PyMPIOp_New(MPI_Op arg):
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":78
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":79
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":75
 * #  Op
 * 
 * cdef api object PyMPIOp_New(MPI_Op arg):             # <<<<<<<<<<<<<<
 *     cdef Op obj = Op.__new__(Op)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIOp_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":81
 *     return obj
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Op?>arg).ob_mpi
 * 
 */

static MPI_Op *__pyx_f_6mpi4py_3MPI_PyMPIOp_Get(PyObject *__pyx_v_arg) {
  MPI_Op *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":82
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:
 *     return &(<Op?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Op)))) __PYX_ERR(19, 82, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIOpObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":81
 *     return obj
 * 
 * cdef api MPI_Op* PyMPIOp_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Op?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIOp_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":88
 * #  Group
 * 
 * cdef api object PyMPIGroup_New(MPI_Group arg):             # <<<<<<<<<<<<<<
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIGroup_New(MPI_Group __pyx_v_arg) {
  struct PyMPIGroupObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIGroup_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":89
 * 
 * cdef api object PyMPIGroup_New(MPI_Group arg):
 *     cdef Group obj = Group.__new__(Group)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     return obj
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Group(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Group), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 89, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":90
 * cdef api object PyMPIGroup_New(MPI_Group arg):
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":91
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":88
 * #  Group
 * 
 * cdef api object PyMPIGroup_New(MPI_Group arg):             # <<<<<<<<<<<<<<
 *     cdef Group obj = Group.__new__(Group)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIGroup_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":93
 *     return obj
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Group?>arg).ob_mpi
 * 
 */

static MPI_Group *__pyx_f_6mpi4py_3MPI_PyMPIGroup_Get(PyObject *__pyx_v_arg) {
  MPI_Group *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":94
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:
 *     return &(<Group?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Group)))) __PYX_ERR(19, 94, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIGroupObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":93
 *     return obj
 * 
 * cdef api MPI_Group* PyMPIGroup_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Group?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIGroup_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":100
 * #  Info
 * 
 * cdef api object PyMPIInfo_New(MPI_Info arg):             # <<<<<<<<<<<<<<
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIInfo_New(MPI_Info __pyx_v_arg) {
  struct PyMPIInfoObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIInfo_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":101
 * 
 * cdef api object PyMPIInfo_New(MPI_Info arg):
 *     cdef Info obj = Info.__new__(Info)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Info(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Info), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 101, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIInfoObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":102
 * cdef api object PyMPIInfo_New(MPI_Info arg):
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":103
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":104
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":100
 * #  Info
 * 
 * cdef api object PyMPIInfo_New(MPI_Info arg):             # <<<<<<<<<<<<<<
 *     cdef Info obj = Info.__new__(Info)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIInfo_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":106
 *     return obj
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Info?>arg).ob_mpi
 * 
 */

static MPI_Info *__pyx_f_6mpi4py_3MPI_PyMPIInfo_Get(PyObject *__pyx_v_arg) {
  MPI_Info *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":107
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:
 *     return &(<Info?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(19, 107, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIInfoObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":106
 *     return obj
 * 
 * cdef api MPI_Info* PyMPIInfo_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Info?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIInfo_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":113
 * # Errhandler
 * 
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):             # <<<<<<<<<<<<<<
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New(MPI_Errhandler __pyx_v_arg) {
  struct PyMPIErrhandlerObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIErrhandler_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":114
 * 
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Errhandler(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 114, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIErrhandlerObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":115
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":116
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":117
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":113
 * # Errhandler
 * 
 * cdef api object PyMPIErrhandler_New(MPI_Errhandler arg):             # <<<<<<<<<<<<<<
 *     cdef Errhandler obj = Errhandler.__new__(Errhandler)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIErrhandler_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":119
 *     return obj
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Errhandler?>arg).ob_mpi
 * 
 */

static MPI_Errhandler *__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_Get(PyObject *__pyx_v_arg) {
  MPI_Errhandler *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":120
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:
 *     return &(<Errhandler?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Errhandler)))) __PYX_ERR(19, 120, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIErrhandlerObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":119
 *     return obj
 * 
 * cdef api MPI_Errhandler* PyMPIErrhandler_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Errhandler?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIErrhandler_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":126
 * # Session
 * 
 * cdef api object PyMPISession_New(MPI_Session arg):             # <<<<<<<<<<<<<<
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPISession_New(MPI_Session __pyx_v_arg) {
  struct PyMPISessionObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPISession_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":127
 * 
 * cdef api object PyMPISession_New(MPI_Session arg):
 *     cdef Session obj = Session.__new__(Session)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Session(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Session), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 127, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPISessionObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":128
 * cdef api object PyMPISession_New(MPI_Session arg):
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":129
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":130
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Session* PyMPISession_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":126
 * # Session
 * 
 * cdef api object PyMPISession_New(MPI_Session arg):             # <<<<<<<<<<<<<<
 *     cdef Session obj = Session.__new__(Session)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPISession_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":132
 *     return obj
 * 
 * cdef api MPI_Session* PyMPISession_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Session?>arg).ob_mpi
 * 
 */

static MPI_Session *__pyx_f_6mpi4py_3MPI_PyMPISession_Get(PyObject *__pyx_v_arg) {
  MPI_Session *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":133
 * 
 * cdef api MPI_Session* PyMPISession_Get(object arg) except NULL:
 *     return &(<Session?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Session)))) __PYX_ERR(19, 133, __pyx_L1_error)
  __pyx_r = (&((struct PyMPISessionObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":132
 *     return obj
 * 
 * cdef api MPI_Session* PyMPISession_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Session?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPISession_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":139
 * # Comm
 * 
 * cdef api object PyMPIComm_New(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     cdef type cls = CommType(arg)
 *     cdef Comm obj = <Comm>cls.__new__(cls)
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIComm_New(MPI_Comm __pyx_v_arg) {
  PyTypeObject *__pyx_v_cls = 0;
  struct PyMPICommObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIComm_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":140
 * 
 * cdef api object PyMPIComm_New(MPI_Comm arg):
 *     cdef type cls = CommType(arg)             # <<<<<<<<<<<<<<
 *     cdef Comm obj = <Comm>cls.__new__(cls)
 *     obj.ob_mpi = arg
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_CommType(__pyx_v_arg)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cls = ((PyTypeObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":141
 * cdef api object PyMPIComm_New(MPI_Comm arg):
 *     cdef type cls = CommType(arg)
 *     cdef Comm obj = <Comm>cls.__new__(cls)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  if (unlikely(((PyObject *)__pyx_v_cls) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object.__new__(X): X is not a type object (NoneType)");
    __PYX_ERR(19, 141, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_tp_new(((PyObject *)__pyx_v_cls), __pyx_empty_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_obj = ((struct PyMPICommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":142
 *     cdef type cls = CommType(arg)
 *     cdef Comm obj = <Comm>cls.__new__(cls)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":143
 *     cdef Comm obj = <Comm>cls.__new__(cls)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":144
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":139
 * # Comm
 * 
 * cdef api object PyMPIComm_New(MPI_Comm arg):             # <<<<<<<<<<<<<<
 *     cdef type cls = CommType(arg)
 *     cdef Comm obj = <Comm>cls.__new__(cls)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIComm_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":146
 *     return obj
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Comm?>arg).ob_mpi
 * 
 */

static MPI_Comm *__pyx_f_6mpi4py_3MPI_PyMPIComm_Get(PyObject *__pyx_v_arg) {
  MPI_Comm *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":147
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:
 *     return &(<Comm?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Comm)))) __PYX_ERR(19, 147, __pyx_L1_error)
  __pyx_r = (&((struct PyMPICommObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":146
 *     return obj
 * 
 * cdef api MPI_Comm* PyMPIComm_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Comm?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIComm_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":153
 * # Win
 * 
 * cdef api object PyMPIWin_New(MPI_Win arg):             # <<<<<<<<<<<<<<
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIWin_New(MPI_Win __pyx_v_arg) {
  struct PyMPIWinObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIWin_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":154
 * 
 * cdef api object PyMPIWin_New(MPI_Win arg):
 *     cdef Win obj = Win.__new__(Win)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_Win(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_Win), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 154, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIWinObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":155
 * cdef api object PyMPIWin_New(MPI_Win arg):
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":156
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":157
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":153
 * # Win
 * 
 * cdef api object PyMPIWin_New(MPI_Win arg):             # <<<<<<<<<<<<<<
 *     cdef Win obj = Win.__new__(Win)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIWin_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":159
 *     return obj
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Win?>arg).ob_mpi
 * 
 */

static MPI_Win *__pyx_f_6mpi4py_3MPI_PyMPIWin_Get(PyObject *__pyx_v_arg) {
  MPI_Win *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":160
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:
 *     return &(<Win?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Win)))) __PYX_ERR(19, 160, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIWinObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":159
 *     return obj
 * 
 * cdef api MPI_Win* PyMPIWin_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<Win?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIWin_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":166
 * # File
 * 
 * cdef api object PyMPIFile_New(MPI_File arg):             # <<<<<<<<<<<<<<
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg
 */

static PyObject *__pyx_f_6mpi4py_3MPI_PyMPIFile_New(MPI_File __pyx_v_arg) {
  struct PyMPIFileObject *__pyx_v_obj = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyMPIFile_New", 1);

  /* "src/mpi4py/MPI.src/CAPI.pxi":167
 * 
 * cdef api object PyMPIFile_New(MPI_File arg):
 *     cdef File obj = File.__new__(File)             # <<<<<<<<<<<<<<
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI_File(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI_File), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 167, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_obj = ((struct PyMPIFileObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":168
 * cdef api object PyMPIFile_New(MPI_File arg):
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg             # <<<<<<<<<<<<<<
 *     obj.flags |= 0
 *     return obj
 */
  __pyx_v_obj->ob_mpi = __pyx_v_arg;

  /* "src/mpi4py/MPI.src/CAPI.pxi":169
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg
 *     obj.flags |= 0             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  __pyx_v_obj->flags = (__pyx_v_obj->flags | 0);

  /* "src/mpi4py/MPI.src/CAPI.pxi":170
 *     obj.ob_mpi = arg
 *     obj.flags |= 0
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_obj);
  __pyx_r = ((PyObject *)__pyx_v_obj);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":166
 * # File
 * 
 * cdef api object PyMPIFile_New(MPI_File arg):             # <<<<<<<<<<<<<<
 *     cdef File obj = File.__new__(File)
 *     obj.ob_mpi = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIFile_New", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/CAPI.pxi":172
 *     return obj
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<File?>arg).ob_mpi
 * 
 */

static MPI_File *__pyx_f_6mpi4py_3MPI_PyMPIFile_Get(PyObject *__pyx_v_arg) {
  MPI_File *__pyx_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":173
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:
 *     return &(<File?>arg).ob_mpi             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_File)))) __PYX_ERR(19, 173, __pyx_L1_error)
  __pyx_r = (&((struct PyMPIFileObject *)__pyx_v_arg)->ob_mpi);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/CAPI.pxi":172
 *     return obj
 * 
 * cdef api MPI_File* PyMPIFile_Get(object arg) except NULL:             # <<<<<<<<<<<<<<
 *     return &(<File?>arg).ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.PyMPIFile_Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":86
 * 
 * 
 * def Get_error_class(int errorcode: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Convert an *error code* into an *error class*.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_11Get_error_class(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Get_error_class, "Get_error_class(errorcode: int) -> int\n\n    Convert an *error code* into an *error class*.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_11Get_error_class = {"Get_error_class", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_11Get_error_class, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Get_error_class};
static PyObject *__pyx_pw_6mpi4py_3MPI_11Get_error_class(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_error_class (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 86, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_error_class") < 0)) __PYX_ERR(20, 86, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 86, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 86, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Get_error_class(__pyx_self, __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Get_error_class(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode) {
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_error_class", 1);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":90
 *     Convert an *error code* into an *error class*.
 *     """
 *     cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )
 *     return errorclass
 */
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":91
 *     """
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )             # <<<<<<<<<<<<<<
 *     return errorclass
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_class(__pyx_v_errorcode, (&__pyx_v_errorclass))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 91, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":92
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Error_class(errorcode, &errorclass) )
 *     return errorclass             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":86
 * 
 * 
 * def Get_error_class(int errorcode: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Convert an *error code* into an *error class*.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":95
 * 
 * 
 * def Get_error_string(int errorcode: int) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return the *error string* for a given *error class* or *error code*.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_13Get_error_string(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_12Get_error_string, "Get_error_string(errorcode: int) -> str\n\n    Return the *error string* for a given *error class* or *error code*.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_13Get_error_string = {"Get_error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_13Get_error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_12Get_error_string};
static PyObject *__pyx_pw_6mpi4py_3MPI_13Get_error_string(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_error_string (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 95, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_error_string") < 0)) __PYX_ERR(20, 95, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 95, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 95, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_12Get_error_string(__pyx_self, __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_12Get_error_string(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode) {
  char __pyx_v_string[(MPI_MAX_ERROR_STRING + 1)];
  int __pyx_v_resultlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_error_string", 1);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":100
 *     """
 *     cdef char string[MPI_MAX_ERROR_STRING+1]
 *     cdef int resultlen = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Error_string(errorcode, string, &resultlen) )
 *     return tompistr(string, resultlen)
 */
  __pyx_v_resultlen = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":101
 *     cdef char string[MPI_MAX_ERROR_STRING+1]
 *     cdef int resultlen = 0
 *     CHKERR( MPI_Error_string(errorcode, string, &resultlen) )             # <<<<<<<<<<<<<<
 *     return tompistr(string, resultlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_string(__pyx_v_errorcode, __pyx_v_string, (&__pyx_v_resultlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 101, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":102
 *     cdef int resultlen = 0
 *     CHKERR( MPI_Error_string(errorcode, string, &resultlen) )
 *     return tompistr(string, resultlen)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_string, __pyx_v_resultlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":95
 * 
 * 
 * def Get_error_string(int errorcode: int) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return the *error string* for a given *error class* or *error code*.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":105
 * 
 * 
 * def Add_error_class() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error class* to the known error classes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_15Add_error_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_14Add_error_class, "Add_error_class() -> int\n\n    Add an *error class* to the known error classes.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_15Add_error_class = {"Add_error_class", (PyCFunction)__pyx_pw_6mpi4py_3MPI_15Add_error_class, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_14Add_error_class};
static PyObject *__pyx_pw_6mpi4py_3MPI_15Add_error_class(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Add_error_class (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_14Add_error_class(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_14Add_error_class(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Add_error_class", 1);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":109
 *     Add an *error class* to the known error classes.
 *     """
 *     cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Add_error_class(&errorclass) )
 *     return errorclass
 */
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":110
 *     """
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_class(&errorclass) )             # <<<<<<<<<<<<<<
 *     return errorclass
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Add_error_class((&__pyx_v_errorclass))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 110, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":111
 *     cdef int errorclass = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_class(&errorclass) )
 *     return errorclass             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":105
 * 
 * 
 * def Add_error_class() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error class* to the known error classes.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":114
 * 
 * 
 * def Remove_error_class(int errorclass: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error class* from the known error classes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_17Remove_error_class(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_16Remove_error_class, "Remove_error_class(errorclass: int) -> None\n\n    Remove an *error class* from the known error classes.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_17Remove_error_class = {"Remove_error_class", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_17Remove_error_class, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_16Remove_error_class};
static PyObject *__pyx_pw_6mpi4py_3MPI_17Remove_error_class(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorclass;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Remove_error_class (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorclass,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorclass)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 114, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Remove_error_class") < 0)) __PYX_ERR(20, 114, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorclass = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorclass == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 114, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Remove_error_class", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Remove_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_16Remove_error_class(__pyx_self, __pyx_v_errorclass);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_16Remove_error_class(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorclass) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Remove_error_class", 1);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":118
 *     Remove an *error class* from the known error classes.
 *     """
 *     CHKERR( MPI_Remove_error_class(errorclass) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Remove_error_class(__pyx_v_errorclass)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 118, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":114
 * 
 * 
 * def Remove_error_class(int errorclass: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error class* from the known error classes.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Remove_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":121
 * 
 * 
 * def Add_error_code(int errorclass: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error code* to an *error class*.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_19Add_error_code(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_18Add_error_code, "Add_error_code(errorclass: int) -> int\n\n    Add an *error code* to an *error class*.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_19Add_error_code = {"Add_error_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_19Add_error_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_18Add_error_code};
static PyObject *__pyx_pw_6mpi4py_3MPI_19Add_error_code(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorclass;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Add_error_code (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorclass,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorclass)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 121, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Add_error_code") < 0)) __PYX_ERR(20, 121, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorclass = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorclass == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 121, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Add_error_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 121, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_18Add_error_code(__pyx_self, __pyx_v_errorclass);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_18Add_error_code(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorclass) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Add_error_code", 1);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":125
 *     Add an *error code* to an *error class*.
 *     """
 *     cdef int errorcode = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Add_error_code(errorclass, &errorcode) )
 *     return errorcode
 */
  __pyx_v_errorcode = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":126
 *     """
 *     cdef int errorcode = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_code(errorclass, &errorcode) )             # <<<<<<<<<<<<<<
 *     return errorcode
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Add_error_code(__pyx_v_errorclass, (&__pyx_v_errorcode))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 126, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":127
 *     cdef int errorcode = MPI_SUCCESS
 *     CHKERR( MPI_Add_error_code(errorclass, &errorcode) )
 *     return errorcode             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_errorcode); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":121
 * 
 * 
 * def Add_error_code(int errorclass: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error code* to an *error class*.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":130
 * 
 * 
 * def Remove_error_code(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error code* from the known error codes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_21Remove_error_code(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_20Remove_error_code, "Remove_error_code(errorcode: int) -> None\n\n    Remove an *error code* from the known error codes.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_21Remove_error_code = {"Remove_error_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_21Remove_error_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_20Remove_error_code};
static PyObject *__pyx_pw_6mpi4py_3MPI_21Remove_error_code(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Remove_error_code (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 130, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Remove_error_code") < 0)) __PYX_ERR(20, 130, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 130, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Remove_error_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 130, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Remove_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_20Remove_error_code(__pyx_self, __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_20Remove_error_code(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Remove_error_code", 1);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":134
 *     Remove an *error code* from the known error codes.
 *     """
 *     CHKERR( MPI_Remove_error_code(errorcode) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Remove_error_code(__pyx_v_errorcode)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 134, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":130
 * 
 * 
 * def Remove_error_code(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error code* from the known error codes.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Remove_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":137
 * 
 * 
 * def Add_error_string(int errorcode: int, string: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Associate an *error string* with an *error class* or *error code*.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_23Add_error_string(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_22Add_error_string, "Add_error_string(errorcode: int, string: str) -> None\n\n    Associate an *error string* with an *error class* or *error code*.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_23Add_error_string = {"Add_error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_23Add_error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_22Add_error_string};
static PyObject *__pyx_pw_6mpi4py_3MPI_23Add_error_string(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  PyObject *__pyx_v_string = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Add_error_string (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,&__pyx_n_s_string,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 137, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_string)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 137, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Add_error_string", 1, 2, 2, 1); __PYX_ERR(20, 137, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Add_error_string") < 0)) __PYX_ERR(20, 137, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 137, __pyx_L3_error)
    __pyx_v_string = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Add_error_string", 1, 2, 2, __pyx_nargs); __PYX_ERR(20, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_22Add_error_string(__pyx_self, __pyx_v_errorcode, __pyx_v_string);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_22Add_error_string(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode, PyObject *__pyx_v_string) {
  char *__pyx_v_cstring;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Add_error_string", 0);
  __Pyx_INCREF(__pyx_v_string);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":141
 *     Associate an *error string* with an *error class* or *error code*.
 *     """
 *     cdef char *cstring = NULL             # <<<<<<<<<<<<<<
 *     string = asmpistr(string, &cstring)
 *     CHKERR( MPI_Add_error_string(errorcode, cstring) )
 */
  __pyx_v_cstring = NULL;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":142
 *     """
 *     cdef char *cstring = NULL
 *     string = asmpistr(string, &cstring)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Add_error_string(errorcode, cstring) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_string, (&__pyx_v_cstring)); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_string, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":143
 *     cdef char *cstring = NULL
 *     string = asmpistr(string, &cstring)
 *     CHKERR( MPI_Add_error_string(errorcode, cstring) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Add_error_string(__pyx_v_errorcode, __pyx_v_cstring)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(20, 143, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":137
 * 
 * 
 * def Add_error_string(int errorcode: int, string: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Associate an *error string* with an *error class* or *error code*.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Add_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_string);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/ErrorCode.pyx":146
 * 
 * 
 * def Remove_error_string(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove *error string* association from *error class* or *error code*.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_25Remove_error_string(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_24Remove_error_string, "Remove_error_string(errorcode: int) -> None\n\n    Remove *error string* association from *error class* or *error code*.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_25Remove_error_string = {"Remove_error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_25Remove_error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_24Remove_error_string};
static PyObject *__pyx_pw_6mpi4py_3MPI_25Remove_error_string(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Remove_error_string (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 146, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Remove_error_string") < 0)) __PYX_ERR(20, 146, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(20, 146, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Remove_error_string", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 146, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Remove_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_24Remove_error_string(__pyx_self, __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_24Remove_error_string(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_errorcode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Remove_error_string", 1);

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":150
 *     Remove *error string* association from *error class* or *error code*.
 *     """
 *     CHKERR( MPI_Remove_error_string(errorcode) )             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Remove_error_string(__pyx_v_errorcode)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(20, 150, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":146
 * 
 * 
 * def Remove_error_string(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove *error string* association from *error class* or *error code*.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Remove_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":15
 *     cdef int ob_mpi
 * 
 *     def __cinit__(self, int ierr: int = 0):             # <<<<<<<<<<<<<<
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
 *         self.ob_mpi = ierr
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9Exception_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9Exception_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_ierr;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ierr,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ierr);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 15, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(21, 15, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_ierr = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_ierr == (int)-1) && PyErr_Occurred())) __PYX_ERR(21, 15, __pyx_L3_error)
    } else {
      __pyx_v_ierr = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(21, 15, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception___cinit__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self), __pyx_v_ierr);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9Exception___cinit__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self, int __pyx_v_ierr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":16
 * 
 *     def __cinit__(self, int ierr: int = 0):
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 *         self.ob_mpi = ierr
 *         RuntimeError.__init__(self, ierr)
 */
  __pyx_t_1 = (__pyx_v_ierr < MPI_SUCCESS);
  if (__pyx_t_1) {
    __pyx_v_ierr = MPI_ERR_UNKNOWN;
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":17
 *     def __cinit__(self, int ierr: int = 0):
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
 *         self.ob_mpi = ierr             # <<<<<<<<<<<<<<
 *         RuntimeError.__init__(self, ierr)
 * 
 */
  __pyx_v_self->ob_mpi = __pyx_v_ierr;

  /* "src/mpi4py/MPI.src/Exception.pyx":18
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
 *         self.ob_mpi = ierr
 *         RuntimeError.__init__(self, ierr)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Exception self, object error, int op):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError), __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":15
 *     cdef int ob_mpi
 * 
 *     def __cinit__(self, int ierr: int = 0):             # <<<<<<<<<<<<<<
 *         if ierr < MPI_SUCCESS: ierr = MPI_ERR_UNKNOWN
 *         self.ob_mpi = ierr
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":20
 *         RuntimeError.__init__(self, ierr)
 * 
 *     def __richcmp__(Exception self, object error, int op):             # <<<<<<<<<<<<<<
 *         cdef int ierr  = self.ob_mpi
 *         if op == Py_LT: return ierr <  error
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_error, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_error, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(((PyObject *)__pyx_v_self) == Py_None)) {
    PyErr_Format(PyExc_TypeError, "Argument '%.200s' must not be None", "self"); __PYX_ERR(21, 20, __pyx_L1_error)
  }
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_2__richcmp__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self), ((PyObject *)__pyx_v_error), ((int)__pyx_v_op));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_2__richcmp__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self, PyObject *__pyx_v_error, int __pyx_v_op) {
  int __pyx_v_ierr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  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;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":21
 * 
 *     def __richcmp__(Exception self, object error, int op):
 *         cdef int ierr  = self.ob_mpi             # <<<<<<<<<<<<<<
 *         if op == Py_LT: return ierr <  error
 *         if op == Py_LE: return ierr <= error
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_ierr = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Exception.pyx":22
 *     def __richcmp__(Exception self, object error, int op):
 *         cdef int ierr  = self.ob_mpi
 *         if op == Py_LT: return ierr <  error             # <<<<<<<<<<<<<<
 *         if op == Py_LE: return ierr <= error
 *         if op == Py_EQ: return ierr == error
 */
  __pyx_t_2 = (__pyx_v_op == Py_LT);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_error, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 22, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":23
 *         cdef int ierr  = self.ob_mpi
 *         if op == Py_LT: return ierr <  error
 *         if op == Py_LE: return ierr <= error             # <<<<<<<<<<<<<<
 *         if op == Py_EQ: return ierr == error
 *         if op == Py_NE: return ierr != error
 */
  __pyx_t_2 = (__pyx_v_op == Py_LE);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_v_error, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 23, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":24
 *         if op == Py_LT: return ierr <  error
 *         if op == Py_LE: return ierr <= error
 *         if op == Py_EQ: return ierr == error             # <<<<<<<<<<<<<<
 *         if op == Py_NE: return ierr != error
 *         if op == Py_GT: return ierr >  error
 */
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_error, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 24, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":25
 *         if op == Py_LE: return ierr <= error
 *         if op == Py_EQ: return ierr == error
 *         if op == Py_NE: return ierr != error             # <<<<<<<<<<<<<<
 *         if op == Py_GT: return ierr >  error
 *         if op == Py_GE: return ierr >= error
 */
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_v_error, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 25, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":26
 *         if op == Py_EQ: return ierr == error
 *         if op == Py_NE: return ierr != error
 *         if op == Py_GT: return ierr >  error             # <<<<<<<<<<<<<<
 *         if op == Py_GE: return ierr >= error
 * 
 */
  __pyx_t_2 = (__pyx_v_op == Py_GT);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_v_error, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 26, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":27
 *         if op == Py_NE: return ierr != error
 *         if op == Py_GT: return ierr >  error
 *         if op == Py_GE: return ierr >= error             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self) -> int:
 */
  __pyx_t_2 = (__pyx_v_op == Py_GE);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ierr); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_v_error, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 27, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":20
 *         RuntimeError.__init__(self, ierr)
 * 
 *     def __richcmp__(Exception self, object error, int op):             # <<<<<<<<<<<<<<
 *         cdef int ierr  = self.ob_mpi
 *         if op == Py_LT: return ierr <  error
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":29
 *         if op == Py_GE: return ierr >= error
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return hash(self.ob_mpi)
 * 
 */

/* Python wrapper */
static Py_hash_t __pyx_pw_6mpi4py_3MPI_9Exception_5__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_6mpi4py_3MPI_9Exception_5__hash__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_4__hash__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_hash_t __pyx_pf_6mpi4py_3MPI_9Exception_4__hash__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_hash_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__hash__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":30
 * 
 *     def __hash__(self) -> int:
 *         return hash(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(21, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":29
 *         if op == Py_GE: return ierr >= error
 * 
 *     def __hash__(self) -> int:             # <<<<<<<<<<<<<<
 *         return hash(self.ob_mpi)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":32
 *         return hash(self.ob_mpi)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_SUCCESS
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9Exception_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9Exception_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_6__bool__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9Exception_6__bool__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Exception.pyx":33
 * 
 *     def __bool__(self) -> bool:
 *         return self.ob_mpi != MPI_SUCCESS             # <<<<<<<<<<<<<<
 * 
 *     def __int__(self) -> int:
 */
  __pyx_r = (__pyx_v_self->ob_mpi != MPI_SUCCESS);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":32
 *         return hash(self.ob_mpi)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return self.ob_mpi != MPI_SUCCESS
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":35
 *         return self.ob_mpi != MPI_SUCCESS
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.ob_mpi
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_9__int__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_9__int__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__int__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_8__int__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_8__int__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__int__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":36
 * 
 *     def __int__(self) -> int:
 *         return self.ob_mpi             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->ob_mpi); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":35
 *         return self.ob_mpi != MPI_SUCCESS
 * 
 *     def __int__(self) -> int:             # <<<<<<<<<<<<<<
 *         return self.ob_mpi
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":38
 *         return self.ob_mpi
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return f"MPI.Exception({self.ob_mpi})"
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_11__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_11__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_10__repr__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10__repr__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_UCS4 __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":39
 * 
 *     def __repr__(self) -> str:
 *         return f"MPI.Exception({self.ob_mpi})"             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_3 = 127;
  __Pyx_INCREF(__pyx_kp_u_MPI_Exception);
  __pyx_t_2 += 14;
  __Pyx_GIVEREF(__pyx_kp_u_MPI_Exception);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_MPI_Exception);
  __pyx_t_4 = __Pyx_PyUnicode_From_int(__pyx_v_self->ob_mpi, 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
  __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_kp_u__17);
  __pyx_t_2 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__17);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__17);
  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":38
 *         return self.ob_mpi
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return f"MPI.Exception({self.ob_mpi})"
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":41
 *         return f"MPI.Exception({self.ob_mpi})"
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         if MPI_VERSION < 4 and not mpi_active():
 *             return f"error code: {self.ob_mpi}"  # ~> legacy
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_13__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_13__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_12__str__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12__str__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":42
 * 
 *     def __str__(self) -> str:
 *         if MPI_VERSION < 4 and not mpi_active():             # <<<<<<<<<<<<<<
 *             return f"error code: {self.ob_mpi}"  # ~> legacy
 *         return self.Get_error_string()
 */
  __pyx_t_2 = (MPI_VERSION < 4);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Exception.pyx":43
 *     def __str__(self) -> str:
 *         if MPI_VERSION < 4 and not mpi_active():
 *             return f"error code: {self.ob_mpi}"  # ~> legacy             # <<<<<<<<<<<<<<
 *         return self.Get_error_string()
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_self->ob_mpi, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_error_code, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Exception.pyx":42
 * 
 *     def __str__(self) -> str:
 *         if MPI_VERSION < 4 and not mpi_active():             # <<<<<<<<<<<<<<
 *             return f"error code: {self.ob_mpi}"  # ~> legacy
 *         return self.Get_error_string()
 */
  }

  /* "src/mpi4py/MPI.src/Exception.pyx":44
 *         if MPI_VERSION < 4 and not mpi_active():
 *             return f"error code: {self.ob_mpi}"  # ~> legacy
 *         return self.Get_error_string()             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_code(self) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_error_string); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":41
 *         return f"MPI.Exception({self.ob_mpi})"
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         if MPI_VERSION < 4 and not mpi_active():
 *             return f"error code: {self.ob_mpi}"  # ~> legacy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":46
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error code.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_15Get_error_code(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Exception_14Get_error_code, "Get_error_code(self) -> int\n\n        Error code.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_15Get_error_code = {"Get_error_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_15Get_error_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_14Get_error_code};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_15Get_error_code(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_error_code (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_error_code", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_error_code", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_14Get_error_code(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_14Get_error_code(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  int __pyx_v_errorcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_error_code", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":50
 *         Error code.
 *         """
 *         cdef int errorcode = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         errorcode = self.ob_mpi
 *         return errorcode
 */
  __pyx_v_errorcode = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/Exception.pyx":51
 *         """
 *         cdef int errorcode = MPI_SUCCESS
 *         errorcode = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return errorcode
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_errorcode = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Exception.pyx":52
 *         cdef int errorcode = MPI_SUCCESS
 *         errorcode = self.ob_mpi
 *         return errorcode             # <<<<<<<<<<<<<<
 * 
 *     property error_code:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_errorcode); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":46
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error code.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":56
 *     property error_code:
 *         """Error code."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_error_code()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_10error_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_10error_code_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_10error_code___get__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_10error_code___get__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":57
 *         """Error code."""
 *         def __get__(self) -> int:
 *             return self.Get_error_code()             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_class(self) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_error_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":56
 *     property error_code:
 *         """Error code."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_error_code()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.error_code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":59
 *             return self.Get_error_code()
 * 
 *     def Get_error_class(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error class.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_17Get_error_class(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Exception_16Get_error_class, "Get_error_class(self) -> int\n\n        Error class.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_17Get_error_class = {"Get_error_class", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_17Get_error_class, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_16Get_error_class};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_17Get_error_class(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_error_class (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_error_class", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_error_class", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_16Get_error_class(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_16Get_error_class(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  int __pyx_v_errorclass;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_error_class", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":63
 *         Error class.
 *         """
 *         cdef int errorclass = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )
 *         return errorclass
 */
  __pyx_v_errorclass = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/Exception.pyx":64
 *         """
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )             # <<<<<<<<<<<<<<
 *         return errorclass
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_class(__pyx_v_self->ob_mpi, (&__pyx_v_errorclass))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 64, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Exception.pyx":65
 *         cdef int errorclass = MPI_SUCCESS
 *         CHKERR( MPI_Error_class(self.ob_mpi, &errorclass) )
 *         return errorclass             # <<<<<<<<<<<<<<
 * 
 *     property error_class:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_errorclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":59
 *             return self.Get_error_code()
 * 
 *     def Get_error_class(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error class.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":69
 *     property error_class:
 *         """Error class."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_error_class()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_11error_class_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_11error_class_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_11error_class___get__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_11error_class___get__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":70
 *         """Error class."""
 *         def __get__(self) -> int:
 *             return self.Get_error_class()             # <<<<<<<<<<<<<<
 * 
 *     def Get_error_string(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_error_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":69
 *     property error_class:
 *         """Error class."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_error_class()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.error_class.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":72
 *             return self.Get_error_class()
 * 
 *     def Get_error_string(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Error string.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_19Get_error_string(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Exception_18Get_error_string, "Get_error_string(self) -> str\n\n        Error string.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Exception_19Get_error_string = {"Get_error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_19Get_error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_18Get_error_string};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_19Get_error_string(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_error_string (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_error_string", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_error_string", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_18Get_error_string(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_18Get_error_string(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  char __pyx_v_string[(MPI_MAX_ERROR_STRING + 1)];
  int __pyx_v_resultlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_error_string", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":77
 *         """
 *         cdef char string[MPI_MAX_ERROR_STRING+1]
 *         cdef int resultlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Error_string(self.ob_mpi, string, &resultlen) )
 *         return tompistr(string, resultlen)
 */
  __pyx_v_resultlen = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":78
 *         cdef char string[MPI_MAX_ERROR_STRING+1]
 *         cdef int resultlen = 0
 *         CHKERR( MPI_Error_string(self.ob_mpi, string, &resultlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(string, resultlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Error_string(__pyx_v_self->ob_mpi, __pyx_v_string, (&__pyx_v_resultlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(21, 78, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Exception.pyx":79
 *         cdef int resultlen = 0
 *         CHKERR( MPI_Error_string(self.ob_mpi, string, &resultlen) )
 *         return tompistr(string, resultlen)             # <<<<<<<<<<<<<<
 * 
 *     property error_string:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_string, __pyx_v_resultlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":72
 *             return self.Get_error_class()
 * 
 *     def Get_error_string(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Error string.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.Get_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Exception.pyx":83
 *     property error_string:
 *         """Error string."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_error_string()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_12error_string_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Exception_12error_string_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Exception_12error_string___get__(((struct __pyx_obj_6mpi4py_3MPI_Exception *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Exception_12error_string___get__(struct __pyx_obj_6mpi4py_3MPI_Exception *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Exception.pyx":84
 *         """Error string."""
 *         def __get__(self) -> str:
 *             return self.Get_error_string()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_error_string); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Exception.pyx":83
 *     property error_string:
 *         """Error string."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_error_string()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Exception.error_string.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":49
 *     """
 * 
 *     def __cinit__(self, Datatype datatype: Datatype | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, datatype)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_8Datatype_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_8Datatype_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIDatatypeObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 49, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(22, 49, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(22, 49, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 1, "datatype", 0))) __PYX_ERR(22, 49, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype___cinit__(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_8Datatype___cinit__(struct PyMPIDatatypeObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":50
 * 
 *     def __cinit__(self, Datatype datatype: Datatype | None = None):
 *         cinit(self, datatype)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_datatype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 50, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":49
 *     """
 * 
 *     def __cinit__(self, Datatype datatype: Datatype | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, datatype)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":52
 *         cinit(self, datatype)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_8Datatype_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_8Datatype_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_8Datatype_2__dealloc__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_8Datatype_2__dealloc__(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":53
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 53, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":52
 *         cinit(self, datatype)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Datatype.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":55
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Datatype): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_4__richcmp__(((struct PyMPIDatatypeObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4__richcmp__(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":56
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Datatype): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Datatype); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":57
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Datatype): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":55
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Datatype): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":59
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_8Datatype_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_8Datatype_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_6__bool__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_8Datatype_6__bool__(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Datatype.pyx":60
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":59
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":62
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Datatype(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_8__reduce__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8__reduce__(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":63
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_Datatype(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_reduce_Datatype(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":62
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Datatype(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":67
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_6handle___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6handle___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":68
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":67
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":70
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Datatype:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_10fromhandle, "fromhandle(cls, handle: int) -> Datatype\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 70, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(22, 70, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 70, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":75
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Datatype> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(22, 75, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Datatype)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":70
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Datatype:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":77
 *         return fromhandle(<MPI_Datatype> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_12free, "free(self) -> None\n\n        Call `Free` if not null or predefined.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_12free(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_12free(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":81
 *         Call `Free` if not null or predefined.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Accessors
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 81, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":77
 *         return fromhandle(<MPI_Datatype> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":86
 *     # ------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of bytes occupied by entries in the datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_15Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_14Get_size, "Get_size(self) -> int\n\n        Return the number of bytes occupied by entries in the datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_15Get_size = {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_15Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_14Get_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_15Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_14Get_size(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_14Get_size(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":90
 *         Return the number of bytes occupied by entries in the datatype.
 *         """
 *         cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":91
 *         """
 *         cdef MPI_Count size = 0
 *         CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_size_c(__pyx_v_self->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 91, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":92
 *         cdef MPI_Count size = 0
 *         CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":86
 *     # ------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of bytes occupied by entries in the datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":96
 *     property size:
 *         """Size (in bytes)."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count size = 0
 *             CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_4size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_4size___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4size___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":97
 *         """Size (in bytes)."""
 *         def __get__(self) -> int:
 *             cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )
 *             return size
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":98
 *         def __get__(self) -> int:
 *             cdef MPI_Count size = 0
 *             CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *             return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_size_c(__pyx_v_self->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 98, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":99
 *             cdef MPI_Count size = 0
 *             CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )
 *             return size             # <<<<<<<<<<<<<<
 * 
 *     def Get_extent(self) -> tuple[int, int]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":96
 *     property size:
 *         """Size (in bytes)."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count size = 0
 *             CHKERR( MPI_Type_size_c(self.ob_mpi, &size) )
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":101
 *             return size
 * 
 *     def Get_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return lower bound and extent of datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_17Get_extent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_16Get_extent, "Get_extent(self) -> tuple[int, int]\n\n        Return lower bound and extent of datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_17Get_extent = {"Get_extent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_17Get_extent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_16Get_extent};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_17Get_extent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_extent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_extent", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_extent", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_16Get_extent(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_16Get_extent(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_extent", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":105
 *         Return lower bound and extent of datatype.
 *         """
 *         cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         return (lb, extent)
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":106
 *         """
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         return (lb, extent)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 106, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":107
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         return (lb, extent)             # <<<<<<<<<<<<<<
 * 
 *     property extent:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(22, 107, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(22, 107, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":101
 *             return size
 * 
 *     def Get_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return lower bound and extent of datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":111
 *     property extent:
 *         """Extent."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_6extent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_6extent_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_6extent___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_6extent___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":112
 *         """Extent."""
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *             return extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":113
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return extent
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 113, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":114
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *             return extent             # <<<<<<<<<<<<<<
 * 
 *     property lb:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":111
 *     property extent:
 *         """Extent."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.extent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":118
 *     property lb:
 *         """Lower bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_2lb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_2lb_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_2lb___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2lb___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":119
 *         """Lower bound."""
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *             return lb
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":120
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return lb
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 120, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":121
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *             return lb             # <<<<<<<<<<<<<<
 * 
 *     property ub:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":118
 *     property lb:
 *         """Lower bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.lb.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":125
 *     property ub:
 *         """Upper bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_2ub_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_2ub_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_2ub___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_2ub___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":126
 *         """Upper bound."""
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *             return lb + extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":127
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *             return lb + extent
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 127, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":128
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *             return lb + extent             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":125
 *     property ub:
 *         """Upper bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.ub.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":133
 *     # ---------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_19Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_18Dup, "Dup(self) -> Self\n\n        Duplicate a datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_19Dup = {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_19Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_18Dup};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_19Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Dup (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_18Dup(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_18Dup(struct PyMPIDatatypeObject *__pyx_v_self) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":137
 *         Duplicate a datatype.
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":138
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_dup(__pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 138, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":139
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_dup(self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     Create_dup = Dup  #: convenience alias
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":133
 *     # ---------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":143
 *     Create_dup = Dup  #: convenience alias
 * 
 *     def Create_contiguous(self, Count count: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a contiguous datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_21Create_contiguous(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_20Create_contiguous, "Create_contiguous(self, count: int) -> Self\n\n        Create a contiguous datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_21Create_contiguous = {"Create_contiguous", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_21Create_contiguous, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_20Create_contiguous};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_21Create_contiguous(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Count __pyx_v_count;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_contiguous (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_count,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_count)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 143, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_contiguous") < 0)) __PYX_ERR(22, 143, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_count = __Pyx_PyInt_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 143, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_contiguous", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 143, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_contiguous", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_20Create_contiguous(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_count);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_20Create_contiguous(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_contiguous", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":147
 *         Create a contiguous datatype.
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_contiguous_c(
 *             count,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":148
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_contiguous_c(             # <<<<<<<<<<<<<<
 *             count,
 *             self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_contiguous_c(__pyx_v_count, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 148, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":151
 *             count,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_vector(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":143
 *     Create_dup = Dup  #: convenience alias
 * 
 *     def Create_contiguous(self, Count count: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a contiguous datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_contiguous", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":153
 *         return datatype
 * 
 *     def Create_vector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_23Create_vector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_22Create_vector, "Create_vector(self, count: int, blocklength: int, stride: int) -> Self\n\n        Create a vector (strided) datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_23Create_vector = {"Create_vector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_23Create_vector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_22Create_vector};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_23Create_vector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Count __pyx_v_count;
  MPI_Count __pyx_v_blocklength;
  MPI_Count __pyx_v_stride;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_vector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_count,&__pyx_n_s_blocklength,&__pyx_n_s_stride,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_count)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 153, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blocklength)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 153, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, 1); __PYX_ERR(22, 153, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stride)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 153, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, 2); __PYX_ERR(22, 153, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_vector") < 0)) __PYX_ERR(22, 153, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_count = __Pyx_PyInt_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 155, __pyx_L3_error)
    __pyx_v_blocklength = __Pyx_PyInt_As_MPI_Count(values[1]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 156, __pyx_L3_error)
    __pyx_v_stride = __Pyx_PyInt_As_MPI_Count(values[2]); if (unlikely((__pyx_v_stride == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 157, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_vector", 1, 3, 3, __pyx_nargs); __PYX_ERR(22, 153, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_vector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_22Create_vector(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_count, __pyx_v_blocklength, __pyx_v_stride);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_22Create_vector(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count, MPI_Count __pyx_v_blocklength, MPI_Count __pyx_v_stride) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_vector", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":162
 *         Create a vector (strided) datatype.
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_vector_c(
 *             count, blocklength, stride,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":163
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_vector_c(             # <<<<<<<<<<<<<<
 *             count, blocklength, stride,
 *             self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_vector_c(__pyx_v_count, __pyx_v_blocklength, __pyx_v_stride, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 163, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":166
 *             count, blocklength, stride,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_hvector(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":153
 *         return datatype
 * 
 *     def Create_vector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_vector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":168
 *         return datatype
 * 
 *     def Create_hvector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_25Create_hvector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_24Create_hvector, "Create_hvector(self, count: int, blocklength: int, stride: int) -> Self\n\n        Create a vector (strided) datatype with stride in bytes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_25Create_hvector = {"Create_hvector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_25Create_hvector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_24Create_hvector};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_25Create_hvector(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Count __pyx_v_count;
  MPI_Count __pyx_v_blocklength;
  MPI_Count __pyx_v_stride;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_hvector (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_count,&__pyx_n_s_blocklength,&__pyx_n_s_stride,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_count)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 168, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blocklength)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 168, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, 1); __PYX_ERR(22, 168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stride)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 168, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, 2); __PYX_ERR(22, 168, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_hvector") < 0)) __PYX_ERR(22, 168, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_count = __Pyx_PyInt_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 170, __pyx_L3_error)
    __pyx_v_blocklength = __Pyx_PyInt_As_MPI_Count(values[1]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 171, __pyx_L3_error)
    __pyx_v_stride = __Pyx_PyInt_As_MPI_Count(values[2]); if (unlikely((__pyx_v_stride == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 172, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_hvector", 1, 3, 3, __pyx_nargs); __PYX_ERR(22, 168, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hvector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_24Create_hvector(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_count, __pyx_v_blocklength, __pyx_v_stride);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_24Create_hvector(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count, MPI_Count __pyx_v_blocklength, MPI_Count __pyx_v_stride) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_hvector", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":177
 *         Create a vector (strided) datatype with stride in bytes.
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_hvector_c(
 *             count, blocklength, stride,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":178
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_create_hvector_c(             # <<<<<<<<<<<<<<
 *             count, blocklength, stride,
 *             self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_hvector_c(__pyx_v_count, __pyx_v_blocklength, __pyx_v_stride, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 178, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":181
 *             count, blocklength, stride,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_indexed(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":168
 *         return datatype
 * 
 *     def Create_hvector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hvector", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":183
 *         return datatype
 * 
 *     def Create_indexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_27Create_indexed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_26Create_indexed, "Create_indexed(self, blocklengths: Sequence[int], displacements: Sequence[int]) -> Self\n\n        Create an indexed datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_27Create_indexed = {"Create_indexed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_27Create_indexed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_26Create_indexed};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_27Create_indexed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_blocklengths = 0;
  PyObject *__pyx_v_displacements = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_indexed (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocklengths,&__pyx_n_s_displacements,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blocklengths)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 183, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_displacements)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 183, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_indexed", 1, 2, 2, 1); __PYX_ERR(22, 183, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_indexed") < 0)) __PYX_ERR(22, 183, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_indexed", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_26Create_indexed(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_blocklengths, __pyx_v_displacements);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_26Create_indexed(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_blocklengths, PyObject *__pyx_v_displacements) {
  MPI_Count __pyx_v_count;
  MPI_Count *__pyx_v_iblen;
  MPI_Count *__pyx_v_idisp;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_indexed", 0);
  __Pyx_INCREF(__pyx_v_blocklengths);
  __Pyx_INCREF(__pyx_v_displacements);

  /* "src/mpi4py/MPI.src/Datatype.pyx":191
 *         Create an indexed datatype.
 *         """
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL             # <<<<<<<<<<<<<<
 *         blocklengths  = getarray(blocklengths,  &count, &iblen)
 *         displacements = chkarray(displacements,  count, &idisp)
 */
  __pyx_v_count = 0;
  __pyx_v_iblen = NULL;
  __pyx_v_idisp = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":192
 *         """
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL
 *         blocklengths  = getarray(blocklengths,  &count, &iblen)             # <<<<<<<<<<<<<<
 *         displacements = chkarray(displacements,  count, &idisp)
 *         #
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_blocklengths, (&__pyx_v_count), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_blocklengths, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":193
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL
 *         blocklengths  = getarray(blocklengths,  &count, &iblen)
 *         displacements = chkarray(displacements,  count, &idisp)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_displacements, __pyx_v_count, (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_displacements, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":195
 *         displacements = chkarray(displacements,  count, &idisp)
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_indexed_c(
 *             count, iblen, idisp,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":196
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_indexed_c(             # <<<<<<<<<<<<<<
 *             count, iblen, idisp,
 *             self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_indexed_c(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 196, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":199
 *             count, iblen, idisp,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_hindexed(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":183
 *         return datatype
 * 
 *     def Create_indexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_blocklengths);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":201
 *         return datatype
 * 
 *     def Create_hindexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_29Create_hindexed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_28Create_hindexed, "Create_hindexed(self, blocklengths: Sequence[int], displacements: Sequence[int]) -> Self\n\n        Create an indexed datatype.\n\n        .. note:: Displacements are measured in bytes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_29Create_hindexed = {"Create_hindexed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_29Create_hindexed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_28Create_hindexed};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_29Create_hindexed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_blocklengths = 0;
  PyObject *__pyx_v_displacements = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_hindexed (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocklengths,&__pyx_n_s_displacements,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blocklengths)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 201, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_displacements)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 201, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_hindexed", 1, 2, 2, 1); __PYX_ERR(22, 201, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_hindexed") < 0)) __PYX_ERR(22, 201, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_hindexed", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_28Create_hindexed(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_blocklengths, __pyx_v_displacements);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_28Create_hindexed(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_blocklengths, PyObject *__pyx_v_displacements) {
  MPI_Count __pyx_v_count;
  MPI_Count *__pyx_v_iblen;
  MPI_Count *__pyx_v_idisp;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_hindexed", 0);
  __Pyx_INCREF(__pyx_v_blocklengths);
  __Pyx_INCREF(__pyx_v_displacements);

  /* "src/mpi4py/MPI.src/Datatype.pyx":211
 *         .. note:: Displacements are measured in bytes.
 *         """
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL             # <<<<<<<<<<<<<<
 *         blocklengths = getarray(blocklengths, &count, &iblen)
 *         displacements = chkarray(displacements, count, &idisp)
 */
  __pyx_v_count = 0;
  __pyx_v_iblen = NULL;
  __pyx_v_idisp = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":212
 *         """
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL
 *         blocklengths = getarray(blocklengths, &count, &iblen)             # <<<<<<<<<<<<<<
 *         displacements = chkarray(displacements, count, &idisp)
 *         #
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_blocklengths, (&__pyx_v_count), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_blocklengths, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":213
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL
 *         blocklengths = getarray(blocklengths, &count, &iblen)
 *         displacements = chkarray(displacements, count, &idisp)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_displacements, __pyx_v_count, (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_displacements, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":215
 *         displacements = chkarray(displacements, count, &idisp)
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_hindexed_c(
 *             count, iblen, idisp,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":216
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_create_hindexed_c(             # <<<<<<<<<<<<<<
 *             count, iblen, idisp,
 *             self.ob_mpi,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_hindexed_c(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 216, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":220
 *             self.ob_mpi,
 *             &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_indexed_block(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":201
 *         return datatype
 * 
 *     def Create_hindexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_blocklengths);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":222
 *         return datatype
 * 
 *     def Create_indexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_31Create_indexed_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_30Create_indexed_block, "Create_indexed_block(self, blocklength: int, displacements: Sequence[int]) -> Self\n\n        Create an indexed datatype with constant-sized blocks.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_31Create_indexed_block = {"Create_indexed_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_31Create_indexed_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_30Create_indexed_block};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_31Create_indexed_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Count __pyx_v_blocklength;
  PyObject *__pyx_v_displacements = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_indexed_block (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocklength,&__pyx_n_s_displacements,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blocklength)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 222, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_displacements)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 222, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_indexed_block", 1, 2, 2, 1); __PYX_ERR(22, 222, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_indexed_block") < 0)) __PYX_ERR(22, 222, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_blocklength = __Pyx_PyInt_As_MPI_Count(values[0]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 224, __pyx_L3_error)
    __pyx_v_displacements = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_indexed_block", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 222, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_30Create_indexed_block(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_blocklength, __pyx_v_displacements);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_30Create_indexed_block(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_blocklength, PyObject *__pyx_v_displacements) {
  MPI_Count __pyx_v_count;
  MPI_Count *__pyx_v_idisp;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_indexed_block", 0);
  __Pyx_INCREF(__pyx_v_displacements);

  /* "src/mpi4py/MPI.src/Datatype.pyx":230
 *         Create an indexed datatype with constant-sized blocks.
 *         """
 *         cdef Count count = 0, *idisp = NULL             # <<<<<<<<<<<<<<
 *         displacements = getarray(displacements, &count, &idisp)
 *         #
 */
  __pyx_v_count = 0;
  __pyx_v_idisp = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":231
 *         """
 *         cdef Count count = 0, *idisp = NULL
 *         displacements = getarray(displacements, &count, &idisp)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_displacements, (&__pyx_v_count), (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_displacements, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":233
 *         displacements = getarray(displacements, &count, &idisp)
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_indexed_block_c(
 *             count, blocklength, idisp,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":234
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_create_indexed_block_c(             # <<<<<<<<<<<<<<
 *             count, blocklength, idisp,
 *             self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_indexed_block_c(__pyx_v_count, __pyx_v_blocklength, __pyx_v_idisp, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 234, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":237
 *             count, blocklength, idisp,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     def Create_hindexed_block(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":222
 *         return datatype
 * 
 *     def Create_indexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_indexed_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":239
 *         return datatype
 * 
 *     def Create_hindexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_33Create_hindexed_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_32Create_hindexed_block, "Create_hindexed_block(self, blocklength: int, displacements: Sequence[int]) -> Self\n\n        Create an indexed datatype with constant-sized blocks.\n\n        .. note:: Displacements are measured in bytes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_33Create_hindexed_block = {"Create_hindexed_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_33Create_hindexed_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_32Create_hindexed_block};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_33Create_hindexed_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Count __pyx_v_blocklength;
  PyObject *__pyx_v_displacements = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_hindexed_block (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocklength,&__pyx_n_s_displacements,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blocklength)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 239, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_displacements)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 239, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_hindexed_block", 1, 2, 2, 1); __PYX_ERR(22, 239, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_hindexed_block") < 0)) __PYX_ERR(22, 239, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_blocklength = __Pyx_PyInt_As_MPI_Count(values[0]); if (unlikely((__pyx_v_blocklength == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 241, __pyx_L3_error)
    __pyx_v_displacements = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_hindexed_block", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 239, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_32Create_hindexed_block(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_blocklength, __pyx_v_displacements);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_32Create_hindexed_block(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_blocklength, PyObject *__pyx_v_displacements) {
  MPI_Count __pyx_v_count;
  MPI_Count *__pyx_v_idisp;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_hindexed_block", 0);
  __Pyx_INCREF(__pyx_v_displacements);

  /* "src/mpi4py/MPI.src/Datatype.pyx":249
 *         .. note:: Displacements are measured in bytes.
 *         """
 *         cdef MPI_Count count = 0, *idisp = NULL             # <<<<<<<<<<<<<<
 *         displacements = getarray(displacements, &count, &idisp)
 *         #
 */
  __pyx_v_count = 0;
  __pyx_v_idisp = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":250
 *         """
 *         cdef MPI_Count count = 0, *idisp = NULL
 *         displacements = getarray(displacements, &count, &idisp)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_displacements, (&__pyx_v_count), (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_displacements, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":252
 *         displacements = getarray(displacements, &count, &idisp)
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_hindexed_block_c(
 *             count, blocklength, idisp,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":253
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_create_hindexed_block_c(             # <<<<<<<<<<<<<<
 *             count, blocklength, idisp,
 *             self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_hindexed_block_c(__pyx_v_count, __pyx_v_blocklength, __pyx_v_idisp, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 253, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":256
 *             count, blocklength, idisp,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":239
 *         return datatype
 * 
 *     def Create_hindexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_hindexed_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":258
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_struct(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_35Create_struct(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_34Create_struct, "Create_struct(cls, blocklengths: Sequence[int], displacements: Sequence[int], datatypes: Sequence[Datatype]) -> Self\n\n        Create a general composite (struct) datatype.\n\n        .. note:: Displacements are measured in bytes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_35Create_struct = {"Create_struct", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_35Create_struct, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_34Create_struct};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_35Create_struct(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_blocklengths = 0;
  PyObject *__pyx_v_displacements = 0;
  PyObject *__pyx_v_datatypes = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_struct (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocklengths,&__pyx_n_s_displacements,&__pyx_n_s_datatypes,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_blocklengths)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 258, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_displacements)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 258, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, 1); __PYX_ERR(22, 258, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatypes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 258, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, 2); __PYX_ERR(22, 258, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_struct") < 0)) __PYX_ERR(22, 258, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_blocklengths = values[0];
    __pyx_v_displacements = values[1];
    __pyx_v_datatypes = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_struct", 1, 3, 3, __pyx_nargs); __PYX_ERR(22, 258, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_struct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_34Create_struct(((PyTypeObject*)__pyx_v_cls), __pyx_v_blocklengths, __pyx_v_displacements, __pyx_v_datatypes);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_34Create_struct(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_blocklengths, PyObject *__pyx_v_displacements, PyObject *__pyx_v_datatypes) {
  MPI_Count __pyx_v_count;
  MPI_Count *__pyx_v_iblen;
  MPI_Count *__pyx_v_idisp;
  MPI_Datatype *__pyx_v_ptype;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_struct", 0);
  __Pyx_INCREF(__pyx_v_blocklengths);
  __Pyx_INCREF(__pyx_v_displacements);
  __Pyx_INCREF(__pyx_v_datatypes);

  /* "src/mpi4py/MPI.src/Datatype.pyx":270
 *         .. note:: Displacements are measured in bytes.
 *         """
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype *ptype = NULL
 *         blocklengths = getarray(blocklengths, &count, &iblen)
 */
  __pyx_v_count = 0;
  __pyx_v_iblen = NULL;
  __pyx_v_idisp = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":271
 *         """
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL
 *         cdef MPI_Datatype *ptype = NULL             # <<<<<<<<<<<<<<
 *         blocklengths = getarray(blocklengths, &count, &iblen)
 *         displacements = chkarray(displacements, count, &idisp)
 */
  __pyx_v_ptype = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":272
 *         cdef MPI_Count count = 0, *iblen = NULL, *idisp = NULL
 *         cdef MPI_Datatype *ptype = NULL
 *         blocklengths = getarray(blocklengths, &count, &iblen)             # <<<<<<<<<<<<<<
 *         displacements = chkarray(displacements, count, &idisp)
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_blocklengths, (&__pyx_v_count), (&__pyx_v_iblen)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_blocklengths, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":273
 *         cdef MPI_Datatype *ptype = NULL
 *         blocklengths = getarray(blocklengths, &count, &iblen)
 *         displacements = chkarray(displacements, count, &idisp)             # <<<<<<<<<<<<<<
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)
 *         #
 */
  __pyx_t_1 = __pyx_fuse_1_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_displacements, __pyx_v_count, (&__pyx_v_idisp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_displacements, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":274
 *         blocklengths = getarray(blocklengths, &count, &iblen)
 *         displacements = chkarray(displacements, count, &idisp)
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>New(cls)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asarray_Datatype(__pyx_v_datatypes, __pyx_v_count, (&__pyx_v_ptype)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_datatypes, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":276
 *         datatypes = asarray_Datatype(datatypes, count, &ptype)
 *         #
 *         cdef Datatype datatype = <Datatype>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_struct_c(
 *             count, iblen, idisp, ptype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":277
 *         #
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_create_struct_c(             # <<<<<<<<<<<<<<
 *             count, iblen, idisp, ptype,
 *             &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_struct_c(__pyx_v_count, __pyx_v_iblen, __pyx_v_idisp, __pyx_v_ptype, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 277, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":280
 *             count, iblen, idisp, ptype,
 *             &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Subarray Datatype Constructor
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":258
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_struct(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_struct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_blocklengths);
  __Pyx_XDECREF(__pyx_v_displacements);
  __Pyx_XDECREF(__pyx_v_datatypes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":285
 *     # -----------------------------
 * 
 *     def Create_subarray(             # <<<<<<<<<<<<<<
 *         self,
 *         sizes: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_37Create_subarray(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_36Create_subarray, "Create_subarray(self, sizes: Sequence[int], subsizes: Sequence[int], starts: Sequence[int], order: int = ORDER_C) -> Self\n\n        Create a datatype for a subarray of a multidimensional array.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_37Create_subarray = {"Create_subarray", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_37Create_subarray, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_36Create_subarray};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_37Create_subarray(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sizes = 0;
  PyObject *__pyx_v_subsizes = 0;
  PyObject *__pyx_v_starts = 0;
  int __pyx_v_order;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_subarray (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sizes,&__pyx_n_s_subsizes,&__pyx_n_s_starts,&__pyx_n_s_order,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sizes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 285, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_subsizes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 285, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, 1); __PYX_ERR(22, 285, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_starts)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 285, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, 2); __PYX_ERR(22, 285, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_order);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 285, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_subarray") < 0)) __PYX_ERR(22, 285, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sizes = values[0];
    __pyx_v_subsizes = values[1];
    __pyx_v_starts = values[2];
    if (values[3]) {
      __pyx_v_order = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 290, __pyx_L3_error)
    } else {
      __pyx_v_order = __pyx_k__65;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_subarray", 0, 3, 4, __pyx_nargs); __PYX_ERR(22, 285, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_subarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_36Create_subarray(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_sizes, __pyx_v_subsizes, __pyx_v_starts, __pyx_v_order);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_36Create_subarray(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_sizes, PyObject *__pyx_v_subsizes, PyObject *__pyx_v_starts, int __pyx_v_order) {
  int __pyx_v_ndims;
  MPI_Count *__pyx_v_isizes;
  MPI_Count *__pyx_v_isubsizes;
  MPI_Count *__pyx_v_istarts;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_subarray", 0);
  __Pyx_INCREF(__pyx_v_sizes);
  __Pyx_INCREF(__pyx_v_subsizes);
  __Pyx_INCREF(__pyx_v_starts);

  /* "src/mpi4py/MPI.src/Datatype.pyx":295
 *         Create a datatype for a subarray of a multidimensional array.
 *         """
 *         cdef int ndims = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Count *isizes = NULL
 *         cdef MPI_Count *isubsizes = NULL
 */
  __pyx_v_ndims = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":296
 *         """
 *         cdef int ndims = 0
 *         cdef MPI_Count *isizes = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count *isubsizes = NULL
 *         cdef MPI_Count *istarts = NULL
 */
  __pyx_v_isizes = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":297
 *         cdef int ndims = 0
 *         cdef MPI_Count *isizes = NULL
 *         cdef MPI_Count *isubsizes = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count *istarts = NULL
 *         sizes    = getarray(sizes,   &ndims, &isizes   )
 */
  __pyx_v_isubsizes = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":298
 *         cdef MPI_Count *isizes = NULL
 *         cdef MPI_Count *isubsizes = NULL
 *         cdef MPI_Count *istarts = NULL             # <<<<<<<<<<<<<<
 *         sizes    = getarray(sizes,   &ndims, &isizes   )
 *         subsizes = chkarray(subsizes, ndims, &isubsizes)
 */
  __pyx_v_istarts = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":299
 *         cdef MPI_Count *isubsizes = NULL
 *         cdef MPI_Count *istarts = NULL
 *         sizes    = getarray(sizes,   &ndims, &isizes   )             # <<<<<<<<<<<<<<
 *         subsizes = chkarray(subsizes, ndims, &isubsizes)
 *         starts   = chkarray(starts,   ndims, &istarts  )
 */
  __pyx_t_1 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_sizes, (&__pyx_v_ndims), (&__pyx_v_isizes)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_sizes, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":300
 *         cdef MPI_Count *istarts = NULL
 *         sizes    = getarray(sizes,   &ndims, &isizes   )
 *         subsizes = chkarray(subsizes, ndims, &isubsizes)             # <<<<<<<<<<<<<<
 *         starts   = chkarray(starts,   ndims, &istarts  )
 *         #
 */
  __pyx_t_1 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_subsizes, __pyx_v_ndims, (&__pyx_v_isubsizes)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_subsizes, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":301
 *         sizes    = getarray(sizes,   &ndims, &isizes   )
 *         subsizes = chkarray(subsizes, ndims, &isubsizes)
 *         starts   = chkarray(starts,   ndims, &istarts  )             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 */
  __pyx_t_1 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_starts, __pyx_v_ndims, (&__pyx_v_istarts)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_starts, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":303
 *         starts   = chkarray(starts,   ndims, &istarts  )
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_subarray_c(
 *             ndims, isizes, isubsizes, istarts, order,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":304
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_create_subarray_c(             # <<<<<<<<<<<<<<
 *             ndims, isizes, isubsizes, istarts, order,
 *             self.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_subarray_c(__pyx_v_ndims, __pyx_v_isizes, __pyx_v_isubsizes, __pyx_v_istarts, __pyx_v_order, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":307
 *             ndims, isizes, isubsizes, istarts, order,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Distributed Array Datatype Constructor
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":285
 *     # -----------------------------
 * 
 *     def Create_subarray(             # <<<<<<<<<<<<<<
 *         self,
 *         sizes: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_subarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_sizes);
  __Pyx_XDECREF(__pyx_v_subsizes);
  __Pyx_XDECREF(__pyx_v_starts);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":312
 *     # --------------------------------------
 * 
 *     def Create_darray(             # <<<<<<<<<<<<<<
 *         self,
 *         int size: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_39Create_darray(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_38Create_darray, "Create_darray(self, size: int, rank: int, gsizes: Sequence[int], distribs: Sequence[int], dargs: Sequence[int], psizes: Sequence[int], order: int = ORDER_C) -> Self\n\n        Create a datatype for a distributed array on Cartesian process grids.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_39Create_darray = {"Create_darray", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_39Create_darray, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_38Create_darray};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_39Create_darray(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_size;
  int __pyx_v_rank;
  PyObject *__pyx_v_gsizes = 0;
  PyObject *__pyx_v_distribs = 0;
  PyObject *__pyx_v_dargs = 0;
  PyObject *__pyx_v_psizes = 0;
  int __pyx_v_order;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[7] = {0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_darray (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_size_2,&__pyx_n_s_rank,&__pyx_n_s_gsizes,&__pyx_n_s_distribs,&__pyx_n_s_dargs,&__pyx_n_s_psizes,&__pyx_n_s_order,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 312, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 312, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 1); __PYX_ERR(22, 312, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_gsizes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 312, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 2); __PYX_ERR(22, 312, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_distribs)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 312, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 3); __PYX_ERR(22, 312, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dargs)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 312, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 4); __PYX_ERR(22, 312, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_psizes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 312, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, 5); __PYX_ERR(22, 312, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_order);
          if (value) { values[6] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 312, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_darray") < 0)) __PYX_ERR(22, 312, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 314, __pyx_L3_error)
    __pyx_v_rank = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 315, __pyx_L3_error)
    __pyx_v_gsizes = values[2];
    __pyx_v_distribs = values[3];
    __pyx_v_dargs = values[4];
    __pyx_v_psizes = values[5];
    if (values[6]) {
      __pyx_v_order = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 320, __pyx_L3_error)
    } else {
      __pyx_v_order = __pyx_k__66;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_darray", 0, 6, 7, __pyx_nargs); __PYX_ERR(22, 312, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_darray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_38Create_darray(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_size, __pyx_v_rank, __pyx_v_gsizes, __pyx_v_distribs, __pyx_v_dargs, __pyx_v_psizes, __pyx_v_order);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_38Create_darray(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_size, int __pyx_v_rank, PyObject *__pyx_v_gsizes, PyObject *__pyx_v_distribs, PyObject *__pyx_v_dargs, PyObject *__pyx_v_psizes, int __pyx_v_order) {
  int __pyx_v_ndims;
  MPI_Count *__pyx_v_igsizes;
  int *__pyx_v_idistribs;
  int *__pyx_v_idargs;
  int *__pyx_v_ipsizes;
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_darray", 0);
  __Pyx_INCREF(__pyx_v_gsizes);
  __Pyx_INCREF(__pyx_v_distribs);
  __Pyx_INCREF(__pyx_v_dargs);
  __Pyx_INCREF(__pyx_v_psizes);

  /* "src/mpi4py/MPI.src/Datatype.pyx":325
 *         Create a datatype for a distributed array on Cartesian process grids.
 *         """
 *         cdef int ndims = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Count *igsizes = NULL
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL
 */
  __pyx_v_ndims = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":326
 *         """
 *         cdef int ndims = 0
 *         cdef MPI_Count *igsizes = NULL             # <<<<<<<<<<<<<<
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL
 *         gsizes   = getarray(gsizes,  &ndims, &igsizes   )
 */
  __pyx_v_igsizes = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":327
 *         cdef int ndims = 0
 *         cdef MPI_Count *igsizes = NULL
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL             # <<<<<<<<<<<<<<
 *         gsizes   = getarray(gsizes,  &ndims, &igsizes   )
 *         distribs = chkarray(distribs, ndims, &idistribs )
 */
  __pyx_v_idistribs = NULL;
  __pyx_v_idargs = NULL;
  __pyx_v_ipsizes = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":328
 *         cdef MPI_Count *igsizes = NULL
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL
 *         gsizes   = getarray(gsizes,  &ndims, &igsizes   )             # <<<<<<<<<<<<<<
 *         distribs = chkarray(distribs, ndims, &idistribs )
 *         dargs    = chkarray(dargs,    ndims, &idargs    )
 */
  __pyx_t_1 = __pyx_fuse_0_2__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_gsizes, (&__pyx_v_ndims), (&__pyx_v_igsizes)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_gsizes, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":329
 *         cdef int *idistribs = NULL, *idargs = NULL, *ipsizes = NULL
 *         gsizes   = getarray(gsizes,  &ndims, &igsizes   )
 *         distribs = chkarray(distribs, ndims, &idistribs )             # <<<<<<<<<<<<<<
 *         dargs    = chkarray(dargs,    ndims, &idargs    )
 *         psizes   = chkarray(psizes,   ndims, &ipsizes   )
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_distribs, __pyx_v_ndims, (&__pyx_v_idistribs)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_distribs, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":330
 *         gsizes   = getarray(gsizes,  &ndims, &igsizes   )
 *         distribs = chkarray(distribs, ndims, &idistribs )
 *         dargs    = chkarray(dargs,    ndims, &idargs    )             # <<<<<<<<<<<<<<
 *         psizes   = chkarray(psizes,   ndims, &ipsizes   )
 *         #
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_dargs, __pyx_v_ndims, (&__pyx_v_idargs)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_dargs, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":331
 *         distribs = chkarray(distribs, ndims, &idistribs )
 *         dargs    = chkarray(dargs,    ndims, &idargs    )
 *         psizes   = chkarray(psizes,   ndims, &ipsizes   )             # <<<<<<<<<<<<<<
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_psizes, __pyx_v_ndims, (&__pyx_v_ipsizes)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_psizes, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":333
 *         psizes   = chkarray(psizes,   ndims, &ipsizes   )
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_darray_c(
 *             size, rank, ndims, igsizes,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":334
 *         #
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_create_darray_c(             # <<<<<<<<<<<<<<
 *             size, rank, ndims, igsizes,
 *             idistribs, idargs, ipsizes, order,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_darray_c(__pyx_v_size, __pyx_v_rank, __pyx_v_ndims, __pyx_v_igsizes, __pyx_v_idistribs, __pyx_v_idargs, __pyx_v_ipsizes, __pyx_v_order, __pyx_v_self->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 334, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":338
 *             idistribs, idargs, ipsizes, order,
 *             self.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Pair Datatype
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":312
 *     # --------------------------------------
 * 
 *     def Create_darray(             # <<<<<<<<<<<<<<
 *         self,
 *         int size: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_darray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XDECREF(__pyx_v_gsizes);
  __Pyx_XDECREF(__pyx_v_distribs);
  __Pyx_XDECREF(__pyx_v_dargs);
  __Pyx_XDECREF(__pyx_v_psizes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":343
 *     # -------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_value_index(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_41Get_value_index(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_40Get_value_index, "Get_value_index(cls, value: Datatype, index: Datatype) -> Self\n\n        Return a predefined pair datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_41Get_value_index = {"Get_value_index", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_41Get_value_index, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_40Get_value_index};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_41Get_value_index(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_value = 0;
  struct PyMPIDatatypeObject *__pyx_v_index = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_value_index (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,&__pyx_n_s_index,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 343, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 343, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Get_value_index", 1, 2, 2, 1); __PYX_ERR(22, 343, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_value_index") < 0)) __PYX_ERR(22, 343, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_value = ((struct PyMPIDatatypeObject *)values[0]);
    __pyx_v_index = ((struct PyMPIDatatypeObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_value_index", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 343, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_value_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "value", 0))) __PYX_ERR(22, 346, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "index", 0))) __PYX_ERR(22, 347, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_40Get_value_index(((PyTypeObject*)__pyx_v_cls), __pyx_v_value, __pyx_v_index);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_40Get_value_index(PyTypeObject *__pyx_v_cls, struct PyMPIDatatypeObject *__pyx_v_value, struct PyMPIDatatypeObject *__pyx_v_index) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_value_index", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":352
 *         Return a predefined pair datatype.
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_value_index(
 *             value.ob_mpi, index.ob_mpi, &datatype.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":353
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_get_value_index(             # <<<<<<<<<<<<<<
 *             value.ob_mpi, index.ob_mpi, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_value_index(__pyx_v_value->ob_mpi, __pyx_v_index->ob_mpi, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 353, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":355
 *         CHKERR( MPI_Type_get_value_index(
 *             value.ob_mpi, index.ob_mpi, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Parametrized and size-specific Fortran Datatypes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":343
 *     # -------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_value_index(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_value_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":360
 *     # ------------------------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_integer(cls, int r: int) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_43Create_f90_integer(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_42Create_f90_integer, "Create_f90_integer(cls, r: int) -> Self\n\n        Return a bounded integer datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_43Create_f90_integer = {"Create_f90_integer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_43Create_f90_integer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_42Create_f90_integer};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_43Create_f90_integer(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_r;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_f90_integer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_r,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 360, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_f90_integer") < 0)) __PYX_ERR(22, 360, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_r = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 361, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_integer", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 360, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_42Create_f90_integer(((PyTypeObject*)__pyx_v_cls), __pyx_v_r);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_42Create_f90_integer(PyTypeObject *__pyx_v_cls, int __pyx_v_r) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_f90_integer", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":365
 *         Return a bounded integer datatype.
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_f90_integer(r, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":366
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_create_f90_integer(r, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_f90_integer(__pyx_v_r, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":367
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_create_f90_integer(r, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":360
 *     # ------------------------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_integer(cls, int r: int) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":369
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_real(cls, int p: int, int r: int) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_45Create_f90_real(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_44Create_f90_real, "Create_f90_real(cls, p: int, r: int) -> Self\n\n        Return a bounded real datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_45Create_f90_real = {"Create_f90_real", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_45Create_f90_real, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_44Create_f90_real};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_45Create_f90_real(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_p;
  int __pyx_v_r;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_f90_real (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,&__pyx_n_s_r,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_p)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 369, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 369, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_f90_real", 1, 2, 2, 1); __PYX_ERR(22, 369, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_f90_real") < 0)) __PYX_ERR(22, 369, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_p = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_p == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 370, __pyx_L3_error)
    __pyx_v_r = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 370, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_real", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 369, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_real", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_44Create_f90_real(((PyTypeObject*)__pyx_v_cls), __pyx_v_p, __pyx_v_r);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_44Create_f90_real(PyTypeObject *__pyx_v_cls, int __pyx_v_p, int __pyx_v_r) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_f90_real", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":374
 *         Return a bounded real datatype.
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_f90_real(p, r, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":375
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_create_f90_real(p, r, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_f90_real(__pyx_v_p, __pyx_v_r, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 375, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":376
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_create_f90_real(p, r, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":369
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_real(cls, int p: int, int r: int) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_real", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":378
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_complex(cls, int p: int, int r: int) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_47Create_f90_complex(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_46Create_f90_complex, "Create_f90_complex(cls, p: int, r: int) -> Self\n\n        Return a bounded complex datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_47Create_f90_complex = {"Create_f90_complex", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_47Create_f90_complex, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_46Create_f90_complex};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_47Create_f90_complex(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_p;
  int __pyx_v_r;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_f90_complex (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,&__pyx_n_s_r,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_p)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 378, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_r)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 378, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_f90_complex", 1, 2, 2, 1); __PYX_ERR(22, 378, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_f90_complex") < 0)) __PYX_ERR(22, 378, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_p = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_p == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 379, __pyx_L3_error)
    __pyx_v_r = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_r == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 379, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_f90_complex", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 378, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_complex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_46Create_f90_complex(((PyTypeObject*)__pyx_v_cls), __pyx_v_p, __pyx_v_r);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_46Create_f90_complex(PyTypeObject *__pyx_v_cls, int __pyx_v_p, int __pyx_v_r) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_f90_complex", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":383
 *         Return a bounded complex datatype.
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_f90_complex(p, r, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":384
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_create_f90_complex(p, r, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_f90_complex(__pyx_v_p, __pyx_v_r, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 384, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":385
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_create_f90_complex(p, r, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":378
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_complex(cls, int p: int, int r: int) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_f90_complex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":387
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Match_size(cls, int typeclass: int, int size: int) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_49Match_size(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_48Match_size, "Match_size(cls, typeclass: int, size: int) -> Self\n\n        Find a datatype matching a specified size in bytes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_49Match_size = {"Match_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_49Match_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_48Match_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_49Match_size(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_typeclass;
  int __pyx_v_size;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Match_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_typeclass,&__pyx_n_s_size_2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_typeclass)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 387, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 387, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Match_size", 1, 2, 2, 1); __PYX_ERR(22, 387, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Match_size") < 0)) __PYX_ERR(22, 387, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_typeclass = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_typeclass == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 388, __pyx_L3_error)
    __pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 388, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Match_size", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 387, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Match_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_48Match_size(((PyTypeObject*)__pyx_v_cls), __pyx_v_typeclass, __pyx_v_size);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_48Match_size(PyTypeObject *__pyx_v_cls, int __pyx_v_typeclass, int __pyx_v_size) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Match_size", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":392
 *         Find a datatype matching a specified size in bytes.
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":393
 *         """
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return datatype
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_match_size(__pyx_v_typeclass, __pyx_v_size, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 393, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":394
 *         cdef Datatype datatype = <Datatype>New(cls)
 *         CHKERR( MPI_Type_match_size(typeclass, size, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     # Use of Derived Datatypes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":387
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Match_size(cls, int typeclass: int, int size: int) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Match_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":399
 *     # ------------------------
 * 
 *     def Commit(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Commit the datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_51Commit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_50Commit, "Commit(self) -> Self\n\n        Commit the datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_51Commit = {"Commit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_51Commit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_50Commit};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_51Commit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Commit (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Commit", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Commit", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_50Commit(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_50Commit(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Commit", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":403
 *         Commit the datatype.
 *         """
 *         CHKERR( MPI_Type_commit(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_commit((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 403, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":404
 *         """
 *         CHKERR( MPI_Type_commit(&self.ob_mpi) )
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def Free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":399
 *     # ------------------------
 * 
 *     def Commit(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Commit the datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Commit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":406
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free the datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_53Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_52Free, "Free(self) -> None\n\n        Free the datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_53Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_53Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_52Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_53Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_52Free(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_52Free(struct PyMPIDatatypeObject *__pyx_v_self) {
  struct PyMPIDatatypeObject *__pyx_v_t = 0;
  MPI_Datatype __pyx_v_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":410
 *         Free the datatype.
 *         """
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         cdef Datatype t = self
 *         cdef MPI_Datatype p = MPI_DATATYPE_NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 410, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":411
 *         """
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *         cdef Datatype t = self             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype p = MPI_DATATYPE_NULL
 *         if   t is __PACKED__                 : p = MPI_PACKED
 */
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_v_t = __pyx_v_self;

  /* "src/mpi4py/MPI.src/Datatype.pyx":412
 *         CHKERR( MPI_Type_free(&self.ob_mpi) )
 *         cdef Datatype t = self
 *         cdef MPI_Datatype p = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         if   t is __PACKED__                 : p = MPI_PACKED
 *         elif t is __BYTE__                   : p = MPI_BYTE
 */
  __pyx_v_p = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":413
 *         cdef Datatype t = self
 *         cdef MPI_Datatype p = MPI_DATATYPE_NULL
 *         if   t is __PACKED__                 : p = MPI_PACKED             # <<<<<<<<<<<<<<
 *         elif t is __BYTE__                   : p = MPI_BYTE
 *         elif t is __AINT__                   : p = MPI_AINT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___PACKED__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_PACKED;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":414
 *         cdef MPI_Datatype p = MPI_DATATYPE_NULL
 *         if   t is __PACKED__                 : p = MPI_PACKED
 *         elif t is __BYTE__                   : p = MPI_BYTE             # <<<<<<<<<<<<<<
 *         elif t is __AINT__                   : p = MPI_AINT
 *         elif t is __OFFSET__                 : p = MPI_OFFSET
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___BYTE__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_BYTE;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":415
 *         if   t is __PACKED__                 : p = MPI_PACKED
 *         elif t is __BYTE__                   : p = MPI_BYTE
 *         elif t is __AINT__                   : p = MPI_AINT             # <<<<<<<<<<<<<<
 *         elif t is __OFFSET__                 : p = MPI_OFFSET
 *         elif t is __COUNT__                  : p = MPI_COUNT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___AINT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_AINT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":416
 *         elif t is __BYTE__                   : p = MPI_BYTE
 *         elif t is __AINT__                   : p = MPI_AINT
 *         elif t is __OFFSET__                 : p = MPI_OFFSET             # <<<<<<<<<<<<<<
 *         elif t is __COUNT__                  : p = MPI_COUNT
 *         elif t is __CHAR__                   : p = MPI_CHAR
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___OFFSET__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_OFFSET;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":417
 *         elif t is __AINT__                   : p = MPI_AINT
 *         elif t is __OFFSET__                 : p = MPI_OFFSET
 *         elif t is __COUNT__                  : p = MPI_COUNT             # <<<<<<<<<<<<<<
 *         elif t is __CHAR__                   : p = MPI_CHAR
 *         elif t is __WCHAR__                  : p = MPI_WCHAR
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___COUNT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_COUNT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":418
 *         elif t is __OFFSET__                 : p = MPI_OFFSET
 *         elif t is __COUNT__                  : p = MPI_COUNT
 *         elif t is __CHAR__                   : p = MPI_CHAR             # <<<<<<<<<<<<<<
 *         elif t is __WCHAR__                  : p = MPI_WCHAR
 *         elif t is __SIGNED_CHAR__            : p = MPI_SIGNED_CHAR
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___CHAR__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_CHAR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":419
 *         elif t is __COUNT__                  : p = MPI_COUNT
 *         elif t is __CHAR__                   : p = MPI_CHAR
 *         elif t is __WCHAR__                  : p = MPI_WCHAR             # <<<<<<<<<<<<<<
 *         elif t is __SIGNED_CHAR__            : p = MPI_SIGNED_CHAR
 *         elif t is __SHORT__                  : p = MPI_SHORT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___WCHAR__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_WCHAR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":420
 *         elif t is __CHAR__                   : p = MPI_CHAR
 *         elif t is __WCHAR__                  : p = MPI_WCHAR
 *         elif t is __SIGNED_CHAR__            : p = MPI_SIGNED_CHAR             # <<<<<<<<<<<<<<
 *         elif t is __SHORT__                  : p = MPI_SHORT
 *         elif t is __INT__                    : p = MPI_INT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_SIGNED_CHAR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":421
 *         elif t is __WCHAR__                  : p = MPI_WCHAR
 *         elif t is __SIGNED_CHAR__            : p = MPI_SIGNED_CHAR
 *         elif t is __SHORT__                  : p = MPI_SHORT             # <<<<<<<<<<<<<<
 *         elif t is __INT__                    : p = MPI_INT
 *         elif t is __LONG__                   : p = MPI_LONG
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___SHORT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_SHORT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":422
 *         elif t is __SIGNED_CHAR__            : p = MPI_SIGNED_CHAR
 *         elif t is __SHORT__                  : p = MPI_SHORT
 *         elif t is __INT__                    : p = MPI_INT             # <<<<<<<<<<<<<<
 *         elif t is __LONG__                   : p = MPI_LONG
 *         elif t is __LONG_LONG__              : p = MPI_LONG_LONG
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":423
 *         elif t is __SHORT__                  : p = MPI_SHORT
 *         elif t is __INT__                    : p = MPI_INT
 *         elif t is __LONG__                   : p = MPI_LONG             # <<<<<<<<<<<<<<
 *         elif t is __LONG_LONG__              : p = MPI_LONG_LONG
 *         elif t is __UNSIGNED_CHAR__          : p = MPI_UNSIGNED_CHAR
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LONG__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LONG;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":424
 *         elif t is __INT__                    : p = MPI_INT
 *         elif t is __LONG__                   : p = MPI_LONG
 *         elif t is __LONG_LONG__              : p = MPI_LONG_LONG             # <<<<<<<<<<<<<<
 *         elif t is __UNSIGNED_CHAR__          : p = MPI_UNSIGNED_CHAR
 *         elif t is __UNSIGNED_SHORT__         : p = MPI_UNSIGNED_SHORT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LONG_LONG__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LONG_LONG;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":425
 *         elif t is __LONG__                   : p = MPI_LONG
 *         elif t is __LONG_LONG__              : p = MPI_LONG_LONG
 *         elif t is __UNSIGNED_CHAR__          : p = MPI_UNSIGNED_CHAR             # <<<<<<<<<<<<<<
 *         elif t is __UNSIGNED_SHORT__         : p = MPI_UNSIGNED_SHORT
 *         elif t is __UNSIGNED__               : p = MPI_UNSIGNED
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UNSIGNED_CHAR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":426
 *         elif t is __LONG_LONG__              : p = MPI_LONG_LONG
 *         elif t is __UNSIGNED_CHAR__          : p = MPI_UNSIGNED_CHAR
 *         elif t is __UNSIGNED_SHORT__         : p = MPI_UNSIGNED_SHORT             # <<<<<<<<<<<<<<
 *         elif t is __UNSIGNED__               : p = MPI_UNSIGNED
 *         elif t is __UNSIGNED_LONG__          : p = MPI_UNSIGNED_LONG
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UNSIGNED_SHORT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":427
 *         elif t is __UNSIGNED_CHAR__          : p = MPI_UNSIGNED_CHAR
 *         elif t is __UNSIGNED_SHORT__         : p = MPI_UNSIGNED_SHORT
 *         elif t is __UNSIGNED__               : p = MPI_UNSIGNED             # <<<<<<<<<<<<<<
 *         elif t is __UNSIGNED_LONG__          : p = MPI_UNSIGNED_LONG
 *         elif t is __UNSIGNED_LONG_LONG__     : p = MPI_UNSIGNED_LONG_LONG
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UNSIGNED__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UNSIGNED;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":428
 *         elif t is __UNSIGNED_SHORT__         : p = MPI_UNSIGNED_SHORT
 *         elif t is __UNSIGNED__               : p = MPI_UNSIGNED
 *         elif t is __UNSIGNED_LONG__          : p = MPI_UNSIGNED_LONG             # <<<<<<<<<<<<<<
 *         elif t is __UNSIGNED_LONG_LONG__     : p = MPI_UNSIGNED_LONG_LONG
 *         elif t is __FLOAT__                  : p = MPI_FLOAT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UNSIGNED_LONG;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":429
 *         elif t is __UNSIGNED__               : p = MPI_UNSIGNED
 *         elif t is __UNSIGNED_LONG__          : p = MPI_UNSIGNED_LONG
 *         elif t is __UNSIGNED_LONG_LONG__     : p = MPI_UNSIGNED_LONG_LONG             # <<<<<<<<<<<<<<
 *         elif t is __FLOAT__                  : p = MPI_FLOAT
 *         elif t is __DOUBLE__                 : p = MPI_DOUBLE
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UNSIGNED_LONG_LONG;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":430
 *         elif t is __UNSIGNED_LONG__          : p = MPI_UNSIGNED_LONG
 *         elif t is __UNSIGNED_LONG_LONG__     : p = MPI_UNSIGNED_LONG_LONG
 *         elif t is __FLOAT__                  : p = MPI_FLOAT             # <<<<<<<<<<<<<<
 *         elif t is __DOUBLE__                 : p = MPI_DOUBLE
 *         elif t is __LONG_DOUBLE__            : p = MPI_LONG_DOUBLE
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___FLOAT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_FLOAT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":431
 *         elif t is __UNSIGNED_LONG_LONG__     : p = MPI_UNSIGNED_LONG_LONG
 *         elif t is __FLOAT__                  : p = MPI_FLOAT
 *         elif t is __DOUBLE__                 : p = MPI_DOUBLE             # <<<<<<<<<<<<<<
 *         elif t is __LONG_DOUBLE__            : p = MPI_LONG_DOUBLE
 *         elif t is __C_BOOL__                 : p = MPI_C_BOOL
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___DOUBLE__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_DOUBLE;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":432
 *         elif t is __FLOAT__                  : p = MPI_FLOAT
 *         elif t is __DOUBLE__                 : p = MPI_DOUBLE
 *         elif t is __LONG_DOUBLE__            : p = MPI_LONG_DOUBLE             # <<<<<<<<<<<<<<
 *         elif t is __C_BOOL__                 : p = MPI_C_BOOL
 *         elif t is __INT8_T__                 : p = MPI_INT8_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LONG_DOUBLE;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":433
 *         elif t is __DOUBLE__                 : p = MPI_DOUBLE
 *         elif t is __LONG_DOUBLE__            : p = MPI_LONG_DOUBLE
 *         elif t is __C_BOOL__                 : p = MPI_C_BOOL             # <<<<<<<<<<<<<<
 *         elif t is __INT8_T__                 : p = MPI_INT8_T
 *         elif t is __INT16_T__                : p = MPI_INT16_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___C_BOOL__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_C_BOOL;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":434
 *         elif t is __LONG_DOUBLE__            : p = MPI_LONG_DOUBLE
 *         elif t is __C_BOOL__                 : p = MPI_C_BOOL
 *         elif t is __INT8_T__                 : p = MPI_INT8_T             # <<<<<<<<<<<<<<
 *         elif t is __INT16_T__                : p = MPI_INT16_T
 *         elif t is __INT32_T__                : p = MPI_INT32_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INT8_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INT8_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":435
 *         elif t is __C_BOOL__                 : p = MPI_C_BOOL
 *         elif t is __INT8_T__                 : p = MPI_INT8_T
 *         elif t is __INT16_T__                : p = MPI_INT16_T             # <<<<<<<<<<<<<<
 *         elif t is __INT32_T__                : p = MPI_INT32_T
 *         elif t is __INT64_T__                : p = MPI_INT64_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INT16_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INT16_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":436
 *         elif t is __INT8_T__                 : p = MPI_INT8_T
 *         elif t is __INT16_T__                : p = MPI_INT16_T
 *         elif t is __INT32_T__                : p = MPI_INT32_T             # <<<<<<<<<<<<<<
 *         elif t is __INT64_T__                : p = MPI_INT64_T
 *         elif t is __UINT8_T__                : p = MPI_UINT8_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INT32_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INT32_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":437
 *         elif t is __INT16_T__                : p = MPI_INT16_T
 *         elif t is __INT32_T__                : p = MPI_INT32_T
 *         elif t is __INT64_T__                : p = MPI_INT64_T             # <<<<<<<<<<<<<<
 *         elif t is __UINT8_T__                : p = MPI_UINT8_T
 *         elif t is __UINT16_T__               : p = MPI_UINT16_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INT64_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INT64_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":438
 *         elif t is __INT32_T__                : p = MPI_INT32_T
 *         elif t is __INT64_T__                : p = MPI_INT64_T
 *         elif t is __UINT8_T__                : p = MPI_UINT8_T             # <<<<<<<<<<<<<<
 *         elif t is __UINT16_T__               : p = MPI_UINT16_T
 *         elif t is __UINT32_T__               : p = MPI_UINT32_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UINT8_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UINT8_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":439
 *         elif t is __INT64_T__                : p = MPI_INT64_T
 *         elif t is __UINT8_T__                : p = MPI_UINT8_T
 *         elif t is __UINT16_T__               : p = MPI_UINT16_T             # <<<<<<<<<<<<<<
 *         elif t is __UINT32_T__               : p = MPI_UINT32_T
 *         elif t is __UINT64_T__               : p = MPI_UINT64_T
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UINT16_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UINT16_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":440
 *         elif t is __UINT8_T__                : p = MPI_UINT8_T
 *         elif t is __UINT16_T__               : p = MPI_UINT16_T
 *         elif t is __UINT32_T__               : p = MPI_UINT32_T             # <<<<<<<<<<<<<<
 *         elif t is __UINT64_T__               : p = MPI_UINT64_T
 *         elif t is __C_COMPLEX__              : p = MPI_C_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UINT32_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UINT32_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":441
 *         elif t is __UINT16_T__               : p = MPI_UINT16_T
 *         elif t is __UINT32_T__               : p = MPI_UINT32_T
 *         elif t is __UINT64_T__               : p = MPI_UINT64_T             # <<<<<<<<<<<<<<
 *         elif t is __C_COMPLEX__              : p = MPI_C_COMPLEX
 *         elif t is __C_FLOAT_COMPLEX__        : p = MPI_C_FLOAT_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___UINT64_T__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_UINT64_T;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":442
 *         elif t is __UINT32_T__               : p = MPI_UINT32_T
 *         elif t is __UINT64_T__               : p = MPI_UINT64_T
 *         elif t is __C_COMPLEX__              : p = MPI_C_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __C_FLOAT_COMPLEX__        : p = MPI_C_FLOAT_COMPLEX
 *         elif t is __C_DOUBLE_COMPLEX__       : p = MPI_C_DOUBLE_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___C_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_C_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":443
 *         elif t is __UINT64_T__               : p = MPI_UINT64_T
 *         elif t is __C_COMPLEX__              : p = MPI_C_COMPLEX
 *         elif t is __C_FLOAT_COMPLEX__        : p = MPI_C_FLOAT_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __C_DOUBLE_COMPLEX__       : p = MPI_C_DOUBLE_COMPLEX
 *         elif t is __C_LONG_DOUBLE_COMPLEX__  : p = MPI_C_LONG_DOUBLE_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_C_FLOAT_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":444
 *         elif t is __C_COMPLEX__              : p = MPI_C_COMPLEX
 *         elif t is __C_FLOAT_COMPLEX__        : p = MPI_C_FLOAT_COMPLEX
 *         elif t is __C_DOUBLE_COMPLEX__       : p = MPI_C_DOUBLE_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __C_LONG_DOUBLE_COMPLEX__  : p = MPI_C_LONG_DOUBLE_COMPLEX
 *         elif t is __CXX_BOOL__               : p = MPI_CXX_BOOL
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_C_DOUBLE_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":445
 *         elif t is __C_FLOAT_COMPLEX__        : p = MPI_C_FLOAT_COMPLEX
 *         elif t is __C_DOUBLE_COMPLEX__       : p = MPI_C_DOUBLE_COMPLEX
 *         elif t is __C_LONG_DOUBLE_COMPLEX__  : p = MPI_C_LONG_DOUBLE_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __CXX_BOOL__               : p = MPI_CXX_BOOL
 *         elif t is __CXX_FLOAT_COMPLEX__      : p = MPI_CXX_FLOAT_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_C_LONG_DOUBLE_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":446
 *         elif t is __C_DOUBLE_COMPLEX__       : p = MPI_C_DOUBLE_COMPLEX
 *         elif t is __C_LONG_DOUBLE_COMPLEX__  : p = MPI_C_LONG_DOUBLE_COMPLEX
 *         elif t is __CXX_BOOL__               : p = MPI_CXX_BOOL             # <<<<<<<<<<<<<<
 *         elif t is __CXX_FLOAT_COMPLEX__      : p = MPI_CXX_FLOAT_COMPLEX
 *         elif t is __CXX_DOUBLE_COMPLEX__     : p = MPI_CXX_DOUBLE_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_CXX_BOOL;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":447
 *         elif t is __C_LONG_DOUBLE_COMPLEX__  : p = MPI_C_LONG_DOUBLE_COMPLEX
 *         elif t is __CXX_BOOL__               : p = MPI_CXX_BOOL
 *         elif t is __CXX_FLOAT_COMPLEX__      : p = MPI_CXX_FLOAT_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __CXX_DOUBLE_COMPLEX__     : p = MPI_CXX_DOUBLE_COMPLEX
 *         elif t is __CXX_LONG_DOUBLE_COMPLEX__: p = MPI_CXX_LONG_DOUBLE_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_CXX_FLOAT_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":448
 *         elif t is __CXX_BOOL__               : p = MPI_CXX_BOOL
 *         elif t is __CXX_FLOAT_COMPLEX__      : p = MPI_CXX_FLOAT_COMPLEX
 *         elif t is __CXX_DOUBLE_COMPLEX__     : p = MPI_CXX_DOUBLE_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __CXX_LONG_DOUBLE_COMPLEX__: p = MPI_CXX_LONG_DOUBLE_COMPLEX
 *         elif t is __SHORT_INT__              : p = MPI_SHORT_INT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_CXX_DOUBLE_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":449
 *         elif t is __CXX_FLOAT_COMPLEX__      : p = MPI_CXX_FLOAT_COMPLEX
 *         elif t is __CXX_DOUBLE_COMPLEX__     : p = MPI_CXX_DOUBLE_COMPLEX
 *         elif t is __CXX_LONG_DOUBLE_COMPLEX__: p = MPI_CXX_LONG_DOUBLE_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __SHORT_INT__              : p = MPI_SHORT_INT
 *         elif t is __INT_INT__                : p = MPI_2INT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_CXX_LONG_DOUBLE_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":450
 *         elif t is __CXX_DOUBLE_COMPLEX__     : p = MPI_CXX_DOUBLE_COMPLEX
 *         elif t is __CXX_LONG_DOUBLE_COMPLEX__: p = MPI_CXX_LONG_DOUBLE_COMPLEX
 *         elif t is __SHORT_INT__              : p = MPI_SHORT_INT             # <<<<<<<<<<<<<<
 *         elif t is __INT_INT__                : p = MPI_2INT
 *         elif t is __LONG_INT__               : p = MPI_LONG_INT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___SHORT_INT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_SHORT_INT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":451
 *         elif t is __CXX_LONG_DOUBLE_COMPLEX__: p = MPI_CXX_LONG_DOUBLE_COMPLEX
 *         elif t is __SHORT_INT__              : p = MPI_SHORT_INT
 *         elif t is __INT_INT__                : p = MPI_2INT             # <<<<<<<<<<<<<<
 *         elif t is __LONG_INT__               : p = MPI_LONG_INT
 *         elif t is __FLOAT_INT__              : p = MPI_FLOAT_INT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INT_INT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_2INT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":452
 *         elif t is __SHORT_INT__              : p = MPI_SHORT_INT
 *         elif t is __INT_INT__                : p = MPI_2INT
 *         elif t is __LONG_INT__               : p = MPI_LONG_INT             # <<<<<<<<<<<<<<
 *         elif t is __FLOAT_INT__              : p = MPI_FLOAT_INT
 *         elif t is __DOUBLE_INT__             : p = MPI_DOUBLE_INT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LONG_INT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LONG_INT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":453
 *         elif t is __INT_INT__                : p = MPI_2INT
 *         elif t is __LONG_INT__               : p = MPI_LONG_INT
 *         elif t is __FLOAT_INT__              : p = MPI_FLOAT_INT             # <<<<<<<<<<<<<<
 *         elif t is __DOUBLE_INT__             : p = MPI_DOUBLE_INT
 *         elif t is __LONG_DOUBLE_INT__        : p = MPI_LONG_DOUBLE_INT
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___FLOAT_INT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_FLOAT_INT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":454
 *         elif t is __LONG_INT__               : p = MPI_LONG_INT
 *         elif t is __FLOAT_INT__              : p = MPI_FLOAT_INT
 *         elif t is __DOUBLE_INT__             : p = MPI_DOUBLE_INT             # <<<<<<<<<<<<<<
 *         elif t is __LONG_DOUBLE_INT__        : p = MPI_LONG_DOUBLE_INT
 *         elif t is __CHARACTER__              : p = MPI_CHARACTER
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___DOUBLE_INT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_DOUBLE_INT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":455
 *         elif t is __FLOAT_INT__              : p = MPI_FLOAT_INT
 *         elif t is __DOUBLE_INT__             : p = MPI_DOUBLE_INT
 *         elif t is __LONG_DOUBLE_INT__        : p = MPI_LONG_DOUBLE_INT             # <<<<<<<<<<<<<<
 *         elif t is __CHARACTER__              : p = MPI_CHARACTER
 *         elif t is __LOGICAL__                : p = MPI_LOGICAL
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LONG_DOUBLE_INT;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":456
 *         elif t is __DOUBLE_INT__             : p = MPI_DOUBLE_INT
 *         elif t is __LONG_DOUBLE_INT__        : p = MPI_LONG_DOUBLE_INT
 *         elif t is __CHARACTER__              : p = MPI_CHARACTER             # <<<<<<<<<<<<<<
 *         elif t is __LOGICAL__                : p = MPI_LOGICAL
 *         elif t is __INTEGER__                : p = MPI_INTEGER
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___CHARACTER__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_CHARACTER;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":457
 *         elif t is __LONG_DOUBLE_INT__        : p = MPI_LONG_DOUBLE_INT
 *         elif t is __CHARACTER__              : p = MPI_CHARACTER
 *         elif t is __LOGICAL__                : p = MPI_LOGICAL             # <<<<<<<<<<<<<<
 *         elif t is __INTEGER__                : p = MPI_INTEGER
 *         elif t is __REAL__                   : p = MPI_REAL
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LOGICAL__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LOGICAL;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":458
 *         elif t is __CHARACTER__              : p = MPI_CHARACTER
 *         elif t is __LOGICAL__                : p = MPI_LOGICAL
 *         elif t is __INTEGER__                : p = MPI_INTEGER             # <<<<<<<<<<<<<<
 *         elif t is __REAL__                   : p = MPI_REAL
 *         elif t is __DOUBLE_PRECISION__       : p = MPI_DOUBLE_PRECISION
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INTEGER__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INTEGER;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":459
 *         elif t is __LOGICAL__                : p = MPI_LOGICAL
 *         elif t is __INTEGER__                : p = MPI_INTEGER
 *         elif t is __REAL__                   : p = MPI_REAL             # <<<<<<<<<<<<<<
 *         elif t is __DOUBLE_PRECISION__       : p = MPI_DOUBLE_PRECISION
 *         elif t is __COMPLEX__                : p = MPI_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___REAL__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_REAL;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":460
 *         elif t is __INTEGER__                : p = MPI_INTEGER
 *         elif t is __REAL__                   : p = MPI_REAL
 *         elif t is __DOUBLE_PRECISION__       : p = MPI_DOUBLE_PRECISION             # <<<<<<<<<<<<<<
 *         elif t is __COMPLEX__                : p = MPI_COMPLEX
 *         elif t is __DOUBLE_COMPLEX__         : p = MPI_DOUBLE_COMPLEX
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_DOUBLE_PRECISION;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":461
 *         elif t is __REAL__                   : p = MPI_REAL
 *         elif t is __DOUBLE_PRECISION__       : p = MPI_DOUBLE_PRECISION
 *         elif t is __COMPLEX__                : p = MPI_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __DOUBLE_COMPLEX__         : p = MPI_DOUBLE_COMPLEX
 *         elif t is __LOGICAL1__               : p = MPI_LOGICAL1
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":462
 *         elif t is __DOUBLE_PRECISION__       : p = MPI_DOUBLE_PRECISION
 *         elif t is __COMPLEX__                : p = MPI_COMPLEX
 *         elif t is __DOUBLE_COMPLEX__         : p = MPI_DOUBLE_COMPLEX             # <<<<<<<<<<<<<<
 *         elif t is __LOGICAL1__               : p = MPI_LOGICAL1
 *         elif t is __LOGICAL2__               : p = MPI_LOGICAL2
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_DOUBLE_COMPLEX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":463
 *         elif t is __COMPLEX__                : p = MPI_COMPLEX
 *         elif t is __DOUBLE_COMPLEX__         : p = MPI_DOUBLE_COMPLEX
 *         elif t is __LOGICAL1__               : p = MPI_LOGICAL1             # <<<<<<<<<<<<<<
 *         elif t is __LOGICAL2__               : p = MPI_LOGICAL2
 *         elif t is __LOGICAL4__               : p = MPI_LOGICAL4
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LOGICAL1__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LOGICAL1;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":464
 *         elif t is __DOUBLE_COMPLEX__         : p = MPI_DOUBLE_COMPLEX
 *         elif t is __LOGICAL1__               : p = MPI_LOGICAL1
 *         elif t is __LOGICAL2__               : p = MPI_LOGICAL2             # <<<<<<<<<<<<<<
 *         elif t is __LOGICAL4__               : p = MPI_LOGICAL4
 *         elif t is __LOGICAL8__               : p = MPI_LOGICAL8
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LOGICAL2__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LOGICAL2;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":465
 *         elif t is __LOGICAL1__               : p = MPI_LOGICAL1
 *         elif t is __LOGICAL2__               : p = MPI_LOGICAL2
 *         elif t is __LOGICAL4__               : p = MPI_LOGICAL4             # <<<<<<<<<<<<<<
 *         elif t is __LOGICAL8__               : p = MPI_LOGICAL8
 *         elif t is __INTEGER1__               : p = MPI_INTEGER1
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LOGICAL4__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LOGICAL4;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":466
 *         elif t is __LOGICAL2__               : p = MPI_LOGICAL2
 *         elif t is __LOGICAL4__               : p = MPI_LOGICAL4
 *         elif t is __LOGICAL8__               : p = MPI_LOGICAL8             # <<<<<<<<<<<<<<
 *         elif t is __INTEGER1__               : p = MPI_INTEGER1
 *         elif t is __INTEGER2__               : p = MPI_INTEGER2
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___LOGICAL8__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_LOGICAL8;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":467
 *         elif t is __LOGICAL4__               : p = MPI_LOGICAL4
 *         elif t is __LOGICAL8__               : p = MPI_LOGICAL8
 *         elif t is __INTEGER1__               : p = MPI_INTEGER1             # <<<<<<<<<<<<<<
 *         elif t is __INTEGER2__               : p = MPI_INTEGER2
 *         elif t is __INTEGER4__               : p = MPI_INTEGER4
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INTEGER1__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INTEGER1;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":468
 *         elif t is __LOGICAL8__               : p = MPI_LOGICAL8
 *         elif t is __INTEGER1__               : p = MPI_INTEGER1
 *         elif t is __INTEGER2__               : p = MPI_INTEGER2             # <<<<<<<<<<<<<<
 *         elif t is __INTEGER4__               : p = MPI_INTEGER4
 *         elif t is __INTEGER8__               : p = MPI_INTEGER8
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INTEGER2__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INTEGER2;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":469
 *         elif t is __INTEGER1__               : p = MPI_INTEGER1
 *         elif t is __INTEGER2__               : p = MPI_INTEGER2
 *         elif t is __INTEGER4__               : p = MPI_INTEGER4             # <<<<<<<<<<<<<<
 *         elif t is __INTEGER8__               : p = MPI_INTEGER8
 *         elif t is __INTEGER16__              : p = MPI_INTEGER16
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INTEGER4__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INTEGER4;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":470
 *         elif t is __INTEGER2__               : p = MPI_INTEGER2
 *         elif t is __INTEGER4__               : p = MPI_INTEGER4
 *         elif t is __INTEGER8__               : p = MPI_INTEGER8             # <<<<<<<<<<<<<<
 *         elif t is __INTEGER16__              : p = MPI_INTEGER16
 *         elif t is __REAL2__                  : p = MPI_REAL2
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INTEGER8__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INTEGER8;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":471
 *         elif t is __INTEGER4__               : p = MPI_INTEGER4
 *         elif t is __INTEGER8__               : p = MPI_INTEGER8
 *         elif t is __INTEGER16__              : p = MPI_INTEGER16             # <<<<<<<<<<<<<<
 *         elif t is __REAL2__                  : p = MPI_REAL2
 *         elif t is __REAL4__                  : p = MPI_REAL4
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___INTEGER16__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_INTEGER16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":472
 *         elif t is __INTEGER8__               : p = MPI_INTEGER8
 *         elif t is __INTEGER16__              : p = MPI_INTEGER16
 *         elif t is __REAL2__                  : p = MPI_REAL2             # <<<<<<<<<<<<<<
 *         elif t is __REAL4__                  : p = MPI_REAL4
 *         elif t is __REAL8__                  : p = MPI_REAL8
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___REAL2__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_REAL2;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":473
 *         elif t is __INTEGER16__              : p = MPI_INTEGER16
 *         elif t is __REAL2__                  : p = MPI_REAL2
 *         elif t is __REAL4__                  : p = MPI_REAL4             # <<<<<<<<<<<<<<
 *         elif t is __REAL8__                  : p = MPI_REAL8
 *         elif t is __REAL16__                 : p = MPI_REAL16
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___REAL4__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_REAL4;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":474
 *         elif t is __REAL2__                  : p = MPI_REAL2
 *         elif t is __REAL4__                  : p = MPI_REAL4
 *         elif t is __REAL8__                  : p = MPI_REAL8             # <<<<<<<<<<<<<<
 *         elif t is __REAL16__                 : p = MPI_REAL16
 *         elif t is __COMPLEX4__               : p = MPI_COMPLEX4
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___REAL8__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_REAL8;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":475
 *         elif t is __REAL4__                  : p = MPI_REAL4
 *         elif t is __REAL8__                  : p = MPI_REAL8
 *         elif t is __REAL16__                 : p = MPI_REAL16             # <<<<<<<<<<<<<<
 *         elif t is __COMPLEX4__               : p = MPI_COMPLEX4
 *         elif t is __COMPLEX8__               : p = MPI_COMPLEX8
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___REAL16__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_REAL16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":476
 *         elif t is __REAL8__                  : p = MPI_REAL8
 *         elif t is __REAL16__                 : p = MPI_REAL16
 *         elif t is __COMPLEX4__               : p = MPI_COMPLEX4             # <<<<<<<<<<<<<<
 *         elif t is __COMPLEX8__               : p = MPI_COMPLEX8
 *         elif t is __COMPLEX16__              : p = MPI_COMPLEX16
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___COMPLEX4__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_COMPLEX4;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":477
 *         elif t is __REAL16__                 : p = MPI_REAL16
 *         elif t is __COMPLEX4__               : p = MPI_COMPLEX4
 *         elif t is __COMPLEX8__               : p = MPI_COMPLEX8             # <<<<<<<<<<<<<<
 *         elif t is __COMPLEX16__              : p = MPI_COMPLEX16
 *         elif t is __COMPLEX32__              : p = MPI_COMPLEX32
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___COMPLEX8__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_COMPLEX8;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":478
 *         elif t is __COMPLEX4__               : p = MPI_COMPLEX4
 *         elif t is __COMPLEX8__               : p = MPI_COMPLEX8
 *         elif t is __COMPLEX16__              : p = MPI_COMPLEX16             # <<<<<<<<<<<<<<
 *         elif t is __COMPLEX32__              : p = MPI_COMPLEX32
 *         self.ob_mpi = p
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___COMPLEX16__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_COMPLEX16;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":479
 *         elif t is __COMPLEX8__               : p = MPI_COMPLEX8
 *         elif t is __COMPLEX16__              : p = MPI_COMPLEX16
 *         elif t is __COMPLEX32__              : p = MPI_COMPLEX32             # <<<<<<<<<<<<<<
 *         self.ob_mpi = p
 * 
 */
  __pyx_t_2 = (__pyx_v_t == __pyx_v_6mpi4py_3MPI___COMPLEX32__);
  if (__pyx_t_2) {
    __pyx_v_p = MPI_COMPLEX32;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Datatype.pyx":480
 *         elif t is __COMPLEX16__              : p = MPI_COMPLEX16
 *         elif t is __COMPLEX32__              : p = MPI_COMPLEX32
 *         self.ob_mpi = p             # <<<<<<<<<<<<<<
 * 
 *     # Datatype Resizing
 */
  __pyx_v_self->ob_mpi = __pyx_v_p;

  /* "src/mpi4py/MPI.src/Datatype.pyx":406
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free the datatype.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":485
 *     # -----------------
 * 
 *     def Create_resized(self, Count lb: int, Count extent: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype with a new lower bound and extent.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_55Create_resized(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_54Create_resized, "Create_resized(self, lb: int, extent: int) -> Self\n\n        Create a datatype with a new lower bound and extent.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_55Create_resized = {"Create_resized", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_55Create_resized, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_54Create_resized};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_55Create_resized(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_resized (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lb_2,&__pyx_n_s_extent,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lb_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 485, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_extent)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 485, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_resized", 1, 2, 2, 1); __PYX_ERR(22, 485, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_resized") < 0)) __PYX_ERR(22, 485, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_lb = __Pyx_PyInt_As_MPI_Count(values[0]); if (unlikely((__pyx_v_lb == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 485, __pyx_L3_error)
    __pyx_v_extent = __Pyx_PyInt_As_MPI_Count(values[1]); if (unlikely((__pyx_v_extent == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 485, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_resized", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 485, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_resized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_54Create_resized(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_lb, __pyx_v_extent);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_54Create_resized(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_lb, MPI_Count __pyx_v_extent) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_resized", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":489
 *         Create a datatype with a new lower bound and extent.
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_resized_c(
 *             self.ob_mpi, lb, extent, &datatype.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_datatype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":490
 *         """
 *         cdef Datatype datatype = <Datatype>New(type(self))
 *         CHKERR( MPI_Type_create_resized_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, lb, extent, &datatype.ob_mpi) )
 *         return datatype
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_resized_c(__pyx_v_self->ob_mpi, __pyx_v_lb, __pyx_v_extent, (&__pyx_v_datatype->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 490, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":492
 *         CHKERR( MPI_Type_create_resized_c(
 *             self.ob_mpi, lb, extent, &datatype.ob_mpi) )
 *         return datatype             # <<<<<<<<<<<<<<
 * 
 *     Resized = Create_resized  #: compatibility alias
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_datatype);
  __pyx_r = ((PyObject *)__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":485
 *     # -----------------
 * 
 *     def Create_resized(self, Count lb: int, Count extent: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype with a new lower bound and extent.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_resized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":496
 *     Resized = Create_resized  #: compatibility alias
 * 
 *     def Get_true_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the true lower bound and extent of a datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_57Get_true_extent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_56Get_true_extent, "Get_true_extent(self) -> tuple[int, int]\n\n        Return the true lower bound and extent of a datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_57Get_true_extent = {"Get_true_extent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_57Get_true_extent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_56Get_true_extent};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_57Get_true_extent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_true_extent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_true_extent", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_true_extent", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_56Get_true_extent(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_56Get_true_extent(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_true_extent", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":500
 *         Return the true lower bound and extent of a datatype.
 *         """
 *         cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_true_extent_c(
 *             self.ob_mpi, &lb, &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":501
 *         """
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_true_extent_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &lb, &extent) )
 *         return (lb, extent)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 501, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":503
 *         CHKERR( MPI_Type_get_true_extent_c(
 *             self.ob_mpi, &lb, &extent) )
 *         return (lb, extent)             # <<<<<<<<<<<<<<
 * 
 *     property true_extent:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(22, 503, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(22, 503, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":496
 *     Resized = Create_resized  #: compatibility alias
 * 
 *     def Get_true_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the true lower bound and extent of a datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_true_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":507
 *     property true_extent:
 *         """True extent."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_11true_extent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_11true_extent_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_11true_extent___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_11true_extent___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":508
 *         """True extent."""
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_true_extent_c(
 *                 self.ob_mpi, &lb, &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":509
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, &lb, &extent) )
 *             return extent
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 509, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":511
 *             CHKERR( MPI_Type_get_true_extent_c(
 *                 self.ob_mpi, &lb, &extent) )
 *             return extent             # <<<<<<<<<<<<<<
 * 
 *     property true_lb:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":507
 *     property true_extent:
 *         """True extent."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.true_extent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":515
 *     property true_lb:
 *         """True lower bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_7true_lb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_7true_lb_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_7true_lb___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_lb___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":516
 *         """True lower bound."""
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_true_extent_c(
 *                 self.ob_mpi, &lb, &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":517
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, &lb, &extent) )
 *             return lb
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 517, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":519
 *             CHKERR( MPI_Type_get_true_extent_c(
 *                 self.ob_mpi, &lb, &extent) )
 *             return lb             # <<<<<<<<<<<<<<
 * 
 *     property true_ub:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_lb); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":515
 *     property true_lb:
 *         """True lower bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.true_lb.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":523
 *     property true_ub:
 *         """True upper bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_7true_ub_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_7true_ub_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_7true_ub___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7true_ub___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":524
 *         """True upper bound."""
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Type_get_true_extent_c(
 *                 self.ob_mpi, &lb, &extent) )
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":525
 *         def __get__(self) -> int:
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, &lb, &extent) )
 *             return lb + extent
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_true_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 525, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":527
 *             CHKERR( MPI_Type_get_true_extent_c(
 *                 self.ob_mpi, &lb, &extent) )
 *             return lb + extent             # <<<<<<<<<<<<<<
 * 
 *     # Decoding a Datatype
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count((__pyx_v_lb + __pyx_v_extent)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":523
 *     property true_ub:
 *         """True upper bound."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Count lb = 0, extent = 0
 *             CHKERR( MPI_Type_get_true_extent_c(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.true_ub.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":532
 *     # -------------------
 * 
 *     def Get_envelope(self) -> tuple[int, int, int, int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of input arguments used to create a datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_59Get_envelope(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_58Get_envelope, "Get_envelope(self) -> tuple[int, int, int, int, int]\n\n        Return the number of input arguments used to create a datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_59Get_envelope = {"Get_envelope", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_59Get_envelope, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_58Get_envelope};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_59Get_envelope(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_envelope (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_envelope", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_envelope", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_58Get_envelope(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_58Get_envelope(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_v_combiner;
  MPI_Count __pyx_v_ni;
  MPI_Count __pyx_v_na;
  MPI_Count __pyx_v_nc;
  MPI_Count __pyx_v_nd;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_envelope", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":536
 *         Return the number of input arguments used to create a datatype.
 *         """
 *         cdef int combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *         CHKERR( MPI_Type_get_envelope_c(
 */
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Datatype.pyx":537
 *         """
 *         cdef int combiner = MPI_UNDEFINED
 *         cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_envelope_c(
 *             self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nc = 0;
  __pyx_v_nd = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":538
 *         cdef int combiner = MPI_UNDEFINED
 *         cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *         CHKERR( MPI_Type_get_envelope_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *         return (ni, na, nc, nd, combiner)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_envelope_c(__pyx_v_self->ob_mpi, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nc), (&__pyx_v_nd), (&__pyx_v_combiner))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 538, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":540
 *         CHKERR( MPI_Type_get_envelope_c(
 *             self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *         return (ni, na, nc, nd, combiner)             # <<<<<<<<<<<<<<
 * 
 *     property envelope:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_ni); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_na); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_MPI_Count(__pyx_v_nc); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_MPI_Count(__pyx_v_nd); if (unlikely(!__pyx_t_5)) __PYX_ERR(22, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_combiner); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2)) __PYX_ERR(22, 540, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3)) __PYX_ERR(22, 540, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4)) __PYX_ERR(22, 540, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_5)) __PYX_ERR(22, 540, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_6)) __PYX_ERR(22, 540, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":532
 *     # -------------------
 * 
 *     def Get_envelope(self) -> tuple[int, int, int, int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of input arguments used to create a datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_envelope", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":544
 *     property envelope:
 *         """Envelope."""
 *         def __get__(self) -> tuple[int, int, int, int, int]:             # <<<<<<<<<<<<<<
 *             return self.Get_envelope()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8envelope_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8envelope_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_8envelope___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8envelope___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":545
 *         """Envelope."""
 *         def __get__(self) -> tuple[int, int, int, int, int]:
 *             return self.Get_envelope()             # <<<<<<<<<<<<<<
 * 
 *     def Get_contents(self) -> \
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_envelope); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":544
 *     property envelope:
 *         """Envelope."""
 *         def __get__(self) -> tuple[int, int, int, int, int]:             # <<<<<<<<<<<<<<
 *             return self.Get_envelope()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.envelope.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":547
 *             return self.Get_envelope()
 * 
 *     def Get_contents(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], list[int], list[Datatype]]:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_61Get_contents(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_60Get_contents, "Get_contents(self) -> tuple[list[int], list[int], list[int], list[Datatype]]\n\n        Return the input arguments used to create a datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_61Get_contents = {"Get_contents", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_61Get_contents, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_60Get_contents};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_61Get_contents(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_contents (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_contents", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_contents", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_60Get_contents(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_60Get_contents(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_v_combiner;
  MPI_Count __pyx_v_ni;
  MPI_Count __pyx_v_na;
  MPI_Count __pyx_v_nc;
  MPI_Count __pyx_v_nd;
  int *__pyx_v_i;
  MPI_Aint *__pyx_v_a;
  MPI_Count *__pyx_v_c;
  MPI_Datatype *__pyx_v_d;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused3 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused4 = 0;
  PyObject *__pyx_v_integers = 0;
  PyObject *__pyx_v_addresses = 0;
  PyObject *__pyx_v_counts = 0;
  PyObject *__pyx_v_datatypes = 0;
  MPI_Count __pyx_8genexpr3__pyx_v_k;
  MPI_Count __pyx_8genexpr4__pyx_v_k;
  MPI_Count __pyx_8genexpr5__pyx_v_k;
  MPI_Count __pyx_8genexpr6__pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  MPI_Count __pyx_t_3;
  MPI_Count __pyx_t_4;
  MPI_Count __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_contents", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":552
 *         Return the input arguments used to create a datatype.
 *         """
 *         cdef int combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *         CHKERR( MPI_Type_get_envelope_c(
 */
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Datatype.pyx":553
 *         """
 *         cdef int combiner = MPI_UNDEFINED
 *         cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_envelope_c(
 *             self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nc = 0;
  __pyx_v_nd = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":554
 *         cdef int combiner = MPI_UNDEFINED
 *         cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *         CHKERR( MPI_Type_get_envelope_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *         cdef int *i = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_envelope_c(__pyx_v_self->ob_mpi, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nc), (&__pyx_v_nd), (&__pyx_v_combiner))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 554, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":556
 *         CHKERR( MPI_Type_get_envelope_c(
 *             self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *         cdef int *i = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Count *c = NULL
 */
  __pyx_v_i = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":557
 *             self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *         cdef int *i = NULL
 *         cdef MPI_Aint *a = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count *c = NULL
 *         cdef MPI_Datatype *d = NULL
 */
  __pyx_v_a = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":558
 *         cdef int *i = NULL
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Count *c = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype *d = NULL
 *         cdef unused1 = allocate(ni, sizeof(int), &i)
 */
  __pyx_v_c = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":559
 *         cdef MPI_Aint *a = NULL
 *         cdef MPI_Count *c = NULL
 *         cdef MPI_Datatype *d = NULL             # <<<<<<<<<<<<<<
 *         cdef unused1 = allocate(ni, sizeof(int), &i)
 *         cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 */
  __pyx_v_d = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":560
 *         cdef MPI_Count *c = NULL
 *         cdef MPI_Datatype *d = NULL
 *         cdef unused1 = allocate(ni, sizeof(int), &i)             # <<<<<<<<<<<<<<
 *         cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 *         cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_ni, (sizeof(int)), (&__pyx_v_i))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":561
 *         cdef MPI_Datatype *d = NULL
 *         cdef unused1 = allocate(ni, sizeof(int), &i)
 *         cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)             # <<<<<<<<<<<<<<
 *         cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 *         cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_na, (sizeof(MPI_Aint)), (&__pyx_v_a))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":562
 *         cdef unused1 = allocate(ni, sizeof(int), &i)
 *         cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 *         cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)             # <<<<<<<<<<<<<<
 *         cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)
 *         CHKERR( MPI_Type_get_contents_c(
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_nc, (sizeof(MPI_Count)), (&__pyx_v_c))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused3 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":563
 *         cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 *         cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 *         cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_contents_c(
 *             self.ob_mpi, ni, na, nc, nd, i, a, c, d) )
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_nd, (sizeof(MPI_Datatype)), (&__pyx_v_d))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused4 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":564
 *         cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 *         cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)
 *         CHKERR( MPI_Type_get_contents_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, ni, na, nc, nd, i, a, c, d) )
 *         cdef object integers  = [i[k] for k in range(ni)]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_contents_c(__pyx_v_self->ob_mpi, __pyx_v_ni, __pyx_v_na, __pyx_v_nc, __pyx_v_nd, __pyx_v_i, __pyx_v_a, __pyx_v_c, __pyx_v_d)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 564, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":566
 *         CHKERR( MPI_Type_get_contents_c(
 *             self.ob_mpi, ni, na, nc, nd, i, a, c, d) )
 *         cdef object integers  = [i[k] for k in range(ni)]             # <<<<<<<<<<<<<<
 *         cdef object addresses = [a[k] for k in range(na)]
 *         cdef object counts    = [c[k] for k in range(nc)]
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_ni;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_8genexpr3__pyx_v_k = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_i[__pyx_8genexpr3__pyx_v_k])); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(22, 566, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_integers = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":567
 *             self.ob_mpi, ni, na, nc, nd, i, a, c, d) )
 *         cdef object integers  = [i[k] for k in range(ni)]
 *         cdef object addresses = [a[k] for k in range(na)]             # <<<<<<<<<<<<<<
 *         cdef object counts    = [c[k] for k in range(nc)]
 *         cdef object datatypes = [ref_Datatype(d[k]) for k in range(nd)]
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 567, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_na;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_8genexpr4__pyx_v_k = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_MPI_Aint((__pyx_v_a[__pyx_8genexpr4__pyx_v_k])); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 567, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(22, 567, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_addresses = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":568
 *         cdef object integers  = [i[k] for k in range(ni)]
 *         cdef object addresses = [a[k] for k in range(na)]
 *         cdef object counts    = [c[k] for k in range(nc)]             # <<<<<<<<<<<<<<
 *         cdef object datatypes = [ref_Datatype(d[k]) for k in range(nd)]
 *         return (integers, addresses, counts, datatypes)
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 568, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_nc;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_8genexpr5__pyx_v_k = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[__pyx_8genexpr5__pyx_v_k])); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(22, 568, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_counts = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":569
 *         cdef object addresses = [a[k] for k in range(na)]
 *         cdef object counts    = [c[k] for k in range(nc)]
 *         cdef object datatypes = [ref_Datatype(d[k]) for k in range(nd)]             # <<<<<<<<<<<<<<
 *         return (integers, addresses, counts, datatypes)
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_nd;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_8genexpr6__pyx_v_k = __pyx_t_5;
      __pyx_t_6 = ((PyObject *)__pyx_f_6mpi4py_3MPI_ref_Datatype((__pyx_v_d[__pyx_8genexpr6__pyx_v_k]))); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(22, 569, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_datatypes = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":570
 *         cdef object counts    = [c[k] for k in range(nc)]
 *         cdef object datatypes = [ref_Datatype(d[k]) for k in range(nd)]
 *         return (integers, addresses, counts, datatypes)             # <<<<<<<<<<<<<<
 * 
 *     property contents:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_integers);
  __Pyx_GIVEREF(__pyx_v_integers);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_integers)) __PYX_ERR(22, 570, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_addresses);
  __Pyx_GIVEREF(__pyx_v_addresses);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_addresses)) __PYX_ERR(22, 570, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_counts);
  __Pyx_GIVEREF(__pyx_v_counts);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_counts)) __PYX_ERR(22, 570, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_datatypes);
  __Pyx_GIVEREF(__pyx_v_datatypes);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_datatypes)) __PYX_ERR(22, 570, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":547
 *             return self.Get_envelope()
 * 
 *     def Get_contents(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], list[int], list[Datatype]]:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_contents", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_unused3);
  __Pyx_XDECREF(__pyx_v_unused4);
  __Pyx_XDECREF(__pyx_v_integers);
  __Pyx_XDECREF(__pyx_v_addresses);
  __Pyx_XDECREF(__pyx_v_counts);
  __Pyx_XDECREF(__pyx_v_datatypes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":574
 *     property contents:
 *         """Contents."""
 *         def __get__(self) -> \             # <<<<<<<<<<<<<<
 *                 tuple[list[int], list[int], list[int], list[Datatype]]:
 *             return self.Get_contents()
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8contents_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8contents_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_8contents___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8contents___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":576
 *         def __get__(self) -> \
 *                 tuple[list[int], list[int], list[int], list[Datatype]]:
 *             return self.Get_contents()             # <<<<<<<<<<<<<<
 * 
 *     def decode(self) -> tuple[Datatype, str, dict[str, Any]]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_contents); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 576, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":574
 *     property contents:
 *         """Contents."""
 *         def __get__(self) -> \             # <<<<<<<<<<<<<<
 *                 tuple[list[int], list[int], list[int], list[Datatype]]:
 *             return self.Get_contents()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.contents.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":578
 *             return self.Get_contents()
 * 
 *     def decode(self) -> tuple[Datatype, str, dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         """
 *         Convenience method for decoding a datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_63decode(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_62decode, "decode(self) -> tuple[Datatype, str, dict[str, Any]]\n\n        Convenience method for decoding a datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_63decode = {"decode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_63decode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_62decode};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_63decode(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("decode (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("decode", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "decode", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_62decode(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_62decode(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("decode", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":582
 *         Convenience method for decoding a datatype.
 *         """
 *         return datatype_decode(self, mark=False)             # <<<<<<<<<<<<<<
 * 
 *     property combiner:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_datatype_decode(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":578
 *             return self.Get_contents()
 * 
 *     def decode(self) -> tuple[Datatype, str, dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         """
 *         Convenience method for decoding a datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":586
 *     property combiner:
 *         """Combiner."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return combiner
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8combiner_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8combiner_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_8combiner___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8combiner___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_v_combiner;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":587
 *         """Combiner."""
 *         def __get__(self) -> int:
 *             cdef int combiner = self.Get_envelope()[-1]             # <<<<<<<<<<<<<<
 *             return combiner
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_envelope); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 587, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_combiner = __pyx_t_5;

  /* "src/mpi4py/MPI.src/Datatype.pyx":588
 *         def __get__(self) -> int:
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return combiner             # <<<<<<<<<<<<<<
 * 
 *     property is_named:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_combiner); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":586
 *     property combiner:
 *         """Combiner."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return combiner
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.combiner.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":592
 *     property is_named:
 *         """Is a named datatype."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return combiner == MPI_COMBINER_NAMED
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8is_named_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8is_named_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_8is_named___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8is_named___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_v_combiner;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":593
 *         """Is a named datatype."""
 *         def __get__(self) -> bool:
 *             cdef int combiner = self.Get_envelope()[-1]             # <<<<<<<<<<<<<<
 *             return combiner == MPI_COMBINER_NAMED
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_envelope); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 593, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_combiner = __pyx_t_5;

  /* "src/mpi4py/MPI.src/Datatype.pyx":594
 *         def __get__(self) -> bool:
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return combiner == MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 * 
 *     property is_predefined:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_combiner == MPI_COMBINER_NAMED)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":592
 *     property is_named:
 *         """Is a named datatype."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return combiner == MPI_COMBINER_NAMED
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.is_named.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":598
 *     property is_predefined:
 *         """Is a predefined datatype."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return True
 *             cdef int combiner = self.Get_envelope()[-1]
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_13is_predefined_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_13is_predefined_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_13is_predefined___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_13is_predefined___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  int __pyx_v_combiner;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":599
 *         """Is a predefined datatype."""
 *         def __get__(self) -> bool:
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return True             # <<<<<<<<<<<<<<
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return (combiner == MPI_COMBINER_NAMED or
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":600
 *         def __get__(self) -> bool:
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return True
 *             cdef int combiner = self.Get_envelope()[-1]             # <<<<<<<<<<<<<<
 *             return (combiner == MPI_COMBINER_NAMED or
 *                     combiner == MPI_COMBINER_VALUE_INDEX or
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_envelope); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_combiner = __pyx_t_6;

  /* "src/mpi4py/MPI.src/Datatype.pyx":601
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return True
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return (combiner == MPI_COMBINER_NAMED or             # <<<<<<<<<<<<<<
 *                     combiner == MPI_COMBINER_VALUE_INDEX or
 *                     combiner == MPI_COMBINER_F90_INTEGER or
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_NAMED);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":602
 *             cdef int combiner = self.Get_envelope()[-1]
 *             return (combiner == MPI_COMBINER_NAMED or
 *                     combiner == MPI_COMBINER_VALUE_INDEX or             # <<<<<<<<<<<<<<
 *                     combiner == MPI_COMBINER_F90_INTEGER or
 *                     combiner == MPI_COMBINER_F90_REAL or
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_VALUE_INDEX);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":603
 *             return (combiner == MPI_COMBINER_NAMED or
 *                     combiner == MPI_COMBINER_VALUE_INDEX or
 *                     combiner == MPI_COMBINER_F90_INTEGER or             # <<<<<<<<<<<<<<
 *                     combiner == MPI_COMBINER_F90_REAL or
 *                     combiner == MPI_COMBINER_F90_COMPLEX)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_INTEGER);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":604
 *                     combiner == MPI_COMBINER_VALUE_INDEX or
 *                     combiner == MPI_COMBINER_F90_INTEGER or
 *                     combiner == MPI_COMBINER_F90_REAL or             # <<<<<<<<<<<<<<
 *                     combiner == MPI_COMBINER_F90_COMPLEX)
 * 
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_REAL);
  if (!__pyx_t_1) {
  } else {
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 604, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L4_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":605
 *                     combiner == MPI_COMBINER_F90_INTEGER or
 *                     combiner == MPI_COMBINER_F90_REAL or
 *                     combiner == MPI_COMBINER_F90_COMPLEX)             # <<<<<<<<<<<<<<
 * 
 *     # Pack and Unpack
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_COMPLEX);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_L4_bool_binop_done:;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":598
 *     property is_predefined:
 *         """Is a predefined datatype."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return True
 *             cdef int combiner = self.Get_envelope()[-1]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.is_predefined.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":610
 *     # ---------------
 * 
 *     def Pack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_65Pack(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_64Pack, "Pack(self, inbuf: BufSpec, outbuf: BufSpec, position: int, comm: Comm) -> int\n\n        Pack into contiguous memory according to datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_65Pack = {"Pack", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_65Pack, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_64Pack};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_65Pack(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_inbuf = 0;
  PyObject *__pyx_v_outbuf = 0;
  MPI_Count __pyx_v_position;
  struct PyMPICommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pack (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_inbuf,&__pyx_n_s_outbuf,&__pyx_n_s_position,&__pyx_n_s_comm,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 610, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_outbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 610, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 1); __PYX_ERR(22, 610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_position)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 610, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 2); __PYX_ERR(22, 610, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 610, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, 3); __PYX_ERR(22, 610, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pack") < 0)) __PYX_ERR(22, 610, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_outbuf = values[1];
    __pyx_v_position = __Pyx_PyInt_As_MPI_Count(values[2]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 614, __pyx_L3_error)
    __pyx_v_comm = ((struct PyMPICommObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack", 1, 4, 4, __pyx_nargs); __PYX_ERR(22, 610, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(22, 615, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_64Pack(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_inbuf, __pyx_v_outbuf, __pyx_v_position, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_64Pack(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_inbuf, PyObject *__pyx_v_outbuf, MPI_Count __pyx_v_position, struct PyMPICommObject *__pyx_v_comm) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  MPI_Count __pyx_v_icount;
  MPI_Count __pyx_v_ocount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pack", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":620
 *         Pack into contiguous memory according to datatype.
 *         """
 *         cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":621
 *         """
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 621, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":623
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":624
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":625
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen // extent
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":626
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Count icount = iblen // extent
 *         cdef MPI_Count ocount = oblen
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":627
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen // extent             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ocount = oblen
 *         #
 */
  __pyx_v_icount = (__pyx_v_iblen / __pyx_v_extent);

  /* "src/mpi4py/MPI.src/Datatype.pyx":628
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen // extent
 *         cdef MPI_Count ocount = oblen             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Pack_c(
 */
  __pyx_v_ocount = __pyx_v_oblen;

  /* "src/mpi4py/MPI.src/Datatype.pyx":630
 *         cdef MPI_Count ocount = oblen
 *         #
 *         CHKERR( MPI_Pack_c(             # <<<<<<<<<<<<<<
 *             ibptr, icount, self.ob_mpi,
 *             obptr, ocount, &position,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_c(__pyx_v_ibptr, __pyx_v_icount, __pyx_v_self->ob_mpi, __pyx_v_obptr, __pyx_v_ocount, (&__pyx_v_position), __pyx_v_comm->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 630, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":634
 *             obptr, ocount, &position,
 *             comm.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Unpack(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":610
 *     # ---------------
 * 
 *     def Pack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":636
 *         return position
 * 
 *     def Unpack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_67Unpack(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_66Unpack, "Unpack(self, inbuf: BufSpec, position: int, outbuf: BufSpec, comm: Comm) -> int\n\n        Unpack from contiguous memory according to datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_67Unpack = {"Unpack", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_67Unpack, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_66Unpack};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_67Unpack(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_inbuf = 0;
  MPI_Count __pyx_v_position;
  PyObject *__pyx_v_outbuf = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Unpack (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_inbuf,&__pyx_n_s_position,&__pyx_n_s_outbuf,&__pyx_n_s_comm,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 636, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_position)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 636, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 1); __PYX_ERR(22, 636, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_outbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 636, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 2); __PYX_ERR(22, 636, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 636, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, 3); __PYX_ERR(22, 636, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Unpack") < 0)) __PYX_ERR(22, 636, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_position = __Pyx_PyInt_As_MPI_Count(values[1]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 639, __pyx_L3_error)
    __pyx_v_outbuf = values[2];
    __pyx_v_comm = ((struct PyMPICommObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unpack", 1, 4, 4, __pyx_nargs); __PYX_ERR(22, 636, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(22, 641, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_66Unpack(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_inbuf, __pyx_v_position, __pyx_v_outbuf, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_66Unpack(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_inbuf, MPI_Count __pyx_v_position, PyObject *__pyx_v_outbuf, struct PyMPICommObject *__pyx_v_comm) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  MPI_Count __pyx_v_icount;
  MPI_Count __pyx_v_ocount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Unpack", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":646
 *         Unpack from contiguous memory according to datatype.
 *         """
 *         cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":647
 *         """
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 647, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":649
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":650
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":651
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":652
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Count icount = iblen
 *         cdef MPI_Count ocount = oblen // extent
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":653
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ocount = oblen // extent
 *         #
 */
  __pyx_v_icount = __pyx_v_iblen;

  /* "src/mpi4py/MPI.src/Datatype.pyx":654
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen
 *         cdef MPI_Count ocount = oblen // extent             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Unpack_c(
 */
  __pyx_v_ocount = (__pyx_v_oblen / __pyx_v_extent);

  /* "src/mpi4py/MPI.src/Datatype.pyx":656
 *         cdef MPI_Count ocount = oblen // extent
 *         #
 *         CHKERR( MPI_Unpack_c(             # <<<<<<<<<<<<<<
 *             ibptr, icount, &position,
 *             obptr, ocount, self.ob_mpi,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Unpack_c(__pyx_v_ibptr, __pyx_v_icount, (&__pyx_v_position), __pyx_v_obptr, __pyx_v_ocount, __pyx_v_self->ob_mpi, __pyx_v_comm->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 656, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":660
 *             obptr, ocount, self.ob_mpi,
 *             comm.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Pack_size(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":636
 *         return position
 * 
 *     def Unpack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":662
 *         return position
 * 
 *     def Pack_size(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_69Pack_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_68Pack_size, "Pack_size(self, count: int, comm: Comm) -> int\n\n        Determine the amount of space needed to pack a message.\n\n        .. note:: Returns an upper bound measured in bytes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_69Pack_size = {"Pack_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_69Pack_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_68Pack_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_69Pack_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Count __pyx_v_count;
  struct PyMPICommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pack_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_count,&__pyx_n_s_comm,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_count)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 662, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 662, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_size", 1, 2, 2, 1); __PYX_ERR(22, 662, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pack_size") < 0)) __PYX_ERR(22, 662, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_count = __Pyx_PyInt_As_MPI_Count(values[0]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 664, __pyx_L3_error)
    __pyx_v_comm = ((struct PyMPICommObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_size", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 662, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(22, 665, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_68Pack_size(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_count, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_68Pack_size(struct PyMPIDatatypeObject *__pyx_v_self, MPI_Count __pyx_v_count, struct PyMPICommObject *__pyx_v_comm) {
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pack_size", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":672
 *         .. note:: Returns an upper bound measured in bytes.
 *         """
 *         cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Pack_size_c(
 *             count, self.ob_mpi,
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":673
 *         """
 *         cdef MPI_Count size = 0
 *         CHKERR( MPI_Pack_size_c(             # <<<<<<<<<<<<<<
 *             count, self.ob_mpi,
 *             comm.ob_mpi, &size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_size_c(__pyx_v_count, __pyx_v_self->ob_mpi, __pyx_v_comm->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 673, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":676
 *             count, self.ob_mpi,
 *             comm.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     # Canonical Pack and Unpack
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 676, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":662
 *         return position
 * 
 *     def Pack_size(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":681
 *     # -------------------------
 * 
 *     def Pack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_71Pack_external(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_70Pack_external, "Pack_external(self, datarep: str, inbuf: BufSpec, outbuf: BufSpec, position: int) -> int\n\n        Pack into contiguous memory according to datatype.\n\n        Uses the portable data representation **external32**.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_71Pack_external = {"Pack_external", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_71Pack_external, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_70Pack_external};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_71Pack_external(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_v_inbuf = 0;
  PyObject *__pyx_v_outbuf = 0;
  MPI_Count __pyx_v_position;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pack_external (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datarep,&__pyx_n_s_inbuf,&__pyx_n_s_outbuf,&__pyx_n_s_position,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datarep)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 681, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 681, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 1); __PYX_ERR(22, 681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_outbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 681, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 2); __PYX_ERR(22, 681, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_position)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 681, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, 3); __PYX_ERR(22, 681, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pack_external") < 0)) __PYX_ERR(22, 681, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_outbuf = values[2];
    __pyx_v_position = __Pyx_PyInt_As_MPI_Count(values[3]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 686, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_external", 1, 4, 4, __pyx_nargs); __PYX_ERR(22, 681, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_70Pack_external(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_datarep, __pyx_v_inbuf, __pyx_v_outbuf, __pyx_v_position);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_70Pack_external(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_datarep, PyObject *__pyx_v_inbuf, PyObject *__pyx_v_outbuf, MPI_Count __pyx_v_position) {
  char *__pyx_v_cdatarep;
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  MPI_Count __pyx_v_icount;
  MPI_Count __pyx_v_ocount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pack_external", 0);
  __Pyx_INCREF(__pyx_v_datarep);

  /* "src/mpi4py/MPI.src/Datatype.pyx":693
 *         Uses the portable data representation **external32**.
 *         """
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Count lb = 0, extent = 0
 */
  __pyx_v_cdatarep = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":694
 *         """
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep)             # <<<<<<<<<<<<<<
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_datarep, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":695
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":696
 *         datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 696, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":698
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":699
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":700
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen // extent
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":701
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Count icount = iblen // extent
 *         cdef MPI_Count ocount = oblen
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":702
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen // extent             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ocount = oblen
 *         #
 */
  __pyx_v_icount = (__pyx_v_iblen / __pyx_v_extent);

  /* "src/mpi4py/MPI.src/Datatype.pyx":703
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen // extent
 *         cdef MPI_Count ocount = oblen             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Pack_external_c(
 */
  __pyx_v_ocount = __pyx_v_oblen;

  /* "src/mpi4py/MPI.src/Datatype.pyx":705
 *         cdef MPI_Count ocount = oblen
 *         #
 *         CHKERR( MPI_Pack_external_c(             # <<<<<<<<<<<<<<
 *             cdatarep,
 *             ibptr, icount, self.ob_mpi,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_external_c(__pyx_v_cdatarep, __pyx_v_ibptr, __pyx_v_icount, __pyx_v_self->ob_mpi, __pyx_v_obptr, __pyx_v_ocount, (&__pyx_v_position))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 705, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":709
 *             ibptr, icount, self.ob_mpi,
 *             obptr, ocount, &position) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Unpack_external(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":681
 *     # -------------------------
 * 
 *     def Pack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":711
 *         return position
 * 
 *     def Unpack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_73Unpack_external(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_72Unpack_external, "Unpack_external(self, datarep: str, inbuf: BufSpec, position: int, outbuf: BufSpec) -> int\n\n        Unpack from contiguous memory according to datatype.\n\n        Uses the portable data representation **external32**.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_73Unpack_external = {"Unpack_external", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_73Unpack_external, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_72Unpack_external};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_73Unpack_external(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_v_inbuf = 0;
  MPI_Count __pyx_v_position;
  PyObject *__pyx_v_outbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Unpack_external (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datarep,&__pyx_n_s_inbuf,&__pyx_n_s_position,&__pyx_n_s_outbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datarep)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 711, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 711, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 1); __PYX_ERR(22, 711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_position)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 711, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 2); __PYX_ERR(22, 711, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_outbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 711, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, 3); __PYX_ERR(22, 711, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Unpack_external") < 0)) __PYX_ERR(22, 711, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_datarep = values[0];
    __pyx_v_inbuf = values[1];
    __pyx_v_position = __Pyx_PyInt_As_MPI_Count(values[2]); if (unlikely((__pyx_v_position == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 715, __pyx_L3_error)
    __pyx_v_outbuf = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unpack_external", 1, 4, 4, __pyx_nargs); __PYX_ERR(22, 711, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_72Unpack_external(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_datarep, __pyx_v_inbuf, __pyx_v_position, __pyx_v_outbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_72Unpack_external(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_datarep, PyObject *__pyx_v_inbuf, MPI_Count __pyx_v_position, PyObject *__pyx_v_outbuf) {
  char *__pyx_v_cdatarep;
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  void *__pyx_v_ibptr;
  void *__pyx_v_obptr;
  MPI_Aint __pyx_v_iblen;
  MPI_Aint __pyx_v_oblen;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  MPI_Count __pyx_v_icount;
  MPI_Count __pyx_v_ocount;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Unpack_external", 0);
  __Pyx_INCREF(__pyx_v_datarep);

  /* "src/mpi4py/MPI.src/Datatype.pyx":723
 *         Uses the portable data representation **external32**.
 *         """
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Count lb = 0, extent = 0
 */
  __pyx_v_cdatarep = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":724
 *         """
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep)             # <<<<<<<<<<<<<<
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 724, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_datarep, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":725
 *         cdef char *cdatarep = NULL
 *         datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":726
 *         datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Count lb = 0, extent = 0
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_extent_c(__pyx_v_self->ob_mpi, (&__pyx_v_lb), (&__pyx_v_extent))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 726, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":728
 *         CHKERR( MPI_Type_get_extent_c(self.ob_mpi, &lb, &extent) )
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 */
  __pyx_v_ibptr = NULL;
  __pyx_v_obptr = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":729
 *         #
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0             # <<<<<<<<<<<<<<
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 */
  __pyx_v_iblen = 0;
  __pyx_v_oblen = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":730
 *         cdef void *ibptr = NULL, *obptr = NULL
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)             # <<<<<<<<<<<<<<
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_inbuf, (&__pyx_v_ibptr), (&__pyx_v_iblen))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused1 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":731
 *         cdef MPI_Aint iblen = 0, oblen = 0
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)             # <<<<<<<<<<<<<<
 *         cdef MPI_Count icount = iblen
 *         cdef MPI_Count ocount = oblen // extent
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_outbuf, (&__pyx_v_obptr), (&__pyx_v_oblen))); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused2 = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":732
 *         cdef unused1 = asbuffer_r(inbuf,  &ibptr, &iblen)
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen             # <<<<<<<<<<<<<<
 *         cdef MPI_Count ocount = oblen // extent
 *         #
 */
  __pyx_v_icount = __pyx_v_iblen;

  /* "src/mpi4py/MPI.src/Datatype.pyx":733
 *         cdef unused2 = asbuffer_w(outbuf, &obptr, &oblen)
 *         cdef MPI_Count icount = iblen
 *         cdef MPI_Count ocount = oblen // extent             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Unpack_external_c(
 */
  __pyx_v_ocount = (__pyx_v_oblen / __pyx_v_extent);

  /* "src/mpi4py/MPI.src/Datatype.pyx":735
 *         cdef MPI_Count ocount = oblen // extent
 *         #
 *         CHKERR( MPI_Unpack_external_c(             # <<<<<<<<<<<<<<
 *             cdatarep,
 *             ibptr, icount, &position,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Unpack_external_c(__pyx_v_cdatarep, __pyx_v_ibptr, __pyx_v_icount, (&__pyx_v_position), __pyx_v_obptr, __pyx_v_ocount, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 735, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":739
 *             ibptr, icount, &position,
 *             obptr, ocount, self.ob_mpi) )
 *         return position             # <<<<<<<<<<<<<<
 * 
 *     def Pack_external_size(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Count(__pyx_v_position); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":711
 *         return position
 * 
 *     def Unpack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Unpack_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":741
 *         return position
 * 
 *     def Pack_external_size(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_75Pack_external_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_74Pack_external_size, "Pack_external_size(self, datarep: str, count: int) -> int\n\n        Determine the amount of space needed to pack a message.\n\n        Uses the portable data representation **external32**.\n\n        .. note:: Returns an upper bound measured in bytes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_75Pack_external_size = {"Pack_external_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_75Pack_external_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_74Pack_external_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_75Pack_external_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_datarep = 0;
  MPI_Count __pyx_v_count;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pack_external_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datarep,&__pyx_n_s_count,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datarep)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 741, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_count)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 741, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pack_external_size", 1, 2, 2, 1); __PYX_ERR(22, 741, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pack_external_size") < 0)) __PYX_ERR(22, 741, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_datarep = values[0];
    __pyx_v_count = __Pyx_PyInt_As_MPI_Count(values[1]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(22, 744, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pack_external_size", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 741, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_74Pack_external_size(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_datarep, __pyx_v_count);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_74Pack_external_size(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_datarep, MPI_Count __pyx_v_count) {
  char *__pyx_v_cdatarep;
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pack_external_size", 0);
  __Pyx_INCREF(__pyx_v_datarep);

  /* "src/mpi4py/MPI.src/Datatype.pyx":753
 *         .. note:: Returns an upper bound measured in bytes.
 *         """
 *         cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count size = 0
 *         datarep = asmpistr(datarep, &cdatarep)
 */
  __pyx_v_cdatarep = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":754
 *         """
 *         cdef char *cdatarep = NULL
 *         cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *         datarep = asmpistr(datarep, &cdatarep)
 *         CHKERR( MPI_Pack_external_size_c(
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":755
 *         cdef char *cdatarep = NULL
 *         cdef MPI_Count size = 0
 *         datarep = asmpistr(datarep, &cdatarep)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Pack_external_size_c(
 *             cdatarep, count, self.ob_mpi, &size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_datarep, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":756
 *         cdef MPI_Count size = 0
 *         datarep = asmpistr(datarep, &cdatarep)
 *         CHKERR( MPI_Pack_external_size_c(             # <<<<<<<<<<<<<<
 *             cdatarep, count, self.ob_mpi, &size) )
 *         return size
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pack_external_size_c(__pyx_v_cdatarep, __pyx_v_count, __pyx_v_self->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 756, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":758
 *         CHKERR( MPI_Pack_external_size_c(
 *             cdatarep, count, self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     # Attributes
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Count(__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":741
 *         return position
 * 
 *     def Pack_external_size(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Pack_external_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":763
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_77Get_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_76Get_attr, "Get_attr(self, keyval: int) -> int | Any | None\n\n        Retrieve attribute value by key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_77Get_attr = {"Get_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_77Get_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_76Get_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_77Get_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 763, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_attr") < 0)) __PYX_ERR(22, 763, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 763, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 763, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_76Get_attr(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_76Get_attr(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_keyval) {
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_attr", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":767
 *         Retrieve attribute value by key.
 *         """
 *         cdef void *attrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 */
  __pyx_v_attrval = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":768
 *         """
 *         cdef void *attrval = NULL
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":769
 *         cdef void *attrval = NULL
 *         cdef int flag = 0
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )             # <<<<<<<<<<<<<<
 *         if not flag: return None
 *         if attrval == NULL: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_attr(__pyx_v_self->ob_mpi, __pyx_v_keyval, (&__pyx_v_attrval), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 769, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":770
 *         cdef int flag = 0
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         if attrval == NULL: return 0
 *         # user-defined attribute keyval
 */
  __pyx_t_2 = (!(__pyx_v_flag != 0));
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":771
 *         CHKERR( MPI_Type_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 *         if attrval == NULL: return 0             # <<<<<<<<<<<<<<
 *         # user-defined attribute keyval
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 */
  __pyx_t_2 = (__pyx_v_attrval == NULL);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":773
 *         if attrval == NULL: return 0
 *         # user-defined attribute keyval
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(__pyx_v_self->ob_mpi, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":763
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":775
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_79Set_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_78Set_attr, "Set_attr(self, keyval: int, attrval: Any) -> None\n\n        Store attribute value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_79Set_attr = {"Set_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_79Set_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_78Set_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_79Set_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  PyObject *__pyx_v_attrval = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,&__pyx_n_s_attrval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 775, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_attrval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 775, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, 1); __PYX_ERR(22, 775, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_attr") < 0)) __PYX_ERR(22, 775, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 775, __pyx_L3_error)
    __pyx_v_attrval = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 775, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_78Set_attr(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_keyval, __pyx_v_attrval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_78Set_attr(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_attr", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":779
 *         Store attribute value associated with a key.
 *         """
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Delete_attr(self, int keyval: int) -> None:
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(__pyx_v_self->ob_mpi, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 779, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":775
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":781
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_81Delete_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_80Delete_attr, "Delete_attr(self, keyval: int) -> None\n\n        Delete attribute value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_81Delete_attr = {"Delete_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_81Delete_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_80Delete_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_81Delete_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Delete_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 781, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Delete_attr") < 0)) __PYX_ERR(22, 781, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 781, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 781, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_80Delete_attr(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_80Delete_attr(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_keyval) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Delete_attr", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":785
 *         Delete attribute value associated with a key.
 *         """
 *         PyMPI_attr_del(self.ob_mpi, keyval)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(__pyx_v_self->ob_mpi, __pyx_v_keyval); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 785, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":781
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":787
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_83Create_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_82Create_keyval, "Create_keyval(cls, copy_fn: Callable[[Datatype, int, Any], Any] | None = None, delete_fn: Callable[[Datatype, int, Any], None] | None = None, nopython: bool = False) -> int\n\n        Create a new attribute key for datatypes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_83Create_keyval = {"Create_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_83Create_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_82Create_keyval};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_83Create_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_delete_fn = 0;
  PyObject *__pyx_v_nopython = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_keyval (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_copy_fn,&__pyx_n_s_delete_fn,&__pyx_n_s_nopython,0};

    /* "src/mpi4py/MPI.src/Datatype.pyx":790
 *     def Create_keyval(
 *         cls,
 *         copy_fn: Callable[[Datatype, int, Any], Any] | None = None,             # <<<<<<<<<<<<<<
 *         delete_fn: Callable[[Datatype, int, Any], None] | None = None,
 *         nopython: bool = False,
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Datatype.pyx":791
 *         cls,
 *         copy_fn: Callable[[Datatype, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Datatype, int, Any], None] | None = None,             # <<<<<<<<<<<<<<
 *         nopython: bool = False,
 *     ) -> int:
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Datatype.pyx":792
 *         copy_fn: Callable[[Datatype, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Datatype, int, Any], None] | None = None,
 *         nopython: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_copy_fn);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 787, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_delete_fn);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 787, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nopython);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 787, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_keyval") < 0)) __PYX_ERR(22, 787, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_copy_fn = values[0];
    __pyx_v_delete_fn = values[1];
    __pyx_v_nopython = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_keyval", 0, 0, 3, __pyx_nargs); __PYX_ERR(22, 787, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_82Create_keyval(((PyTypeObject*)__pyx_v_cls), __pyx_v_copy_fn, __pyx_v_delete_fn, __pyx_v_nopython);

  /* "src/mpi4py/MPI.src/Datatype.pyx":787
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_82Create_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython) {
  int __pyx_v_keyval;
  MPI_Type_copy_attr_function *__pyx_v__copy;
  MPI_Type_delete_attr_function *__pyx_v__del;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_keyval", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":797
 *         Create a new attribute key for datatypes.
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *         cdef MPI_Type_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Type_delete_attr_function *_del = PyMPI_attr_delete_fn
 */
  __pyx_v_keyval = MPI_KEYVAL_INVALID;

  /* "src/mpi4py/MPI.src/Datatype.pyx":798
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Type_copy_attr_function *_copy = PyMPI_attr_copy_fn             # <<<<<<<<<<<<<<
 *         cdef MPI_Type_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 */
  __pyx_v__copy = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn;

  /* "src/mpi4py/MPI.src/Datatype.pyx":799
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Type_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Type_delete_attr_function *_del = PyMPI_attr_delete_fn             # <<<<<<<<<<<<<<
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, <void *>state) )
 */
  __pyx_v__del = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn;

  /* "src/mpi4py/MPI.src/Datatype.pyx":800
 *         cdef MPI_Type_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Type_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_DATATYPE_NULL, keyval, state)
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_copy_fn);
  __Pyx_GIVEREF(__pyx_v_copy_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_copy_fn)) __PYX_ERR(22, 800, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_delete_fn);
  __Pyx_GIVEREF(__pyx_v_delete_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_delete_fn)) __PYX_ERR(22, 800, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_nopython);
  __Pyx_GIVEREF(__pyx_v_nopython);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_nopython)) __PYX_ERR(22, 800, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI__p_keyval), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":801
 *         cdef MPI_Type_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, <void *>state) )             # <<<<<<<<<<<<<<
 *         PyMPI_attr_state_set(MPI_DATATYPE_NULL, keyval, state)
 *         return keyval
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_create_keyval(__pyx_v__copy, __pyx_v__del, (&__pyx_v_keyval), ((void *)__pyx_v_state))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 801, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":802
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_DATATYPE_NULL, keyval, state)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_DATATYPE_NULL, __pyx_v_keyval, __pyx_v_state); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 802, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":803
 *         CHKERR( MPI_Type_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_DATATYPE_NULL, keyval, state)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":787
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":805
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_85Free_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_84Free_keyval, "Free_keyval(cls, keyval: int) -> int\n\n        Free an attribute key for datatypes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_85Free_keyval = {"Free_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_85Free_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_84Free_keyval};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_85Free_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free_keyval (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 805, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Free_keyval") < 0)) __PYX_ERR(22, 805, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 806, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 805, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_84Free_keyval(((PyTypeObject*)__pyx_v_cls), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_84Free_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_keyval) {
  int __pyx_v_keyval_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free_keyval", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":810
 *         Free an attribute key for datatypes.
 *         """
 *         cdef int keyval_save = keyval             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_DATATYPE_NULL, keyval_save)
 */
  __pyx_v_keyval_save = __pyx_v_keyval;

  /* "src/mpi4py/MPI.src/Datatype.pyx":811
 *         """
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Type_free_keyval(&keyval) )             # <<<<<<<<<<<<<<
 *         PyMPI_attr_state_del(MPI_DATATYPE_NULL, keyval_save)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_free_keyval((&__pyx_v_keyval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 811, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":812
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Type_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_DATATYPE_NULL, keyval_save)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_DATATYPE_NULL, __pyx_v_keyval_save); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 812, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":813
 *         CHKERR( MPI_Type_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_DATATYPE_NULL, keyval_save)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     # Naming Objects
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":805
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":818
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_87Get_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_86Get_name, "Get_name(self) -> str\n\n        Get the print name for this datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_87Get_name = {"Get_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_87Get_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_86Get_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_87Get_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_name", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_name", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_86Get_name(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_86Get_name(struct PyMPIDatatypeObject *__pyx_v_self) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_name", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":823
 *         """
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":824
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0
 *         CHKERR( MPI_Type_get_name(self.ob_mpi, name, &nlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_name(__pyx_v_self->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(22, 824, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":825
 *         cdef int nlen = 0
 *         CHKERR( MPI_Type_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 *     def Set_name(self, name: str) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":818
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":827
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_89Set_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_88Set_name, "Set_name(self, name: str) -> None\n\n        Set the print name for this datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_89Set_name = {"Set_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_89Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_88Set_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_89Set_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 827, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_name") < 0)) __PYX_ERR(22, 827, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 827, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_88Set_name(((struct PyMPIDatatypeObject *)__pyx_v_self), __pyx_v_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_88Set_name(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_name", 0);
  __Pyx_INCREF(__pyx_v_name);

  /* "src/mpi4py/MPI.src/Datatype.pyx":831
 *         Set the print name for this datatype.
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         name = asmpistr(name, &cname)
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )
 */
  __pyx_v_cname = NULL;

  /* "src/mpi4py/MPI.src/Datatype.pyx":832
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":833
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname)
 *         CHKERR( MPI_Type_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_set_name(__pyx_v_self->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(22, 833, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":827
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this datatype.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":837
 *     property name:
 *         """Print name."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_4name___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_4name___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":838
 *         """Print name."""
 *         def __get__(self) -> str:
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: str):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 838, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 838, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":837
 *     property name:
 *         """Print name."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":840
 *             return self.Get_name()
 * 
 *         def __set__(self, value: str):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_8Datatype_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_8Datatype_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_4name_2__set__(((struct PyMPIDatatypeObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_8Datatype_4name_2__set__(struct PyMPIDatatypeObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":841
 * 
 *         def __set__(self, value: str):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":840
 *             return self.Get_name()
 * 
 *         def __set__(self, value: str):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":846
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_91py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_90py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_91py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_91py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_90py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_91py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_90py2f(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_90py2f(struct PyMPIDatatypeObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":849
 *         """
 *         """
 *         return MPI_Type_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Type_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":846
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":851
 *         return MPI_Type_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Datatype:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_93f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_92f2py, "f2py(cls, arg: int) -> Datatype\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_93f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_93f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_92f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_93f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 851, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(22, 851, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 851, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_92f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_92f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":855
 *         """
 *         """
 *         return fromhandle(MPI_Type_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Python/NumPy interoperability
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(22, 855, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Type_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":851
 *         return MPI_Type_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Datatype:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":860
 *     # -----------------------------
 * 
 *     def tocode(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get character code or type string from predefined MPI datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_95tocode(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_94tocode, "tocode(self) -> str\n\n        Get character code or type string from predefined MPI datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_95tocode = {"tocode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_95tocode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_94tocode};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_95tocode(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("tocode (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("tocode", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "tocode", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_94tocode(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_94tocode(struct PyMPIDatatypeObject *__pyx_v_self) {
  char const *__pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tocode", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":864
 *         Get character code or type string from predefined MPI datatype.
 *         """
 *         cdef const char *s = DatatypeCode(self.ob_mpi)             # <<<<<<<<<<<<<<
 *         if s != NULL: return pystr(s)
 *         raise ValueError("cannot map to character code or type string")
 */
  __pyx_v_s = __pyx_f_6mpi4py_3MPI_DatatypeCode(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/Datatype.pyx":865
 *         """
 *         cdef const char *s = DatatypeCode(self.ob_mpi)
 *         if s != NULL: return pystr(s)             # <<<<<<<<<<<<<<
 *         raise ValueError("cannot map to character code or type string")
 * 
 */
  __pyx_t_1 = (__pyx_v_s != NULL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":866
 *         cdef const char *s = DatatypeCode(self.ob_mpi)
 *         if s != NULL: return pystr(s)
 *         raise ValueError("cannot map to character code or type string")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(22, 866, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":860
 *     # -----------------------------
 * 
 *     def tocode(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get character code or type string from predefined MPI datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.tocode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":868
 *         raise ValueError("cannot map to character code or type string")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromcode(cls, code: str) -> Datatype:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_97fromcode(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Datatype_96fromcode, "fromcode(cls, code: str) -> Datatype\n\n        Get predefined MPI datatype from character code or type string.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Datatype_97fromcode = {"fromcode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_97fromcode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_96fromcode};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_97fromcode(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_code = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromcode (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 868, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromcode") < 0)) __PYX_ERR(22, 868, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_code = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromcode", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 868, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.fromcode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_96fromcode(((PyTypeObject*)__pyx_v_cls), __pyx_v_code);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_96fromcode(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_code) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  Py_UCS4 __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromcode", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":873
 *         Get predefined MPI datatype from character code or type string.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             return <Datatype?> TypeDict[code]
 *         except KeyError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Datatype.pyx":874
 *         """
 *         try:
 *             return <Datatype?> TypeDict[code]             # <<<<<<<<<<<<<<
 *         except KeyError:
 *             raise ValueError(f"cannot map code {code!r} to MPI datatype")
 */
      __Pyx_XDECREF(__pyx_r);
      if (unlikely(__pyx_v_6mpi4py_3MPI_TypeDict == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(22, 874, __pyx_L3_error)
      }
      __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_6mpi4py_3MPI_TypeDict, __pyx_v_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 874, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6mpi4py_3MPI_Datatype)))) __PYX_ERR(22, 874, __pyx_L3_error)
      __Pyx_INCREF((PyObject *)((struct PyMPIDatatypeObject *)__pyx_t_4));
      __pyx_r = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "src/mpi4py/MPI.src/Datatype.pyx":873
 *         Get predefined MPI datatype from character code or type string.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             return <Datatype?> TypeDict[code]
 *         except KeyError:
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Datatype.pyx":875
 *         try:
 *             return <Datatype?> TypeDict[code]
 *         except KeyError:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"cannot map code {code!r} to MPI datatype")
 * 
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("mpi4py.MPI.Datatype.fromcode", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(22, 875, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/Datatype.pyx":876
 *             return <Datatype?> TypeDict[code]
 *         except KeyError:
 *             raise ValueError(f"cannot map code {code!r} to MPI datatype")             # <<<<<<<<<<<<<<
 * 
 *     property typestr:
 */
      __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(22, 876, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = 0;
      __pyx_t_10 = 127;
      __Pyx_INCREF(__pyx_kp_u_cannot_map_code);
      __pyx_t_9 += 16;
      __Pyx_GIVEREF(__pyx_kp_u_cannot_map_code);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_cannot_map_code);
      __pyx_t_11 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_code), __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(22, 876, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_10;
      __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_11);
      __pyx_t_11 = 0;
      __Pyx_INCREF(__pyx_kp_u_to_MPI_datatype);
      __pyx_t_9 += 16;
      __Pyx_GIVEREF(__pyx_kp_u_to_MPI_datatype);
      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u_to_MPI_datatype);
      __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(22, 876, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(22, 876, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(22, 876, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/Datatype.pyx":873
 *         Get predefined MPI datatype from character code or type string.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             return <Datatype?> TypeDict[code]
 *         except KeyError:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":868
 *         raise ValueError("cannot map to character code or type string")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromcode(cls, code: str) -> Datatype:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.fromcode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":880
 *     property typestr:
 *         """Type string."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeStr(self.ob_mpi)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_7typestr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_7typestr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_7typestr___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_7typestr___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  char const *__pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":881
 *         """Type string."""
 *         def __get__(self) -> str:
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""             # <<<<<<<<<<<<<<
 *             cdef const char *s = DatatypeStr(self.ob_mpi)
 *             if s != NULL: return pystr(s)
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_);
    __pyx_r = __pyx_n_s_;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":882
 *         def __get__(self) -> str:
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeStr(self.ob_mpi)             # <<<<<<<<<<<<<<
 *             if s != NULL: return pystr(s)
 *             return f"V{mpiextent(self.ob_mpi)}"
 */
  __pyx_v_s = __pyx_f_6mpi4py_3MPI_DatatypeStr(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/Datatype.pyx":883
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeStr(self.ob_mpi)
 *             if s != NULL: return pystr(s)             # <<<<<<<<<<<<<<
 *             return f"V{mpiextent(self.ob_mpi)}"
 * 
 */
  __pyx_t_1 = (__pyx_v_s != NULL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 883, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":884
 *             cdef const char *s = DatatypeStr(self.ob_mpi)
 *             if s != NULL: return pystr(s)
 *             return f"V{mpiextent(self.ob_mpi)}"             # <<<<<<<<<<<<<<
 * 
 *     property typechar:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_f_6mpi4py_3MPI_mpiextent(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_n_u_V, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":880
 *     property typestr:
 *         """Type string."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeStr(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.typestr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":888
 *     property typechar:
 *         """Character code."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeChar(self.ob_mpi)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8typechar_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Datatype_8typechar_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Datatype_8typechar___get__(((struct PyMPIDatatypeObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Datatype_8typechar___get__(struct PyMPIDatatypeObject *__pyx_v_self) {
  char const *__pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":889
 *         """Character code."""
 *         def __get__(self) -> str:
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""             # <<<<<<<<<<<<<<
 *             cdef const char *s = DatatypeChar(self.ob_mpi)
 *             if s != NULL: return pystr(s)
 */
  __pyx_t_1 = (__pyx_v_self->ob_mpi == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_);
    __pyx_r = __pyx_n_s_;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":890
 *         def __get__(self) -> str:
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeChar(self.ob_mpi)             # <<<<<<<<<<<<<<
 *             if s != NULL: return pystr(s)
 *             return "V"
 */
  __pyx_v_s = __pyx_f_6mpi4py_3MPI_DatatypeChar(__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/Datatype.pyx":891
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeChar(self.ob_mpi)
 *             if s != NULL: return pystr(s)             # <<<<<<<<<<<<<<
 *             return "V"
 * 
 */
  __pyx_t_1 = (__pyx_v_s != NULL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 891, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":892
 *             cdef const char *s = DatatypeChar(self.ob_mpi)
 *             if s != NULL: return pystr(s)
 *             return "V"             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_n_s_V);
  __pyx_r = __pyx_n_s_V;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":888
 *     property typechar:
 *         """Character code."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi == MPI_DATATYPE_NULL: return ""
 *             cdef const char *s = DatatypeChar(self.ob_mpi)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Datatype.typechar.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":898
 * # -----------------
 * 
 * def Get_address(location: Buffer | Bottom) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_27Get_address(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_26Get_address, "Get_address(location: Buffer | Bottom) -> int\n\n    Get the address of a location in memory.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_27Get_address = {"Get_address", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_27Get_address, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_26Get_address};
static PyObject *__pyx_pw_6mpi4py_3MPI_27Get_address(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_location = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_address (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_location,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_location)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 898, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_address") < 0)) __PYX_ERR(22, 898, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_location = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_address", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 898, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Get_address", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_26Get_address(__pyx_self, __pyx_v_location);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_26Get_address(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_location) {
  void *__pyx_v_baseptr;
  MPI_Aint __pyx_v_address;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_address", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":902
 *     Get the address of a location in memory.
 *     """
 *     cdef void *baseptr = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *     if not is_BOTTOM(location):
 *         asbuffer_r(location, &baseptr, NULL)
 */
  __pyx_v_baseptr = MPI_BOTTOM;

  /* "src/mpi4py/MPI.src/Datatype.pyx":903
 *     """
 *     cdef void *baseptr = MPI_BOTTOM
 *     if not is_BOTTOM(location):             # <<<<<<<<<<<<<<
 *         asbuffer_r(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_BOTTOM(__pyx_v_location); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(22, 903, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Datatype.pyx":904
 *     cdef void *baseptr = MPI_BOTTOM
 *     if not is_BOTTOM(location):
 *         asbuffer_r(location, &baseptr, NULL)             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 */
    __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_r(__pyx_v_location, (&__pyx_v_baseptr), NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 904, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Datatype.pyx":903
 *     """
 *     cdef void *baseptr = MPI_BOTTOM
 *     if not is_BOTTOM(location):             # <<<<<<<<<<<<<<
 *         asbuffer_r(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0
 */
  }

  /* "src/mpi4py/MPI.src/Datatype.pyx":905
 *     if not is_BOTTOM(location):
 *         asbuffer_r(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 *     return address
 */
  __pyx_v_address = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":906
 *         asbuffer_r(location, &baseptr, NULL)
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )             # <<<<<<<<<<<<<<
 *     return address
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_address(__pyx_v_baseptr, (&__pyx_v_address))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(22, 906, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":907
 *     cdef MPI_Aint address = 0
 *     CHKERR( MPI_Get_address(baseptr, &address) )
 *     return address             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Aint(__pyx_v_address); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":898
 * # -----------------
 * 
 * def Get_address(location: Buffer | Bottom) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Get_address", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":910
 * 
 * 
 * def Aint_add(Aint base: int, Aint disp: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the sum of base address and displacement.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_29Aint_add(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_28Aint_add, "Aint_add(base: int, disp: int) -> int\n\n    Return the sum of base address and displacement.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_29Aint_add = {"Aint_add", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_29Aint_add, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_28Aint_add};
static PyObject *__pyx_pw_6mpi4py_3MPI_29Aint_add(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Aint __pyx_v_base;
  MPI_Aint __pyx_v_disp;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Aint_add (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_base,&__pyx_n_s_disp,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_base)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 910, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_disp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 910, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Aint_add", 1, 2, 2, 1); __PYX_ERR(22, 910, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Aint_add") < 0)) __PYX_ERR(22, 910, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_base = __Pyx_PyInt_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_base == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(22, 910, __pyx_L3_error)
    __pyx_v_disp = __Pyx_PyInt_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(22, 910, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Aint_add", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 910, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Aint_add", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_28Aint_add(__pyx_self, __pyx_v_base, __pyx_v_disp);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_28Aint_add(CYTHON_UNUSED PyObject *__pyx_self, MPI_Aint __pyx_v_base, MPI_Aint __pyx_v_disp) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Aint_add", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":914
 *     Return the sum of base address and displacement.
 *     """
 *     return MPI_Aint_add(base, disp)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Aint(MPI_Aint_add(__pyx_v_base, __pyx_v_disp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":910
 * 
 * 
 * def Aint_add(Aint base: int, Aint disp: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the sum of base address and displacement.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Aint_add", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Datatype.pyx":917
 * 
 * 
 * def Aint_diff(Aint addr1: int, Aint addr2: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the difference between absolute addresses.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_31Aint_diff(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_30Aint_diff, "Aint_diff(addr1: int, addr2: int) -> int\n\n    Return the difference between absolute addresses.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_31Aint_diff = {"Aint_diff", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_31Aint_diff, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_30Aint_diff};
static PyObject *__pyx_pw_6mpi4py_3MPI_31Aint_diff(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Aint __pyx_v_addr1;
  MPI_Aint __pyx_v_addr2;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Aint_diff (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_addr1,&__pyx_n_s_addr2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_addr1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 917, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_addr2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 917, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Aint_diff", 1, 2, 2, 1); __PYX_ERR(22, 917, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Aint_diff") < 0)) __PYX_ERR(22, 917, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_addr1 = __Pyx_PyInt_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_addr1 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(22, 917, __pyx_L3_error)
    __pyx_v_addr2 = __Pyx_PyInt_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_addr2 == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(22, 917, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Aint_diff", 1, 2, 2, __pyx_nargs); __PYX_ERR(22, 917, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Aint_diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_30Aint_diff(__pyx_self, __pyx_v_addr1, __pyx_v_addr2);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_30Aint_diff(CYTHON_UNUSED PyObject *__pyx_self, MPI_Aint __pyx_v_addr1, MPI_Aint __pyx_v_addr2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Aint_diff", 1);

  /* "src/mpi4py/MPI.src/Datatype.pyx":921
 *     Return the difference between absolute addresses.
 *     """
 *     return MPI_Aint_diff(addr1, addr2)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Aint(MPI_Aint_diff(__pyx_v_addr1, __pyx_v_addr2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":917
 * 
 * 
 * def Aint_diff(Aint addr1: int, Aint addr2: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the difference between absolute addresses.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Aint_diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":6
 *     """
 * 
 *     def __cinit__(self, Status status: Status | None = None):             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *s = &self.ob_mpi
 *         CHKERR( MPI_Status_set_source (s, MPI_ANY_SOURCE ) )
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Status_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Status_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(23, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(23, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status___cinit__(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_status);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Status___cinit__(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Status *__pyx_v_s;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;
  MPI_Status __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":7
 * 
 *     def __cinit__(self, Status status: Status | None = None):
 *         cdef MPI_Status *s = &self.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_set_source (s, MPI_ANY_SOURCE ) )
 *         CHKERR( MPI_Status_set_tag    (s, MPI_ANY_TAG    ) )
 */
  __pyx_v_s = (&__pyx_v_self->ob_mpi);

  /* "src/mpi4py/MPI.src/Status.pyx":8
 *     def __cinit__(self, Status status: Status | None = None):
 *         cdef MPI_Status *s = &self.ob_mpi
 *         CHKERR( MPI_Status_set_source (s, MPI_ANY_SOURCE ) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_set_tag    (s, MPI_ANY_TAG    ) )
 *         CHKERR( MPI_Status_set_error  (s, MPI_SUCCESS    ) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_source(__pyx_v_s, MPI_ANY_SOURCE)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 8, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":9
 *         cdef MPI_Status *s = &self.ob_mpi
 *         CHKERR( MPI_Status_set_source (s, MPI_ANY_SOURCE ) )
 *         CHKERR( MPI_Status_set_tag    (s, MPI_ANY_TAG    ) )             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_set_error  (s, MPI_SUCCESS    ) )
 *         if status is None: return
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_tag(__pyx_v_s, MPI_ANY_TAG)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 9, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":10
 *         CHKERR( MPI_Status_set_source (s, MPI_ANY_SOURCE ) )
 *         CHKERR( MPI_Status_set_tag    (s, MPI_ANY_TAG    ) )
 *         CHKERR( MPI_Status_set_error  (s, MPI_SUCCESS    ) )             # <<<<<<<<<<<<<<
 *         if status is None: return
 *         self.ob_mpi = status.ob_mpi
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_error(__pyx_v_s, MPI_SUCCESS)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":11
 *         CHKERR( MPI_Status_set_tag    (s, MPI_ANY_TAG    ) )
 *         CHKERR( MPI_Status_set_error  (s, MPI_SUCCESS    ) )
 *         if status is None: return             # <<<<<<<<<<<<<<
 *         self.ob_mpi = status.ob_mpi
 * 
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_status) == Py_None);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":12
 *         CHKERR( MPI_Status_set_error  (s, MPI_SUCCESS    ) )
 *         if status is None: return
 *         self.ob_mpi = status.ob_mpi             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_3 = __pyx_v_status->ob_mpi;
  __pyx_v_self->ob_mpi = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Status.pyx":6
 *     """
 * 
 *     def __cinit__(self, Status status: Status | None = None):             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *s = &self.ob_mpi
 *         CHKERR( MPI_Status_set_source (s, MPI_ANY_SOURCE ) )
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":14
 *         self.ob_mpi = status.ob_mpi
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = <Status>self, o = <Status>other
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_2__richcmp__(((struct PyMPIStatusObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_2__richcmp__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  struct PyMPIStatusObject *__pyx_v_s = 0;
  struct PyMPIStatusObject *__pyx_v_o = 0;
  int __pyx_v_ne;
  PyObject *__pyx_v_mod = 0;
  PyObject *__pyx_v_cls = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_UCS4 __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":15
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Status): return NotImplemented             # <<<<<<<<<<<<<<
 *         cdef Status s = <Status>self, o = <Status>other
 *         cdef int ne = memcmp(&s.ob_mpi, &o.ob_mpi, sizeof(MPI_Status))
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Status); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":16
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = <Status>self, o = <Status>other             # <<<<<<<<<<<<<<
 *         cdef int ne = memcmp(&s.ob_mpi, &o.ob_mpi, sizeof(MPI_Status))
 *         if   op == Py_EQ: return (ne == 0)
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_s = ((struct PyMPIStatusObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = __pyx_v_other;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_o = ((struct PyMPIStatusObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":17
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = <Status>self, o = <Status>other
 *         cdef int ne = memcmp(&s.ob_mpi, &o.ob_mpi, sizeof(MPI_Status))             # <<<<<<<<<<<<<<
 *         if   op == Py_EQ: return (ne == 0)
 *         elif op == Py_NE: return (ne != 0)
 */
  __pyx_v_ne = memcmp((&__pyx_v_s->ob_mpi), (&__pyx_v_o->ob_mpi), (sizeof(MPI_Status)));

  /* "src/mpi4py/MPI.src/Status.pyx":18
 *         cdef Status s = <Status>self, o = <Status>other
 *         cdef int ne = memcmp(&s.ob_mpi, &o.ob_mpi, sizeof(MPI_Status))
 *         if   op == Py_EQ: return (ne == 0)             # <<<<<<<<<<<<<<
 *         elif op == Py_NE: return (ne != 0)
 *         cdef str mod = type(self).__module__
 */
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_ne == 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":19
 *         cdef int ne = memcmp(&s.ob_mpi, &o.ob_mpi, sizeof(MPI_Status))
 *         if   op == Py_EQ: return (ne == 0)
 *         elif op == Py_NE: return (ne != 0)             # <<<<<<<<<<<<<<
 *         cdef str mod = type(self).__module__
 *         cdef str cls = type(self).__name__
 */
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_ne != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 19, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":20
 *         if   op == Py_EQ: return (ne == 0)
 *         elif op == Py_NE: return (ne != 0)
 *         cdef str mod = type(self).__module__             # <<<<<<<<<<<<<<
 *         cdef str cls = type(self).__name__
 *         raise TypeError(f"unorderable type '{mod}.{cls}'")
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_module); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(23, 20, __pyx_L1_error)
  __pyx_v_mod = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":21
 *         elif op == Py_NE: return (ne != 0)
 *         cdef str mod = type(self).__module__
 *         cdef str cls = type(self).__name__             # <<<<<<<<<<<<<<
 *         raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(23, 21, __pyx_L1_error)
  __pyx_v_cls = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":22
 *         cdef str mod = type(self).__module__
 *         cdef str cls = type(self).__name__
 *         raise TypeError(f"unorderable type '{mod}.{cls}'")             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> tuple[Any, tuple[Any, ...], dict[str, Any]]:
 */
  __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  __pyx_t_5 = 127;
  __Pyx_INCREF(__pyx_kp_u_unorderable_type);
  __pyx_t_4 += 18;
  __Pyx_GIVEREF(__pyx_kp_u_unorderable_type);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_unorderable_type);
  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_mod, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_6);
  __pyx_t_6 = 0;
  __Pyx_INCREF(__pyx_kp_u__2);
  __pyx_t_4 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_kp_u__2);
  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_cls, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_5;
  __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_6);
  __pyx_t_6 = 0;
  __Pyx_INCREF(__pyx_kp_u__30);
  __pyx_t_4 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__30);
  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_kp_u__30);
  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __PYX_ERR(23, 22, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":14
 *         self.ob_mpi = status.ob_mpi
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Status): return NotImplemented
 *         cdef Status s = <Status>self, o = <Status>other
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Status.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_s);
  __Pyx_XDECREF((PyObject *)__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_mod);
  __Pyx_XDECREF(__pyx_v_cls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":24
 *         raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 *     def __reduce__(self) -> tuple[Any, tuple[Any, ...], dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_5__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_4__reduce__, "__reduce__(self) -> tuple[Any, tuple[Any, ...], dict[str, Any]]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_5__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_5__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_4__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_5__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_4__reduce__(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_4__reduce__(struct PyMPIStatusObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":25
 * 
 *     def __reduce__(self) -> tuple[Any, tuple[Any, ...], dict[str, Any]]:
 *         return (__newobj__, (type(self),), self.__getstate__())             # <<<<<<<<<<<<<<
 * 
 *     def __getstate__(self) -> dict[str, int]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(23, 25, __pyx_L1_error);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getstate); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_GIVEREF(__pyx_v_6mpi4py_3MPI___newobj__);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_6mpi4py_3MPI___newobj__)) __PYX_ERR(23, 25, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(23, 25, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(23, 25, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":24
 *         raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 *     def __reduce__(self) -> tuple[Any, tuple[Any, ...], dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Status.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":27
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 *     def __getstate__(self) -> dict[str, int]:             # <<<<<<<<<<<<<<
 *         cdef dict state = {
 *             'source': self.Get_source(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_7__getstate__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_6__getstate__, "__getstate__(self) -> dict[str, int]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_7__getstate__ = {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_7__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_6__getstate__};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_7__getstate__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__getstate__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__getstate__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_6__getstate__(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6__getstate__(struct PyMPIStatusObject *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getstate__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":29
 *     def __getstate__(self) -> dict[str, int]:
 *         cdef dict state = {
 *             'source': self.Get_source(),             # <<<<<<<<<<<<<<
 *             'tag': self.Get_tag(),
 *             'error': self.Get_error(),
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_source, __pyx_t_2) < 0) __PYX_ERR(23, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":30
 *         cdef dict state = {
 *             'source': self.Get_source(),
 *             'tag': self.Get_tag(),             # <<<<<<<<<<<<<<
 *             'error': self.Get_error(),
 *         }
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_tag, __pyx_t_2) < 0) __PYX_ERR(23, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":31
 *             'source': self.Get_source(),
 *             'tag': self.Get_tag(),
 *             'error': self.Get_error(),             # <<<<<<<<<<<<<<
 *         }
 *         try:
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_error, __pyx_t_2) < 0) __PYX_ERR(23, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":33
 *             'error': self.Get_error(),
 *         }
 *         try:             # <<<<<<<<<<<<<<
 *             state['count'] = self.Get_elements(__BYTE__)
 *         except NotImplementedError:  # ~> legacy
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Status.pyx":34
 *         }
 *         try:
 *             state['count'] = self.Get_elements(__BYTE__)             # <<<<<<<<<<<<<<
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_elements); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 34, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      __pyx_t_5 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_5 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 34, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      if (unlikely((PyDict_SetItem(__pyx_v_state, __pyx_n_s_count, __pyx_t_1) < 0))) __PYX_ERR(23, 34, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/Status.pyx":33
 *             'error': self.Get_error(),
 *         }
 *         try:             # <<<<<<<<<<<<<<
 *             state['count'] = self.Get_elements(__BYTE__)
 *         except NotImplementedError:  # ~> legacy
 */
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Status.pyx":35
 *         try:
 *             state['count'] = self.Get_elements(__BYTE__)
 *         except NotImplementedError:  # ~> legacy             # <<<<<<<<<<<<<<
 *             pass                     # ~> legacy
 *         try:
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NotImplementedError);
    if (__pyx_t_9) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "src/mpi4py/MPI.src/Status.pyx":33
 *             'error': self.Get_error(),
 *         }
 *         try:             # <<<<<<<<<<<<<<
 *             state['count'] = self.Get_elements(__BYTE__)
 *         except NotImplementedError:  # ~> legacy
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":37
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
 *         try:             # <<<<<<<<<<<<<<
 *             state['cancelled'] = self.Is_cancelled()
 *         except NotImplementedError:  # ~> legacy
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Status.pyx":38
 *             pass                     # ~> legacy
 *         try:
 *             state['cancelled'] = self.Is_cancelled()             # <<<<<<<<<<<<<<
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Is_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 38, __pyx_L9_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      __pyx_t_5 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_5 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 38, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      if (unlikely((PyDict_SetItem(__pyx_v_state, __pyx_n_s_cancelled, __pyx_t_1) < 0))) __PYX_ERR(23, 38, __pyx_L9_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/Status.pyx":37
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
 *         try:             # <<<<<<<<<<<<<<
 *             state['cancelled'] = self.Is_cancelled()
 *         except NotImplementedError:  # ~> legacy
 */
    }
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L14_try_end;
    __pyx_L9_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Status.pyx":39
 *         try:
 *             state['cancelled'] = self.Is_cancelled()
 *         except NotImplementedError:  # ~> legacy             # <<<<<<<<<<<<<<
 *             pass                     # ~> legacy
 *         return state
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NotImplementedError);
    if (__pyx_t_9) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L10_exception_handled;
    }
    goto __pyx_L11_except_error;

    /* "src/mpi4py/MPI.src/Status.pyx":37
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
 *         try:             # <<<<<<<<<<<<<<
 *             state['cancelled'] = self.Is_cancelled()
 *         except NotImplementedError:  # ~> legacy
 */
    __pyx_L11_except_error:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L10_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
    __pyx_L14_try_end:;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":41
 *         except NotImplementedError:  # ~> legacy
 *             pass                     # ~> legacy
 *         return state             # <<<<<<<<<<<<<<
 * 
 *     def __setstate__(self, state: dict[str, int]) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_state);
  __pyx_r = __pyx_v_state;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":27
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 *     def __getstate__(self) -> dict[str, int]:             # <<<<<<<<<<<<<<
 *         cdef dict state = {
 *             'source': self.Get_source(),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Status.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":43
 *         return state
 * 
 *     def __setstate__(self, state: dict[str, int]) -> None:             # <<<<<<<<<<<<<<
 *         self.Set_source(state['source'])
 *         self.Set_tag(state['tag'])
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_9__setstate__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_8__setstate__, "__setstate__(self, state: dict[str, int]) -> None");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_9__setstate__ = {"__setstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_9__setstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_8__setstate__};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_9__setstate__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_state,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_state)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 43, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate__") < 0)) __PYX_ERR(23, 43, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate__", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 43, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_8__setstate__(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_state);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_8__setstate__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":44
 * 
 *     def __setstate__(self, state: dict[str, int]) -> None:
 *         self.Set_source(state['source'])             # <<<<<<<<<<<<<<
 *         self.Set_tag(state['tag'])
 *         self.Set_error(state['error'])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_n_s_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":45
 *     def __setstate__(self, state: dict[str, int]) -> None:
 *         self.Set_source(state['source'])
 *         self.Set_tag(state['tag'])             # <<<<<<<<<<<<<<
 *         self.Set_error(state['error'])
 *         if 'count' in state:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_n_s_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":46
 *         self.Set_source(state['source'])
 *         self.Set_tag(state['tag'])
 *         self.Set_error(state['error'])             # <<<<<<<<<<<<<<
 *         if 'count' in state:
 *             self.Set_elements(__BYTE__, state['count'])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_n_s_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":47
 *         self.Set_tag(state['tag'])
 *         self.Set_error(state['error'])
 *         if 'count' in state:             # <<<<<<<<<<<<<<
 *             self.Set_elements(__BYTE__, state['count'])
 *         if 'cancelled' in state:
 */
  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_count, __pyx_v_state, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 47, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "src/mpi4py/MPI.src/Status.pyx":48
 *         self.Set_error(state['error'])
 *         if 'count' in state:
 *             self.Set_elements(__BYTE__, state['count'])             # <<<<<<<<<<<<<<
 *         if 'cancelled' in state:
 *             self.Set_cancelled(state['cancelled'])
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_elements); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_n_s_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__), __pyx_t_3};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/Status.pyx":47
 *         self.Set_tag(state['tag'])
 *         self.Set_error(state['error'])
 *         if 'count' in state:             # <<<<<<<<<<<<<<
 *             self.Set_elements(__BYTE__, state['count'])
 *         if 'cancelled' in state:
 */
  }

  /* "src/mpi4py/MPI.src/Status.pyx":49
 *         if 'count' in state:
 *             self.Set_elements(__BYTE__, state['count'])
 *         if 'cancelled' in state:             # <<<<<<<<<<<<<<
 *             self.Set_cancelled(state['cancelled'])
 * 
 */
  __pyx_t_6 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_cancelled, __pyx_v_state, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(23, 49, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "src/mpi4py/MPI.src/Status.pyx":50
 *             self.Set_elements(__BYTE__, state['count'])
 *         if 'cancelled' in state:
 *             self.Set_cancelled(state['cancelled'])             # <<<<<<<<<<<<<<
 * 
 *     def Get_source(self) -> int:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_state, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 50, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/Status.pyx":49
 *         if 'count' in state:
 *             self.Set_elements(__BYTE__, state['count'])
 *         if 'cancelled' in state:             # <<<<<<<<<<<<<<
 *             self.Set_cancelled(state['cancelled'])
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Status.pyx":43
 *         return state
 * 
 *     def __setstate__(self, state: dict[str, int]) -> None:             # <<<<<<<<<<<<<<
 *         self.Set_source(state['source'])
 *         self.Set_tag(state['tag'])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Status.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":52
 *             self.Set_cancelled(state['cancelled'])
 * 
 *     def Get_source(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message source.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_11Get_source(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_10Get_source, "Get_source(self) -> int\n\n        Get message source.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_11Get_source = {"Get_source", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_11Get_source, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_10Get_source};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_11Get_source(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_source (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_source", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_source", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_10Get_source(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_10Get_source(struct PyMPIStatusObject *__pyx_v_self) {
  int __pyx_v_source;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_source", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":56
 *         Get message source.
 *         """
 *         cdef int source = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_get_source(&self.ob_mpi, &source) )
 *         return source
 */
  __pyx_v_source = MPI_ANY_SOURCE;

  /* "src/mpi4py/MPI.src/Status.pyx":57
 *         """
 *         cdef int source = MPI_ANY_SOURCE
 *         CHKERR( MPI_Status_get_source(&self.ob_mpi, &source) )             # <<<<<<<<<<<<<<
 *         return source
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_get_source((&__pyx_v_self->ob_mpi), (&__pyx_v_source))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 57, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":58
 *         cdef int source = MPI_ANY_SOURCE
 *         CHKERR( MPI_Status_get_source(&self.ob_mpi, &source) )
 *         return source             # <<<<<<<<<<<<<<
 * 
 *     def Set_source(self, int source: int) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":52
 *             self.Set_cancelled(state['cancelled'])
 * 
 *     def Get_source(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message source.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_source", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":60
 *         return source
 * 
 *     def Set_source(self, int source: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message source.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_13Set_source(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_12Set_source, "Set_source(self, source: int) -> None\n\n        Set message source.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_13Set_source = {"Set_source", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_13Set_source, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_12Set_source};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_13Set_source(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_source (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 60, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_source") < 0)) __PYX_ERR(23, 60, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 60, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_source", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 60, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_source", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_12Set_source(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_12Set_source(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_source", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":64
 *         Set message source.
 *         """
 *         CHKERR( MPI_Status_set_source(&self.ob_mpi, source) )             # <<<<<<<<<<<<<<
 * 
 *     property source:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_source((&__pyx_v_self->ob_mpi), __pyx_v_source)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 64, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":60
 *         return source
 * 
 *     def Set_source(self, int source: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message source.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_source", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":68
 *     property source:
 *         """Message source."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_source()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_6source_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_6source_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_6source___get__(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_6source___get__(struct PyMPIStatusObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":69
 *         """Message source."""
 *         def __get__(self) -> int:
 *             return self.Get_source()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: int):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":68
 *     property source:
 *         """Message source."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_source()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.source.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":71
 *             return self.Get_source()
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_source(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Status_6source_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Status_6source_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_6source_2__set__(((struct PyMPIStatusObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Status_6source_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":72
 * 
 *         def __set__(self, value: int):
 *             self.Set_source(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_tag(self) -> int:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 72, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":71
 *             return self.Get_source()
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_source(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.source.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":74
 *             self.Set_source(value)
 * 
 *     def Get_tag(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message tag.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_15Get_tag(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_14Get_tag, "Get_tag(self) -> int\n\n        Get message tag.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_15Get_tag = {"Get_tag", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_15Get_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_14Get_tag};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_15Get_tag(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_tag (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_tag", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_tag", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_14Get_tag(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_14Get_tag(struct PyMPIStatusObject *__pyx_v_self) {
  int __pyx_v_tag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_tag", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":78
 *         Get message tag.
 *         """
 *         cdef int tag = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_get_tag(&self.ob_mpi, &tag) )
 *         return tag
 */
  __pyx_v_tag = MPI_ANY_TAG;

  /* "src/mpi4py/MPI.src/Status.pyx":79
 *         """
 *         cdef int tag = MPI_ANY_TAG
 *         CHKERR( MPI_Status_get_tag(&self.ob_mpi, &tag) )             # <<<<<<<<<<<<<<
 *         return tag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_get_tag((&__pyx_v_self->ob_mpi), (&__pyx_v_tag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 79, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":80
 *         cdef int tag = MPI_ANY_TAG
 *         CHKERR( MPI_Status_get_tag(&self.ob_mpi, &tag) )
 *         return tag             # <<<<<<<<<<<<<<
 * 
 *     def Set_tag(self, int tag: int) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":74
 *             self.Set_source(value)
 * 
 *     def Get_tag(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message tag.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":82
 *         return tag
 * 
 *     def Set_tag(self, int tag: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message tag.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_17Set_tag(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_16Set_tag, "Set_tag(self, tag: int) -> None\n\n        Set message tag.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_17Set_tag = {"Set_tag", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_17Set_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_16Set_tag};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_17Set_tag(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_tag (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 82, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_tag") < 0)) __PYX_ERR(23, 82, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_tag = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 82, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_tag", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 82, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_16Set_tag(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_16Set_tag(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_tag", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":86
 *         Set message tag.
 *         """
 *         CHKERR( MPI_Status_set_tag(&self.ob_mpi, tag) )             # <<<<<<<<<<<<<<
 * 
 *     property tag:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_tag((&__pyx_v_self->ob_mpi), __pyx_v_tag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 86, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":82
 *         return tag
 * 
 *     def Set_tag(self, int tag: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message tag.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":90
 *     property tag:
 *         """Message tag."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_tag()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_3tag_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_3tag___get__(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_3tag___get__(struct PyMPIStatusObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":91
 *         """Message tag."""
 *         def __get__(self) -> int:
 *             return self.Get_tag()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: int):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":90
 *     property tag:
 *         """Message tag."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_tag()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.tag.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":93
 *             return self.Get_tag()
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_tag(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Status_3tag_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Status_3tag_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_3tag_2__set__(((struct PyMPIStatusObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Status_3tag_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":94
 * 
 *         def __set__(self, value: int):
 *             self.Set_tag(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_error(self) -> int:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":93
 *             return self.Get_tag()
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_tag(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.tag.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":96
 *             self.Set_tag(value)
 * 
 *     def Get_error(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message error.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_19Get_error(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_18Get_error, "Get_error(self) -> int\n\n        Get message error.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_19Get_error = {"Get_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_19Get_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_18Get_error};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_19Get_error(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_error (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_error", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_error", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_18Get_error(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_18Get_error(struct PyMPIStatusObject *__pyx_v_self) {
  int __pyx_v_error;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_error", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":100
 *         Get message error.
 *         """
 *         cdef int error = MPI_SUCCESS             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_get_error(&self.ob_mpi, &error) )
 *         return error
 */
  __pyx_v_error = MPI_SUCCESS;

  /* "src/mpi4py/MPI.src/Status.pyx":101
 *         """
 *         cdef int error = MPI_SUCCESS
 *         CHKERR( MPI_Status_get_error(&self.ob_mpi, &error) )             # <<<<<<<<<<<<<<
 *         return error
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_get_error((&__pyx_v_self->ob_mpi), (&__pyx_v_error))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 101, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":102
 *         cdef int error = MPI_SUCCESS
 *         CHKERR( MPI_Status_get_error(&self.ob_mpi, &error) )
 *         return error             # <<<<<<<<<<<<<<
 * 
 *     def Set_error(self, int error: int) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":96
 *             self.Set_tag(value)
 * 
 *     def Get_error(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message error.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":104
 *         return error
 * 
 *     def Set_error(self, int error: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message error.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_21Set_error(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_20Set_error, "Set_error(self, error: int) -> None\n\n        Set message error.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_21Set_error = {"Set_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_21Set_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_20Set_error};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_21Set_error(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_error;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_error (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_error)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 104, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_error") < 0)) __PYX_ERR(23, 104, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_error = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_error == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 104, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_error", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_20Set_error(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_error);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_20Set_error(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_error) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_error", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":108
 *         Set message error.
 *         """
 *         CHKERR( MPI_Status_set_error(&self.ob_mpi, error) )             # <<<<<<<<<<<<<<
 * 
 *     property error:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_error((&__pyx_v_self->ob_mpi), __pyx_v_error)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 108, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":104
 *         return error
 * 
 *     def Set_error(self, int error: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message error.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":112
 *     property error:
 *         """Message error."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_error()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_5error_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_5error_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_5error___get__(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5error___get__(struct PyMPIStatusObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":113
 *         """Message error."""
 *         def __get__(self) -> int:
 *             return self.Get_error()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: int):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":112
 *     property error:
 *         """Message error."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_error()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.error.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":115
 *             return self.Get_error()
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_error(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Status_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Status_5error_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_5error_2__set__(((struct PyMPIStatusObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Status_5error_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":116
 * 
 *         def __set__(self, value: int):
 *             self.Set_error(value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_count(self, Datatype datatype: Datatype = BYTE) -> int:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":115
 *             return self.Get_error()
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_error(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.error.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":118
 *             self.Set_error(value)
 * 
 *     def Get_count(self, Datatype datatype: Datatype = BYTE) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of *top level* elements.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_23Get_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_22Get_count, "Get_count(self, datatype: Datatype = BYTE) -> int\n\n        Get the number of *top level* elements.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_23Get_count = {"Get_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_23Get_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_22Get_count};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_23Get_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_count (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__68);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 118, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_count") < 0)) __PYX_ERR(23, 118, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_count", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(23, 118, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_22Get_count(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_22Get_count(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype) {
  MPI_Datatype __pyx_v_dtype;
  MPI_Count __pyx_v_count;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Datatype __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_count", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":122
 *         Get the number of *top level* elements.
 *         """
 *         cdef MPI_Datatype dtype = datatype.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Count count = MPI_UNDEFINED
 *         CHKERR( MPI_Get_count_c(&self.ob_mpi, dtype, &count) )
 */
  __pyx_t_1 = __pyx_v_datatype->ob_mpi;
  __pyx_v_dtype = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Status.pyx":123
 *         """
 *         cdef MPI_Datatype dtype = datatype.ob_mpi
 *         cdef MPI_Count count = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Get_count_c(&self.ob_mpi, dtype, &count) )
 *         return count
 */
  __pyx_v_count = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Status.pyx":124
 *         cdef MPI_Datatype dtype = datatype.ob_mpi
 *         cdef MPI_Count count = MPI_UNDEFINED
 *         CHKERR( MPI_Get_count_c(&self.ob_mpi, dtype, &count) )             # <<<<<<<<<<<<<<
 *         return count
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_count_c((&__pyx_v_self->ob_mpi), __pyx_v_dtype, (&__pyx_v_count))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 124, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":125
 *         cdef MPI_Count count = MPI_UNDEFINED
 *         CHKERR( MPI_Get_count_c(&self.ob_mpi, dtype, &count) )
 *         return count             # <<<<<<<<<<<<<<
 * 
 *     property count:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":118
 *             self.Set_error(value)
 * 
 *     def Get_count(self, Datatype datatype: Datatype = BYTE) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of *top level* elements.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":129
 *     property count:
 *         """Byte count."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_count(__BYTE__)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_5count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_5count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_5count___get__(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_5count___get__(struct PyMPIStatusObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":130
 *         """Byte count."""
 *         def __get__(self) -> int:
 *             return self.Get_count(__BYTE__)             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: int):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":129
 *     property count:
 *         """Byte count."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_count(__BYTE__)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":132
 *             return self.Get_count(__BYTE__)
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_elements(__BYTE__, value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Status_5count_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Status_5count_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_5count_2__set__(((struct PyMPIStatusObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Status_5count_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":133
 * 
 *         def __set__(self, value: int):
 *             self.Set_elements(__BYTE__, value)             # <<<<<<<<<<<<<<
 * 
 *     def Get_elements(self, Datatype datatype: Datatype) -> int:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_elements); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__), __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":132
 *             return self.Get_count(__BYTE__)
 * 
 *         def __set__(self, value: int):             # <<<<<<<<<<<<<<
 *             self.Set_elements(__BYTE__, value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.count.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":135
 *             self.Set_elements(__BYTE__, value)
 * 
 *     def Get_elements(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of basic elements in a datatype.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_25Get_elements(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_24Get_elements, "Get_elements(self, datatype: Datatype) -> int\n\n        Get the number of basic elements in a datatype.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_25Get_elements = {"Get_elements", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_25Get_elements, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_24Get_elements};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_25Get_elements(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_elements (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 135, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_elements") < 0)) __PYX_ERR(23, 135, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_elements", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 135, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(23, 135, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_24Get_elements(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_24Get_elements(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype) {
  MPI_Datatype __pyx_v_dtype;
  MPI_Count __pyx_v_elements;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Datatype __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_elements", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":139
 *         Get the number of basic elements in a datatype.
 *         """
 *         cdef MPI_Datatype dtype = datatype.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Count elements = MPI_UNDEFINED
 *         CHKERR( MPI_Get_elements_c(&self.ob_mpi, dtype, &elements) )
 */
  __pyx_t_1 = __pyx_v_datatype->ob_mpi;
  __pyx_v_dtype = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Status.pyx":140
 *         """
 *         cdef MPI_Datatype dtype = datatype.ob_mpi
 *         cdef MPI_Count elements = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Get_elements_c(&self.ob_mpi, dtype, &elements) )
 *         return elements
 */
  __pyx_v_elements = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Status.pyx":141
 *         cdef MPI_Datatype dtype = datatype.ob_mpi
 *         cdef MPI_Count elements = MPI_UNDEFINED
 *         CHKERR( MPI_Get_elements_c(&self.ob_mpi, dtype, &elements) )             # <<<<<<<<<<<<<<
 *         return elements
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_elements_c((&__pyx_v_self->ob_mpi), __pyx_v_dtype, (&__pyx_v_elements))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 141, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":142
 *         cdef MPI_Count elements = MPI_UNDEFINED
 *         CHKERR( MPI_Get_elements_c(&self.ob_mpi, dtype, &elements) )
 *         return elements             # <<<<<<<<<<<<<<
 * 
 *     def Set_elements(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Count(__pyx_v_elements); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":135
 *             self.Set_elements(__BYTE__, value)
 * 
 *     def Get_elements(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of basic elements in a datatype.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Get_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":144
 *         return elements
 * 
 *     def Set_elements(             # <<<<<<<<<<<<<<
 *         self,
 *         Datatype datatype: Datatype,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_27Set_elements(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_26Set_elements, "Set_elements(self, datatype: Datatype, count: int) -> None\n\n        Set the number of elements in a status.\n\n        .. note:: This method should be only used when implementing\n           query callback functions for generalized requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_27Set_elements = {"Set_elements", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_27Set_elements, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_26Set_elements};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_27Set_elements(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  MPI_Count __pyx_v_count;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_elements (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,&__pyx_n_s_count,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 144, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_count)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 144, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Set_elements", 1, 2, 2, 1); __PYX_ERR(23, 144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_elements") < 0)) __PYX_ERR(23, 144, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
    __pyx_v_count = __Pyx_PyInt_As_MPI_Count(values[1]); if (unlikely((__pyx_v_count == ((MPI_Count)-1)) && PyErr_Occurred())) __PYX_ERR(23, 147, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_elements", 1, 2, 2, __pyx_nargs); __PYX_ERR(23, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(23, 146, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_26Set_elements(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_datatype, __pyx_v_count);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_26Set_elements(struct PyMPIStatusObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype, MPI_Count __pyx_v_count) {
  MPI_Datatype __pyx_v_dtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Datatype __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_elements", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":155
 *            query callback functions for generalized requests.
 *         """
 *         cdef MPI_Datatype dtype = datatype.ob_mpi             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_set_elements_c(&self.ob_mpi, dtype, count) )
 * 
 */
  __pyx_t_1 = __pyx_v_datatype->ob_mpi;
  __pyx_v_dtype = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Status.pyx":156
 *         """
 *         cdef MPI_Datatype dtype = datatype.ob_mpi
 *         CHKERR( MPI_Status_set_elements_c(&self.ob_mpi, dtype, count) )             # <<<<<<<<<<<<<<
 * 
 *     def Is_cancelled(self) -> bool:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_elements_c((&__pyx_v_self->ob_mpi), __pyx_v_dtype, __pyx_v_count)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 156, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":144
 *         return elements
 * 
 *     def Set_elements(             # <<<<<<<<<<<<<<
 *         self,
 *         Datatype datatype: Datatype,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":158
 *         CHKERR( MPI_Status_set_elements_c(&self.ob_mpi, dtype, count) )
 * 
 *     def Is_cancelled(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a request was cancelled.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_29Is_cancelled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_28Is_cancelled, "Is_cancelled(self) -> bool\n\n        Test to see if a request was cancelled.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_29Is_cancelled = {"Is_cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_29Is_cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_28Is_cancelled};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_29Is_cancelled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_cancelled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_cancelled", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_cancelled", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_28Is_cancelled(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_28Is_cancelled(struct PyMPIStatusObject *__pyx_v_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_cancelled", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":162
 *         Test to see if a request was cancelled.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":163
 *         """
 *         cdef int flag = 0
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test_cancelled((&__pyx_v_self->ob_mpi), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 163, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":164
 *         cdef int flag = 0
 *         CHKERR( MPI_Test_cancelled(&self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     def Set_cancelled(self, bint flag: bool) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":158
 *         CHKERR( MPI_Status_set_elements_c(&self.ob_mpi, dtype, count) )
 * 
 *     def Is_cancelled(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a request was cancelled.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Status.Is_cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":166
 *         return <bint>flag
 * 
 *     def Set_cancelled(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the cancelled state associated with a status.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_31Set_cancelled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_30Set_cancelled, "Set_cancelled(self, flag: bool) -> None\n\n        Set the cancelled state associated with a status.\n\n        .. note:: This method should be used only when implementing\n           query callback functions for generalized requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_31Set_cancelled = {"Set_cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_31Set_cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_30Set_cancelled};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_31Set_cancelled(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_flag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_cancelled (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flag)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 166, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_cancelled") < 0)) __PYX_ERR(23, 166, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_flag = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 166, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_cancelled", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 166, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_30Set_cancelled(((struct PyMPIStatusObject *)__pyx_v_self), __pyx_v_flag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_30Set_cancelled(struct PyMPIStatusObject *__pyx_v_self, int __pyx_v_flag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_cancelled", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":173
 *            query callback functions for generalized requests.
 *         """
 *         CHKERR( MPI_Status_set_cancelled(&self.ob_mpi, flag) )             # <<<<<<<<<<<<<<
 * 
 *     property cancelled:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_set_cancelled((&__pyx_v_self->ob_mpi), __pyx_v_flag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(23, 173, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":166
 *         return <bint>flag
 * 
 *     def Set_cancelled(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the cancelled state associated with a status.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Status.Set_cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":177
 *     property cancelled:
 *         """Cancelled state."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_cancelled()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_9cancelled_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_9cancelled_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_9cancelled___get__(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_9cancelled___get__(struct PyMPIStatusObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":178
 *         """Cancelled state."""
 *         def __get__(self) -> bool:
 *             return self.Is_cancelled()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: bool):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Is_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":177
 *     property cancelled:
 *         """Cancelled state."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_cancelled()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.cancelled.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":180
 *             return self.Is_cancelled()
 * 
 *         def __set__(self, value: bool):             # <<<<<<<<<<<<<<
 *             self.Set_cancelled(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_6Status_9cancelled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_6Status_9cancelled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_9cancelled_2__set__(((struct PyMPIStatusObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_6Status_9cancelled_2__set__(struct PyMPIStatusObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":181
 * 
 *         def __set__(self, value: bool):
 *             self.Set_cancelled(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":180
 *             return self.Is_cancelled()
 * 
 *         def __set__(self, value: bool):             # <<<<<<<<<<<<<<
 *             self.Set_cancelled(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Status.cancelled.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":186
 *     # --------------
 * 
 *     def py2f(self) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_33py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_32py2f, "py2f(self) -> list[int]\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_33py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_33py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_32py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_33py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_32py2f(((struct PyMPIStatusObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_32py2f(struct PyMPIStatusObject *__pyx_v_self) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  Py_ssize_t __pyx_v_n;
  MPI_Status *__pyx_v_c_status;
  MPI_Fint *__pyx_v_f_status;
  CYTHON_UNUSED PyObject *__pyx_v_unused = 0;
  Py_ssize_t __pyx_8genexpr7__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":189
 *         """
 *         """
 *         cdef Status status = <Status> self             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))
 *         cdef MPI_Status *c_status = &status.ob_mpi
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_status = ((struct PyMPIStatusObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":190
 *         """
 *         cdef Status status = <Status> self
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *c_status = &status.ob_mpi
 *         cdef MPI_Fint *f_status = NULL
 */
  __pyx_v_n = ((int)((sizeof(MPI_Status)) / (sizeof(int))));

  /* "src/mpi4py/MPI.src/Status.pyx":191
 *         cdef Status status = <Status> self
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))
 *         cdef MPI_Status *c_status = &status.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Fint *f_status = NULL
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 */
  __pyx_v_c_status = (&__pyx_v_status->ob_mpi);

  /* "src/mpi4py/MPI.src/Status.pyx":192
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))
 *         cdef MPI_Status *c_status = &status.ob_mpi
 *         cdef MPI_Fint *f_status = NULL             # <<<<<<<<<<<<<<
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )
 */
  __pyx_v_f_status = NULL;

  /* "src/mpi4py/MPI.src/Status.pyx":193
 *         cdef MPI_Status *c_status = &status.ob_mpi
 *         cdef MPI_Fint *f_status = NULL
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )
 *         return [f_status[i] for i in range(n)]
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n + 1), (sizeof(MPI_Fint)), (&__pyx_v_f_status))); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":194
 *         cdef MPI_Fint *f_status = NULL
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )             # <<<<<<<<<<<<<<
 *         return [f_status[i] for i in range(n)]
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_c2f(__pyx_v_c_status, __pyx_v_f_status)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 194, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":195
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 *         CHKERR( MPI_Status_c2f(c_status, f_status) )
 *         return [f_status[i] for i in range(n)]             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __pyx_v_n;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_8genexpr7__pyx_v_i = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_MPI_Fint((__pyx_v_f_status[__pyx_8genexpr7__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 195, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(23, 195, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":186
 *     # --------------
 * 
 *     def py2f(self) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Status.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_status);
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Status.pyx":197
 *         return [f_status[i] for i in range(n)]
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: list[int]) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_35f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_6Status_34f2py, "f2py(cls, arg: list[int]) -> Self\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_6Status_35f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_35f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_34f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_6Status_35f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 197, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(23, 197, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 197, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Status.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_6Status_34f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_6Status_34f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  MPI_Status __pyx_v_status;
  MPI_Status *__pyx_v_c_status;
  Py_ssize_t __pyx_v_n;
  MPI_Fint *__pyx_v_f_status;
  CYTHON_UNUSED PyObject *__pyx_v_unused = 0;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  MPI_Fint __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Status.pyx":202
 *         """
 *         cdef MPI_Status status
 *         cdef MPI_Status *c_status = &status             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))
 *         cdef MPI_Fint *f_status = NULL
 */
  __pyx_v_c_status = (&__pyx_v_status);

  /* "src/mpi4py/MPI.src/Status.pyx":203
 *         cdef MPI_Status status
 *         cdef MPI_Status *c_status = &status
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef MPI_Fint *f_status = NULL
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 */
  __pyx_v_n = ((int)((sizeof(MPI_Status)) / (sizeof(int))));

  /* "src/mpi4py/MPI.src/Status.pyx":204
 *         cdef MPI_Status *c_status = &status
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))
 *         cdef MPI_Fint *f_status = NULL             # <<<<<<<<<<<<<<
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 *         for i in range(n): f_status[i] = arg[i]
 */
  __pyx_v_f_status = NULL;

  /* "src/mpi4py/MPI.src/Status.pyx":205
 *         cdef Py_ssize_t n = <int>(sizeof(MPI_Status)//sizeof(int))
 *         cdef MPI_Fint *f_status = NULL
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)             # <<<<<<<<<<<<<<
 *         for i in range(n): f_status[i] = arg[i]
 *         CHKERR( MPI_Status_f2c(f_status, c_status) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate((__pyx_v_n + 1), (sizeof(MPI_Fint)), (&__pyx_v_f_status))); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":206
 *         cdef MPI_Fint *f_status = NULL
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 *         for i in range(n): f_status[i] = arg[i]             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Status_f2c(f_status, c_status) )
 *         return PyMPIStatus_New(c_status)
 */
  __pyx_t_2 = __pyx_v_n;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_arg, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyInt_As_MPI_Fint(__pyx_t_1); if (unlikely((__pyx_t_5 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(23, 206, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    (__pyx_v_f_status[__pyx_v_i]) = __pyx_t_5;
  }

  /* "src/mpi4py/MPI.src/Status.pyx":207
 *         cdef unused = allocate(n+1, sizeof(MPI_Fint), &f_status)
 *         for i in range(n): f_status[i] = arg[i]
 *         CHKERR( MPI_Status_f2c(f_status, c_status) )             # <<<<<<<<<<<<<<
 *         return PyMPIStatus_New(c_status)
 * 
 */
  __pyx_t_6 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Status_f2c(__pyx_v_f_status, __pyx_v_c_status)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(23, 207, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":208
 *         for i in range(n): f_status[i] = arg[i]
 *         CHKERR( MPI_Status_f2c(f_status, c_status) )
 *         return PyMPIStatus_New(c_status)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPIStatus_New(__pyx_v_c_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Status.pyx":197
 *         return [f_status[i] for i in range(n)]
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: list[int]) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Status.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":6
 *     """
 * 
 *     def __cinit__(self, Request request: Request | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, request)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_7Request_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_7Request_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIRequestObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(24, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_request = ((struct PyMPIRequestObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) __PYX_ERR(24, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request___cinit__(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_request);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_7Request___cinit__(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":7
 * 
 *     def __cinit__(self, Request request: Request | None = None):
 *         cinit(self, request)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_request); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 7, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":6
 *     """
 * 
 *     def __cinit__(self, Request request: Request | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, request)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":9
 *         cinit(self, request)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_7Request_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_7Request_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_7Request_2__dealloc__(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_7Request_2__dealloc__(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":10
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":9
 *         cinit(self, request)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Request.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Request.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Request): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_4__richcmp__(((struct PyMPIRequestObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_4__richcmp__(struct PyMPIRequestObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Request): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Request); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Request): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Request): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_7Request_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_7Request_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_6__bool__(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_7Request_6__bool__(struct PyMPIRequestObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Request.pyx":17
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_8__reduce__(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_8__reduce__(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":20
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_6handle___get__(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_6handle___get__(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":25
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_1__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Request:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_10fromhandle, "fromhandle(cls, handle: int) -> Request\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 27, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(24, 27, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_10fromhandle(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_uintptr_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":32
 *         Create object from MPI handle.
 *         """
 *         if issubclass(cls, Prequest):             # <<<<<<<<<<<<<<
 *             return PyMPIPrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         if issubclass(cls, Grequest):
 */
  __pyx_t_1 = PyObject_IsSubclass(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 32, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":33
 *         """
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(<MPI_Request> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_2 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(24, 33, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPIPrequest_New(((MPI_Request)((Py_uintptr_t)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Request.pyx":32
 *         Create object from MPI handle.
 *         """
 *         if issubclass(cls, Prequest):             # <<<<<<<<<<<<<<
 *             return PyMPIPrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         if issubclass(cls, Grequest):
 */
  }

  /* "src/mpi4py/MPI.src/Request.pyx":34
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         if issubclass(cls, Grequest):             # <<<<<<<<<<<<<<
 *             return PyMPIGrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)
 */
  __pyx_t_1 = PyObject_IsSubclass(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 34, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":35
 *             return PyMPIPrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(<MPI_Request> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_2 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(24, 35, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPIGrequest_New(((MPI_Request)((Py_uintptr_t)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Request.pyx":34
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         if issubclass(cls, Grequest):             # <<<<<<<<<<<<<<
 *             return PyMPIGrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)
 */
  }

  /* "src/mpi4py/MPI.src/Request.pyx":36
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(<MPI_Request> <Py_uintptr_t> handle)
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_2 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(24, 36, __pyx_L1_error)
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Request)((Py_uintptr_t)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Request:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":38
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_12free, "free(self) -> None\n\n        Call `Free` if not null.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_12free(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_12free(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":42
 *         Call `Free` if not null.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # Completion Operations
 */
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 42, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":38
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":47
 *     # ---------------------
 * 
 *     def Wait(self, Status status: Status | None = None) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Wait for a non-blocking operation to complete.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_15Wait(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_14Wait, "Wait(self, status: Status | None = None) -> Literal[True]\n\n        Wait for a non-blocking operation to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_15Wait = {"Wait", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_15Wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_14Wait};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_15Wait(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Wait (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 47, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Wait") < 0)) __PYX_ERR(24, 47, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Wait", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 47, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_14Wait(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_14Wait(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Wait", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":51
 *         Wait for a non-blocking operation to complete.
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Wait(
 *             &self.ob_mpi, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(24, 51, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":52
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Wait(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Request.pyx":53
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Wait(
 *             &self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Wait((&__pyx_v_self->ob_mpi), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 52, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Request.pyx":52
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Wait(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":54
 *         with nogil: CHKERR( MPI_Wait(
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             self.ob_buf = None
 *         return True
 */
  __pyx_t_3 = (__pyx_v_self->ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/Request.pyx":55
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->ob_buf);
    __Pyx_DECREF(__pyx_v_self->ob_buf);
    __pyx_v_self->ob_buf = Py_None;

    /* "src/mpi4py/MPI.src/Request.pyx":54
 *         with nogil: CHKERR( MPI_Wait(
 *             &self.ob_mpi, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             self.ob_buf = None
 *         return True
 */
  }

  /* "src/mpi4py/MPI.src/Request.pyx":56
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     def Test(self, Status status: Status | None = None) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":47
 *     # ---------------------
 * 
 *     def Wait(self, Status status: Status | None = None) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Wait for a non-blocking operation to complete.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":58
 *         return True
 * 
 *     def Test(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test for the completion of a non-blocking operation.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_17Test(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_16Test, "Test(self, status: Status | None = None) -> bool\n\n        Test for the completion of a non-blocking operation.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_17Test = {"Test", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_17Test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_16Test};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_17Test(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Test (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 58, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Test") < 0)) __PYX_ERR(24, 58, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Test", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 58, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 58, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_16Test(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_16Test(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Test", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":62
 *         Test for the completion of a non-blocking operation.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":63
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Test(
 *             &self.ob_mpi, &flag, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(24, 63, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":64
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Request.pyx":65
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(
 *             &self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Test((&__pyx_v_self->ob_mpi), (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 64, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Request.pyx":64
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Test(             # <<<<<<<<<<<<<<
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":66
 *         with nogil: CHKERR( MPI_Test(
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             self.ob_buf = None
 *         return <bint>flag
 */
  __pyx_t_3 = (__pyx_v_self->ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/Request.pyx":67
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->ob_buf);
    __Pyx_DECREF(__pyx_v_self->ob_buf);
    __pyx_v_self->ob_buf = Py_None;

    /* "src/mpi4py/MPI.src/Request.pyx":66
 *         with nogil: CHKERR( MPI_Test(
 *             &self.ob_mpi, &flag, statusp) )
 *         if self.ob_mpi == MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             self.ob_buf = None
 *         return <bint>flag
 */
  }

  /* "src/mpi4py/MPI.src/Request.pyx":68
 *         if self.ob_mpi == MPI_REQUEST_NULL:
 *             self.ob_buf = None
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     def Get_status(self, Status status: Status | None = None) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":58
 *         return True
 * 
 *     def Test(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test for the completion of a non-blocking operation.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":70
 *         return <bint>flag
 * 
 *     def Get_status(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Non-destructive test for the completion of a request.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_19Get_status(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_18Get_status, "Get_status(self, status: Status | None = None) -> bool\n\n        Non-destructive test for the completion of a request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_19Get_status = {"Get_status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_19Get_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_18Get_status};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_19Get_status(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_status (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 70, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_status") < 0)) __PYX_ERR(24, 70, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_status", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 70, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 70, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_18Get_status(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_18Get_status(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_status", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":74
 *         Non-destructive test for the completion of a request.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":75
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(24, 75, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":76
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Request.pyx":77
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_get_status(__pyx_v_self->ob_mpi, (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 76, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Request.pyx":76
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":78
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     # Multiple Completions
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":70
 *         return <bint>flag
 * 
 *     def Get_status(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Non-destructive test for the completion of a request.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":83
 *     # --------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitany(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_21Waitany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_20Waitany, "Waitany(cls, requests: Sequence[Request], status: Status | None = None) -> int\n\n        Wait for any previously initiated request to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_21Waitany = {"Waitany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_21Waitany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_20Waitany};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_21Waitany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Waitany (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":87
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 83, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 83, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Waitany") < 0)) __PYX_ERR(24, 83, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Waitany", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 83, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 87, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_20Waitany(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":83
 *     # --------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitany(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_20Waitany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_index;
  MPI_Status *__pyx_v_statusp;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Waitany", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":92
 *         Wait for any previously initiated request to complete.
 *         """
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Request.pyx":93
 *         """
 *         cdef int index = MPI_UNDEFINED
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(24, 93, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":94
 *         cdef int index = MPI_UNDEFINED
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests)
 *         try:
 */
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 94, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":95
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 95, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":96
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitany(
 *                 rs.count, rs.requests, &index, statusp) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":97
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &index, statusp) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":98
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(
 *                 rs.count, rs.requests, &index, statusp) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release()
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitany(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_index), __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 97, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":97
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Waitany(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &index, statusp) )
 *         finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":100
 *                 rs.count, rs.requests, &index, statusp) )
 *         finally:
 *             rs.release()             # <<<<<<<<<<<<<<
 *         return index
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 100, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_12 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(24, 100, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":101
 *         finally:
 *             rs.release()
 *         return index             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":83
 *     # --------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitany(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":103
 *         return index
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testany(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_23Testany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_22Testany, "Testany(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, bool]\n\n        Test for completion of any previously initiated request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_23Testany = {"Testany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_23Testany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_22Testany};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_23Testany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Testany (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":107
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 103, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 103, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Testany") < 0)) __PYX_ERR(24, 103, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Testany", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 103, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 107, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_22Testany(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":103
 *         return index
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testany(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_22Testany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_index;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Testany", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":112
 *         Test for completion of any previously initiated request.
 *         """
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Request.pyx":113
 *         """
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":114
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(24, 114, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":115
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests)
 *         try:
 */
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 115, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":116
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Testany(
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 116, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":117
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testany(
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":118
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Testany(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":119
 *         try:
 *             with nogil: CHKERR( MPI_Testany(
 *                 rs.count, rs.requests, &index, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release()
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testany(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_index), (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 118, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":118
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Testany(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 *         finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":121
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 *         finally:
 *             rs.release()             # <<<<<<<<<<<<<<
 *         return (index, <bint>flag)
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 121, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_12 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(24, 121, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":122
 *         finally:
 *             rs.release()
 *         return (index, <bint>flag)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_13 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_13)) __PYX_ERR(24, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(24, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_2)) __PYX_ERR(24, 122, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_13);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_13)) __PYX_ERR(24, 122, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_13 = 0;
  __pyx_r = __pyx_t_14;
  __pyx_t_14 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":103
 *         return index
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testany(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":124
 *         return (index, <bint>flag)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_any(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_25Get_status_any(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_24Get_status_any, "Get_status_any(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, bool]\n\n        Non-destructive test for the completion of any requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_25Get_status_any = {"Get_status_any", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_25Get_status_any, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_24Get_status_any};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_25Get_status_any(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_status_any (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":128
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 124, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 124, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_status_any") < 0)) __PYX_ERR(24, 124, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_status_any", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 124, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status_any", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 128, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_24Get_status_any(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":124
 *         return (index, <bint>flag)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_any(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_24Get_status_any(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_index;
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_status_any", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":133
 *         Non-destructive test for the completion of any requests.
 *         """
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Request.pyx":134
 *         """
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":135
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(24, 135, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":136
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests)
 *         try:
 */
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 136, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":137
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_any(
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 137, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":138
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Request_get_status_any(
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":139
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_any(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":140
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_any(
 *                 rs.count, rs.requests, &index, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release()            # ~> MPI-4.1
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_get_status_any(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_index), (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 139, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":139
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_any(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 *         finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":142
 *                 rs.count, rs.requests, &index, &flag, statusp) )
 *         finally:
 *             rs.release()            # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         return (index, <bint>flag)  # ~> MPI-4.1
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 142, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_5 = __pyx_filename;
      {
        __pyx_t_12 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(24, 142, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_5;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":143
 *         finally:
 *             rs.release()            # ~> MPI-4.1
 *         return (index, <bint>flag)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_13 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_13)) __PYX_ERR(24, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(24, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_2)) __PYX_ERR(24, 143, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_13);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_13)) __PYX_ERR(24, 143, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_13 = 0;
  __pyx_r = __pyx_t_14;
  __pyx_t_14 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":124
 *         return (index, <bint>flag)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_any(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status_any", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":145
 *         return (index, <bint>flag)  # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitall(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_27Waitall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_26Waitall, "Waitall(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> Literal[True]\n\n        Wait for all previously initiated requests to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_27Waitall = {"Waitall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_27Waitall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_26Waitall};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_27Waitall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Waitall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":149
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Literal[True]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 145, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 145, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Waitall") < 0)) __PYX_ERR(24, 145, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Waitall", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 145, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_26Waitall(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":145
 *         return (index, <bint>flag)  # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitall(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_26Waitall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire __pyx_t_3;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Waitall", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":154
 *         Wait for all previously initiated requests to complete.
 *         """
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests, statuses)
 *         try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":155
 *         """
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(
 */
  __pyx_t_3.__pyx_n = 1;
  __pyx_t_3.statuses = __pyx_v_statuses;
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 155, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":156
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitall(
 *                 rs.count, rs.requests, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":157
 *         rs.acquire(requests, statuses)
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, rs.statuses) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":158
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(
 *                 rs.count, rs.requests, rs.statuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release(statuses)
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitall(__pyx_v_rs->count, __pyx_v_rs->requests, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 157, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":157
 *         rs.acquire(requests, statuses)
 *         try:
 *             with nogil: CHKERR( MPI_Waitall(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, rs.statuses) )
 *         finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":160
 *                 rs.count, rs.requests, rs.statuses) )
 *         finally:
 *             rs.release(statuses)             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_4.__pyx_n = 1;
      __pyx_t_4.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 160, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_4.__pyx_n = 1;
        __pyx_t_4.statuses = __pyx_v_statuses;
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(24, 160, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":161
 *         finally:
 *             rs.release(statuses)
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":145
 *         return (index, <bint>flag)  # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitall(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":163
 *         return True
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testall(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_29Testall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_28Testall, "Testall(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> bool\n\n        Test for completion of all previously initiated requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_29Testall = {"Testall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_29Testall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_28Testall};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_29Testall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Testall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":167
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 163, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 163, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Testall") < 0)) __PYX_ERR(24, 163, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Testall", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_28Testall(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":163
 *         return True
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testall(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_28Testall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  int __pyx_v_flag;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire __pyx_t_3;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Testall", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":172
 *         Test for completion of all previously initiated requests.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":173
 *         """
 *         cdef int flag = 0
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests, statuses)
 *         try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 173, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":174
 *         cdef int flag = 0
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Testall(
 */
  __pyx_t_3.__pyx_n = 1;
  __pyx_t_3.statuses = __pyx_v_statuses;
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 174, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":175
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testall(
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":176
 *         rs.acquire(requests, statuses)
 *         try:
 *             with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":177
 *         try:
 *             with nogil: CHKERR( MPI_Testall(
 *                 rs.count, rs.requests, &flag, rs.statuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release(statuses)
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testall(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_flag), __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 176, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":176
 *         rs.acquire(requests, statuses)
 *         try:
 *             with nogil: CHKERR( MPI_Testall(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 *         finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":179
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 *         finally:
 *             rs.release(statuses)             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_4.__pyx_n = 1;
      __pyx_t_4.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 179, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_4.__pyx_n = 1;
        __pyx_t_4.statuses = __pyx_v_statuses;
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(24, 179, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":180
 *         finally:
 *             rs.release(statuses)
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":163
 *         return True
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testall(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":182
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_all(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_31Get_status_all(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_30Get_status_all, "Get_status_all(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> bool\n\n        Non-destructive test for the completion of all requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_31Get_status_all = {"Get_status_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_31Get_status_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_30Get_status_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_31Get_status_all(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_status_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":186
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 182, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 182, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_status_all") < 0)) __PYX_ERR(24, 182, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_status_all", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 182, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_30Get_status_all(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":182
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_all(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_30Get_status_all(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  int __pyx_v_flag;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire __pyx_t_3;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_status_all", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":191
 *         Non-destructive test for the completion of all requests.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":192
 *         """
 *         cdef int flag = 0
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests, statuses)
 *         try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 192, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":193
 *         cdef int flag = 0
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_all(
 */
  __pyx_t_3.__pyx_n = 1;
  __pyx_t_3.statuses = __pyx_v_statuses;
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 193, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":194
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Request_get_status_all(
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":195
 *         rs.acquire(requests, statuses)
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_all(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 *         finally:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":196
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_all(
 *                 rs.count, rs.requests, &flag, rs.statuses) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release(statuses)  # ~> MPI-4.1
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_get_status_all(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_flag), __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 195, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":195
 *         rs.acquire(requests, statuses)
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_all(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 *         finally:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":198
 *                 rs.count, rs.requests, &flag, rs.statuses) )
 *         finally:
 *             rs.release(statuses)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         return <bint>flag         # ~> MPI-4.1
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_4.__pyx_n = 1;
      __pyx_t_4.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 198, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_4.__pyx_n = 1;
        __pyx_t_4.statuses = __pyx_v_statuses;
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(24, 198, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":199
 *         finally:
 *             rs.release(statuses)  # ~> MPI-4.1
 *         return <bint>flag         # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":182
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_all(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":201
 *         return <bint>flag         # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitsome(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_33Waitsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_32Waitsome, "Waitsome(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> list[int] | None\n\n        Wait for some previously initiated requests to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_33Waitsome = {"Waitsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_33Waitsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_32Waitsome};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_33Waitsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Waitsome (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":205
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 201, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 201, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Waitsome") < 0)) __PYX_ERR(24, 201, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Waitsome", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_32Waitsome(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":201
 *         return <bint>flag         # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitsome(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_32Waitsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire __pyx_t_3;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Waitsome", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":210
 *         Wait for some previously initiated requests to complete.
 *         """
 *         cdef object indices = None             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_indices = Py_None;

  /* "src/mpi4py/MPI.src/Request.pyx":211
 *         """
 *         cdef object indices = None
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 211, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":212
 *         cdef object indices = None
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)             # <<<<<<<<<<<<<<
 *         rs.add_indices()
 *         try:
 */
  __pyx_t_3.__pyx_n = 1;
  __pyx_t_3.statuses = __pyx_v_statuses;
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 212, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":213
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 213, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":214
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Waitsome(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":215
 *         rs.add_indices()
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":216
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )             # <<<<<<<<<<<<<<
 *             indices = rs.get_indices()
 *         finally:
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Waitsome(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_rs->outcount), __pyx_v_rs->indices, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 215, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":215
 *         rs.add_indices()
 *         try:
 *             with nogil: CHKERR( MPI_Waitsome(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/Request.pyx":217
 *             with nogil: CHKERR( MPI_Waitsome(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release(statuses)
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 217, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_indices, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":219
 *             indices = rs.get_indices()
 *         finally:
 *             rs.release(statuses)             # <<<<<<<<<<<<<<
 *         return indices
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_4.__pyx_n = 1;
      __pyx_t_4.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 219, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_4.__pyx_n = 1;
        __pyx_t_4.statuses = __pyx_v_statuses;
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(24, 219, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":220
 *         finally:
 *             rs.release(statuses)
 *         return indices             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_indices);
  __pyx_r = __pyx_v_indices;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":201
 *         return <bint>flag         # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitsome(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Waitsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":222
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testsome(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_35Testsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_34Testsome, "Testsome(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> list[int] | None\n\n        Test for completion of some previously initiated requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_35Testsome = {"Testsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_35Testsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_34Testsome};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_35Testsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Testsome (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":226
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 222, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 222, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Testsome") < 0)) __PYX_ERR(24, 222, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Testsome", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 222, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_34Testsome(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":222
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testsome(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_34Testsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire __pyx_t_3;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Testsome", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":231
 *         Test for completion of some previously initiated requests.
 *         """
 *         cdef object indices = None             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_indices = Py_None;

  /* "src/mpi4py/MPI.src/Request.pyx":232
 *         """
 *         cdef object indices = None
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 232, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":233
 *         cdef object indices = None
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)             # <<<<<<<<<<<<<<
 *         rs.add_indices()
 *         try:
 */
  __pyx_t_3.__pyx_n = 1;
  __pyx_t_3.statuses = __pyx_v_statuses;
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 233, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":234
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 234, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":235
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Testsome(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":236
 *         rs.add_indices()
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":237
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )             # <<<<<<<<<<<<<<
 *             indices = rs.get_indices()
 *         finally:
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Testsome(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_rs->outcount), __pyx_v_rs->indices, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 236, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":236
 *         rs.add_indices()
 *         try:
 *             with nogil: CHKERR( MPI_Testsome(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/Request.pyx":238
 *             with nogil: CHKERR( MPI_Testsome(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release(statuses)
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 238, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_indices, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":240
 *             indices = rs.get_indices()
 *         finally:
 *             rs.release(statuses)             # <<<<<<<<<<<<<<
 *         return indices
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_4.__pyx_n = 1;
      __pyx_t_4.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 240, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_4.__pyx_n = 1;
        __pyx_t_4.statuses = __pyx_v_statuses;
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(24, 240, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":241
 *         finally:
 *             rs.release(statuses)
 *         return indices             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_indices);
  __pyx_r = __pyx_v_indices;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":222
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testsome(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Testsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":243
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_some(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_37Get_status_some(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_36Get_status_some, "Get_status_some(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> list[int] | None\n\n        Non-destructive test for completion of some requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_37Get_status_some = {"Get_status_some", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_37Get_status_some, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_36Get_status_some};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_37Get_status_some(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_status_some (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":247
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 243, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 243, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_status_some") < 0)) __PYX_ERR(24, 243, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_status_some", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 243, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status_some", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_36Get_status_some(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":243
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_some(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_36Get_status_some(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_v_indices = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire __pyx_t_3;
  struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_status_some", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":252
 *         Non-destructive test for completion of some requests.
 *         """
 *         cdef object indices = None             # <<<<<<<<<<<<<<
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_indices = Py_None;

  /* "src/mpi4py/MPI.src/Request.pyx":253
 *         """
 *         cdef object indices = None
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 253, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":254
 *         cdef object indices = None
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)             # <<<<<<<<<<<<<<
 *         rs.add_indices()
 *         try:
 */
  __pyx_t_3.__pyx_n = 1;
  __pyx_t_3.statuses = __pyx_v_statuses;
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, &__pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 254, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":255
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_some(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_add_indices(__pyx_v_rs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 255, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":256
 *         rs.acquire(requests, statuses)
 *         rs.add_indices()
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Request_get_status_some(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":257
 *         rs.add_indices()
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_some(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()  # ~> MPI-4.1
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Request.pyx":258
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_some(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )             # <<<<<<<<<<<<<<
 *             indices = rs.get_indices()  # ~> MPI-4.1
 *         finally:
 */
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_get_status_some(__pyx_v_rs->count, __pyx_v_rs->requests, (&__pyx_v_rs->outcount), __pyx_v_rs->indices, __pyx_v_rs->statuses)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 257, __pyx_L7_error)
        }

        /* "src/mpi4py/MPI.src/Request.pyx":257
 *         rs.add_indices()
 *         try:
 *             with nogil: CHKERR( MPI_Request_get_status_some(             # <<<<<<<<<<<<<<
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()  # ~> MPI-4.1
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/mpi4py/MPI.src/Request.pyx":259
 *             with nogil: CHKERR( MPI_Request_get_status_some(
 *                 rs.count, rs.requests, &rs.outcount, rs.indices, rs.statuses) )
 *             indices = rs.get_indices()  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release(statuses)  # ~> MPI-4.1
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_5_p_rs_get_indices(__pyx_v_rs); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 259, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_indices, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":261
 *             indices = rs.get_indices()  # ~> MPI-4.1
 *         finally:
 *             rs.release(statuses)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         return indices            # ~> MPI-4.1
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_4.__pyx_n = 1;
      __pyx_t_4.statuses = __pyx_v_statuses;
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 261, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_2 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_4.__pyx_n = 1;
        __pyx_t_4.statuses = __pyx_v_statuses;
        __pyx_t_13 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, &__pyx_t_4); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(24, 261, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":262
 *         finally:
 *             rs.release(statuses)  # ~> MPI-4.1
 *         return indices            # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     # Cancel
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_indices);
  __pyx_r = __pyx_v_indices;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":243
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_some(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.Get_status_some", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_indices);
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":267
 *     # ------
 * 
 *     def Cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_39Cancel(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_38Cancel, "Cancel(self) -> None\n\n        Cancel a request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_39Cancel = {"Cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_39Cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_38Cancel};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_39Cancel(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Cancel (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Cancel", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Cancel", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_38Cancel(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_38Cancel(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Cancel", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":271
 *         Cancel a request.
 *         """
 *         with nogil: CHKERR( MPI_Cancel(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Deallocation
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cancel((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 271, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":267
 *     # ------
 * 
 *     def Cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":276
 *     # ------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communication request.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_41Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_40Free, "Free(self) -> None\n\n        Free a communication request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_41Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_41Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_40Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_41Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_40Free(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_40Free(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":280
 *         Free a communication request.
 *         """
 *         with nogil: CHKERR( MPI_Request_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 280, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":276
 *     # ------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communication request.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":285
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_43py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_42py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_43py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_43py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_42py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_43py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_42py2f(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_42py2f(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":288
 *         """
 *         """
 *         return MPI_Request_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Request_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":285
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":290
 *         return MPI_Request_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Request:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_45f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_44f2py, "f2py(cls, arg: int) -> Request\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_45f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_45f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_44f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_45f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 290, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(24, 290, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 290, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_44f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_44f2py(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  MPI_Fint __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":294
 *         """
 *         """
 *         if issubclass(cls, Prequest):             # <<<<<<<<<<<<<<
 *             return PyMPIPrequest_New(MPI_Request_f2c(arg))
 *         if issubclass(cls, Grequest):
 */
  __pyx_t_1 = PyObject_IsSubclass(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 294, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":295
 *         """
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(MPI_Request_f2c(arg))             # <<<<<<<<<<<<<<
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(MPI_Request_f2c(arg))
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 295, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPIPrequest_New(MPI_Request_f2c(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Request.pyx":294
 *         """
 *         """
 *         if issubclass(cls, Prequest):             # <<<<<<<<<<<<<<
 *             return PyMPIPrequest_New(MPI_Request_f2c(arg))
 *         if issubclass(cls, Grequest):
 */
  }

  /* "src/mpi4py/MPI.src/Request.pyx":296
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(MPI_Request_f2c(arg))
 *         if issubclass(cls, Grequest):             # <<<<<<<<<<<<<<
 *             return PyMPIGrequest_New(MPI_Request_f2c(arg))
 *         return fromhandle(MPI_Request_f2c(arg))
 */
  __pyx_t_1 = PyObject_IsSubclass(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 296, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":297
 *             return PyMPIPrequest_New(MPI_Request_f2c(arg))
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(MPI_Request_f2c(arg))             # <<<<<<<<<<<<<<
 *         return fromhandle(MPI_Request_f2c(arg))
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 297, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPIGrequest_New(MPI_Request_f2c(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Request.pyx":296
 *         if issubclass(cls, Prequest):
 *             return PyMPIPrequest_New(MPI_Request_f2c(arg))
 *         if issubclass(cls, Grequest):             # <<<<<<<<<<<<<<
 *             return PyMPIGrequest_New(MPI_Request_f2c(arg))
 *         return fromhandle(MPI_Request_f2c(arg))
 */
  }

  /* "src/mpi4py/MPI.src/Request.pyx":298
 *         if issubclass(cls, Grequest):
 *             return PyMPIGrequest_New(MPI_Request_f2c(arg))
 *         return fromhandle(MPI_Request_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_2 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(24, 298, __pyx_L1_error)
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Request_f2c(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":290
 *         return MPI_Request_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Request:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":303
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_47wait(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_46wait, "wait(self, status: Status | None = None) -> Any\n\n        Wait for a non-blocking operation to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_47wait = {"wait", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_47wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_46wait};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_47wait(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wait (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":305
 *     def wait(
 *         self,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 303, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "wait") < 0)) __PYX_ERR(24, 303, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wait", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 303, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 305, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_46wait(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":303
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_46wait(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wait", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":310
 *         Wait for a non-blocking operation to complete.
 *         """
 *         cdef msg = PyMPI_wait(self, status)             # <<<<<<<<<<<<<<
 *         return msg
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_wait(__pyx_v_self, __pyx_v_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":311
 *         """
 *         cdef msg = PyMPI_wait(self, status)
 *         return msg             # <<<<<<<<<<<<<<
 * 
 *     def test(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":303
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":313
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_49test(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_48test, "test(self, status: Status | None = None) -> tuple[bool, Any | None]\n\n        Test for the completion of a non-blocking operation.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_49test = {"test", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_49test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_48test};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_49test(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("test (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":315
 *     def test(
 *         self,
 *             Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[bool, Any | None]:
 *         """
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 313, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "test") < 0)) __PYX_ERR(24, 313, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("test", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 313, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 315, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_48test(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":313
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_48test(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("test", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":320
 *         Test for the completion of a non-blocking operation.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_test(self, &flag, status)
 *         return (<bint>flag, msg)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":321
 *         """
 *         cdef int flag = 0
 *         cdef msg = PyMPI_test(self, &flag, status)             # <<<<<<<<<<<<<<
 *         return (<bint>flag, msg)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_test(__pyx_v_self, (&__pyx_v_flag), __pyx_v_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":322
 *         cdef int flag = 0
 *         cdef msg = PyMPI_test(self, &flag, status)
 *         return (<bint>flag, msg)             # <<<<<<<<<<<<<<
 * 
 *     def get_status(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(24, 322, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_msg)) __PYX_ERR(24, 322, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":313
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":324
 *         return (<bint>flag, msg)
 * 
 *     def get_status(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_51get_status(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_50get_status, "get_status(self, status: Status | None = None) -> bool\n\n        Non-destructive test for the completion of a request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_51get_status = {"get_status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_51get_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_50get_status};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_51get_status(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_status (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":326
 *     def get_status(
 *         self,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 324, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_status") < 0)) __PYX_ERR(24, 324, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_status", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 324, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 326, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_50get_status(((struct PyMPIRequestObject *)__pyx_v_self), __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":324
 *         return (<bint>flag, msg)
 * 
 *     def get_status(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_50get_status(struct PyMPIRequestObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":331
 *         Non-destructive test for the completion of a request.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":332
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(24, 332, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":333
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Request.pyx":334
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Request_get_status(__pyx_v_self->ob_mpi, (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 333, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Request.pyx":333
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Request_get_status(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":335
 *         with nogil: CHKERR( MPI_Request_get_status(
 *             self.ob_mpi, &flag, statusp) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":324
 *         return (<bint>flag, msg)
 * 
 *     def get_status(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":337
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_53waitany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_52waitany, "waitany(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, Any]\n\n        Wait for any previously initiated request to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_53waitany = {"waitany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_53waitany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_52waitany};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_53waitany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("waitany (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":341
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, Any]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 337, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 337, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "waitany") < 0)) __PYX_ERR(24, 337, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("waitany", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 337, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 341, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_52waitany(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":337
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_52waitany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_index;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("waitany", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":346
 *         Wait for any previously initiated request to complete.
 *         """
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_waitany(requests, &index, status)
 *         return (index, msg)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Request.pyx":347
 *         """
 *         cdef int index = MPI_UNDEFINED
 *         cdef msg = PyMPI_waitany(requests, &index, status)             # <<<<<<<<<<<<<<
 *         return (index, msg)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_waitany(__pyx_v_requests, (&__pyx_v_index), __pyx_v_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":348
 *         cdef int index = MPI_UNDEFINED
 *         cdef msg = PyMPI_waitany(requests, &index, status)
 *         return (index, msg)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(24, 348, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_msg)) __PYX_ERR(24, 348, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":337
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":350
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_55testany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_54testany, "testany(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, bool, Any | None]\n\n        Test for completion of any previously initiated request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_55testany = {"testany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_55testany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_54testany};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_55testany(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("testany (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":354
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool, Any | None]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 350, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 350, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "testany") < 0)) __PYX_ERR(24, 350, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("testany", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 350, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 354, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_54testany(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":350
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_54testany(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_index;
  int __pyx_v_flag;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("testany", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":359
 *         Test for completion of any previously initiated request.
 *         """
 *         cdef int index = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int flag  = 0
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)
 */
  __pyx_v_index = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Request.pyx":360
 *         """
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag  = 0             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)
 *         return (index, <bint>flag, msg)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":361
 *         cdef int index = MPI_UNDEFINED
 *         cdef int flag  = 0
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)             # <<<<<<<<<<<<<<
 *         return (index, <bint>flag, msg)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_testany(__pyx_v_requests, (&__pyx_v_index), (&__pyx_v_flag), __pyx_v_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":362
 *         cdef int flag  = 0
 *         cdef msg = PyMPI_testany(requests, &index, &flag, status)
 *         return (index, <bint>flag, msg)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1)) __PYX_ERR(24, 362, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(24, 362, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_msg)) __PYX_ERR(24, 362, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":350
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.testany", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":364
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_57get_status_any(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_56get_status_any, "get_status_any(cls, requests: Sequence[Request], status: Status | None = None) -> tuple[int, bool]\n\n        Non-destructive test for the completion of any requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_57get_status_any = {"get_status_any", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_57get_status_any, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_56get_status_any};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_57get_status_any(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_status_any (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Request.pyx":368
 *         cls,
 *         requests: Sequence[Request],
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[int, bool]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 364, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 364, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_status_any") < 0)) __PYX_ERR(24, 364, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_status_any", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 364, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status_any", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(24, 368, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_56get_status_any(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Request.pyx":364
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_56get_status_any(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, struct PyMPIStatusObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status_any", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":373
 *         Non-destructive test for the completion of any requests.
 *         """
 *         return Request.Get_status_any(requests, status)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request), __pyx_n_s_Get_status_any); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_requests, ((PyObject *)__pyx_v_status)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":364
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status_any", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":375
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_59waitall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_58waitall, "waitall(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> list[Any]\n\n        Wait for all previously initiated requests to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_59waitall = {"waitall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_59waitall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_58waitall};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_59waitall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("waitall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":379
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[Any]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 375, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 375, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "waitall") < 0)) __PYX_ERR(24, 375, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("waitall", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 375, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_58waitall(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":375
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_58waitall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("waitall", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":384
 *         Wait for all previously initiated requests to complete.
 *         """
 *         cdef msg = PyMPI_waitall(requests, statuses)             # <<<<<<<<<<<<<<
 *         return msg
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_waitall(__pyx_v_requests, __pyx_v_statuses); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":385
 *         """
 *         cdef msg = PyMPI_waitall(requests, statuses)
 *         return msg             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_msg);
  __pyx_r = __pyx_v_msg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":375
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":387
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_61testall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_60testall, "testall(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> tuple[bool, list[Any] | None]\n\n        Test for completion of all previously initiated requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_61testall = {"testall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_61testall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_60testall};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_61testall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("testall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":391
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None             # <<<<<<<<<<<<<<
 *     ) -> tuple[bool, list[Any] | None]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 387, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 387, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "testall") < 0)) __PYX_ERR(24, 387, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("testall", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 387, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_60testall(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":387
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_60testall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  int __pyx_v_flag;
  PyObject *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("testall", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":396
 *         Test for completion of all previously initiated requests.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef msg = PyMPI_testall(requests, &flag, statuses)
 *         return (<bint>flag, msg)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":397
 *         """
 *         cdef int flag = 0
 *         cdef msg = PyMPI_testall(requests, &flag, statuses)             # <<<<<<<<<<<<<<
 *         return (<bint>flag, msg)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_testall(__pyx_v_requests, (&__pyx_v_flag), __pyx_v_statuses); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":398
 *         cdef int flag = 0
 *         cdef msg = PyMPI_testall(requests, &flag, statuses)
 *         return (<bint>flag, msg)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(24, 398, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_msg);
  __Pyx_GIVEREF(__pyx_v_msg);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_msg)) __PYX_ERR(24, 398, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":387
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Request.testall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":400
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_63get_status_all(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_62get_status_all, "get_status_all(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> bool\n\n        Non-destructive test for the completion of all requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_63get_status_all = {"get_status_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_63get_status_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_62get_status_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_63get_status_all(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_status_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":404
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 400, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 400, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_status_all") < 0)) __PYX_ERR(24, 400, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_status_all", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 400, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_62get_status_all(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":400
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_62get_status_all(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status_all", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":409
 *         Non-destructive test for the completion of all requests.
 *         """
 *         return Request.Get_status_all(requests, statuses)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request), __pyx_n_s_Get_status_all); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_requests, __pyx_v_statuses};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":400
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":411
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_65waitsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_64waitsome, "waitsome(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> tuple[list[int] | None, list[Any] | None]\n\n        Wait for some previously initiated requests to complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_65waitsome = {"waitsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_65waitsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_64waitsome};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_65waitsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("waitsome (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":415
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[list[int] | None, list[Any] | None]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 411, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 411, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "waitsome") < 0)) __PYX_ERR(24, 411, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("waitsome", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 411, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_64waitsome(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":411
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_64waitsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("waitsome", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":420
 *         Wait for some previously initiated requests to complete.
 *         """
 *         return PyMPI_waitsome(requests, statuses)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_waitsome(__pyx_v_requests, __pyx_v_statuses); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":411
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.waitsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":422
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_67testsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_66testsome, "testsome(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> tuple[list[int] | None, list[Any] | None]\n\n        Test for completion of some previously initiated requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_67testsome = {"testsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_67testsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_66testsome};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_67testsome(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("testsome (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":426
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> tuple[list[int] | None, list[Any] | None]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 422, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 422, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "testsome") < 0)) __PYX_ERR(24, 422, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("testsome", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 422, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.testsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_66testsome(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":422
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_66testsome(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("testsome", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":431
 *         Test for completion of some previously initiated requests.
 *         """
 *         return PyMPI_testsome(requests, statuses)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_testsome(__pyx_v_requests, __pyx_v_statuses); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":422
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Request.testsome", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":433
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_69get_status_some(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_68get_status_some, "get_status_some(cls, requests: Sequence[Request], statuses: list[Status] | None = None) -> list[int] | None\n\n        Non-destructive test for completion of some requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_69get_status_some = {"get_status_some", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_69get_status_some, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_68get_status_some};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_69get_status_some(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  PyObject *__pyx_v_statuses = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_status_some (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,&__pyx_n_s_statuses,0};

    /* "src/mpi4py/MPI.src/Request.pyx":437
 *         cls,
 *         requests: Sequence[Request],
 *         statuses: list[Status] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int] | None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 433, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_statuses);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 433, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get_status_some") < 0)) __PYX_ERR(24, 433, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_requests = values[0];
    __pyx_v_statuses = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_status_some", 0, 1, 2, __pyx_nargs); __PYX_ERR(24, 433, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status_some", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_68get_status_some(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests, __pyx_v_statuses);

  /* "src/mpi4py/MPI.src/Request.pyx":433
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_68get_status_some(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests, PyObject *__pyx_v_statuses) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status_some", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":442
 *         Non-destructive test for completion of some requests.
 *         """
 *         return Request.Get_status_some(requests, statuses)             # <<<<<<<<<<<<<<
 * 
 *     def cancel(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request), __pyx_n_s_Get_status_some); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_requests, __pyx_v_statuses};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 442, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":433
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Request.get_status_some", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":444
 *         return Request.Get_status_some(requests, statuses)
 * 
 *     def cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_71cancel(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Request_70cancel, "cancel(self) -> None\n\n        Cancel a request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Request_71cancel = {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_71cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_70cancel};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Request_71cancel(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("cancel", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "cancel", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Request_70cancel(((struct PyMPIRequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Request_70cancel(struct PyMPIRequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":448
 *         Cancel a request.
 *         """
 *         with nogil: CHKERR( MPI_Cancel(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cancel((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 448, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":444
 *         return Request.Get_status_some(requests, statuses)
 * 
 *     def cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Request.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":456
 *     """
 * 
 *     def __cinit__(self, Request request: Request | None = None):             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_REQUEST_NULL: return
 *         <void>(<Prequest?>request)
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_8Prequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_8Prequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIRequestObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 456, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(24, 456, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_request = ((struct PyMPIRequestObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 456, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) __PYX_ERR(24, 456, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Prequest___cinit__(((struct PyMPIPrequestObject *)__pyx_v_self), __pyx_v_request);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_8Prequest___cinit__(struct PyMPIPrequestObject *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":457
 * 
 *     def __cinit__(self, Request request: Request | None = None):
 *         if self.ob_mpi == MPI_REQUEST_NULL: return             # <<<<<<<<<<<<<<
 *         <void>(<Prequest?>request)
 * 
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":458
 *     def __cinit__(self, Request request: Request | None = None):
 *         if self.ob_mpi == MPI_REQUEST_NULL: return
 *         <void>(<Prequest?>request)             # <<<<<<<<<<<<<<
 * 
 *     def Start(self) -> None:
 */
  if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Prequest)))) __PYX_ERR(24, 458, __pyx_L1_error)
  ((void)((struct PyMPIPrequestObject *)__pyx_v_request));

  /* "src/mpi4py/MPI.src/Request.pyx":456
 *     """
 * 
 *     def __cinit__(self, Request request: Request | None = None):             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_REQUEST_NULL: return
 *         <void>(<Prequest?>request)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":460
 *         <void>(<Prequest?>request)
 * 
 *     def Start(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Initiate a communication with a persistent request.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_3Start(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Prequest_2Start, "Start(self) -> None\n\n        Initiate a communication with a persistent request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_3Start = {"Start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_3Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_2Start};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_3Start(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Start (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Start", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Start", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Prequest_2Start(((struct PyMPIPrequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_2Start(struct PyMPIPrequestObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Start", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":464
 *         Initiate a communication with a persistent request.
 *         """
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Start((&__pyx_v_self->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 464, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":460
 *         <void>(<Prequest?>request)
 * 
 *     def Start(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Initiate a communication with a persistent request.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":466
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Startall(cls, requests: list[Prequest]) -> None:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_5Startall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Prequest_4Startall, "Startall(cls, requests: list[Prequest]) -> None\n\n        Start a collection of persistent requests.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_5Startall = {"Startall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_5Startall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_4Startall};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_5Startall(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_requests = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Startall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_requests,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_requests)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 466, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Startall") < 0)) __PYX_ERR(24, 466, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_requests = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Startall", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 466, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Startall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Prequest_4Startall(((PyTypeObject*)__pyx_v_cls), __pyx_v_requests);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_4Startall(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_requests) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *__pyx_v_rs = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  char const *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Startall", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":471
 *         Start a collection of persistent requests.
 *         """
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)             # <<<<<<<<<<<<<<
 *         rs.acquire(requests)
 *         try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_6mpi4py_3MPI__p_rs(((PyTypeObject *)__pyx_ptype_6mpi4py_3MPI__p_rs), __pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 471, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_rs = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":472
 *         """
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)             # <<<<<<<<<<<<<<
 *         try:
 *             with nogil: CHKERR( MPI_Startall(rs.count, rs.requests) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_acquire(__pyx_v_rs, __pyx_v_requests, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 472, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":473
 *         cdef _p_rs rs = _p_rs.__new__(_p_rs)
 *         rs.acquire(requests)
 *         try:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Startall(rs.count, rs.requests) )
 *         finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Request.pyx":474
 *         rs.acquire(requests)
 *         try:
 *             with nogil: CHKERR( MPI_Startall(rs.count, rs.requests) )             # <<<<<<<<<<<<<<
 *         finally:
 *             rs.release()
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {
          __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Startall(__pyx_v_rs->count, __pyx_v_rs->requests)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 474, __pyx_L7_error)
        }
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":476
 *             with nogil: CHKERR( MPI_Startall(rs.count, rs.requests) )
 *         finally:
 *             rs.release()             # <<<<<<<<<<<<<<
 * 
 *     # Partitioned completion
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 476, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __pyx_t_2 = __pyx_lineno; __pyx_t_3 = __pyx_clineno; __pyx_t_4 = __pyx_filename;
      {
        __pyx_t_11 = __pyx_f_6mpi4py_3MPI_5_p_rs_release(__pyx_v_rs, NULL); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(24, 476, __pyx_L10_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      }
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ErrRestore(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
      __pyx_lineno = __pyx_t_2; __pyx_clineno = __pyx_t_3; __pyx_filename = __pyx_t_4;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":466
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Startall(cls, requests: list[Prequest]) -> None:
 *         """
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Startall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":481
 *     # ----------------------
 * 
 *     def Pready(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_7Pready(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Prequest_6Pready, "Pready(self, partition: int) -> None\n\n        Mark a given partition as ready.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_7Pready = {"Pready", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_7Pready, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_6Pready};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_7Pready(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_partition;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pready (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partition,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 481, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pready") < 0)) __PYX_ERR(24, 481, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partition = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_partition == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 483, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pready", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 481, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Pready", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Prequest_6Pready(((struct PyMPIPrequestObject *)__pyx_v_self), __pyx_v_partition);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_6Pready(struct PyMPIPrequestObject *__pyx_v_self, int __pyx_v_partition) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pready", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":488
 *         Mark a given partition as ready.
 *         """
 *         CHKERR( MPI_Pready(partition, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Pready_range(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pready(__pyx_v_partition, __pyx_v_self->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 488, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":481
 *     # ----------------------
 * 
 *     def Pready(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Pready", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":490
 *         CHKERR( MPI_Pready(partition, self.ob_mpi) )
 * 
 *     def Pready_range(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition_low: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_9Pready_range(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Prequest_8Pready_range, "Pready_range(self, partition_low: int, partition_high: int) -> None\n\n        Mark a range of partitions as ready.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_9Pready_range = {"Pready_range", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_9Pready_range, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_8Pready_range};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_9Pready_range(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_partition_low;
  int __pyx_v_partition_high;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pready_range (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partition_low,&__pyx_n_s_partition_high,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition_low)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 490, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition_high)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 490, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Pready_range", 1, 2, 2, 1); __PYX_ERR(24, 490, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pready_range") < 0)) __PYX_ERR(24, 490, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_partition_low = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_partition_low == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 492, __pyx_L3_error)
    __pyx_v_partition_high = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_partition_high == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 493, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pready_range", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 490, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Pready_range", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Prequest_8Pready_range(((struct PyMPIPrequestObject *)__pyx_v_self), __pyx_v_partition_low, __pyx_v_partition_high);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_8Pready_range(struct PyMPIPrequestObject *__pyx_v_self, int __pyx_v_partition_low, int __pyx_v_partition_high) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pready_range", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":498
 *         Mark a range of partitions as ready.
 *         """
 *         CHKERR( MPI_Pready_range(partition_low, partition_high, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Pready_list(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pready_range(__pyx_v_partition_low, __pyx_v_partition_high, __pyx_v_self->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 498, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":490
 *         CHKERR( MPI_Pready(partition, self.ob_mpi) )
 * 
 *     def Pready_range(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition_low: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Pready_range", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":500
 *         CHKERR( MPI_Pready_range(partition_low, partition_high, self.ob_mpi) )
 * 
 *     def Pready_list(             # <<<<<<<<<<<<<<
 *         self,
 *         partitions: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_11Pready_list(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Prequest_10Pready_list, "Pready_list(self, partitions: Sequence[int]) -> None\n\n        Mark a sequence of partitions as ready.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_11Pready_list = {"Pready_list", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_11Pready_list, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_10Pready_list};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_11Pready_list(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_partitions = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pready_list (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partitions,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partitions)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 500, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pready_list") < 0)) __PYX_ERR(24, 500, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partitions = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pready_list", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 500, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Pready_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Prequest_10Pready_list(((struct PyMPIPrequestObject *)__pyx_v_self), __pyx_v_partitions);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_10Pready_list(struct PyMPIPrequestObject *__pyx_v_self, PyObject *__pyx_v_partitions) {
  int __pyx_v_length;
  int *__pyx_v_array_of_partitions;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pready_list", 0);
  __Pyx_INCREF(__pyx_v_partitions);

  /* "src/mpi4py/MPI.src/Request.pyx":507
 *         Mark a sequence of partitions as ready.
 *         """
 *         cdef int length = 0, *array_of_partitions = NULL             # <<<<<<<<<<<<<<
 *         partitions = getarray(partitions, &length, &array_of_partitions)
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )
 */
  __pyx_v_length = 0;
  __pyx_v_array_of_partitions = NULL;

  /* "src/mpi4py/MPI.src/Request.pyx":508
 *         """
 *         cdef int length = 0, *array_of_partitions = NULL
 *         partitions = getarray(partitions, &length, &array_of_partitions)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )
 * 
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_partitions, (&__pyx_v_length), (&__pyx_v_array_of_partitions)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_partitions, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":509
 *         cdef int length = 0, *array_of_partitions = NULL
 *         partitions = getarray(partitions, &length, &array_of_partitions)
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Parrived(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pready_list(__pyx_v_length, __pyx_v_array_of_partitions, __pyx_v_self->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(24, 509, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":500
 *         CHKERR( MPI_Pready_range(partition_low, partition_high, self.ob_mpi) )
 * 
 *     def Pready_list(             # <<<<<<<<<<<<<<
 *         self,
 *         partitions: Sequence[int],
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Pready_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_partitions);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":511
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )
 * 
 *     def Parrived(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_13Parrived(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Prequest_12Parrived, "Parrived(self, partition: int) -> bool\n\n        Test partial completion of a partitioned receive operation.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Prequest_13Parrived = {"Parrived", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_13Parrived, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_12Parrived};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Prequest_13Parrived(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_partition;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Parrived (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partition,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partition)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 511, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Parrived") < 0)) __PYX_ERR(24, 511, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_partition = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_partition == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 513, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Parrived", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 511, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Parrived", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Prequest_12Parrived(((struct PyMPIPrequestObject *)__pyx_v_self), __pyx_v_partition);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Prequest_12Parrived(struct PyMPIPrequestObject *__pyx_v_self, int __pyx_v_partition) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Parrived", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":518
 *         Test partial completion of a partitioned receive operation.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Parrived(self.ob_mpi, partition, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":519
 *         """
 *         cdef int flag = 0
 *         CHKERR( MPI_Parrived(self.ob_mpi, partition, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Parrived(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_partition, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(24, 519, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":520
 *         cdef int flag = 0
 *         CHKERR( MPI_Parrived(self.ob_mpi, partition, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":511
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )
 * 
 *     def Parrived(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Prequest.Parrived", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":528
 *     """
 * 
 *     def __cinit__(self, Request request: Request | None = None):             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi
 *         if self.ob_mpi == MPI_REQUEST_NULL: return
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_8Grequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_8Grequest_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIRequestObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 528, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(24, 528, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_request = ((struct PyMPIRequestObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 528, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Request, 1, "request", 0))) __PYX_ERR(24, 528, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Grequest___cinit__(((struct PyMPIGrequestObject *)__pyx_v_self), __pyx_v_request);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_8Grequest___cinit__(struct PyMPIGrequestObject *__pyx_v_self, struct PyMPIRequestObject *__pyx_v_request) {
  int __pyx_r;
  MPI_Request __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":529
 * 
 *     def __cinit__(self, Request request: Request | None = None):
 *         self.ob_grequest = self.ob_mpi             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_REQUEST_NULL: return
 *         <void>(<Grequest?>request)
 */
  __pyx_t_1 = __pyx_v_self->__pyx_base.ob_mpi;
  __pyx_v_self->ob_grequest = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Request.pyx":530
 *     def __cinit__(self, Request request: Request | None = None):
 *         self.ob_grequest = self.ob_mpi
 *         if self.ob_mpi == MPI_REQUEST_NULL: return             # <<<<<<<<<<<<<<
 *         <void>(<Grequest?>request)
 * 
 */
  __pyx_t_2 = (__pyx_v_self->__pyx_base.ob_mpi == MPI_REQUEST_NULL);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Request.pyx":531
 *         self.ob_grequest = self.ob_mpi
 *         if self.ob_mpi == MPI_REQUEST_NULL: return
 *         <void>(<Grequest?>request)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_v_request), __pyx_ptype_6mpi4py_3MPI_Grequest)))) __PYX_ERR(24, 531, __pyx_L1_error)
  ((void)((struct PyMPIGrequestObject *)__pyx_v_request));

  /* "src/mpi4py/MPI.src/Request.pyx":528
 *     """
 * 
 *     def __cinit__(self, Request request: Request | None = None):             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi
 *         if self.ob_mpi == MPI_REQUEST_NULL: return
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":533
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Grequest_3Start(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Grequest_2Start, "Start(cls, query_fn: Callable[..., None] | None = None, free_fn: Callable[..., None] | None = None, cancel_fn: Callable[..., None] | None = None, args: tuple[Any] | None = None, kwargs: dict[str, Any] | None = None) -> Grequest\n\n        Create and return a user-defined request.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Grequest_3Start = {"Start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_3Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_2Start};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Grequest_3Start(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_query_fn = 0;
  PyObject *__pyx_v_free_fn = 0;
  PyObject *__pyx_v_cancel_fn = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Start (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_query_fn,&__pyx_n_s_free_fn,&__pyx_n_s_cancel_fn,&__pyx_n_s_args,&__pyx_n_s_kwargs,0};

    /* "src/mpi4py/MPI.src/Request.pyx":536
 *     def Start(
 *         cls,
 *         query_fn: Callable[..., None] | None = None,             # <<<<<<<<<<<<<<
 *         free_fn: Callable[..., None] | None = None,
 *         cancel_fn: Callable[..., None] | None = None,
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Request.pyx":537
 *         cls,
 *         query_fn: Callable[..., None] | None = None,
 *         free_fn: Callable[..., None] | None = None,             # <<<<<<<<<<<<<<
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Request.pyx":538
 *         query_fn: Callable[..., None] | None = None,
 *         free_fn: Callable[..., None] | None = None,
 *         cancel_fn: Callable[..., None] | None = None,             # <<<<<<<<<<<<<<
 *         args: tuple[Any] | None = None,
 *         kwargs: dict[str, Any] | None = None,
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Request.pyx":539
 *         free_fn: Callable[..., None] | None = None,
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,             # <<<<<<<<<<<<<<
 *         kwargs: dict[str, Any] | None = None,
 *     ) -> Grequest:
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Request.pyx":540
 *         cancel_fn: Callable[..., None] | None = None,
 *         args: tuple[Any] | None = None,
 *         kwargs: dict[str, Any] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Grequest:
 *         """
 */
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_query_fn);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 533, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_free_fn);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 533, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_cancel_fn);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 533, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 533, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_kwargs);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 533, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Start") < 0)) __PYX_ERR(24, 533, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_query_fn = values[0];
    __pyx_v_free_fn = values[1];
    __pyx_v_cancel_fn = values[2];
    __pyx_v_args = values[3];
    __pyx_v_kwargs = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Start", 0, 0, 5, __pyx_nargs); __PYX_ERR(24, 533, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Grequest_2Start(((PyTypeObject*)__pyx_v_cls), __pyx_v_query_fn, __pyx_v_free_fn, __pyx_v_cancel_fn, __pyx_v_args, __pyx_v_kwargs);

  /* "src/mpi4py/MPI.src/Request.pyx":533
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_2Start(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_query_fn, PyObject *__pyx_v_free_fn, PyObject *__pyx_v_cancel_fn, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  struct PyMPIGrequestObject *__pyx_v_request = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  MPI_Request __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Start", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":545
 *         Create and return a user-defined request.
 *         """
 *         cdef Grequest request = <Grequest>New(Grequest)             # <<<<<<<<<<<<<<
 *         cdef _p_greq state = _p_greq(
 *             query_fn, free_fn, cancel_fn, args, kwargs)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Grequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIGrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":546
 *         """
 *         cdef Grequest request = <Grequest>New(Grequest)
 *         cdef _p_greq state = _p_greq(             # <<<<<<<<<<<<<<
 *             query_fn, free_fn, cancel_fn, args, kwargs)
 *         with nogil: CHKERR( MPI_Grequest_start(
 */
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_query_fn);
  __Pyx_GIVEREF(__pyx_v_query_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_query_fn)) __PYX_ERR(24, 546, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_free_fn);
  __Pyx_GIVEREF(__pyx_v_free_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_free_fn)) __PYX_ERR(24, 546, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_cancel_fn);
  __Pyx_GIVEREF(__pyx_v_cancel_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_cancel_fn)) __PYX_ERR(24, 546, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_args);
  __Pyx_GIVEREF(__pyx_v_args);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_args)) __PYX_ERR(24, 546, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_kwargs);
  __Pyx_GIVEREF(__pyx_v_kwargs);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_kwargs)) __PYX_ERR(24, 546, __pyx_L1_error);
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI__p_greq), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":548
 *         cdef _p_greq state = _p_greq(
 *             query_fn, free_fn, cancel_fn, args, kwargs)
 *         with nogil: CHKERR( MPI_Grequest_start(             # <<<<<<<<<<<<<<
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Request.pyx":550
 *         with nogil: CHKERR( MPI_Grequest_start(
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         Py_INCREF(state)
 *         request.ob_grequest = request.ob_mpi
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Grequest_start(__pyx_f_6mpi4py_3MPI_greq_query_fn, __pyx_f_6mpi4py_3MPI_greq_free_fn, __pyx_f_6mpi4py_3MPI_greq_cancel_fn, ((void *)__pyx_v_state), (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(24, 548, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Request.pyx":548
 *         cdef _p_greq state = _p_greq(
 *             query_fn, free_fn, cancel_fn, args, kwargs)
 *         with nogil: CHKERR( MPI_Grequest_start(             # <<<<<<<<<<<<<<
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":551
 *             greq_query_fn, greq_free_fn, greq_cancel_fn,
 *             <void*>state, &request.ob_mpi) )
 *         Py_INCREF(state)             # <<<<<<<<<<<<<<
 *         request.ob_grequest = request.ob_mpi
 *         return request
 */
  Py_INCREF(((PyObject *)__pyx_v_state));

  /* "src/mpi4py/MPI.src/Request.pyx":552
 *             <void*>state, &request.ob_mpi) )
 *         Py_INCREF(state)
 *         request.ob_grequest = request.ob_mpi             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_4 = __pyx_v_request->__pyx_base.ob_mpi;
  __pyx_v_request->ob_grequest = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Request.pyx":553
 *         Py_INCREF(state)
 *         request.ob_grequest = request.ob_mpi
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Complete(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Request.pyx":533
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":555
 *         return request
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Grequest_5Complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Grequest_4Complete, "Complete(self) -> None\n\n        Notify that a user-defined request is complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Grequest_5Complete = {"Complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_5Complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_4Complete};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Grequest_5Complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Complete (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Complete", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Complete", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Grequest_4Complete(((struct PyMPIGrequestObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_4Complete(struct PyMPIGrequestObject *__pyx_v_self) {
  MPI_Request __pyx_v_grequest;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  MPI_Request __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Complete", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":559
 *         Notify that a user-defined request is complete.
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise MPIException(MPI_ERR_REQUEST)  # ~> unreachable
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.ob_mpi != MPI_REQUEST_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Request.pyx":560
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             if self.ob_mpi != self.ob_grequest:             # <<<<<<<<<<<<<<
 *                 raise MPIException(MPI_ERR_REQUEST)  # ~> unreachable
 *         cdef MPI_Request grequest = self.ob_grequest
 */
    __pyx_t_1 = (__pyx_v_self->__pyx_base.ob_mpi != __pyx_v_self->ob_grequest);
    if (unlikely(__pyx_t_1)) {

      /* "src/mpi4py/MPI.src/Request.pyx":561
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise MPIException(MPI_ERR_REQUEST)  # ~> unreachable             # <<<<<<<<<<<<<<
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 */
      __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_REQUEST); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 561, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_6mpi4py_3MPI_MPIException);
      __pyx_t_4 = __pyx_v_6mpi4py_3MPI_MPIException; __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 561, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(24, 561, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/Request.pyx":560
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:
 *             if self.ob_mpi != self.ob_grequest:             # <<<<<<<<<<<<<<
 *                 raise MPIException(MPI_ERR_REQUEST)  # ~> unreachable
 *         cdef MPI_Request grequest = self.ob_grequest
 */
    }

    /* "src/mpi4py/MPI.src/Request.pyx":559
 *         Notify that a user-defined request is complete.
 *         """
 *         if self.ob_mpi != MPI_REQUEST_NULL:             # <<<<<<<<<<<<<<
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise MPIException(MPI_ERR_REQUEST)  # ~> unreachable
 */
  }

  /* "src/mpi4py/MPI.src/Request.pyx":562
 *             if self.ob_mpi != self.ob_grequest:
 *                 raise MPIException(MPI_ERR_REQUEST)  # ~> unreachable
 *         cdef MPI_Request grequest = self.ob_grequest             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 */
  __pyx_t_7 = __pyx_v_self->ob_grequest;
  __pyx_v_grequest = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Request.pyx":563
 *                 raise MPIException(MPI_ERR_REQUEST)  # ~> unreachable
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 */
  __pyx_t_7 = __pyx_v_self->__pyx_base.ob_mpi;
  __pyx_v_self->ob_grequest = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Request.pyx":564
 *         cdef MPI_Request grequest = self.ob_grequest
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )             # <<<<<<<<<<<<<<
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_8 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Grequest_complete(__pyx_v_grequest)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(24, 564, __pyx_L6_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Request.pyx":565
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 *         with nogil: CHKERR( MPI_Grequest_complete(grequest) )
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??             # <<<<<<<<<<<<<<
 * 
 *     def complete(self, obj: Any = None) -> None:
 */
  __pyx_t_7 = __pyx_v_self->__pyx_base.ob_mpi;
  __pyx_v_self->ob_grequest = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Request.pyx":555
 *         return request
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.Complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Request.pyx":567
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 * 
 *     def complete(self, obj: Any = None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Grequest_7complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Grequest_6complete, "complete(self, obj: Any = None) -> None\n\n        Notify that a user-defined request is complete.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Grequest_7complete = {"complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_7complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_6complete};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Grequest_7complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("complete (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 567, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "complete") < 0)) __PYX_ERR(24, 567, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("complete", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 567, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Grequest_6complete(((struct PyMPIGrequestObject *)__pyx_v_self), __pyx_v_obj);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Grequest_6complete(struct PyMPIGrequestObject *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("complete", 1);

  /* "src/mpi4py/MPI.src/Request.pyx":571
 *         Notify that a user-defined request is complete.
 *         """
 *         self.ob_buf = PyMPI_wrap_object(obj)             # <<<<<<<<<<<<<<
 *         Grequest.Complete(self)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_wrap_object(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.ob_buf);
  __pyx_v_self->__pyx_base.ob_buf = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":572
 *         """
 *         self.ob_buf = PyMPI_wrap_object(obj)
 *         Grequest.Complete(self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest), __pyx_n_s_Complete); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":567
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 * 
 *     def complete(self, obj: Any = None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Grequest.complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":6
 *     """
 * 
 *     def __cinit__(self, Message message: Message | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, message)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_7Message_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_7Message_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIMessageObject *__pyx_v_message = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIMessageObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(25, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_message = ((struct PyMPIMessageObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(25, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_message), __pyx_ptype_6mpi4py_3MPI_Message, 1, "message", 0))) __PYX_ERR(25, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message___cinit__(((struct PyMPIMessageObject *)__pyx_v_self), __pyx_v_message);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_7Message___cinit__(struct PyMPIMessageObject *__pyx_v_self, struct PyMPIMessageObject *__pyx_v_message) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":7
 * 
 *     def __cinit__(self, Message message: Message | None = None):
 *         cinit(self, message)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_message); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(25, 7, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":6
 *     """
 * 
 *     def __cinit__(self, Message message: Message | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, message)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Message.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":9
 *         cinit(self, message)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_7Message_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_7Message_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_7Message_2__dealloc__(((struct PyMPIMessageObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_7Message_2__dealloc__(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":10
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(25, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":9
 *         cinit(self, message)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Message.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Message.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Message): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_4__richcmp__(((struct PyMPIMessageObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_4__richcmp__(struct PyMPIMessageObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Message): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Message); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Message.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Message): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Message): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Message.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_7Message_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_7Message_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_6__bool__(((struct PyMPIMessageObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_7Message_6__bool__(struct PyMPIMessageObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Message.pyx":17
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_8__reduce__(((struct PyMPIMessageObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_8__reduce__(struct PyMPIMessageObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":20
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Message.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_6handle___get__(((struct PyMPIMessageObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_6handle___get__(struct PyMPIMessageObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":25
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_2__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Message.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Message:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_10fromhandle, "fromhandle(cls, handle: int) -> Message\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 27, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(25, 27, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":32
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Message> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(25, 32, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Message)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Message:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Message.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":34
 *         return fromhandle(<MPI_Message> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Do nothing.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_12free, "free(self) -> None\n\n        Do nothing.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_12free(((struct PyMPIMessageObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_12free(struct PyMPIMessageObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":38
 *         Do nothing.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # Matching Probe
 */
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(25, 38, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":34
 *         return fromhandle(<MPI_Message> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Do nothing.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Message.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":43
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Probe(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_15Probe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_14Probe, "Probe(cls, comm: Comm, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Self\n\n        Blocking test for a matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_15Probe = {"Probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_15Probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_14Probe};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_15Probe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Probe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Message.pyx":49
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 43, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 43, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 43, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 43, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Probe") < 0)) __PYX_ERR(25, 43, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 47, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__69;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 48, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__70;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Probe", 0, 1, 4, __pyx_nargs); __PYX_ERR(25, 43, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.Probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(25, 46, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(25, 49, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_14Probe(((PyTypeObject*)__pyx_v_cls), __pyx_v_comm, __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Message.pyx":43
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Probe(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_14Probe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Message __pyx_v_cmessage;
  MPI_Status *__pyx_v_statusp;
  struct PyMPIMessageObject *__pyx_v_message = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__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;
  __Pyx_RefNannySetupContext("Probe", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":54
 *         Blocking test for a matched message.
 *         """
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(
 */
  __pyx_v_cmessage = MPI_MESSAGE_NULL;

  /* "src/mpi4py/MPI.src/Message.pyx":55
 *         """
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Mprobe(
 *             source, tag, comm.ob_mpi, &cmessage, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(25, 55, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Message.pyx":56
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(             # <<<<<<<<<<<<<<
 *             source, tag, comm.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(cls)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Message.pyx":57
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(
 *             source, tag, comm.ob_mpi, &cmessage, statusp) )             # <<<<<<<<<<<<<<
 *         cdef Message message = <Message>New(cls)
 *         message.ob_mpi = cmessage
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Mprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm->ob_mpi, (&__pyx_v_cmessage), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(25, 56, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Message.pyx":56
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(             # <<<<<<<<<<<<<<
 *             source, tag, comm.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(cls)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Message.pyx":58
 *         with nogil: CHKERR( MPI_Mprobe(
 *             source, tag, comm.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(cls)             # <<<<<<<<<<<<<<
 *         message.ob_mpi = cmessage
 *         return message
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":59
 *             source, tag, comm.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(cls)
 *         message.ob_mpi = cmessage             # <<<<<<<<<<<<<<
 *         return message
 * 
 */
  __pyx_v_message->ob_mpi = __pyx_v_cmessage;

  /* "src/mpi4py/MPI.src/Message.pyx":60
 *         cdef Message message = <Message>New(cls)
 *         message.ob_mpi = cmessage
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":43
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Probe(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Message.Probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":62
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Iprobe(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_17Iprobe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_16Iprobe, "Iprobe(cls, comm: Comm, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Self | None\n\n        Nonblocking test for a matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_17Iprobe = {"Iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_17Iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_16Iprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_17Iprobe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iprobe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Message.pyx":68
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self | None:
 *         """
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iprobe") < 0)) __PYX_ERR(25, 62, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 66, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__71;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 67, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__72;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iprobe", 0, 1, 4, __pyx_nargs); __PYX_ERR(25, 62, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.Iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(25, 65, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(25, 68, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_16Iprobe(((PyTypeObject*)__pyx_v_cls), __pyx_v_comm, __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Message.pyx":62
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Iprobe(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_16Iprobe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  MPI_Message __pyx_v_cmessage;
  MPI_Status *__pyx_v_statusp;
  struct PyMPIMessageObject *__pyx_v_message = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iprobe", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":73
 *         Nonblocking test for a matched message.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":74
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(
 */
  __pyx_v_cmessage = MPI_MESSAGE_NULL;

  /* "src/mpi4py/MPI.src/Message.pyx":75
 *         cdef int flag = 0
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Improbe(
 *              source, tag, comm.ob_mpi, &flag, &cmessage, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(25, 75, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Message.pyx":76
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(             # <<<<<<<<<<<<<<
 *              source, tag, comm.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Message.pyx":77
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(
 *              source, tag, comm.ob_mpi, &flag, &cmessage, statusp) )             # <<<<<<<<<<<<<<
 *         if flag == 0: return None
 *         cdef Message message = <Message>New(cls)
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Improbe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm->ob_mpi, (&__pyx_v_flag), (&__pyx_v_cmessage), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(25, 76, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Message.pyx":76
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(             # <<<<<<<<<<<<<<
 *              source, tag, comm.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Message.pyx":78
 *         with nogil: CHKERR( MPI_Improbe(
 *              source, tag, comm.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None             # <<<<<<<<<<<<<<
 *         cdef Message message = <Message>New(cls)
 *         message.ob_mpi = cmessage
 */
  __pyx_t_3 = (__pyx_v_flag == 0);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Message.pyx":79
 *              source, tag, comm.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None
 *         cdef Message message = <Message>New(cls)             # <<<<<<<<<<<<<<
 *         message.ob_mpi = cmessage
 *         return message
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":80
 *         if flag == 0: return None
 *         cdef Message message = <Message>New(cls)
 *         message.ob_mpi = cmessage             # <<<<<<<<<<<<<<
 *         return message
 * 
 */
  __pyx_v_message->ob_mpi = __pyx_v_cmessage;

  /* "src/mpi4py/MPI.src/Message.pyx":81
 *         cdef Message message = <Message>New(cls)
 *         message.ob_mpi = cmessage
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     # Matched receives
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":62
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Iprobe(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Message.Iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":86
 *     # ----------------
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_19Recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_18Recv, "Recv(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Blocking receive of matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_19Recv = {"Recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_19Recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_18Recv};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_19Recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Recv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Message.pyx":89
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 86, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 86, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Recv") < 0)) __PYX_ERR(25, 86, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Recv", 0, 1, 2, __pyx_nargs); __PYX_ERR(25, 86, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.Recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(25, 89, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_18Recv(((struct PyMPIMessageObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Message.pyx":86
 *     # ----------------
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_18Recv(struct PyMPIMessageObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Message __pyx_v_message;
  int __pyx_v_source;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Message __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  MPI_Status *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Recv", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":94
 *         Blocking receive of matched message.
 *         """
 *         cdef MPI_Message message = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_message = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Message.pyx":95
 *         """
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef int source = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 *         if message == MPI_MESSAGE_NO_PROC:
 *             source = MPI_PROC_NULL
 */
  __pyx_v_source = MPI_ANY_SOURCE;

  /* "src/mpi4py/MPI.src/Message.pyx":96
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 */
  __pyx_t_2 = (__pyx_v_message == MPI_MESSAGE_NO_PROC);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Message.pyx":97
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:
 *             source = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
    __pyx_v_source = MPI_PROC_NULL;

    /* "src/mpi4py/MPI.src/Message.pyx":96
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 */
  }

  /* "src/mpi4py/MPI.src/Message.pyx":98
 *         if message == MPI_MESSAGE_NO_PROC:
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mrecv_c(
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":99
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Mrecv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_4 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(25, 99, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":100
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mrecv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, statusp) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Message.pyx":102
 *         with nogil: CHKERR( MPI_Mrecv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, statusp) )             # <<<<<<<<<<<<<<
 *         if self is not __MESSAGE_NO_PROC__:
 *             self.ob_mpi = message
 */
        __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Mrecv_c(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, (&__pyx_v_message), __pyx_v_statusp)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(25, 100, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Message.pyx":100
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mrecv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, statusp) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Message.pyx":103
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, statusp) )
 *         if self is not __MESSAGE_NO_PROC__:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = message
 * 
 */
  __pyx_t_2 = (__pyx_v_self != __pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Message.pyx":104
 *             &message, statusp) )
 *         if self is not __MESSAGE_NO_PROC__:
 *             self.ob_mpi = message             # <<<<<<<<<<<<<<
 * 
 *     def Irecv(self, buf: BufSpec) -> Request:
 */
    __pyx_v_self->ob_mpi = __pyx_v_message;

    /* "src/mpi4py/MPI.src/Message.pyx":103
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, statusp) )
 *         if self is not __MESSAGE_NO_PROC__:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = message
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Message.pyx":86
 *     # ----------------
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Message.Recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":106
 *             self.ob_mpi = message
 * 
 *     def Irecv(self, buf: BufSpec) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_21Irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_20Irecv, "Irecv(self, buf: BufSpec) -> Request\n\n        Nonblocking receive of matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_21Irecv = {"Irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_21Irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_20Irecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_21Irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Irecv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Irecv") < 0)) __PYX_ERR(25, 106, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Irecv", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.Irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_20Irecv(((struct PyMPIMessageObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_20Irecv(struct PyMPIMessageObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  MPI_Message __pyx_v_message;
  int __pyx_v_source;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Message __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Irecv", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":110
 *         Nonblocking receive of matched message.
 *         """
 *         cdef MPI_Message message = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_message = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Message.pyx":111
 *         """
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef int source = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 *         if message == MPI_MESSAGE_NO_PROC:
 *             source = MPI_PROC_NULL
 */
  __pyx_v_source = MPI_ANY_SOURCE;

  /* "src/mpi4py/MPI.src/Message.pyx":112
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 */
  __pyx_t_2 = (__pyx_v_message == MPI_MESSAGE_NO_PROC);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Message.pyx":113
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:
 *             source = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>New(Request)
 */
    __pyx_v_source = MPI_PROC_NULL;

    /* "src/mpi4py/MPI.src/Message.pyx":112
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef int source = MPI_ANY_SOURCE
 *         if message == MPI_MESSAGE_NO_PROC:             # <<<<<<<<<<<<<<
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 */
  }

  /* "src/mpi4py/MPI.src/Message.pyx":114
 *         if message == MPI_MESSAGE_NO_PROC:
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Imrecv_c(
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":115
 *             source = MPI_PROC_NULL
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Imrecv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":116
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Imrecv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Message.pyx":118
 *         with nogil: CHKERR( MPI_Imrecv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if self is not __MESSAGE_NO_PROC__:
 *             self.ob_mpi = message
 */
        __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Imrecv_c(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, (&__pyx_v_message), (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(25, 116, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Message.pyx":116
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Imrecv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Message.pyx":119
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, &request.ob_mpi) )
 *         if self is not __MESSAGE_NO_PROC__:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = message
 *         request.ob_buf = rmsg
 */
  __pyx_t_2 = (__pyx_v_self != __pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Message.pyx":120
 *             &message, &request.ob_mpi) )
 *         if self is not __MESSAGE_NO_PROC__:
 *             self.ob_mpi = message             # <<<<<<<<<<<<<<
 *         request.ob_buf = rmsg
 *         return request
 */
    __pyx_v_self->ob_mpi = __pyx_v_message;

    /* "src/mpi4py/MPI.src/Message.pyx":119
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             &message, &request.ob_mpi) )
 *         if self is not __MESSAGE_NO_PROC__:             # <<<<<<<<<<<<<<
 *             self.ob_mpi = message
 *         request.ob_buf = rmsg
 */
  }

  /* "src/mpi4py/MPI.src/Message.pyx":121
 *         if self is not __MESSAGE_NO_PROC__:
 *             self.ob_mpi = message
 *         request.ob_buf = rmsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_rmsg);

  /* "src/mpi4py/MPI.src/Message.pyx":122
 *             self.ob_mpi = message
 *         request.ob_buf = rmsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":106
 *             self.ob_mpi = message
 * 
 *     def Irecv(self, buf: BufSpec) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Message.Irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":127
 *     # --------------------
 *     #
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def probe(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_23probe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_22probe, "probe(cls, comm: Comm, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Self\n\n        Blocking test for a matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_23probe = {"probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_23probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_22probe};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_23probe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Message.pyx":133
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 127, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 127, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 127, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 127, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "probe") < 0)) __PYX_ERR(25, 127, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 131, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__73;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 132, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__74;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("probe", 0, 1, 4, __pyx_nargs); __PYX_ERR(25, 127, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(25, 130, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(25, 133, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_22probe(((PyTypeObject*)__pyx_v_cls), __pyx_v_comm, __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Message.pyx":127
 *     # --------------------
 *     #
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def probe(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_22probe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  struct PyMPIMessageObject *__pyx_v_message = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  MPI_Status *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probe", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":138
 *         Blocking test for a matched message.
 *         """
 *         cdef Message message = <Message>New(cls)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm.ob_mpi,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":139
 *         """
 *         cdef Message message = <Message>New(cls)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm.ob_mpi,
 *                                       &message.ob_mpi, statusp)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_3 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(25, 139, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Message.pyx":140
 *         cdef Message message = <Message>New(cls)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm.ob_mpi,             # <<<<<<<<<<<<<<
 *                                       &message.ob_mpi, statusp)
 *         return message
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_mprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm->ob_mpi, (&__pyx_v_message->ob_mpi), __pyx_v_statusp); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_message->ob_buf);
  __Pyx_DECREF(__pyx_v_message->ob_buf);
  __pyx_v_message->ob_buf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":142
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm.ob_mpi,
 *                                       &message.ob_mpi, statusp)
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":127
 *     # --------------------
 *     #
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def probe(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Message.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":144
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def iprobe(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_25iprobe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_24iprobe, "iprobe(cls, comm: Comm, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Self | None\n\n        Nonblocking test for a matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_25iprobe = {"iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_25iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_24iprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_25iprobe(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("iprobe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Message.pyx":150
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self | None:
 *         """
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 144, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 144, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 144, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "iprobe") < 0)) __PYX_ERR(25, 144, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 148, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__75;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 149, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__76;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iprobe", 0, 1, 4, __pyx_nargs); __PYX_ERR(25, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(25, 147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(25, 150, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_24iprobe(((PyTypeObject*)__pyx_v_cls), __pyx_v_comm, __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Message.pyx":144
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def iprobe(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_24iprobe(PyTypeObject *__pyx_v_cls, struct PyMPICommObject *__pyx_v_comm, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  struct PyMPIMessageObject *__pyx_v_message = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  MPI_Status *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("iprobe", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":155
 *         Nonblocking test for a matched message.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef Message message = <Message>New(cls)
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":156
 *         """
 *         cdef int flag = 0
 *         cdef Message message = <Message>New(cls)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         message.ob_buf = PyMPI_improbe(source, tag, comm.ob_mpi, &flag,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":157
 *         cdef int flag = 0
 *         cdef Message message = <Message>New(cls)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         message.ob_buf = PyMPI_improbe(source, tag, comm.ob_mpi, &flag,
 *                                        &message.ob_mpi, statusp)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_3 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(25, 157, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Message.pyx":158
 *         cdef Message message = <Message>New(cls)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         message.ob_buf = PyMPI_improbe(source, tag, comm.ob_mpi, &flag,             # <<<<<<<<<<<<<<
 *                                        &message.ob_mpi, statusp)
 *         if flag == 0: return None
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_improbe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm->ob_mpi, (&__pyx_v_flag), (&__pyx_v_message->ob_mpi), __pyx_v_statusp); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_message->ob_buf);
  __Pyx_DECREF(__pyx_v_message->ob_buf);
  __pyx_v_message->ob_buf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":160
 *         message.ob_buf = PyMPI_improbe(source, tag, comm.ob_mpi, &flag,
 *                                        &message.ob_mpi, statusp)
 *         if flag == 0: return None             # <<<<<<<<<<<<<<
 *         return message
 * 
 */
  __pyx_t_4 = (__pyx_v_flag == 0);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Message.pyx":161
 *                                        &message.ob_mpi, statusp)
 *         if flag == 0: return None
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     def recv(self, Status status: Status | None = None) -> Any:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":144
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def iprobe(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Message.iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":163
 *         return message
 * 
 *     def recv(self, Status status: Status | None = None) -> Any:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking receive of matched message.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_27recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_26recv, "recv(self, status: Status | None = None) -> Any\n\n        Blocking receive of matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_27recv = {"recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_27recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_26recv};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_27recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("recv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_status,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 163, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "recv") < 0)) __PYX_ERR(25, 163, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("recv", 0, 0, 1, __pyx_nargs); __PYX_ERR(25, 163, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(25, 163, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_26recv(((struct PyMPIMessageObject *)__pyx_v_self), __pyx_v_status);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_26recv(struct PyMPIMessageObject *__pyx_v_self, struct PyMPIStatusObject *__pyx_v_status) {
  PyObject *__pyx_v_rmsg = 0;
  MPI_Message __pyx_v_message;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Message __pyx_t_2;
  MPI_Status *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("recv", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":167
 *         Blocking receive of matched message.
 *         """
 *         cdef object rmsg = self.ob_buf             # <<<<<<<<<<<<<<
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_t_1 = __pyx_v_self->ob_buf;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":168
 *         """
 *         cdef object rmsg = self.ob_buf
 *         cdef MPI_Message message = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         rmsg = PyMPI_mrecv(rmsg, &message, statusp)
 */
  __pyx_t_2 = __pyx_v_self->ob_mpi;
  __pyx_v_message = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Message.pyx":169
 *         cdef object rmsg = self.ob_buf
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         rmsg = PyMPI_mrecv(rmsg, &message, statusp)
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_3 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(25, 169, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Message.pyx":170
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         rmsg = PyMPI_mrecv(rmsg, &message, statusp)             # <<<<<<<<<<<<<<
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_PyMPI_mrecv(__pyx_v_rmsg, (&__pyx_v_message), __pyx_v_statusp); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_rmsg, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":171
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         rmsg = PyMPI_mrecv(rmsg, &message, statusp)
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None
 *         return rmsg
 */
  __pyx_t_4 = (__pyx_v_self != __pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__);
  if (__pyx_t_4) {
    __pyx_v_self->ob_mpi = __pyx_v_message;
  }

  /* "src/mpi4py/MPI.src/Message.pyx":172
 *         rmsg = PyMPI_mrecv(rmsg, &message, statusp)
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None             # <<<<<<<<<<<<<<
 *         return rmsg
 * 
 */
  __pyx_t_4 = (__pyx_v_self->ob_mpi == MPI_MESSAGE_NULL);
  if (__pyx_t_4) {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->ob_buf);
    __Pyx_DECREF(__pyx_v_self->ob_buf);
    __pyx_v_self->ob_buf = Py_None;
  }

  /* "src/mpi4py/MPI.src/Message.pyx":173
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None
 *         return rmsg             # <<<<<<<<<<<<<<
 * 
 *     def irecv(self) -> Request:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rmsg);
  __pyx_r = __pyx_v_rmsg;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":163
 *         return message
 * 
 *     def recv(self, Status status: Status | None = None) -> Any:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking receive of matched message.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Message.recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":175
 *         return rmsg
 * 
 *     def irecv(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_29irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_28irecv, "irecv(self) -> Request\n\n        Nonblocking receive of matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_29irecv = {"irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_29irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_28irecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_29irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("irecv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("irecv", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "irecv", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_28irecv(((struct PyMPIMessageObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_28irecv(struct PyMPIMessageObject *__pyx_v_self) {
  PyObject *__pyx_v_rmsg = 0;
  MPI_Message __pyx_v_message;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Message __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("irecv", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":179
 *         Nonblocking receive of matched message.
 *         """
 *         cdef object rmsg = self.ob_buf             # <<<<<<<<<<<<<<
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = __pyx_v_self->ob_buf;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_rmsg = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":180
 *         """
 *         cdef object rmsg = self.ob_buf
 *         cdef MPI_Message message = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_imrecv(rmsg, &message, &request.ob_mpi)
 */
  __pyx_t_2 = __pyx_v_self->ob_mpi;
  __pyx_v_message = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Message.pyx":181
 *         cdef object rmsg = self.ob_buf
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_imrecv(rmsg, &message, &request.ob_mpi)
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":182
 *         cdef MPI_Message message = self.ob_mpi
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_imrecv(rmsg, &message, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_imrecv(__pyx_v_rmsg, (&__pyx_v_message), (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":183
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_imrecv(rmsg, &message, &request.ob_mpi)
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None
 *         return request
 */
  __pyx_t_4 = (__pyx_v_self != __pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__);
  if (__pyx_t_4) {
    __pyx_v_self->ob_mpi = __pyx_v_message;
  }

  /* "src/mpi4py/MPI.src/Message.pyx":184
 *         request.ob_buf = PyMPI_imrecv(rmsg, &message, &request.ob_mpi)
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_4 = (__pyx_v_self->ob_mpi == MPI_MESSAGE_NULL);
  if (__pyx_t_4) {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->ob_buf);
    __Pyx_DECREF(__pyx_v_self->ob_buf);
    __pyx_v_self->ob_buf = Py_None;
  }

  /* "src/mpi4py/MPI.src/Message.pyx":185
 *         if self is not __MESSAGE_NO_PROC__: self.ob_mpi = message
 *         if self.ob_mpi == MPI_MESSAGE_NULL: self.ob_buf = None
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":175
 *         return rmsg
 * 
 *     def irecv(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Message.irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":190
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_31py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_30py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_31py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_31py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_30py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_31py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_30py2f(((struct PyMPIMessageObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_30py2f(struct PyMPIMessageObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":193
 *         """
 *         """
 *         return MPI_Message_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Message_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":190
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Message.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Message.pyx":195
 *         return MPI_Message_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Message:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_33f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Message_32f2py, "f2py(cls, arg: int) -> Message\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Message_33f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_33f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_32f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Message_33f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 195, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(25, 195, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 195, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Message.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Message_32f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Message_32f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Message.pyx":199
 *         """
 *         """
 *         return fromhandle(MPI_Message_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(25, 199, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Message_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Message.pyx":195
 *         return MPI_Message_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Message:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Message.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":6
 *     """
 * 
 *     def __cinit__(self, Op op: Op | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, op)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_2Op_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_2Op_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIOpObject *__pyx_v_op = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_op,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIOpObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(26, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_op = ((struct PyMPIOpObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(26, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Op.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 1, "op", 0))) __PYX_ERR(26, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op___cinit__(((struct PyMPIOpObject *)__pyx_v_self), __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_2Op___cinit__(struct PyMPIOpObject *__pyx_v_self, struct PyMPIOpObject *__pyx_v_op) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":7
 * 
 *     def __cinit__(self, Op op: Op | None = None):
 *         cinit(self, op)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_op); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 7, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":6
 *     """
 * 
 *     def __cinit__(self, Op op: Op | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, op)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":9
 *         cinit(self, op)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_2Op_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_2Op_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_2Op_2__dealloc__(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_2Op_2__dealloc__(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":10
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":9
 *         cinit(self, op)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Op.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Op.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Op): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_4__richcmp__(((struct PyMPIOpObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_4__richcmp__(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Op): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Op); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Op): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Op): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Op.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_2Op_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_2Op_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_6__bool__(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_2Op_6__bool__(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Op.pyx":17
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Op(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_8__reduce__(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_8__reduce__(struct PyMPIOpObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":20
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_Op(self)             # <<<<<<<<<<<<<<
 * 
 *     def __call__(self, x: Any, y: Any) -> Any:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_reduce_Op(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Op(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":22
 *         return reduce_Op(self)
 * 
 *     def __call__(self, x: Any, y: Any) -> Any:             # <<<<<<<<<<<<<<
 *         cdef int index = op_user_id_get(self)
 *         return op_call(self.ob_mpi, index, x, y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_11__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_11__call__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__call__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 22, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) {
          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 22, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, 1); __PYX_ERR(26, 22, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__call__") < 0)) __PYX_ERR(26, 22, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__call__", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 22, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Op.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_10__call__(((struct PyMPIOpObject *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_10__call__(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  int __pyx_v_index;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__call__", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":23
 * 
 *     def __call__(self, x: Any, y: Any) -> Any:
 *         cdef int index = op_user_id_get(self)             # <<<<<<<<<<<<<<
 *         return op_call(self.ob_mpi, index, x, y)
 * 
 */
  __pyx_v_index = __pyx_f_6mpi4py_3MPI_op_user_id_get(__pyx_v_self);

  /* "src/mpi4py/MPI.src/Op.pyx":24
 *     def __call__(self, x: Any, y: Any) -> Any:
 *         cdef int index = op_user_id_get(self)
 *         return op_call(self.ob_mpi, index, x, y)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_op_call(__pyx_v_self->ob_mpi, __pyx_v_index, __pyx_v_x, __pyx_v_y); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":22
 *         return reduce_Op(self)
 * 
 *     def __call__(self, x: Any, y: Any) -> Any:             # <<<<<<<<<<<<<<
 *         cdef int index = op_user_id_get(self)
 *         return op_call(self.ob_mpi, index, x, y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.__call__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":28
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_6handle___get__(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_6handle___get__(struct PyMPIOpObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":29
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_3__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":28
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":31
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Op:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_13fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_12fromhandle, "fromhandle(cls, handle: int) -> Op\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_13fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_13fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_12fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_13fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 31, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(26, 31, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 31, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Op.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_12fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_12fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":36
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Op> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(26, 36, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Op)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":31
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Op:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Op.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":38
 *         return fromhandle(<MPI_Op> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_15free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_14free, "free(self) -> None\n\n        Call `Free` if not null or predefined.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_15free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_15free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_14free};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_15free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_14free(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_14free(struct PyMPIOpObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":42
 *         Call `Free` if not null or predefined.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # User-Defined Reduction Operations
 */
  __pyx_t_1 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 42, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":38
 *         return fromhandle(<MPI_Op> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":47
 *     # ---------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_17Create(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_16Create, "Create(cls, function: Callable[[Buffer, Buffer, Datatype], None], commute: bool = False) -> Self\n\n        Create a user-defined reduction operation.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_17Create = {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_17Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_16Create};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_17Create(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_function = 0;
  int __pyx_v_commute;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_function,&__pyx_n_s_commute,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_function)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 47, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_commute);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 47, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create") < 0)) __PYX_ERR(26, 47, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_function = values[0];
    if (values[1]) {
      __pyx_v_commute = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_commute == (int)-1) && PyErr_Occurred())) __PYX_ERR(26, 51, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Op.pyx":51
 *         cls,
 *         function: Callable[[Buffer, Buffer, Datatype], None],
 *         bint commute: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
      __pyx_v_commute = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 0, 1, 2, __pyx_nargs); __PYX_ERR(26, 47, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Op.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_16Create(((PyTypeObject*)__pyx_v_cls), __pyx_v_function, __pyx_v_commute);

  /* "src/mpi4py/MPI.src/Op.pyx":47
 *     # ---------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_16Create(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_function, int __pyx_v_commute) {
  struct PyMPIOpObject *__pyx_v_self = 0;
  MPI_User_function *__pyx_v_fn_i;
  MPI_User_function_c *__pyx_v_fn_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":56
 *         Create a user-defined reduction operation.
 *         """
 *         cdef Op self = <Op>New(cls)             # <<<<<<<<<<<<<<
 *         cdef MPI_User_function   *fn_i = NULL
 *         cdef MPI_User_function_c *fn_c = NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self = ((struct PyMPIOpObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":57
 *         """
 *         cdef Op self = <Op>New(cls)
 *         cdef MPI_User_function   *fn_i = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_User_function_c *fn_c = NULL
 *         op_user_new(self, function, &fn_i, &fn_c)
 */
  __pyx_v_fn_i = NULL;

  /* "src/mpi4py/MPI.src/Op.pyx":58
 *         cdef Op self = <Op>New(cls)
 *         cdef MPI_User_function   *fn_i = NULL
 *         cdef MPI_User_function_c *fn_c = NULL             # <<<<<<<<<<<<<<
 *         op_user_new(self, function, &fn_i, &fn_c)
 *         try:
 */
  __pyx_v_fn_c = NULL;

  /* "src/mpi4py/MPI.src/Op.pyx":59
 *         cdef MPI_User_function   *fn_i = NULL
 *         cdef MPI_User_function_c *fn_c = NULL
 *         op_user_new(self, function, &fn_i, &fn_c)             # <<<<<<<<<<<<<<
 *         try:
 *             try:
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_op_user_new(__pyx_v_self, __pyx_v_function, (&__pyx_v_fn_i), (&__pyx_v_fn_c)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(26, 59, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":60
 *         cdef MPI_User_function_c *fn_c = NULL
 *         op_user_new(self, function, &fn_i, &fn_c)
 *         try:             # <<<<<<<<<<<<<<
 *             try:
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Op.pyx":61
 *         op_user_new(self, function, &fn_i, &fn_c)
 *         try:
 *             try:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 *             except NotImplementedError:                               # ~> legacy
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Op.pyx":62
 *         try:
 *             try:
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )             # <<<<<<<<<<<<<<
 *             except NotImplementedError:                               # ~> legacy
 *                 CHKERR( MPI_Op_create(fn_i, commute, &self.ob_mpi) )  # ~> legacy
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_create_c(__pyx_v_fn_c, __pyx_v_commute, (&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(26, 62, __pyx_L9_error)

          /* "src/mpi4py/MPI.src/Op.pyx":61
 *         op_user_new(self, function, &fn_i, &fn_c)
 *         try:
 *             try:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 *             except NotImplementedError:                               # ~> legacy
 */
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L14_try_end;
        __pyx_L9_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/Op.pyx":63
 *             try:
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 *             except NotImplementedError:                               # ~> legacy             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Op_create(fn_i, commute, &self.ob_mpi) )  # ~> legacy
 *         except:                # ~> uncovered  # noqa
 */
        __pyx_t_3 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NotImplementedError);
        if (__pyx_t_3) {
          __Pyx_AddTraceback("mpi4py.MPI.Op.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_10) < 0) __PYX_ERR(26, 63, __pyx_L11_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_10);

          /* "src/mpi4py/MPI.src/Op.pyx":64
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 *             except NotImplementedError:                               # ~> legacy
 *                 CHKERR( MPI_Op_create(fn_i, commute, &self.ob_mpi) )  # ~> legacy             # <<<<<<<<<<<<<<
 *         except:                # ~> uncovered  # noqa
 *             op_user_del(self)  # ~> uncovered
 */
          __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_create(__pyx_v_fn_i, __pyx_v_commute, (&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(26, 64, __pyx_L11_except_error)
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          goto __pyx_L10_exception_handled;
        }
        goto __pyx_L11_except_error;

        /* "src/mpi4py/MPI.src/Op.pyx":61
 *         op_user_new(self, function, &fn_i, &fn_c)
 *         try:
 *             try:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 *             except NotImplementedError:                               # ~> legacy
 */
        __pyx_L11_except_error:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        goto __pyx_L3_error;
        __pyx_L10_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
        __pyx_L14_try_end:;
      }

      /* "src/mpi4py/MPI.src/Op.pyx":60
 *         cdef MPI_User_function_c *fn_c = NULL
 *         op_user_new(self, function, &fn_i, &fn_c)
 *         try:             # <<<<<<<<<<<<<<
 *             try:
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Op.pyx":65
 *             except NotImplementedError:                               # ~> legacy
 *                 CHKERR( MPI_Op_create(fn_i, commute, &self.ob_mpi) )  # ~> legacy
 *         except:                # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 *             op_user_del(self)  # ~> uncovered
 *             raise              # ~> uncovered
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Op.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(26, 65, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_2);

      /* "src/mpi4py/MPI.src/Op.pyx":66
 *                 CHKERR( MPI_Op_create(fn_i, commute, &self.ob_mpi) )  # ~> legacy
 *         except:                # ~> uncovered  # noqa
 *             op_user_del(self)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             raise              # ~> uncovered
 *         return self
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_op_user_del(__pyx_v_self); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(26, 66, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/Op.pyx":67
 *         except:                # ~> uncovered  # noqa
 *             op_user_del(self)  # ~> uncovered
 *             raise              # ~> uncovered             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
      __Pyx_GIVEREF(__pyx_t_10);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_ErrRestoreWithState(__pyx_t_10, __pyx_t_1, __pyx_t_2);
      __pyx_t_10 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
      __PYX_ERR(26, 67, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/Op.pyx":60
 *         cdef MPI_User_function_c *fn_c = NULL
 *         op_user_new(self, function, &fn_i, &fn_c)
 *         try:             # <<<<<<<<<<<<<<
 *             try:
 *                 CHKERR( MPI_Op_create_c(fn_c, commute, &self.ob_mpi) )
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":68
 *             op_user_del(self)  # ~> uncovered
 *             raise              # ~> uncovered
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def Free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":47
 *     # ---------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.Op.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_self);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":70
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a user-defined reduction operation.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_19Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_18Free, "Free(self) -> None\n\n        Free a user-defined reduction operation.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_19Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_19Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_18Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_19Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_18Free(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_18Free(struct PyMPIOpObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":74
 *         Free a user-defined reduction operation.
 *         """
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         op_user_del(self)
 *         if   self is __MAX__     : self.ob_mpi =  MPI_MAX
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 74, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":75
 *         """
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         op_user_del(self)             # <<<<<<<<<<<<<<
 *         if   self is __MAX__     : self.ob_mpi =  MPI_MAX
 *         elif self is __MIN__     : self.ob_mpi =  MPI_MIN
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_op_user_del(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 75, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":76
 *         CHKERR( MPI_Op_free(&self.ob_mpi) )
 *         op_user_del(self)
 *         if   self is __MAX__     : self.ob_mpi =  MPI_MAX             # <<<<<<<<<<<<<<
 *         elif self is __MIN__     : self.ob_mpi =  MPI_MIN
 *         elif self is __SUM__     : self.ob_mpi =  MPI_SUM
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___MAX__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_MAX;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":77
 *         op_user_del(self)
 *         if   self is __MAX__     : self.ob_mpi =  MPI_MAX
 *         elif self is __MIN__     : self.ob_mpi =  MPI_MIN             # <<<<<<<<<<<<<<
 *         elif self is __SUM__     : self.ob_mpi =  MPI_SUM
 *         elif self is __PROD__    : self.ob_mpi =  MPI_PROD
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___MIN__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_MIN;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":78
 *         if   self is __MAX__     : self.ob_mpi =  MPI_MAX
 *         elif self is __MIN__     : self.ob_mpi =  MPI_MIN
 *         elif self is __SUM__     : self.ob_mpi =  MPI_SUM             # <<<<<<<<<<<<<<
 *         elif self is __PROD__    : self.ob_mpi =  MPI_PROD
 *         elif self is __LAND__    : self.ob_mpi =  MPI_LAND
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___SUM__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_SUM;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":79
 *         elif self is __MIN__     : self.ob_mpi =  MPI_MIN
 *         elif self is __SUM__     : self.ob_mpi =  MPI_SUM
 *         elif self is __PROD__    : self.ob_mpi =  MPI_PROD             # <<<<<<<<<<<<<<
 *         elif self is __LAND__    : self.ob_mpi =  MPI_LAND
 *         elif self is __BAND__    : self.ob_mpi =  MPI_BAND
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___PROD__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_PROD;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":80
 *         elif self is __SUM__     : self.ob_mpi =  MPI_SUM
 *         elif self is __PROD__    : self.ob_mpi =  MPI_PROD
 *         elif self is __LAND__    : self.ob_mpi =  MPI_LAND             # <<<<<<<<<<<<<<
 *         elif self is __BAND__    : self.ob_mpi =  MPI_BAND
 *         elif self is __LOR__     : self.ob_mpi =  MPI_LOR
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___LAND__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_LAND;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":81
 *         elif self is __PROD__    : self.ob_mpi =  MPI_PROD
 *         elif self is __LAND__    : self.ob_mpi =  MPI_LAND
 *         elif self is __BAND__    : self.ob_mpi =  MPI_BAND             # <<<<<<<<<<<<<<
 *         elif self is __LOR__     : self.ob_mpi =  MPI_LOR
 *         elif self is __BOR__     : self.ob_mpi =  MPI_BOR
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___BAND__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_BAND;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":82
 *         elif self is __LAND__    : self.ob_mpi =  MPI_LAND
 *         elif self is __BAND__    : self.ob_mpi =  MPI_BAND
 *         elif self is __LOR__     : self.ob_mpi =  MPI_LOR             # <<<<<<<<<<<<<<
 *         elif self is __BOR__     : self.ob_mpi =  MPI_BOR
 *         elif self is __LXOR__    : self.ob_mpi =  MPI_LXOR
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___LOR__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_LOR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":83
 *         elif self is __BAND__    : self.ob_mpi =  MPI_BAND
 *         elif self is __LOR__     : self.ob_mpi =  MPI_LOR
 *         elif self is __BOR__     : self.ob_mpi =  MPI_BOR             # <<<<<<<<<<<<<<
 *         elif self is __LXOR__    : self.ob_mpi =  MPI_LXOR
 *         elif self is __BXOR__    : self.ob_mpi =  MPI_BXOR
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___BOR__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_BOR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":84
 *         elif self is __LOR__     : self.ob_mpi =  MPI_LOR
 *         elif self is __BOR__     : self.ob_mpi =  MPI_BOR
 *         elif self is __LXOR__    : self.ob_mpi =  MPI_LXOR             # <<<<<<<<<<<<<<
 *         elif self is __BXOR__    : self.ob_mpi =  MPI_BXOR
 *         elif self is __MAXLOC__  : self.ob_mpi =  MPI_MAXLOC
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___LXOR__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_LXOR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":85
 *         elif self is __BOR__     : self.ob_mpi =  MPI_BOR
 *         elif self is __LXOR__    : self.ob_mpi =  MPI_LXOR
 *         elif self is __BXOR__    : self.ob_mpi =  MPI_BXOR             # <<<<<<<<<<<<<<
 *         elif self is __MAXLOC__  : self.ob_mpi =  MPI_MAXLOC
 *         elif self is __MINLOC__  : self.ob_mpi =  MPI_MINLOC
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___BXOR__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_BXOR;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":86
 *         elif self is __LXOR__    : self.ob_mpi =  MPI_LXOR
 *         elif self is __BXOR__    : self.ob_mpi =  MPI_BXOR
 *         elif self is __MAXLOC__  : self.ob_mpi =  MPI_MAXLOC             # <<<<<<<<<<<<<<
 *         elif self is __MINLOC__  : self.ob_mpi =  MPI_MINLOC
 *         elif self is __REPLACE__ : self.ob_mpi =  MPI_REPLACE
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___MAXLOC__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_MAXLOC;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":87
 *         elif self is __BXOR__    : self.ob_mpi =  MPI_BXOR
 *         elif self is __MAXLOC__  : self.ob_mpi =  MPI_MAXLOC
 *         elif self is __MINLOC__  : self.ob_mpi =  MPI_MINLOC             # <<<<<<<<<<<<<<
 *         elif self is __REPLACE__ : self.ob_mpi =  MPI_REPLACE
 *         elif self is __NO_OP__   : self.ob_mpi =  MPI_NO_OP
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___MINLOC__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_MINLOC;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":88
 *         elif self is __MAXLOC__  : self.ob_mpi =  MPI_MAXLOC
 *         elif self is __MINLOC__  : self.ob_mpi =  MPI_MINLOC
 *         elif self is __REPLACE__ : self.ob_mpi =  MPI_REPLACE             # <<<<<<<<<<<<<<
 *         elif self is __NO_OP__   : self.ob_mpi =  MPI_NO_OP
 * 
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___REPLACE__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_REPLACE;
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":89
 *         elif self is __MINLOC__  : self.ob_mpi =  MPI_MINLOC
 *         elif self is __REPLACE__ : self.ob_mpi =  MPI_REPLACE
 *         elif self is __NO_OP__   : self.ob_mpi =  MPI_NO_OP             # <<<<<<<<<<<<<<
 * 
 *     # Process-local reduction
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___NO_OP__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_NO_OP;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Op.pyx":70
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a user-defined reduction operation.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Op.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":94
 *     # -----------------------
 * 
 *     def Is_commutative(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Query reduction operations for their commutativity.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_21Is_commutative(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_20Is_commutative, "Is_commutative(self) -> bool\n\n        Query reduction operations for their commutativity.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_21Is_commutative = {"Is_commutative", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_21Is_commutative, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_20Is_commutative};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_21Is_commutative(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_commutative (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_commutative", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_commutative", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_20Is_commutative(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_20Is_commutative(struct PyMPIOpObject *__pyx_v_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_commutative", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":98
 *         Query reduction operations for their commutativity.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Op_commutative(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":99
 *         """
 *         cdef int flag = 0
 *         CHKERR( MPI_Op_commutative(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Op_commutative(__pyx_v_self->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(26, 99, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":100
 *         cdef int flag = 0
 *         CHKERR( MPI_Op_commutative(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     property is_commutative:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":94
 *     # -----------------------
 * 
 *     def Is_commutative(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Query reduction operations for their commutativity.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Op.Is_commutative", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":104
 *     property is_commutative:
 *         """Is a commutative operation."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_commutative()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_14is_commutative_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_14is_commutative_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_14is_commutative___get__(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_14is_commutative___get__(struct PyMPIOpObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":105
 *         """Is a commutative operation."""
 *         def __get__(self) -> bool:
 *             return self.Is_commutative()             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_local(self, inbuf: BufSpec, inoutbuf: BufSpec) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Is_commutative); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":104
 *     property is_commutative:
 *         """Is a commutative operation."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_commutative()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Op.is_commutative.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":107
 *             return self.Is_commutative()
 * 
 *     def Reduce_local(self, inbuf: BufSpec, inoutbuf: BufSpec) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Apply a reduction operation to local data.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_23Reduce_local(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_22Reduce_local, "Reduce_local(self, inbuf: BufSpec, inoutbuf: BufSpec) -> None\n\n        Apply a reduction operation to local data.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_23Reduce_local = {"Reduce_local", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_23Reduce_local, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_22Reduce_local};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_23Reduce_local(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_inbuf = 0;
  PyObject *__pyx_v_inoutbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Reduce_local (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_inbuf,&__pyx_n_s_inoutbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 107, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_inoutbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 107, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_local", 1, 2, 2, 1); __PYX_ERR(26, 107, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Reduce_local") < 0)) __PYX_ERR(26, 107, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_inbuf = values[0];
    __pyx_v_inoutbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_local", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 107, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Op.Reduce_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_22Reduce_local(((struct PyMPIOpObject *)__pyx_v_self), __pyx_v_inbuf, __pyx_v_inoutbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_22Reduce_local(struct PyMPIOpObject *__pyx_v_self, PyObject *__pyx_v_inbuf, PyObject *__pyx_v_inoutbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Reduce_local", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":112
 *         """
 *         # get *in* and *inout* buffers
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_cro_recv(inoutbuf, 0)
 *         m.for_cro_send(inbuf, 0)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":113
 *         # get *in* and *inout* buffers
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_cro_recv(inoutbuf, 0)             # <<<<<<<<<<<<<<
 *         m.for_cro_send(inbuf, 0)
 *         m.chk_cro_args()
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv(__pyx_v_m, __pyx_v_inoutbuf, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(26, 113, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":114
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_cro_recv(inoutbuf, 0)
 *         m.for_cro_send(inbuf, 0)             # <<<<<<<<<<<<<<
 *         m.chk_cro_args()
 *         # do local reduction
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send(__pyx_v_m, __pyx_v_inbuf, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(26, 114, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":115
 *         m.for_cro_recv(inoutbuf, 0)
 *         m.for_cro_send(inbuf, 0)
 *         m.chk_cro_args()             # <<<<<<<<<<<<<<
 *         # do local reduction
 *         with nogil: CHKERR( MPI_Reduce_local_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args(__pyx_v_m); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(26, 115, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":117
 *         m.chk_cro_args()
 *         # do local reduction
 *         with nogil: CHKERR( MPI_Reduce_local_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Op.pyx":118
 *         # do local reduction
 *         with nogil: CHKERR( MPI_Reduce_local_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     property is_predefined:
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_local_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(26, 117, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Op.pyx":117
 *         m.chk_cro_args()
 *         # do local reduction
 *         with nogil: CHKERR( MPI_Reduce_local_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Op.pyx":107
 *             return self.Is_commutative()
 * 
 *     def Reduce_local(self, inbuf: BufSpec, inoutbuf: BufSpec) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Apply a reduction operation to local data.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.Reduce_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":122
 *     property is_predefined:
 *         """Is a predefined operation."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             cdef MPI_Op op = self.ob_mpi
 *             return (
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_13is_predefined_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_13is_predefined_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_13is_predefined___get__(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_13is_predefined___get__(struct PyMPIOpObject *__pyx_v_self) {
  MPI_Op __pyx_v_op;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Op __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":123
 *         """Is a predefined operation."""
 *         def __get__(self) -> bool:
 *             cdef MPI_Op op = self.ob_mpi             # <<<<<<<<<<<<<<
 *             return (
 *                 op == MPI_OP_NULL or
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_op = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Op.pyx":124
 *         def __get__(self) -> bool:
 *             cdef MPI_Op op = self.ob_mpi
 *             return (             # <<<<<<<<<<<<<<
 *                 op == MPI_OP_NULL or
 *                 op == MPI_MAX or
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/mpi4py/MPI.src/Op.pyx":125
 *             cdef MPI_Op op = self.ob_mpi
 *             return (
 *                 op == MPI_OP_NULL or             # <<<<<<<<<<<<<<
 *                 op == MPI_MAX or
 *                 op == MPI_MIN or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_OP_NULL);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":126
 *             return (
 *                 op == MPI_OP_NULL or
 *                 op == MPI_MAX or             # <<<<<<<<<<<<<<
 *                 op == MPI_MIN or
 *                 op == MPI_SUM or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_MAX);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":127
 *                 op == MPI_OP_NULL or
 *                 op == MPI_MAX or
 *                 op == MPI_MIN or             # <<<<<<<<<<<<<<
 *                 op == MPI_SUM or
 *                 op == MPI_PROD or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_MIN);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":128
 *                 op == MPI_MAX or
 *                 op == MPI_MIN or
 *                 op == MPI_SUM or             # <<<<<<<<<<<<<<
 *                 op == MPI_PROD or
 *                 op == MPI_LAND or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_SUM);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":129
 *                 op == MPI_MIN or
 *                 op == MPI_SUM or
 *                 op == MPI_PROD or             # <<<<<<<<<<<<<<
 *                 op == MPI_LAND or
 *                 op == MPI_BAND or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_PROD);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":130
 *                 op == MPI_SUM or
 *                 op == MPI_PROD or
 *                 op == MPI_LAND or             # <<<<<<<<<<<<<<
 *                 op == MPI_BAND or
 *                 op == MPI_LOR or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_LAND);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":131
 *                 op == MPI_PROD or
 *                 op == MPI_LAND or
 *                 op == MPI_BAND or             # <<<<<<<<<<<<<<
 *                 op == MPI_LOR or
 *                 op == MPI_BOR or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_BAND);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":132
 *                 op == MPI_LAND or
 *                 op == MPI_BAND or
 *                 op == MPI_LOR or             # <<<<<<<<<<<<<<
 *                 op == MPI_BOR or
 *                 op == MPI_LXOR or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_LOR);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":133
 *                 op == MPI_BAND or
 *                 op == MPI_LOR or
 *                 op == MPI_BOR or             # <<<<<<<<<<<<<<
 *                 op == MPI_LXOR or
 *                 op == MPI_BXOR or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_BOR);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":134
 *                 op == MPI_LOR or
 *                 op == MPI_BOR or
 *                 op == MPI_LXOR or             # <<<<<<<<<<<<<<
 *                 op == MPI_BXOR or
 *                 op == MPI_MAXLOC or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_LXOR);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":135
 *                 op == MPI_BOR or
 *                 op == MPI_LXOR or
 *                 op == MPI_BXOR or             # <<<<<<<<<<<<<<
 *                 op == MPI_MAXLOC or
 *                 op == MPI_MINLOC or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_BXOR);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":136
 *                 op == MPI_LXOR or
 *                 op == MPI_BXOR or
 *                 op == MPI_MAXLOC or             # <<<<<<<<<<<<<<
 *                 op == MPI_MINLOC or
 *                 op == MPI_REPLACE or
 */
  __pyx_t_3 = (__pyx_v_op == MPI_MAXLOC);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":137
 *                 op == MPI_BXOR or
 *                 op == MPI_MAXLOC or
 *                 op == MPI_MINLOC or             # <<<<<<<<<<<<<<
 *                 op == MPI_REPLACE or
 *                 op == MPI_NO_OP
 */
  __pyx_t_3 = (__pyx_v_op == MPI_MINLOC);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":138
 *                 op == MPI_MAXLOC or
 *                 op == MPI_MINLOC or
 *                 op == MPI_REPLACE or             # <<<<<<<<<<<<<<
 *                 op == MPI_NO_OP
 *             )
 */
  __pyx_t_3 = (__pyx_v_op == MPI_REPLACE);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Op.pyx":139
 *                 op == MPI_MINLOC or
 *                 op == MPI_REPLACE or
 *                 op == MPI_NO_OP             # <<<<<<<<<<<<<<
 *             )
 * 
 */
  __pyx_t_3 = (__pyx_v_op == MPI_NO_OP);
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __pyx_t_4;
  __pyx_t_4 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":122
 *     property is_predefined:
 *         """Is a predefined operation."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             cdef MPI_Op op = self.ob_mpi
 *             return (
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Op.is_predefined.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":145
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_25py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_24py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_25py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_25py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_24py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_25py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_24py2f(((struct PyMPIOpObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_24py2f(struct PyMPIOpObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":148
 *         """
 *         """
 *         return MPI_Op_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Op_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":145
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Op.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Op.pyx":150
 *         return MPI_Op_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Op:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_27f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_2Op_26f2py, "f2py(cls, arg: int) -> Op\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_2Op_27f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_27f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_26f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_2Op_27f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 150, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(26, 150, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 150, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Op.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_2Op_26f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_2Op_26f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Op.pyx":154
 *         """
 *         """
 *         return fromhandle(MPI_Op_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(26, 154, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Op_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Op.pyx":150
 *         return MPI_Op_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Op:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Op.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":6
 *     """
 * 
 *     def __cinit__(self, Group group: Group | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, group)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_5Group_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_5Group_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIGroupObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(27, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(27, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 1, "group", 0))) __PYX_ERR(27, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group___cinit__(((struct PyMPIGroupObject *)__pyx_v_self), __pyx_v_group);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_5Group___cinit__(struct PyMPIGroupObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":7
 * 
 *     def __cinit__(self, Group group: Group | None = None):
 *         cinit(self, group)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_group); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 7, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":6
 *     """
 * 
 *     def __cinit__(self, Group group: Group | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, group)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":9
 *         cinit(self, group)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_5Group_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_5Group_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_5Group_2__dealloc__(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_5Group_2__dealloc__(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":10
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":9
 *         cinit(self, group)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Group.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Group.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Group): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_4__richcmp__(((struct PyMPIGroupObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4__richcmp__(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Group): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Group); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Group.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Group): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Group): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Group.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_5Group_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_5Group_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_6__bool__(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_5Group_6__bool__(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Group.pyx":17
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_8__reduce__(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_8__reduce__(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":20
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_6handle___get__(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_6handle___get__(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":25
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_4__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Group:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_10fromhandle, "fromhandle(cls, handle: int) -> Group\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 27, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(27, 27, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":32
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Group> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(27, 32, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Group)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Group:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":34
 *         return fromhandle(<MPI_Group> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_12free, "free(self) -> None\n\n        Call `Free` if not null or predefined.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_12free(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_12free(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":38
 *         Call `Free` if not null or predefined.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # Group Accessors
 */
  __pyx_t_1 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 38, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":34
 *         return fromhandle(<MPI_Group> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":43
 *     # ---------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a group.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_15Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_14Get_size, "Get_size(self) -> int\n\n        Return the number of processes in a group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_15Get_size = {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_15Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_14Get_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_15Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_14Get_size(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_14Get_size(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":47
 *         Return the number of processes in a group.
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "src/mpi4py/MPI.src/Group.pyx":48
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Group_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_size(__pyx_v_self->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 48, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":49
 *         cdef int size = -1
 *         CHKERR( MPI_Group_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":43
 *     # ---------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a group.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":53
 *     property size:
 *         """Number of processes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_4size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_4size___get__(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4size___get__(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":54
 *         """Number of processes."""
 *         def __get__(self) -> int:
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     def Get_rank(self) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":53
 *     property size:
 *         """Number of processes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Group.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":56
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a group.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_17Get_rank(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_16Get_rank, "Get_rank(self) -> int\n\n        Return the rank of this process in a group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_17Get_rank = {"Get_rank", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_17Get_rank, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_16Get_rank};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_17Get_rank(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_rank (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_rank", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_rank", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_16Get_rank(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_16Get_rank(struct PyMPIGroupObject *__pyx_v_self) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_rank", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":60
 *         Return the rank of this process in a group.
 *         """
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_rank(self.ob_mpi, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":61
 *         """
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Group_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_rank(__pyx_v_self->ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 61, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":62
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Group_rank(self.ob_mpi, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     property rank:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":56
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a group.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Get_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":66
 *     property rank:
 *         """Rank of this process."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_rank()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_4rank_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_4rank_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_4rank___get__(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_4rank___get__(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":67
 *         """Rank of this process."""
 *         def __get__(self) -> int:
 *             return self.Get_rank()             # <<<<<<<<<<<<<<
 * 
 *     def Translate_ranks(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":66
 *     property rank:
 *         """Rank of this process."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_rank()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Group.rank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":69
 *             return self.Get_rank()
 * 
 *     def Translate_ranks(             # <<<<<<<<<<<<<<
 *         self,
 *         ranks: Sequence[int] | None = None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_19Translate_ranks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_18Translate_ranks, "Translate_ranks(self, ranks: Sequence[int] | None = None, group: Group | None = None) -> list[int]\n\n        Translate ranks in a group to those in another group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_19Translate_ranks = {"Translate_ranks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_19Translate_ranks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_18Translate_ranks};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_19Translate_ranks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ranks = 0;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Translate_ranks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ranks,&__pyx_n_s_group,0};

    /* "src/mpi4py/MPI.src/Group.pyx":71
 *     def Translate_ranks(
 *         self,
 *         ranks: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Group group: Group | None = None,
 *     ) -> list[int]:
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Group.pyx":72
 *         self,
 *         ranks: Sequence[int] | None = None,
 *         Group group: Group | None = None,             # <<<<<<<<<<<<<<
 *     ) -> list[int]:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIGroupObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ranks);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 69, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 69, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Translate_ranks") < 0)) __PYX_ERR(27, 69, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ranks = values[0];
    __pyx_v_group = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Translate_ranks", 0, 0, 2, __pyx_nargs); __PYX_ERR(27, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Translate_ranks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 1, "group", 0))) __PYX_ERR(27, 72, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_18Translate_ranks(((struct PyMPIGroupObject *)__pyx_v_self), __pyx_v_ranks, __pyx_v_group);

  /* "src/mpi4py/MPI.src/Group.pyx":69
 *             return self.Get_rank()
 * 
 *     def Translate_ranks(             # <<<<<<<<<<<<<<
 *         self,
 *         ranks: Sequence[int] | None = None,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_18Translate_ranks(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks, struct PyMPIGroupObject *__pyx_v_group) {
  MPI_Group __pyx_v_group1;
  MPI_Group __pyx_v_group2;
  int __pyx_v_n;
  int *__pyx_v_iranks1;
  int *__pyx_v_iranks2;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  int __pyx_v_i;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  PyObject *__pyx_v_ranks2 = 0;
  int __pyx_8genexpr8__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  MPI_Group __pyx_t_6;
  char const *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Translate_ranks", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":77
 *         Translate ranks in a group to those in another group.
 *         """
 *         cdef MPI_Group group1 = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Group group2 = MPI_GROUP_NULL
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL
 */
  __pyx_v_group1 = MPI_GROUP_NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":78
 *         """
 *         cdef MPI_Group group1 = MPI_GROUP_NULL
 *         cdef MPI_Group group2 = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL
 *         #
 */
  __pyx_v_group2 = MPI_GROUP_NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":79
 *         cdef MPI_Group group1 = MPI_GROUP_NULL
 *         cdef MPI_Group group2 = MPI_GROUP_NULL
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL             # <<<<<<<<<<<<<<
 *         #
 *         cdef unused1 = None
 */
  __pyx_v_n = 0;
  __pyx_v_iranks1 = NULL;
  __pyx_v_iranks2 = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":81
 *         cdef int n = 0, *iranks1 = NULL, *iranks2 = NULL
 *         #
 *         cdef unused1 = None             # <<<<<<<<<<<<<<
 *         if ranks is not None:
 *             unused1 = getarray(ranks, &n, &iranks1)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_unused1 = Py_None;

  /* "src/mpi4py/MPI.src/Group.pyx":82
 *         #
 *         cdef unused1 = None
 *         if ranks is not None:             # <<<<<<<<<<<<<<
 *             unused1 = getarray(ranks, &n, &iranks1)
 *         else:
 */
  __pyx_t_1 = (__pyx_v_ranks != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Group.pyx":83
 *         cdef unused1 = None
 *         if ranks is not None:
 *             unused1 = getarray(ranks, &n, &iranks1)             # <<<<<<<<<<<<<<
 *         else:
 *             CHKERR( MPI_Group_size(self.ob_mpi, &n) )
 */
    __pyx_t_2 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_ranks, (&__pyx_v_n), (&__pyx_v_iranks1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_unused1, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Group.pyx":82
 *         #
 *         cdef unused1 = None
 *         if ranks is not None:             # <<<<<<<<<<<<<<
 *             unused1 = getarray(ranks, &n, &iranks1)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Group.pyx":85
 *             unused1 = getarray(ranks, &n, &iranks1)
 *         else:
 *             CHKERR( MPI_Group_size(self.ob_mpi, &n) )             # <<<<<<<<<<<<<<
 *             unused1 = newarray(n, &iranks1)
 *             for i in range(n): iranks1[i] = i
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_size(__pyx_v_self->ob_mpi, (&__pyx_v_n))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 85, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Group.pyx":86
 *         else:
 *             CHKERR( MPI_Group_size(self.ob_mpi, &n) )
 *             unused1 = newarray(n, &iranks1)             # <<<<<<<<<<<<<<
 *             for i in range(n): iranks1[i] = i
 *         cdef unused2 = newarray(n, &iranks2)
 */
    __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_n, (&__pyx_v_iranks1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_unused1, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Group.pyx":87
 *             CHKERR( MPI_Group_size(self.ob_mpi, &n) )
 *             unused1 = newarray(n, &iranks1)
 *             for i in range(n): iranks1[i] = i             # <<<<<<<<<<<<<<
 *         cdef unused2 = newarray(n, &iranks2)
 *         #
 */
    __pyx_t_3 = __pyx_v_n;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_v_i = __pyx_t_5;
      (__pyx_v_iranks1[__pyx_v_i]) = __pyx_v_i;
    }
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Group.pyx":88
 *             unused1 = newarray(n, &iranks1)
 *             for i in range(n): iranks1[i] = i
 *         cdef unused2 = newarray(n, &iranks2)             # <<<<<<<<<<<<<<
 *         #
 *         group1 = self.ob_mpi
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_n, (&__pyx_v_iranks2)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":90
 *         cdef unused2 = newarray(n, &iranks2)
 *         #
 *         group1 = self.ob_mpi             # <<<<<<<<<<<<<<
 *         if group is not None:
 *             group2 = group.ob_mpi
 */
  __pyx_t_6 = __pyx_v_self->ob_mpi;
  __pyx_v_group1 = __pyx_t_6;

  /* "src/mpi4py/MPI.src/Group.pyx":91
 *         #
 *         group1 = self.ob_mpi
 *         if group is not None:             # <<<<<<<<<<<<<<
 *             group2 = group.ob_mpi
 *         else:
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_group) != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Group.pyx":92
 *         group1 = self.ob_mpi
 *         if group is not None:
 *             group2 = group.ob_mpi             # <<<<<<<<<<<<<<
 *         else:
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &group2) )
 */
    __pyx_t_6 = __pyx_v_group->ob_mpi;
    __pyx_v_group2 = __pyx_t_6;

    /* "src/mpi4py/MPI.src/Group.pyx":91
 *         #
 *         group1 = self.ob_mpi
 *         if group is not None:             # <<<<<<<<<<<<<<
 *             group2 = group.ob_mpi
 *         else:
 */
    goto __pyx_L6;
  }

  /* "src/mpi4py/MPI.src/Group.pyx":94
 *             group2 = group.ob_mpi
 *         else:
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &group2) )             # <<<<<<<<<<<<<<
 *         try:
 *             CHKERR( MPI_Group_translate_ranks(
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_group(MPI_COMM_WORLD, (&__pyx_v_group2))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 94, __pyx_L1_error)
  }
  __pyx_L6:;

  /* "src/mpi4py/MPI.src/Group.pyx":95
 *         else:
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &group2) )
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Group_translate_ranks(
 *                 group1, n, iranks1, group2, iranks2) )
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Group.pyx":96
 *             CHKERR( MPI_Comm_group(MPI_COMM_WORLD, &group2) )
 *         try:
 *             CHKERR( MPI_Group_translate_ranks(             # <<<<<<<<<<<<<<
 *                 group1, n, iranks1, group2, iranks2) )
 *         finally:
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_translate_ranks(__pyx_v_group1, __pyx_v_n, __pyx_v_iranks1, __pyx_v_group2, __pyx_v_iranks2)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 96, __pyx_L8_error)
  }

  /* "src/mpi4py/MPI.src/Group.pyx":99
 *                 group1, n, iranks1, group2, iranks2) )
 *         finally:
 *             if group is None:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_free(&group2) )
 *         #
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_1 = (((PyObject *)__pyx_v_group) == Py_None);
      if (__pyx_t_1) {

        /* "src/mpi4py/MPI.src/Group.pyx":100
 *         finally:
 *             if group is None:
 *                 CHKERR( MPI_Group_free(&group2) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef object ranks2 = [iranks2[i] for i in range(n)]
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group2))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 100, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/Group.pyx":99
 *                 group1, n, iranks1, group2, iranks2) )
 *         finally:
 *             if group is None:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_free(&group2) )
 *         #
 */
      }
      goto __pyx_L9;
    }
    __pyx_L8_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __pyx_t_3 = __pyx_lineno; __pyx_t_4 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
      {
        __pyx_t_1 = (((PyObject *)__pyx_v_group) == Py_None);
        if (__pyx_t_1) {

          /* "src/mpi4py/MPI.src/Group.pyx":100
 *         finally:
 *             if group is None:
 *                 CHKERR( MPI_Group_free(&group2) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef object ranks2 = [iranks2[i] for i in range(n)]
 */
          __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group2))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(27, 100, __pyx_L12_error)

          /* "src/mpi4py/MPI.src/Group.pyx":99
 *                 group1, n, iranks1, group2, iranks2) )
 *         finally:
 *             if group is None:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_free(&group2) )
 *         #
 */
        }
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      }
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_4; __pyx_filename = __pyx_t_7;
      goto __pyx_L1_error;
      __pyx_L12_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
      }
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L9:;
  }

  /* "src/mpi4py/MPI.src/Group.pyx":102
 *                 CHKERR( MPI_Group_free(&group2) )
 *         #
 *         cdef object ranks2 = [iranks2[i] for i in range(n)]             # <<<<<<<<<<<<<<
 *         return ranks2
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __pyx_v_n;
    __pyx_t_3 = __pyx_t_4;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_3; __pyx_t_5+=1) {
      __pyx_8genexpr8__pyx_v_i = __pyx_t_5;
      __pyx_t_14 = __Pyx_PyInt_From_int((__pyx_v_iranks2[__pyx_8genexpr8__pyx_v_i])); if (unlikely(!__pyx_t_14)) __PYX_ERR(27, 102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_14))) __PYX_ERR(27, 102, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    }
  } /* exit inner scope */
  __pyx_v_ranks2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":103
 *         #
 *         cdef object ranks2 = [iranks2[i] for i in range(n)]
 *         return ranks2             # <<<<<<<<<<<<<<
 * 
 *     def Compare(self, Group group: Group) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ranks2);
  __pyx_r = __pyx_v_ranks2;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":69
 *             return self.Get_rank()
 * 
 *     def Translate_ranks(             # <<<<<<<<<<<<<<
 *         self,
 *         ranks: Sequence[int] | None = None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Translate_ranks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_ranks2);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":105
 *         return ranks2
 * 
 *     def Compare(self, Group group: Group) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two groups.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_21Compare(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_20Compare, "Compare(self, group: Group) -> int\n\n        Compare two groups.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_21Compare = {"Compare", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_21Compare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_20Compare};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_21Compare(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Compare (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 105, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Compare") < 0)) __PYX_ERR(27, 105, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Compare", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 105, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(27, 105, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_20Compare(((struct PyMPIGroupObject *)__pyx_v_self), __pyx_v_group);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_20Compare(struct PyMPIGroupObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Compare", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":109
 *         Compare two groups.
 *         """
 *         cdef int flag = MPI_UNEQUAL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_compare(
 *             self.ob_mpi, group.ob_mpi, &flag) )
 */
  __pyx_v_flag = MPI_UNEQUAL;

  /* "src/mpi4py/MPI.src/Group.pyx":110
 *         """
 *         cdef int flag = MPI_UNEQUAL
 *         CHKERR( MPI_Group_compare(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, &flag) )
 *         return flag
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_compare(__pyx_v_self->ob_mpi, __pyx_v_group->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 110, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":112
 *         CHKERR( MPI_Group_compare(
 *             self.ob_mpi, group.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # Group Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_flag); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":105
 *         return ranks2
 * 
 *     def Compare(self, Group group: Group) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two groups.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":117
 *     # ------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a group.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_23Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_22Dup, "Dup(self) -> Self\n\n        Duplicate a group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_23Dup = {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_23Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_22Dup};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_23Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Dup (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_22Dup(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_22Dup(struct PyMPIGroupObject *__pyx_v_self) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":121
 *         Duplicate a group.
 *         """
 *         cdef Group group = <Group>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":122
 *         """
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_union(__pyx_v_self->ob_mpi, MPI_GROUP_EMPTY, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 122, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":123
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_union(self.ob_mpi, MPI_GROUP_EMPTY, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":117
 *     # ------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a group.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":125
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Union(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_25Union(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_24Union, "Union(cls, group1: Group, group2: Group) -> Self\n\n        Create a new group from the union of two existing groups.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_25Union = {"Union", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_25Union, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_24Union};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_25Union(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Union (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group1,&__pyx_n_s_group2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 125, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 125, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Union", 1, 2, 2, 1); __PYX_ERR(27, 125, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Union") < 0)) __PYX_ERR(27, 125, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Union", 1, 2, 2, __pyx_nargs); __PYX_ERR(27, 125, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Union", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) __PYX_ERR(27, 126, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) __PYX_ERR(27, 126, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_24Union(((PyTypeObject*)__pyx_v_cls), __pyx_v_group1, __pyx_v_group2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_24Union(PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group1, struct PyMPIGroupObject *__pyx_v_group2) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Union", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":130
 *         Create a new group from the union of two existing groups.
 *         """
 *         cdef Group group = <Group>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_union(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":131
 *         """
 *         cdef Group group = <Group>New(cls)
 *         CHKERR( MPI_Group_union(             # <<<<<<<<<<<<<<
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_union(__pyx_v_group1->ob_mpi, __pyx_v_group2->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 131, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":133
 *         CHKERR( MPI_Group_union(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":125
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Union(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Union", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":135
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Intersection(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_27Intersection(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_26Intersection, "Intersection(cls, group1: Group, group2: Group) -> Self\n\n        Create a new group from the intersection of two existing groups.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_27Intersection = {"Intersection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_27Intersection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_26Intersection};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_27Intersection(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Intersection (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group1,&__pyx_n_s_group2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 135, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 135, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Intersection", 1, 2, 2, 1); __PYX_ERR(27, 135, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Intersection") < 0)) __PYX_ERR(27, 135, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Intersection", 1, 2, 2, __pyx_nargs); __PYX_ERR(27, 135, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Intersection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) __PYX_ERR(27, 136, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) __PYX_ERR(27, 136, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_26Intersection(((PyTypeObject*)__pyx_v_cls), __pyx_v_group1, __pyx_v_group2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_26Intersection(PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group1, struct PyMPIGroupObject *__pyx_v_group2) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Intersection", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":140
 *         Create a new group from the intersection of two existing groups.
 *         """
 *         cdef Group group = <Group>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_intersection(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":141
 *         """
 *         cdef Group group = <Group>New(cls)
 *         CHKERR( MPI_Group_intersection(             # <<<<<<<<<<<<<<
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_intersection(__pyx_v_group1->ob_mpi, __pyx_v_group2->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 141, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":143
 *         CHKERR( MPI_Group_intersection(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     Intersect = Intersection
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":135
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Intersection(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Intersection", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":147
 *     Intersect = Intersection
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Difference(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_29Difference(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_28Difference, "Difference(cls, group1: Group, group2: Group) -> Self\n\n        Create a new group from the difference of two existing groups.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_29Difference = {"Difference", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_29Difference, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_28Difference};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_29Difference(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group1 = 0;
  struct PyMPIGroupObject *__pyx_v_group2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Difference (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group1,&__pyx_n_s_group2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group1)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 147, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 147, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Difference", 1, 2, 2, 1); __PYX_ERR(27, 147, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Difference") < 0)) __PYX_ERR(27, 147, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_group1 = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_group2 = ((struct PyMPIGroupObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Difference", 1, 2, 2, __pyx_nargs); __PYX_ERR(27, 147, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Difference", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group1), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group1", 0))) __PYX_ERR(27, 148, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group2), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group2", 0))) __PYX_ERR(27, 148, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_28Difference(((PyTypeObject*)__pyx_v_cls), __pyx_v_group1, __pyx_v_group2);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_28Difference(PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group1, struct PyMPIGroupObject *__pyx_v_group2) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Difference", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":152
 *         Create a new group from the difference of two existing groups.
 *         """
 *         cdef Group group = <Group>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_difference(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":153
 *         """
 *         cdef Group group = <Group>New(cls)
 *         CHKERR( MPI_Group_difference(             # <<<<<<<<<<<<<<
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_difference(__pyx_v_group1->ob_mpi, __pyx_v_group2->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 153, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":155
 *         CHKERR( MPI_Group_difference(
 *                 group1.ob_mpi, group2.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Incl(self, ranks: Sequence[int]) -> Self:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":147
 *     Intersect = Intersection
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Difference(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Difference", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":157
 *         return group
 * 
 *     def Incl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including listed members.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_31Incl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_30Incl, "Incl(self, ranks: Sequence[int]) -> Self\n\n        Create a new group by including listed members.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_31Incl = {"Incl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_31Incl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_30Incl};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_31Incl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ranks = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Incl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ranks,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ranks)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 157, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Incl") < 0)) __PYX_ERR(27, 157, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Incl", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 157, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_30Incl(((struct PyMPIGroupObject *)__pyx_v_self), __pyx_v_ranks);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_30Incl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int __pyx_v_n;
  int *__pyx_v_iranks;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Incl", 0);
  __Pyx_INCREF(__pyx_v_ranks);

  /* "src/mpi4py/MPI.src/Group.pyx":161
 *         Create a new group by including listed members.
 *         """
 *         cdef int n = 0, *iranks = NULL             # <<<<<<<<<<<<<<
 *         ranks = getarray(ranks, &n, &iranks)
 *         cdef Group group = <Group>New(type(self))
 */
  __pyx_v_n = 0;
  __pyx_v_iranks = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":162
 *         """
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray(ranks, &n, &iranks)             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_ranks, (&__pyx_v_n), (&__pyx_v_iranks)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_ranks, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":163
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray(ranks, &n, &iranks)
 *         cdef Group group = <Group>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":164
 *         ranks = getarray(ranks, &n, &iranks)
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_incl(__pyx_v_self->ob_mpi, __pyx_v_n, __pyx_v_iranks, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 164, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":165
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_incl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Excl(self, ranks: Sequence[int]) -> Self:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":157
 *         return group
 * 
 *     def Incl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including listed members.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_ranks);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":167
 *         return group
 * 
 *     def Excl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding listed members.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_33Excl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_32Excl, "Excl(self, ranks: Sequence[int]) -> Self\n\n        Create a new group by excluding listed members.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_33Excl = {"Excl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_33Excl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_32Excl};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_33Excl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ranks = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Excl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ranks,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ranks)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 167, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Excl") < 0)) __PYX_ERR(27, 167, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Excl", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 167, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_32Excl(((struct PyMPIGroupObject *)__pyx_v_self), __pyx_v_ranks);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_32Excl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int __pyx_v_n;
  int *__pyx_v_iranks;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Excl", 0);
  __Pyx_INCREF(__pyx_v_ranks);

  /* "src/mpi4py/MPI.src/Group.pyx":171
 *         Create a new group by excluding listed members.
 *         """
 *         cdef int n = 0, *iranks = NULL             # <<<<<<<<<<<<<<
 *         ranks = getarray(ranks, &n, &iranks)
 *         cdef Group group = <Group>New(type(self))
 */
  __pyx_v_n = 0;
  __pyx_v_iranks = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":172
 *         """
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray(ranks, &n, &iranks)             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_ranks, (&__pyx_v_n), (&__pyx_v_iranks)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_ranks, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":173
 *         cdef int n = 0, *iranks = NULL
 *         ranks = getarray(ranks, &n, &iranks)
 *         cdef Group group = <Group>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":174
 *         ranks = getarray(ranks, &n, &iranks)
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_excl(__pyx_v_self->ob_mpi, __pyx_v_n, __pyx_v_iranks, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 174, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":175
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_excl(self.ob_mpi, n, iranks, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Range_incl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":167
 *         return group
 * 
 *     def Excl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding listed members.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_ranks);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":177
 *         return group
 * 
 *     def Range_incl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including ranges of members.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_35Range_incl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_34Range_incl, "Range_incl(self, ranks: Sequence[tuple[int, int, int]]) -> Self\n\n        Create a new group by including ranges of members.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_35Range_incl = {"Range_incl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_35Range_incl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_34Range_incl};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_35Range_incl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ranks = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Range_incl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ranks,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ranks)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 177, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Range_incl") < 0)) __PYX_ERR(27, 177, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Range_incl", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 177, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_34Range_incl(((struct PyMPIGroupObject *)__pyx_v_self), __pyx_v_ranks);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_34Range_incl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int *__pyx_v_p;
  int (*__pyx_v_ranges)[3];
  int __pyx_v_n;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  int __pyx_v_i;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Range_incl", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":181
 *         Create a new group by including ranges of members.
 *         """
 *         cdef int *p = NULL, (*ranges)[3]  # = NULL ## XXX cython fails             # <<<<<<<<<<<<<<
 *         ranges = NULL
 *         cdef int n = <int>len(ranks)
 */
  __pyx_v_p = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":182
 *         """
 *         cdef int *p = NULL, (*ranges)[3]  # = NULL ## XXX cython fails
 *         ranges = NULL             # <<<<<<<<<<<<<<
 *         cdef int n = <int>len(ranks)
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 */
  __pyx_v_ranges = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":183
 *         cdef int *p = NULL, (*ranges)[3]  # = NULL ## XXX cython fails
 *         ranges = NULL
 *         cdef int n = <int>len(ranks)             # <<<<<<<<<<<<<<
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 *         for i in range(n):
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(27, 183, __pyx_L1_error)
  __pyx_v_n = ((int)__pyx_t_1);

  /* "src/mpi4py/MPI.src/Group.pyx":184
 *         ranges = NULL
 *         cdef int n = <int>len(ranks)
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             p = <int*> ranges[i]
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_n, (sizeof(int [3])), (&__pyx_v_ranges))); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":185
 *         cdef int n = <int>len(ranks)
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 */
  __pyx_t_3 = __pyx_v_n;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/Group.pyx":186
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 *         for i in range(n):
 *             p = <int*> ranges[i]             # <<<<<<<<<<<<<<
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>New(type(self))
 */
    __pyx_v_p = ((int *)(__pyx_v_ranges[__pyx_v_i]));

    /* "src/mpi4py/MPI.src/Group.pyx":187
 *         for i in range(n):
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(27, 187, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(27, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
      index = 0; __pyx_t_6 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      index = 1; __pyx_t_7 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 2; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(27, 187, __pyx_L1_error)
      __pyx_t_10 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(27, 187, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    (__pyx_v_p[0]) = __pyx_t_11;
    (__pyx_v_p[1]) = __pyx_t_12;
    (__pyx_v_p[2]) = __pyx_t_13;
  }

  /* "src/mpi4py/MPI.src/Group.pyx":188
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":189
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_range_incl(__pyx_v_self->ob_mpi, __pyx_v_n, __pyx_v_ranges, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 189, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":190
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_range_incl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Range_excl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":177
 *         return group
 * 
 *     def Range_incl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including ranges of members.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_incl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":192
 *         return group
 * 
 *     def Range_excl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding ranges of members.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_37Range_excl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_36Range_excl, "Range_excl(self, ranks: Sequence[tuple[int, int, int]]) -> Self\n\n        Create a new group by excluding ranges of members.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_37Range_excl = {"Range_excl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_37Range_excl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_36Range_excl};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_37Range_excl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ranks = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Range_excl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ranks,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ranks)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 192, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Range_excl") < 0)) __PYX_ERR(27, 192, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ranks = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Range_excl", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 192, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_36Range_excl(((struct PyMPIGroupObject *)__pyx_v_self), __pyx_v_ranks);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_36Range_excl(struct PyMPIGroupObject *__pyx_v_self, PyObject *__pyx_v_ranks) {
  int *__pyx_v_p;
  int (*__pyx_v_ranges)[3];
  int __pyx_v_n;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  int __pyx_v_i;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Range_excl", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":196
 *         Create a new group by excluding ranges of members.
 *         """
 *         cdef int *p = NULL, (*ranges)[3]  # = NULL ## XXX cython fails             # <<<<<<<<<<<<<<
 *         ranges = NULL
 *         cdef int n = <int>len(ranks)
 */
  __pyx_v_p = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":197
 *         """
 *         cdef int *p = NULL, (*ranges)[3]  # = NULL ## XXX cython fails
 *         ranges = NULL             # <<<<<<<<<<<<<<
 *         cdef int n = <int>len(ranks)
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 */
  __pyx_v_ranges = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":198
 *         cdef int *p = NULL, (*ranges)[3]  # = NULL ## XXX cython fails
 *         ranges = NULL
 *         cdef int n = <int>len(ranks)             # <<<<<<<<<<<<<<
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 *         for i in range(n):
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_ranks); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(27, 198, __pyx_L1_error)
  __pyx_v_n = ((int)__pyx_t_1);

  /* "src/mpi4py/MPI.src/Group.pyx":199
 *         ranges = NULL
 *         cdef int n = <int>len(ranks)
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             p = <int*> ranges[i]
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_n, (sizeof(int [3])), (&__pyx_v_ranges))); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":200
 *         cdef int n = <int>len(ranks)
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 */
  __pyx_t_3 = __pyx_v_n;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "src/mpi4py/MPI.src/Group.pyx":201
 *         cdef unused1 = allocate(n, sizeof(int[3]), &ranges)
 *         for i in range(n):
 *             p = <int*> ranges[i]             # <<<<<<<<<<<<<<
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>New(type(self))
 */
    __pyx_v_p = ((int *)(__pyx_v_ranges[__pyx_v_i]));

    /* "src/mpi4py/MPI.src/Group.pyx":202
 *         for i in range(n):
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_ranks, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(27, 202, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(27, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
      index = 0; __pyx_t_6 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      index = 1; __pyx_t_7 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      index = 2; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(27, 202, __pyx_L1_error)
      __pyx_t_10 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(27, 202, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 202, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 202, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 202, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    (__pyx_v_p[0]) = __pyx_t_11;
    (__pyx_v_p[1]) = __pyx_t_12;
    (__pyx_v_p[2]) = __pyx_t_13;
  }

  /* "src/mpi4py/MPI.src/Group.pyx":203
 *             p = <int*> ranges[i]
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":204
 *             p[0], p[1], p[2] = ranks[i]
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_range_excl(__pyx_v_self->ob_mpi, __pyx_v_n, __pyx_v_ranges, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 204, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":205
 *         cdef Group group = <Group>New(type(self))
 *         CHKERR( MPI_Group_range_excl(self.ob_mpi, n, ranges, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":192
 *         return group
 * 
 *     def Range_excl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding ranges of members.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Range_excl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":207
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_session_pset(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_39Create_from_session_pset(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_38Create_from_session_pset, "Create_from_session_pset(cls, session: Session, pset_name: str) -> Self\n\n        Create a new group from session and process set.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_39Create_from_session_pset = {"Create_from_session_pset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_39Create_from_session_pset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_38Create_from_session_pset};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_39Create_from_session_pset(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPISessionObject *__pyx_v_session = 0;
  PyObject *__pyx_v_pset_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_from_session_pset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_session,&__pyx_n_s_pset_name,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 207, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pset_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 207, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_from_session_pset", 1, 2, 2, 1); __PYX_ERR(27, 207, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_from_session_pset") < 0)) __PYX_ERR(27, 207, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_session = ((struct PyMPISessionObject *)values[0]);
    __pyx_v_pset_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_from_session_pset", 1, 2, 2, __pyx_nargs); __PYX_ERR(27, 207, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.Create_from_session_pset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_session), __pyx_ptype_6mpi4py_3MPI_Session, 0, "session", 0))) __PYX_ERR(27, 210, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_38Create_from_session_pset(((PyTypeObject*)__pyx_v_cls), __pyx_v_session, __pyx_v_pset_name);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_38Create_from_session_pset(PyTypeObject *__pyx_v_cls, struct PyMPISessionObject *__pyx_v_session, PyObject *__pyx_v_pset_name) {
  char *__pyx_v_cname;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_from_session_pset", 0);
  __Pyx_INCREF(__pyx_v_pset_name);

  /* "src/mpi4py/MPI.src/Group.pyx":216
 *         Create a new group from session and process set.
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Group group = <Group>New(cls)
 */
  __pyx_v_cname = NULL;

  /* "src/mpi4py/MPI.src/Group.pyx":217
 *         """
 *         cdef char *cname = NULL
 *         pset_name = asmpistr(pset_name, &cname)             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>New(cls)
 *         CHKERR( MPI_Group_from_session_pset(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_pset_name, (&__pyx_v_cname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_pset_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":218
 *         cdef char *cname = NULL
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Group group = <Group>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_from_session_pset(
 *             session.ob_mpi, cname, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":219
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Group group = <Group>New(cls)
 *         CHKERR( MPI_Group_from_session_pset(             # <<<<<<<<<<<<<<
 *             session.ob_mpi, cname, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_from_session_pset(__pyx_v_session->ob_mpi, __pyx_v_cname, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(27, 219, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":221
 *         CHKERR( MPI_Group_from_session_pset(
 *             session.ob_mpi, cname, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     # Group Destructor
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":207
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_session_pset(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.Create_from_session_pset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_pset_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":226
 *     # ----------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a group.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_41Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_40Free, "Free(self) -> None\n\n        Free a group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_41Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_41Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_40Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_41Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_40Free(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_40Free(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":230
 *         Free a group.
 *         """
 *         CHKERR( MPI_Group_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if self is __GROUP_EMPTY__: self.ob_mpi = MPI_GROUP_EMPTY
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(27, 230, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":231
 *         """
 *         CHKERR( MPI_Group_free(&self.ob_mpi) )
 *         if self is __GROUP_EMPTY__: self.ob_mpi = MPI_GROUP_EMPTY             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_GROUP_EMPTY;
  }

  /* "src/mpi4py/MPI.src/Group.pyx":226
 *     # ----------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a group.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Group.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":236
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_43py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_42py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_43py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_43py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_42py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_43py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_42py2f(((struct PyMPIGroupObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_42py2f(struct PyMPIGroupObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":239
 *         """
 *         """
 *         return MPI_Group_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Group_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":236
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Group.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Group.pyx":241
 *         return MPI_Group_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Group:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_45f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_5Group_44f2py, "f2py(cls, arg: int) -> Group\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_5Group_45f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_45f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_44f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_5Group_45f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 241, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(27, 241, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 241, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Group.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_5Group_44f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_5Group_44f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Group.pyx":245
 *         """
 *         """
 *         return fromhandle(MPI_Group_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(27, 245, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_4__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Group_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Group.pyx":241
 *         return MPI_Group_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Group:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Group.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":6
 *     """
 * 
 *     def __cinit__(self, Info info: Info | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, info)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Info_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIInfoObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(28, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(28, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) __PYX_ERR(28, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info___cinit__(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Info___cinit__(struct PyMPIInfoObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":7
 * 
 *     def __cinit__(self, Info info: Info | None = None):
 *         cinit(self, info)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_info); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 7, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":6
 *     """
 * 
 *     def __cinit__(self, Info info: Info | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, info)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":9
 *         cinit(self, info)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_4Info_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_4Info_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_4Info_2__dealloc__(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_4Info_2__dealloc__(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":10
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":9
 *         cinit(self, info)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Info.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Info.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Info): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_4__richcmp__(((struct PyMPIInfoObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_4__richcmp__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Info): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Info); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Info): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Info): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Info_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_6__bool__(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Info_6__bool__(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Info.pyx":17
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Info(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_8__reduce__(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_8__reduce__(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":20
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_Info(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_reduce_Info(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Info(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_6handle___get__(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_6handle___get__(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":25
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_5__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Info:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_10fromhandle, "fromhandle(cls, handle: int) -> Info\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 27, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(28, 27, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":32
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Info> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(28, 32, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Info)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Info:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":34
 *         return fromhandle(<MPI_Info> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_12free, "free(self) -> None\n\n        Call `Free` if not null or predefined.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_12free(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_12free(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":38
 *         Call `Free` if not null or predefined.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # The Info Object
 */
  __pyx_t_1 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 38, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":34
 *         return fromhandle(<MPI_Info> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":43
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_15Create(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_14Create, "Create(cls, items: Info | Mapping[str, str] | Iterable[tuple[str, str]] | None = None) -> Self\n\n        Create a new info object.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_15Create = {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_15Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_14Create};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_15Create(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_items = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,0};

    /* "src/mpi4py/MPI.src/Info.pyx":51
 *             Iterable[tuple[str, str]] |
 *             None
 *         ) = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_items);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 43, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create") < 0)) __PYX_ERR(28, 43, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_items = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 0, 0, 1, __pyx_nargs); __PYX_ERR(28, 43, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_14Create(((PyTypeObject*)__pyx_v_cls), __pyx_v_items);

  /* "src/mpi4py/MPI.src/Info.pyx":43
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_14Create(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_items) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  unsigned int __pyx_t_14;
  PyObject *(*__pyx_t_15)(PyObject *);
  PyObject *(*__pyx_t_16)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":56
 *         Create a new info object.
 *         """
 *         cdef Info info = <Info>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )
 *         if items is None: return info
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":57
 *         """
 *         cdef Info info = <Info>New(cls)
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if items is None: return info
 *         cdef object key, value
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_create((&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(28, 57, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":58
 *         cdef Info info = <Info>New(cls)
 *         CHKERR( MPI_Info_create(&info.ob_mpi) )
 *         if items is None: return info             # <<<<<<<<<<<<<<
 *         cdef object key, value
 *         try:
 */
  __pyx_t_4 = (__pyx_v_items == Py_None);
  if (__pyx_t_4) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_info);
    __pyx_r = ((PyObject *)__pyx_v_info);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":60
 *         if items is None: return info
 *         cdef object key, value
 *         try:             # <<<<<<<<<<<<<<
 *             if hasattr(items, 'keys'):
 *                 for key in items.keys():
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Info.pyx":61
 *         cdef object key, value
 *         try:
 *             if hasattr(items, 'keys'):             # <<<<<<<<<<<<<<
 *                 for key in items.keys():
 *                     info.Set(key, items[key])
 */
      __pyx_t_4 = __Pyx_HasAttr(__pyx_v_items, __pyx_n_s_keys); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(28, 61, __pyx_L4_error)
      if (__pyx_t_4) {

        /* "src/mpi4py/MPI.src/Info.pyx":62
 *         try:
 *             if hasattr(items, 'keys'):
 *                 for key in items.keys():             # <<<<<<<<<<<<<<
 *                     info.Set(key, items[key])
 *             else:
 */
        __pyx_t_8 = 0;
        if (unlikely(__pyx_v_items == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
          __PYX_ERR(28, 62, __pyx_L4_error)
        }
        __pyx_t_1 = __Pyx_dict_iterator(__pyx_v_items, 0, __pyx_n_s_keys, (&__pyx_t_9), (&__pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 62, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_XDECREF(__pyx_t_2);
        __pyx_t_2 = __pyx_t_1;
        __pyx_t_1 = 0;
        while (1) {
          __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_2, __pyx_t_9, &__pyx_t_8, &__pyx_t_1, NULL, NULL, __pyx_t_3);
          if (unlikely(__pyx_t_10 == 0)) break;
          if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(28, 62, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1);
          __pyx_t_1 = 0;

          /* "src/mpi4py/MPI.src/Info.pyx":63
 *             if hasattr(items, 'keys'):
 *                 for key in items.keys():
 *                     info.Set(key, items[key])             # <<<<<<<<<<<<<<
 *             else:
 *                 for key, value in items:
 */
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_info), __pyx_n_s_Set); if (unlikely(!__pyx_t_11)) __PYX_ERR(28, 63, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_items, __pyx_v_key); if (unlikely(!__pyx_t_12)) __PYX_ERR(28, 63, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = NULL;
          __pyx_t_14 = 0;
          #if CYTHON_UNPACK_METHODS
          if (likely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
            if (likely(__pyx_t_13)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_13);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_11, function);
              __pyx_t_14 = 1;
            }
          }
          #endif
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_v_key, __pyx_t_12};
            __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_14, 2+__pyx_t_14);
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 63, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/Info.pyx":61
 *         cdef object key, value
 *         try:
 *             if hasattr(items, 'keys'):             # <<<<<<<<<<<<<<
 *                 for key in items.keys():
 *                     info.Set(key, items[key])
 */
        goto __pyx_L10;
      }

      /* "src/mpi4py/MPI.src/Info.pyx":65
 *                     info.Set(key, items[key])
 *             else:
 *                 for key, value in items:             # <<<<<<<<<<<<<<
 *                     info.Set(key, value)
 *         except:  # noqa
 */
      /*else*/ {
        if (likely(PyList_CheckExact(__pyx_v_items)) || PyTuple_CheckExact(__pyx_v_items)) {
          __pyx_t_2 = __pyx_v_items; __Pyx_INCREF(__pyx_t_2);
          __pyx_t_9 = 0;
          __pyx_t_15 = NULL;
        } else {
          __pyx_t_9 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 65, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(28, 65, __pyx_L4_error)
        }
        for (;;) {
          if (likely(!__pyx_t_15)) {
            if (likely(PyList_CheckExact(__pyx_t_2))) {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
                #if !CYTHON_ASSUME_SAFE_MACROS
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 65, __pyx_L4_error)
                #endif
                if (__pyx_t_9 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(28, 65, __pyx_L4_error)
              #else
              __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 65, __pyx_L4_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            } else {
              {
                Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
                #if !CYTHON_ASSUME_SAFE_MACROS
                if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 65, __pyx_L4_error)
                #endif
                if (__pyx_t_9 >= __pyx_temp) break;
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(28, 65, __pyx_L4_error)
              #else
              __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 65, __pyx_L4_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            }
          } else {
            __pyx_t_1 = __pyx_t_15(__pyx_t_2);
            if (unlikely(!__pyx_t_1)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(28, 65, __pyx_L4_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_1);
          }
          if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
            PyObject* sequence = __pyx_t_1;
            Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(28, 65, __pyx_L4_error)
            }
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_11 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); 
            } else {
              __pyx_t_11 = PyList_GET_ITEM(sequence, 0); 
              __pyx_t_12 = PyList_GET_ITEM(sequence, 1); 
            }
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(__pyx_t_12);
            #else
            __pyx_t_11 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(28, 65, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(28, 65, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_12);
            #endif
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_13 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(28, 65, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_16 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_13);
            index = 0; __pyx_t_11 = __pyx_t_16(__pyx_t_13); if (unlikely(!__pyx_t_11)) goto __pyx_L15_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_11);
            index = 1; __pyx_t_12 = __pyx_t_16(__pyx_t_13); if (unlikely(!__pyx_t_12)) goto __pyx_L15_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_12);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_13), 2) < 0) __PYX_ERR(28, 65, __pyx_L4_error)
            __pyx_t_16 = NULL;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            goto __pyx_L16_unpacking_done;
            __pyx_L15_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            __pyx_t_16 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(28, 65, __pyx_L4_error)
            __pyx_L16_unpacking_done:;
          }
          __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_11);
          __pyx_t_11 = 0;
          __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_12);
          __pyx_t_12 = 0;

          /* "src/mpi4py/MPI.src/Info.pyx":66
 *             else:
 *                 for key, value in items:
 *                     info.Set(key, value)             # <<<<<<<<<<<<<<
 *         except:  # noqa
 *             CHKERR( MPI_Info_free(&info.ob_mpi) )
 */
          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_info), __pyx_n_s_Set); if (unlikely(!__pyx_t_12)) __PYX_ERR(28, 66, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_11 = NULL;
          __pyx_t_14 = 0;
          #if CYTHON_UNPACK_METHODS
          if (likely(PyMethod_Check(__pyx_t_12))) {
            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
            if (likely(__pyx_t_11)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
              __Pyx_INCREF(__pyx_t_11);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_12, function);
              __pyx_t_14 = 1;
            }
          }
          #endif
          {
            PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_v_key, __pyx_v_value};
            __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 2+__pyx_t_14);
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 66, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          }
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          /* "src/mpi4py/MPI.src/Info.pyx":65
 *                     info.Set(key, items[key])
 *             else:
 *                 for key, value in items:             # <<<<<<<<<<<<<<
 *                     info.Set(key, value)
 *         except:  # noqa
 */
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __pyx_L10:;

      /* "src/mpi4py/MPI.src/Info.pyx":60
 *         if items is None: return info
 *         cdef object key, value
 *         try:             # <<<<<<<<<<<<<<
 *             if hasattr(items, 'keys'):
 *                 for key in items.keys():
 */
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":67
 *                 for key, value in items:
 *                     info.Set(key, value)
 *         except:  # noqa             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Info_free(&info.ob_mpi) )
 *             raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Info.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_12) < 0) __PYX_ERR(28, 67, __pyx_L6_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_12);

      /* "src/mpi4py/MPI.src/Info.pyx":68
 *                     info.Set(key, value)
 *         except:  # noqa
 *             CHKERR( MPI_Info_free(&info.ob_mpi) )             # <<<<<<<<<<<<<<
 *             raise
 *         return info
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_free((&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(28, 68, __pyx_L6_except_error)

      /* "src/mpi4py/MPI.src/Info.pyx":69
 *         except:  # noqa
 *             CHKERR( MPI_Info_free(&info.ob_mpi) )
 *             raise             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_12);
      __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_12 = 0; 
      __PYX_ERR(28, 69, __pyx_L6_except_error)
    }

    /* "src/mpi4py/MPI.src/Info.pyx":60
 *         if items is None: return info
 *         cdef object key, value
 *         try:             # <<<<<<<<<<<<<<
 *             if hasattr(items, 'keys'):
 *                 for key in items.keys():
 */
    __pyx_L6_except_error:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L9_try_end:;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":70
 *             CHKERR( MPI_Info_free(&info.ob_mpi) )
 *             raise
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":43
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":72
 *         return info
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_17Create_env(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_16Create_env, "Create_env(cls, args: Sequence[str] | None = None) -> Self\n\n        Create a new environment info object.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_17Create_env = {"Create_env", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_17Create_env, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_16Create_env};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_17Create_env(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_args = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_env (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_args,0};

    /* "src/mpi4py/MPI.src/Info.pyx":73
 * 
 *     @classmethod
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new environment info object.
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 72, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_env") < 0)) __PYX_ERR(28, 72, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_args = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_env", 0, 0, 1, __pyx_nargs); __PYX_ERR(28, 72, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.Create_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_16Create_env(((PyTypeObject*)__pyx_v_cls), __pyx_v_args);

  /* "src/mpi4py/MPI.src/Info.pyx":72
 *         return info
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:
 *         """
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_16Create_env(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_args) {
  int __pyx_v_argc;
  char **__pyx_v_argv;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_env", 0);
  __Pyx_INCREF(__pyx_v_args);

  /* "src/mpi4py/MPI.src/Info.pyx":77
 *         Create a new environment info object.
 *         """
 *         cdef int argc = 0             # <<<<<<<<<<<<<<
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef Info info = <Info>New(cls)
 */
  __pyx_v_argc = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":78
 *         """
 *         cdef int argc = 0
 *         cdef char **argv = MPI_ARGV_NULL             # <<<<<<<<<<<<<<
 *         cdef Info info = <Info>New(cls)
 *         args = asarray_argv(args, &argv)
 */
  __pyx_v_argv = MPI_ARGV_NULL;

  /* "src/mpi4py/MPI.src/Info.pyx":79
 *         cdef int argc = 0
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef Info info = <Info>New(cls)             # <<<<<<<<<<<<<<
 *         args = asarray_argv(args, &argv)
 *         while argv and argv[argc]: argc += 1
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":80
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef Info info = <Info>New(cls)
 *         args = asarray_argv(args, &argv)             # <<<<<<<<<<<<<<
 *         while argv and argv[argc]: argc += 1
 *         CHKERR( MPI_Info_create_env(argc, argv, &info.ob_mpi) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_argv(__pyx_v_args, (&__pyx_v_argv)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_args, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":81
 *         cdef Info info = <Info>New(cls)
 *         args = asarray_argv(args, &argv)
 *         while argv and argv[argc]: argc += 1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_create_env(argc, argv, &info.ob_mpi) )
 *         return info
 */
  while (1) {
    __pyx_t_4 = (__pyx_v_argv != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_4 = ((__pyx_v_argv[__pyx_v_argc]) != 0);
    __pyx_t_3 = __pyx_t_4;
    __pyx_L5_bool_binop_done:;
    if (!__pyx_t_3) break;
    __pyx_v_argc = (__pyx_v_argc + 1);
  }

  /* "src/mpi4py/MPI.src/Info.pyx":82
 *         args = asarray_argv(args, &argv)
 *         while argv and argv[argc]: argc += 1
 *         CHKERR( MPI_Info_create_env(argc, argv, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_create_env(__pyx_v_argc, __pyx_v_argv, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(28, 82, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":83
 *         while argv and argv[argc]: argc += 1
 *         CHKERR( MPI_Info_create_env(argc, argv, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     def Free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":72
 *         return info
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Create_env", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":85
 *         return info
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an info object.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_19Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_18Free, "Free(self) -> None\n\n        Free an info object.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_19Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_19Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_18Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_19Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_18Free(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_18Free(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":89
 *         Free an info object.
 *         """
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if self is __INFO_ENV__: self.ob_mpi = MPI_INFO_ENV
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 89, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":90
 *         """
 *         CHKERR( MPI_Info_free(&self.ob_mpi) )
 *         if self is __INFO_ENV__: self.ob_mpi = MPI_INFO_ENV             # <<<<<<<<<<<<<<
 * 
 *     def Dup(self) -> Self:
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___INFO_ENV__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_INFO_ENV;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":85
 *         return info
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an info object.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Info.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":92
 *         if self is __INFO_ENV__: self.ob_mpi = MPI_INFO_ENV
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing info object.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_21Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_20Dup, "Dup(self) -> Self\n\n        Duplicate an existing info object.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_21Dup = {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_21Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_20Dup};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_21Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Dup (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Dup", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Dup", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_20Dup(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_20Dup(struct PyMPIInfoObject *__pyx_v_self) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":96
 *         Duplicate an existing info object.
 *         """
 *         cdef Info info = <Info>New(type(self))             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":97
 *         """
 *         cdef Info info = <Info>New(type(self))
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_dup(__pyx_v_self->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(28, 97, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":98
 *         cdef Info info = <Info>New(type(self))
 *         CHKERR( MPI_Info_dup(self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     def Get(self, key: str) -> str | None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":92
 *         if self is __INFO_ENV__: self.ob_mpi = MPI_INFO_ENV
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing info object.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":100
 *         return info
 * 
 *     def Get(self, key: str) -> str | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_23Get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_22Get, "Get(self, key: str) -> str | None\n\n        Retrieve the value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_23Get = {"Get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_23Get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_22Get};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_23Get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_key = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 100, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get") < 0)) __PYX_ERR(28, 100, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 100, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_22Get(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_key);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_22Get(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key) {
  char *__pyx_v_ckey;
  char *__pyx_v_cvalue;
  int __pyx_v_buflen;
  int __pyx_v_flag;
  CYTHON_UNUSED PyObject *__pyx_v_unused = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get", 0);
  __Pyx_INCREF(__pyx_v_key);

  /* "src/mpi4py/MPI.src/Info.pyx":104
 *         Retrieve the value associated with a key.
 *         """
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         cdef char *cvalue = NULL
 *         cdef int buflen = MPI_MAX_INFO_VAL
 */
  __pyx_v_ckey = NULL;

  /* "src/mpi4py/MPI.src/Info.pyx":105
 *         """
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL             # <<<<<<<<<<<<<<
 *         cdef int buflen = MPI_MAX_INFO_VAL
 *         cdef int flag = 0
 */
  __pyx_v_cvalue = NULL;

  /* "src/mpi4py/MPI.src/Info.pyx":106
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL
 *         cdef int buflen = MPI_MAX_INFO_VAL             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey)
 */
  __pyx_v_buflen = MPI_MAX_INFO_VAL;

  /* "src/mpi4py/MPI.src/Info.pyx":107
 *         cdef char *cvalue = NULL
 *         cdef int buflen = MPI_MAX_INFO_VAL
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey)
 *         cdef unused = allocate(buflen+1, sizeof(char), &cvalue)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":108
 *         cdef int buflen = MPI_MAX_INFO_VAL
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey)             # <<<<<<<<<<<<<<
 *         cdef unused = allocate(buflen+1, sizeof(char), &cvalue)
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":109
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey)
 *         cdef unused = allocate(buflen+1, sizeof(char), &cvalue)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )
 *         if not flag: return None
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate((__pyx_v_buflen + 1), (sizeof(char)), (&__pyx_v_cvalue))); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":110
 *         key = asmpistr(key, &ckey)
 *         cdef unused = allocate(buflen+1, sizeof(char), &cvalue)
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )             # <<<<<<<<<<<<<<
 *         if not flag: return None
 *         return mpistr(cvalue)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_string(__pyx_v_self->ob_mpi, __pyx_v_ckey, (&__pyx_v_buflen), __pyx_v_cvalue, (&__pyx_v_flag))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(28, 110, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":111
 *         cdef unused = allocate(buflen+1, sizeof(char), &cvalue)
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         return mpistr(cvalue)
 * 
 */
  __pyx_t_3 = (!(__pyx_v_flag != 0));
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":112
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )
 *         if not flag: return None
 *         return mpistr(cvalue)             # <<<<<<<<<<<<<<
 * 
 *     def Set(self, key: str, value: str) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cvalue); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":100
 *         return info
 * 
 *     def Get(self, key: str) -> str | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the value associated with a key.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":114
 *         return mpistr(cvalue)
 * 
 *     def Set(self, key: str, value: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store a value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_25Set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_24Set, "Set(self, key: str, value: str) -> None\n\n        Store a value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_25Set = {"Set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_25Set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_24Set};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_25Set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_value,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 114, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_value)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 114, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Set", 1, 2, 2, 1); __PYX_ERR(28, 114, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set") < 0)) __PYX_ERR(28, 114, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_key = values[0];
    __pyx_v_value = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set", 1, 2, 2, __pyx_nargs); __PYX_ERR(28, 114, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.Set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_24Set(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_key, __pyx_v_value);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_24Set(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  char *__pyx_v_ckey;
  char *__pyx_v_cvalue;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set", 0);
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_INCREF(__pyx_v_value);

  /* "src/mpi4py/MPI.src/Info.pyx":118
 *         Store a value associated with a key.
 *         """
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         cdef char *cvalue = NULL
 *         key = asmpistr(key, &ckey)
 */
  __pyx_v_ckey = NULL;

  /* "src/mpi4py/MPI.src/Info.pyx":119
 *         """
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey)
 *         value = asmpistr(value, &cvalue)
 */
  __pyx_v_cvalue = NULL;

  /* "src/mpi4py/MPI.src/Info.pyx":120
 *         cdef char *ckey = NULL
 *         cdef char *cvalue = NULL
 *         key = asmpistr(key, &ckey)             # <<<<<<<<<<<<<<
 *         value = asmpistr(value, &cvalue)
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":121
 *         cdef char *cvalue = NULL
 *         key = asmpistr(key, &ckey)
 *         value = asmpistr(value, &cvalue)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_value, (&__pyx_v_cvalue)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":122
 *         key = asmpistr(key, &ckey)
 *         value = asmpistr(value, &cvalue)
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )             # <<<<<<<<<<<<<<
 * 
 *     def Delete(self, key: str) -> None:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_set(__pyx_v_self->ob_mpi, __pyx_v_ckey, __pyx_v_cvalue)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(28, 122, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":114
 *         return mpistr(cvalue)
 * 
 *     def Set(self, key: str, value: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store a value associated with a key.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":124
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 *     def Delete(self, key: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove a (key, value) pair from info.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_27Delete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_26Delete, "Delete(self, key: str) -> None\n\n        Remove a (key, value) pair from info.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_27Delete = {"Delete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_27Delete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_26Delete};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_27Delete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_key = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Delete (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 124, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Delete") < 0)) __PYX_ERR(28, 124, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 124, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_26Delete(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_key);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_26Delete(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key) {
  char *__pyx_v_ckey;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Delete", 0);
  __Pyx_INCREF(__pyx_v_key);

  /* "src/mpi4py/MPI.src/Info.pyx":128
 *         Remove a (key, value) pair from info.
 *         """
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey)
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 */
  __pyx_v_ckey = NULL;

  /* "src/mpi4py/MPI.src/Info.pyx":129
 *         """
 *         cdef char *ckey = NULL
 *         key = asmpistr(key, &ckey)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":130
 *         cdef char *ckey = NULL
 *         key = asmpistr(key, &ckey)
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_nkeys(self) -> int:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_delete(__pyx_v_self->ob_mpi, __pyx_v_ckey)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(28, 130, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":124
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 *     def Delete(self, key: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove a (key, value) pair from info.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":132
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 *     def Get_nkeys(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of currently defined keys in info.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_29Get_nkeys(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_28Get_nkeys, "Get_nkeys(self) -> int\n\n        Return the number of currently defined keys in info.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_29Get_nkeys = {"Get_nkeys", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_29Get_nkeys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_28Get_nkeys};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_29Get_nkeys(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_nkeys (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_nkeys", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_nkeys", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_28Get_nkeys(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_28Get_nkeys(struct PyMPIInfoObject *__pyx_v_self) {
  int __pyx_v_nkeys;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_nkeys", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":136
 *         Return the number of currently defined keys in info.
 *         """
 *         cdef int nkeys = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get_nkeys(self.ob_mpi, &nkeys) )
 *         return nkeys
 */
  __pyx_v_nkeys = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":137
 *         """
 *         cdef int nkeys = 0
 *         CHKERR( MPI_Info_get_nkeys(self.ob_mpi, &nkeys) )             # <<<<<<<<<<<<<<
 *         return nkeys
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_nkeys(__pyx_v_self->ob_mpi, (&__pyx_v_nkeys))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 137, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":138
 *         cdef int nkeys = 0
 *         CHKERR( MPI_Info_get_nkeys(self.ob_mpi, &nkeys) )
 *         return nkeys             # <<<<<<<<<<<<<<
 * 
 *     def Get_nthkey(self, int n: int) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_nkeys); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":132
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 *     def Get_nkeys(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of currently defined keys in info.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get_nkeys", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":140
 *         return nkeys
 * 
 *     def Get_nthkey(self, int n: int) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Return the *n*-th defined key in info.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_31Get_nthkey(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_30Get_nthkey, "Get_nthkey(self, n: int) -> str\n\n        Return the *n*-th defined key in info.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_31Get_nthkey = {"Get_nthkey", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_31Get_nthkey, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_30Get_nthkey};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_31Get_nthkey(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_n;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_nthkey (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_n)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 140, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_nthkey") < 0)) __PYX_ERR(28, 140, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_n = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(28, 140, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_nthkey", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 140, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get_nthkey", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_30Get_nthkey(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_n);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_30Get_nthkey(struct PyMPIInfoObject *__pyx_v_self, int __pyx_v_n) {
  char __pyx_v_ckey[(MPI_MAX_INFO_KEY + 1)];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_nthkey", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":145
 *         """
 *         cdef char ckey[MPI_MAX_INFO_KEY+1]
 *         ckey[0] = 0  # just in case             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )
 *         ckey[MPI_MAX_INFO_KEY] = 0  # just in case
 */
  (__pyx_v_ckey[0]) = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":146
 *         cdef char ckey[MPI_MAX_INFO_KEY+1]
 *         ckey[0] = 0  # just in case
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )             # <<<<<<<<<<<<<<
 *         ckey[MPI_MAX_INFO_KEY] = 0  # just in case
 *         return mpistr(ckey)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_nthkey(__pyx_v_self->ob_mpi, __pyx_v_n, __pyx_v_ckey)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(28, 146, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":147
 *         ckey[0] = 0  # just in case
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )
 *         ckey[MPI_MAX_INFO_KEY] = 0  # just in case             # <<<<<<<<<<<<<<
 *         return mpistr(ckey)
 * 
 */
  (__pyx_v_ckey[MPI_MAX_INFO_KEY]) = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":148
 *         CHKERR( MPI_Info_get_nthkey(self.ob_mpi, n, ckey) )
 *         ckey[MPI_MAX_INFO_KEY] = 0  # just in case
 *         return mpistr(ckey)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_ckey); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":140
 *         return nkeys
 * 
 *     def Get_nthkey(self, int n: int) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Return the *n*-th defined key in info.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.Get_nthkey", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":153
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_33py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_32py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_33py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_33py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_32py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_33py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_32py2f(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_32py2f(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":156
 *         """
 *         """
 *         return MPI_Info_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Info_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":153
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Info.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":158
 *         return MPI_Info_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Info:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_35f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_34f2py, "f2py(cls, arg: int) -> Info\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_35f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_35f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_34f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_35f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 158, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(28, 158, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 158, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_34f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_34f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":162
 *         """
 *         """
 *         return fromhandle(MPI_Info_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Python mapping emulation
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(28, 162, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_5__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Info_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":158
 *         return MPI_Info_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Info:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Info.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":167
 *     # ------------------------
 * 
 *     def __len__(self) -> int:             # <<<<<<<<<<<<<<
 *         if not self: return 0
 *         return self.Get_nkeys()
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_6mpi4py_3MPI_4Info_37__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_6mpi4py_3MPI_4Info_37__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_36__len__(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_6mpi4py_3MPI_4Info_36__len__(struct PyMPIInfoObject *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":168
 * 
 *     def __len__(self) -> int:
 *         if not self: return 0             # <<<<<<<<<<<<<<
 *         return self.Get_nkeys()
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 168, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":169
 *     def __len__(self) -> int:
 *         if not self: return 0
 *         return self.Get_nkeys()             # <<<<<<<<<<<<<<
 * 
 *     def __contains__(self, key: str) -> bool:
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nkeys); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 169, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(28, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_7;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":167
 *     # ------------------------
 * 
 *     def __len__(self) -> int:             # <<<<<<<<<<<<<<
 *         if not self: return 0
 *         return self.Get_nkeys()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":171
 *         return self.Get_nkeys()
 * 
 *     def __contains__(self, key: str) -> bool:             # <<<<<<<<<<<<<<
 *         if not self: return False
 *         cdef char *ckey = NULL
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Info_39__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_39__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_38__contains__(((struct PyMPIInfoObject *)__pyx_v_self), ((PyObject *)__pyx_v_key));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Info_38__contains__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key) {
  char *__pyx_v_ckey;
  char __pyx_v_cvalue[1];
  int __pyx_v_buflen;
  int __pyx_v_flag;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__contains__", 0);
  __Pyx_INCREF(__pyx_v_key);

  /* "src/mpi4py/MPI.src/Info.pyx":172
 * 
 *     def __contains__(self, key: str) -> bool:
 *         if not self: return False             # <<<<<<<<<<<<<<
 *         cdef char *ckey = NULL
 *         cdef char cvalue[1]
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 172, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":173
 *     def __contains__(self, key: str) -> bool:
 *         if not self: return False
 *         cdef char *ckey = NULL             # <<<<<<<<<<<<<<
 *         cdef char cvalue[1]
 *         cdef int buflen = 0
 */
  __pyx_v_ckey = NULL;

  /* "src/mpi4py/MPI.src/Info.pyx":175
 *         cdef char *ckey = NULL
 *         cdef char cvalue[1]
 *         cdef int buflen = 0             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey)
 */
  __pyx_v_buflen = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":176
 *         cdef char cvalue[1]
 *         cdef int buflen = 0
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         key = asmpistr(key, &ckey)
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":177
 *         cdef int buflen = 0
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )
 *         return <bint>flag
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_key, (&__pyx_v_ckey)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF_SET(__pyx_v_key, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":178
 *         cdef int flag = 0
 *         key = asmpistr(key, &ckey)
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Info_get_string(__pyx_v_self->ob_mpi, __pyx_v_ckey, (&__pyx_v_buflen), __pyx_v_cvalue, (&__pyx_v_flag))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(28, 178, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":179
 *         key = asmpistr(key, &ckey)
 *         CHKERR( MPI_Info_get_string(self.ob_mpi, ckey, &buflen, cvalue, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self) -> Iterator[str]:
 */
  __pyx_r = (__pyx_v_flag != 0);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":171
 *         return self.Get_nkeys()
 * 
 *     def __contains__(self, key: str) -> bool:             # <<<<<<<<<<<<<<
 *         if not self: return False
 *         cdef char *ckey = NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":181
 *         return <bint>flag
 * 
 *     def __iter__(self) -> Iterator[str]:             # <<<<<<<<<<<<<<
 *         return iter(self.keys())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_41__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_41__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_40__iter__(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_40__iter__(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":182
 * 
 *     def __iter__(self) -> Iterator[str]:
 *         return iter(self.keys())             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, key: str) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":181
 *         return <bint>flag
 * 
 *     def __iter__(self) -> Iterator[str]:             # <<<<<<<<<<<<<<
 *         return iter(self.keys())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":184
 *         return iter(self.keys())
 * 
 *     def __getitem__(self, key: str) -> str:             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         cdef object value = self.Get(key)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_43__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_43__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_42__getitem__(((struct PyMPIInfoObject *)__pyx_v_self), ((PyObject *)__pyx_v_key));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_42__getitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key) {
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":185
 * 
 *     def __getitem__(self, key: str) -> str:
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         cdef object value = self.Get(key)
 *         if value is None: raise KeyError(key)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 185, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_KeyError, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(28, 185, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":186
 *     def __getitem__(self, key: str) -> str:
 *         if not self: raise KeyError(key)
 *         cdef object value = self.Get(key)             # <<<<<<<<<<<<<<
 *         if value is None: raise KeyError(key)
 *         return value
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_value = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":187
 *         if not self: raise KeyError(key)
 *         cdef object value = self.Get(key)
 *         if value is None: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         return value
 * 
 */
  __pyx_t_2 = (__pyx_v_value == Py_None);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_KeyError, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(28, 187, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":188
 *         cdef object value = self.Get(key)
 *         if value is None: raise KeyError(key)
 *         return value             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, key: str, value: str) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_r = __pyx_v_value;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":184
 *         return iter(self.keys())
 * 
 *     def __getitem__(self, key: str) -> str:             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         cdef object value = self.Get(key)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":190
 *         return value
 * 
 *     def __setitem__(self, key: str, value: str) -> None:             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         self.Set(key, value)
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Info_45__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_45__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_44__setitem__(((struct PyMPIInfoObject *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Info_44__setitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setitem__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":191
 * 
 *     def __setitem__(self, key: str, value: str) -> None:
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         self.Set(key, value)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 191, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_KeyError, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(28, 191, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":192
 *     def __setitem__(self, key: str, value: str) -> None:
 *         if not self: raise KeyError(key)
 *         self.Set(key, value)             # <<<<<<<<<<<<<<
 * 
 *     def __delitem__(self, key: str) -> None:
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_key, __pyx_v_value};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":190
 *         return value
 * 
 *     def __setitem__(self, key: str, value: str) -> None:             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         self.Set(key, value)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":194
 *         self.Set(key, value)
 * 
 *     def __delitem__(self, key: str) -> None:             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Info_47__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Info_47__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_46__delitem__(((struct PyMPIInfoObject *)__pyx_v_self), ((PyObject *)__pyx_v_key));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Info_46__delitem__(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__delitem__", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":195
 * 
 *     def __delitem__(self, key: str) -> None:
 *         if not self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         if key not in self: raise KeyError(key)
 *         self.Delete(key)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 195, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_KeyError, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(28, 195, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":196
 *     def __delitem__(self, key: str) -> None:
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)             # <<<<<<<<<<<<<<
 *         self.Delete(key)
 * 
 */
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, ((PyObject *)__pyx_v_self), Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(28, 196, __pyx_L1_error)
  if (unlikely(__pyx_t_2)) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_KeyError, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(28, 196, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":197
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)
 *         self.Delete(key)             # <<<<<<<<<<<<<<
 * 
 *     def get(self, key: str, default: str | None = None) -> str | None:
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Delete); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 197, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":194
 *         self.Set(key, value)
 * 
 *     def __delitem__(self, key: str) -> None:             # <<<<<<<<<<<<<<
 *         if not self: raise KeyError(key)
 *         if key not in self: raise KeyError(key)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":199
 *         self.Delete(key)
 * 
 *     def get(self, key: str, default: str | None = None) -> str | None:             # <<<<<<<<<<<<<<
 *         """Retrieve value by key."""
 *         if not self: return default
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_49get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_48get, "get(self, key: str, default: str | None = None) -> str | None\nRetrieve value by key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_49get = {"get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_49get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_48get};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_49get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_default,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 199, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_default);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 199, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "get") < 0)) __PYX_ERR(28, 199, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_key = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, __pyx_nargs); __PYX_ERR(28, 199, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Info.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_48get(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_key, __pyx_v_default);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_48get(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":201
 *     def get(self, key: str, default: str | None = None) -> str | None:
 *         """Retrieve value by key."""
 *         if not self: return default             # <<<<<<<<<<<<<<
 *         cdef object value = self.Get(key)
 *         if value is None: return default
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 201, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default);
    __pyx_r = __pyx_v_default;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":202
 *         """Retrieve value by key."""
 *         if not self: return default
 *         cdef object value = self.Get(key)             # <<<<<<<<<<<<<<
 *         if value is None: return default
 *         return value
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_value = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":203
 *         if not self: return default
 *         cdef object value = self.Get(key)
 *         if value is None: return default             # <<<<<<<<<<<<<<
 *         return value
 * 
 */
  __pyx_t_2 = (__pyx_v_value == Py_None);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_default);
    __pyx_r = __pyx_v_default;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":204
 *         cdef object value = self.Get(key)
 *         if value is None: return default
 *         return value             # <<<<<<<<<<<<<<
 * 
 *     def keys(self) -> list[str]:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_value);
  __pyx_r = __pyx_v_value;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":199
 *         self.Delete(key)
 * 
 *     def get(self, key: str, default: str | None = None) -> str | None:             # <<<<<<<<<<<<<<
 *         """Retrieve value by key."""
 *         if not self: return default
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":206
 *         return value
 * 
 *     def keys(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of keys."""
 *         if not self: return []
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_51keys(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_50keys, "keys(self) -> list[str]\nReturn list of keys.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_51keys = {"keys", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_51keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_50keys};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_51keys(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("keys (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("keys", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "keys", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_50keys(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_50keys(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_v_keys = 0;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key = 0;
  int __pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("keys", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":208
 *     def keys(self) -> list[str]:
 *         """Return list of keys."""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef list keys = []
 *         cdef int nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 208, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":209
 *         """Return list of keys."""
 *         if not self: return []
 *         cdef list keys = []             # <<<<<<<<<<<<<<
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef object key
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_keys = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":210
 *         if not self: return []
 *         cdef list keys = []
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key
 *         for k in range(nkeys):
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nkeys); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(28, 210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Info.pyx":212
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef object key
 *         for k in range(nkeys):             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             keys.append(key)
 */
  __pyx_t_7 = __pyx_v_nkeys;
  __pyx_t_8 = __pyx_t_7;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
    __pyx_v_k = __pyx_t_9;

    /* "src/mpi4py/MPI.src/Info.pyx":213
 *         cdef object key
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             keys.append(key)
 *         return keys
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nthkey); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_k); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 213, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":214
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)
 *             keys.append(key)             # <<<<<<<<<<<<<<
 *         return keys
 * 
 */
    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_keys, __pyx_v_key); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(28, 214, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":215
 *             key = self.Get_nthkey(k)
 *             keys.append(key)
 *         return keys             # <<<<<<<<<<<<<<
 * 
 *     def values(self) -> list[str]:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_keys);
  __pyx_r = __pyx_v_keys;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":206
 *         return value
 * 
 *     def keys(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of keys."""
 *         if not self: return []
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.Info.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_keys);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":217
 *         return keys
 * 
 *     def values(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of values."""
 *         if not self: return []
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_53values(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_52values, "values(self) -> list[str]\nReturn list of values.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_53values = {"values", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_53values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_52values};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_53values(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("values (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("values", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "values", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_52values(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_52values(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_v_values = 0;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_val = 0;
  int __pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("values", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":219
 *     def values(self) -> list[str]:
 *         """Return list of values."""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef list values = []
 *         cdef int nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 219, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":220
 *         """Return list of values."""
 *         if not self: return []
 *         cdef list values = []             # <<<<<<<<<<<<<<
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef object key, val
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_values = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":221
 *         if not self: return []
 *         cdef list values = []
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key, val
 *         for k in range(nkeys):
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nkeys); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(28, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Info.pyx":223
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef object key, val
 *         for k in range(nkeys):             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)
 */
  __pyx_t_7 = __pyx_v_nkeys;
  __pyx_t_8 = __pyx_t_7;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
    __pyx_v_k = __pyx_t_9;

    /* "src/mpi4py/MPI.src/Info.pyx":224
 *         cdef object key, val
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             val = self.Get(key)
 *             values.append(val)
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nthkey); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_k); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":225
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)             # <<<<<<<<<<<<<<
 *             values.append(val)
 *         return values
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":226
 *             key = self.Get_nthkey(k)
 *             val = self.Get(key)
 *             values.append(val)             # <<<<<<<<<<<<<<
 *         return values
 * 
 */
    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_values, __pyx_v_val); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(28, 226, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":227
 *             val = self.Get(key)
 *             values.append(val)
 *         return values             # <<<<<<<<<<<<<<
 * 
 *     def items(self) -> list[tuple[str, str]]:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_values);
  __pyx_r = __pyx_v_values;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":217
 *         return keys
 * 
 *     def values(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of values."""
 *         if not self: return []
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.Info.values", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":229
 *         return values
 * 
 *     def items(self) -> list[tuple[str, str]]:             # <<<<<<<<<<<<<<
 *         """Return list of items."""
 *         if not self: return []
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_55items(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_54items, "items(self) -> list[tuple[str, str]]\nReturn list of items.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_55items = {"items", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_55items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_54items};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_55items(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("items (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("items", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "items", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_54items(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_54items(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_v_items = 0;
  int __pyx_v_nkeys;
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  int __pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("items", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":231
 *     def items(self) -> list[tuple[str, str]]:
 *         """Return list of items."""
 *         if not self: return []             # <<<<<<<<<<<<<<
 *         cdef list items = []
 *         cdef int nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 231, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":232
 *         """Return list of items."""
 *         if not self: return []
 *         cdef list items = []             # <<<<<<<<<<<<<<
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef object key, value
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_items = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":233
 *         if not self: return []
 *         cdef list items = []
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         cdef object key, value
 *         for k in range(nkeys):
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nkeys); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(28, 233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Info.pyx":235
 *         cdef int nkeys = self.Get_nkeys()
 *         cdef object key, value
 *         for k in range(nkeys):             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(k)
 *             value = self.Get(key)
 */
  __pyx_t_7 = __pyx_v_nkeys;
  __pyx_t_8 = __pyx_t_7;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
    __pyx_v_k = __pyx_t_9;

    /* "src/mpi4py/MPI.src/Info.pyx":236
 *         cdef object key, value
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)             # <<<<<<<<<<<<<<
 *             value = self.Get(key)
 *             items.append((key, value))
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nthkey); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_k); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 236, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":237
 *         for k in range(nkeys):
 *             key = self.Get_nthkey(k)
 *             value = self.Get(key)             # <<<<<<<<<<<<<<
 *             items.append((key, value))
 *         return items
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":238
 *             key = self.Get_nthkey(k)
 *             value = self.Get(key)
 *             items.append((key, value))             # <<<<<<<<<<<<<<
 *         return items
 * 
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_key);
    __Pyx_GIVEREF(__pyx_v_key);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key)) __PYX_ERR(28, 238, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_value);
    __Pyx_GIVEREF(__pyx_v_value);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_value)) __PYX_ERR(28, 238, __pyx_L1_error);
    __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_items, __pyx_t_3); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(28, 238, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":239
 *             value = self.Get(key)
 *             items.append((key, value))
 *         return items             # <<<<<<<<<<<<<<
 * 
 *     def update(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_items);
  __pyx_r = __pyx_v_items;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":229
 *         return values
 * 
 *     def items(self) -> list[tuple[str, str]]:             # <<<<<<<<<<<<<<
 *         """Return list of items."""
 *         if not self: return []
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("mpi4py.MPI.Info.items", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_items);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":241
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_57update(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_56update, "update(self, items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (), **kwds: str) -> None\nUpdate contents.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_57update = {"update", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_57update, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_56update};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_57update(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_items = 0;
  PyObject *__pyx_v_kwds = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("update (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_kwds = PyDict_New(); if (unlikely(!__pyx_v_kwds)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwds);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_items,0};

    /* "src/mpi4py/MPI.src/Info.pyx":243
 *     def update(
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),             # <<<<<<<<<<<<<<
 *         **kwds: str,
 *     ) -> None:
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_empty_tuple));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_items);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 241, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_kwds, values + 0, kwd_pos_args, "update") < 0)) __PYX_ERR(28, 241, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_items = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("update", 0, 0, 1, __pyx_nargs); __PYX_ERR(28, 241, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_kwds); __pyx_v_kwds = 0;
  __Pyx_AddTraceback("mpi4py.MPI.Info.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_56update(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_items, __pyx_v_kwds);

  /* "src/mpi4py/MPI.src/Info.pyx":241
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
 */

  /* function exit code */
  __Pyx_DECREF(__pyx_v_kwds);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_56update(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_items, PyObject *__pyx_v_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  unsigned int __pyx_t_12;
  PyObject *(*__pyx_t_13)(PyObject *);
  PyObject *(*__pyx_t_14)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("update", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":247
 *     ) -> None:
 *         """Update contents."""
 *         if not self: raise KeyError             # <<<<<<<<<<<<<<
 *         cdef object key, value
 *         if hasattr(items, 'keys'):
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 247, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(__pyx_builtin_KeyError, 0, 0, 0);
    __PYX_ERR(28, 247, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":249
 *         if not self: raise KeyError
 *         cdef object key, value
 *         if hasattr(items, 'keys'):             # <<<<<<<<<<<<<<
 *             for key in items.keys():
 *                 self.Set(key, items[key])
 */
  __pyx_t_2 = __Pyx_HasAttr(__pyx_v_items, __pyx_n_s_keys); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(28, 249, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Info.pyx":250
 *         cdef object key, value
 *         if hasattr(items, 'keys'):
 *             for key in items.keys():             # <<<<<<<<<<<<<<
 *                 self.Set(key, items[key])
 *         else:
 */
    __pyx_t_4 = 0;
    if (unlikely(__pyx_v_items == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
      __PYX_ERR(28, 250, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_items, 0, __pyx_n_s_keys, (&__pyx_t_5), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_3);
    __pyx_t_3 = __pyx_t_7;
    __pyx_t_7 = 0;
    while (1) {
      __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_5, &__pyx_t_4, &__pyx_t_7, NULL, NULL, __pyx_t_6);
      if (unlikely(__pyx_t_8 == 0)) break;
      if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(28, 250, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "src/mpi4py/MPI.src/Info.pyx":251
 *         if hasattr(items, 'keys'):
 *             for key in items.keys():
 *                 self.Set(key, items[key])             # <<<<<<<<<<<<<<
 *         else:
 *             for key, value in items:
 */
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_items, __pyx_v_key); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_v_key, __pyx_t_10};
        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 251, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":249
 *         if not self: raise KeyError
 *         cdef object key, value
 *         if hasattr(items, 'keys'):             # <<<<<<<<<<<<<<
 *             for key in items.keys():
 *                 self.Set(key, items[key])
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":253
 *                 self.Set(key, items[key])
 *         else:
 *             for key, value in items:             # <<<<<<<<<<<<<<
 *                 self.Set(key, value)
 *         for key, value in kwds.items():
 */
  /*else*/ {
    if (likely(PyList_CheckExact(__pyx_v_items)) || PyTuple_CheckExact(__pyx_v_items)) {
      __pyx_t_3 = __pyx_v_items; __Pyx_INCREF(__pyx_t_3);
      __pyx_t_5 = 0;
      __pyx_t_13 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_items); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 253, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_13 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_13)) __PYX_ERR(28, 253, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_13)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 253, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(28, 253, __pyx_L1_error)
          #else
          __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 253, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(28, 253, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(28, 253, __pyx_L1_error)
          #else
          __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 253, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
        }
      } else {
        __pyx_t_7 = __pyx_t_13(__pyx_t_3);
        if (unlikely(!__pyx_t_7)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(28, 253, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
        PyObject* sequence = __pyx_t_7;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(28, 253, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_10);
        #else
        __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        #endif
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_11 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(28, 253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
        index = 0; __pyx_t_9 = __pyx_t_14(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_9);
        index = 1; __pyx_t_10 = __pyx_t_14(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_10);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_11), 2) < 0) __PYX_ERR(28, 253, __pyx_L1_error)
        __pyx_t_14 = NULL;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_14 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(28, 253, __pyx_L1_error)
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_9);
      __pyx_t_9 = 0;
      __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_10);
      __pyx_t_10 = 0;

      /* "src/mpi4py/MPI.src/Info.pyx":254
 *         else:
 *             for key, value in items:
 *                 self.Set(key, value)             # <<<<<<<<<<<<<<
 *         for key, value in kwds.items():
 *             self.Set(key, value)
 */
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = NULL;
      __pyx_t_12 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_12 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_key, __pyx_v_value};
        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/mpi4py/MPI.src/Info.pyx":253
 *                 self.Set(key, items[key])
 *         else:
 *             for key, value in items:             # <<<<<<<<<<<<<<
 *                 self.Set(key, value)
 *         for key, value in kwds.items():
 */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/Info.pyx":255
 *             for key, value in items:
 *                 self.Set(key, value)
 *         for key, value in kwds.items():             # <<<<<<<<<<<<<<
 *             self.Set(key, value)
 * 
 */
  __pyx_t_5 = 0;
  __pyx_t_7 = __Pyx_dict_iterator(__pyx_v_kwds, 1, __pyx_n_s_items, (&__pyx_t_4), (&__pyx_t_6)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_3);
  __pyx_t_3 = __pyx_t_7;
  __pyx_t_7 = 0;
  while (1) {
    __pyx_t_8 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_4, &__pyx_t_5, &__pyx_t_7, &__pyx_t_10, NULL, __pyx_t_6);
    if (unlikely(__pyx_t_8 == 0)) break;
    if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(28, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
    __pyx_t_7 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_10);
    __pyx_t_10 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":256
 *                 self.Set(key, value)
 *         for key, value in kwds.items():
 *             self.Set(key, value)             # <<<<<<<<<<<<<<
 * 
 *     def pop(self, key: str, *default: str) -> str:
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    __pyx_t_12 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_12 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_key, __pyx_v_value};
      __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":241
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.Info.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":258
 *             self.Set(key, value)
 * 
 *     def pop(self, key: str, *default: str) -> str:             # <<<<<<<<<<<<<<
 *         """Pop value by key."""
 *         cdef object value = None
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_59pop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_58pop, "pop(self, key: str, *default: str) -> str\nPop value by key.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_59pop = {"pop", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_59pop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_58pop};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_59pop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_default = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pop (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  __pyx_v_default = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_default)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_default);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        default:
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 258, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        const Py_ssize_t used_pos_args = (kwd_pos_args < 1) ? kwd_pos_args : 1;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, used_pos_args, "pop") < 0)) __PYX_ERR(28, 258, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs < 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pop", 0, 1, 1, __pyx_nargs); __PYX_ERR(28, 258, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_DECREF(__pyx_v_default); __pyx_v_default = 0;
  __Pyx_AddTraceback("mpi4py.MPI.Info.pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_58pop(((struct PyMPIInfoObject *)__pyx_v_self), __pyx_v_key, __pyx_v_default);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_default);
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_58pop(struct PyMPIInfoObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_default) {
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pop", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":260
 *     def pop(self, key: str, *default: str) -> str:
 *         """Pop value by key."""
 *         cdef object value = None             # <<<<<<<<<<<<<<
 *         if self:
 *             value = self.Get(key)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_value = Py_None;

  /* "src/mpi4py/MPI.src/Info.pyx":261
 *         """Pop value by key."""
 *         cdef object value = None
 *         if self:             # <<<<<<<<<<<<<<
 *             value = self.Get(key)
 *         if value is not None:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 261, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Info.pyx":262
 *         cdef object value = None
 *         if self:
 *             value = self.Get(key)             # <<<<<<<<<<<<<<
 *         if value is not None:
 *             self.Delete(key)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 262, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":261
 *         """Pop value by key."""
 *         cdef object value = None
 *         if self:             # <<<<<<<<<<<<<<
 *             value = self.Get(key)
 *         if value is not None:
 */
  }

  /* "src/mpi4py/MPI.src/Info.pyx":263
 *         if self:
 *             value = self.Get(key)
 *         if value is not None:             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 *             return value
 */
  __pyx_t_1 = (__pyx_v_value != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Info.pyx":264
 *             value = self.Get(key)
 *         if value is not None:
 *             self.Delete(key)             # <<<<<<<<<<<<<<
 *             return value
 *         if default:
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Delete); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 264, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_key};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 264, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":265
 *         if value is not None:
 *             self.Delete(key)
 *             return value             # <<<<<<<<<<<<<<
 *         if default:
 *             value, = default
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_value);
    __pyx_r = __pyx_v_value;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Info.pyx":263
 *         if self:
 *             value = self.Get(key)
 *         if value is not None:             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 *             return value
 */
  }

  /* "src/mpi4py/MPI.src/Info.pyx":266
 *             self.Delete(key)
 *             return value
 *         if default:             # <<<<<<<<<<<<<<
 *             value, = default
 *             return value
 */
  __pyx_t_1 = (PyTuple_GET_SIZE(__pyx_v_default) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Info.pyx":267
 *             return value
 *         if default:
 *             value, = default             # <<<<<<<<<<<<<<
 *             return value
 *         raise KeyError(key)
 */
    if (1) {
      PyObject* sequence = __pyx_v_default;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 1)) {
        if (size > 1) __Pyx_RaiseTooManyValuesError(1);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(28, 267, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __Pyx_INCREF(__pyx_t_2);
      #else
      __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
    }
    __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":268
 *         if default:
 *             value, = default
 *             return value             # <<<<<<<<<<<<<<
 *         raise KeyError(key)
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_value);
    __pyx_r = __pyx_v_value;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Info.pyx":266
 *             self.Delete(key)
 *             return value
 *         if default:             # <<<<<<<<<<<<<<
 *             value, = default
 *             return value
 */
  }

  /* "src/mpi4py/MPI.src/Info.pyx":269
 *             value, = default
 *             return value
 *         raise KeyError(key)             # <<<<<<<<<<<<<<
 * 
 *     def popitem(self) -> tuple[str, str]:
 */
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_KeyError, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(28, 269, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":258
 *             self.Set(key, value)
 * 
 *     def pop(self, key: str, *default: str) -> str:             # <<<<<<<<<<<<<<
 *         """Pop value by key."""
 *         cdef object value = None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Info.pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":271
 *         raise KeyError(key)
 * 
 *     def popitem(self) -> tuple[str, str]:             # <<<<<<<<<<<<<<
 *         """Pop first item."""
 *         if not self: raise KeyError
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_61popitem(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_60popitem, "popitem(self) -> tuple[str, str]\nPop first item.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_61popitem = {"popitem", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_61popitem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_60popitem};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_61popitem(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("popitem (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("popitem", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "popitem", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_60popitem(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_60popitem(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  int __pyx_v_nkeys;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("popitem", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":273
 *     def popitem(self) -> tuple[str, str]:
 *         """Pop first item."""
 *         if not self: raise KeyError             # <<<<<<<<<<<<<<
 *         cdef object key, value
 *         cdef int nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 273, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(__pyx_builtin_KeyError, 0, 0, 0);
    __PYX_ERR(28, 273, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":275
 *         if not self: raise KeyError
 *         cdef object key, value
 *         cdef int nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         if nkeys == 0: raise KeyError
 *         key = self.Get_nthkey(nkeys - 1)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nkeys); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(28, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Info.pyx":276
 *         cdef object key, value
 *         cdef int nkeys = self.Get_nkeys()
 *         if nkeys == 0: raise KeyError             # <<<<<<<<<<<<<<
 *         key = self.Get_nthkey(nkeys - 1)
 *         value = self.Get(key)
 */
  __pyx_t_2 = (__pyx_v_nkeys == 0);
  if (unlikely(__pyx_t_2)) {
    __Pyx_Raise(__pyx_builtin_KeyError, 0, 0, 0);
    __PYX_ERR(28, 276, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Info.pyx":277
 *         cdef int nkeys = self.Get_nkeys()
 *         if nkeys == 0: raise KeyError
 *         key = self.Get_nthkey(nkeys - 1)             # <<<<<<<<<<<<<<
 *         value = self.Get(key)
 *         self.Delete(key)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nthkey); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_long((__pyx_v_nkeys - 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_5};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_key = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":278
 *         if nkeys == 0: raise KeyError
 *         key = self.Get_nthkey(nkeys - 1)
 *         value = self.Get(key)             # <<<<<<<<<<<<<<
 *         self.Delete(key)
 *         return (key, value)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_value = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":279
 *         key = self.Get_nthkey(nkeys - 1)
 *         value = self.Get(key)
 *         self.Delete(key)             # <<<<<<<<<<<<<<
 *         return (key, value)
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Delete); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":280
 *         value = self.Get(key)
 *         self.Delete(key)
 *         return (key, value)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self) -> Self:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_key);
  __Pyx_GIVEREF(__pyx_v_key);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key)) __PYX_ERR(28, 280, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_value)) __PYX_ERR(28, 280, __pyx_L1_error);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":271
 *         raise KeyError(key)
 * 
 *     def popitem(self) -> tuple[str, str]:             # <<<<<<<<<<<<<<
 *         """Pop first item."""
 *         if not self: raise KeyError
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("mpi4py.MPI.Info.popitem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":282
 *         return (key, value)
 * 
 *     def copy(self) -> Self:             # <<<<<<<<<<<<<<
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_63copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_62copy, "copy(self) -> Self\nCopy contents.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_63copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_63copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_62copy};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_63copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_62copy(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_62copy(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":284
 *     def copy(self) -> Self:
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))             # <<<<<<<<<<<<<<
 *         return self.Dup()
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 284, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF((PyObject *)((struct PyMPIInfoObject *)__pyx_t_3));
    __pyx_r = __pyx_t_3;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":285
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))
 *         return self.Dup()             # <<<<<<<<<<<<<<
 * 
 *     def clear(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Dup); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Info.pyx":282
 *         return (key, value)
 * 
 *     def copy(self) -> Self:             # <<<<<<<<<<<<<<
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Info.pyx":287
 *         return self.Dup()
 * 
 *     def clear(self) -> None:             # <<<<<<<<<<<<<<
 *         """Clear contents."""
 *         if not self: return None
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_65clear(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Info_64clear, "clear(self) -> None\nClear contents.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Info_65clear = {"clear", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_65clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_64clear};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Info_65clear(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clear (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clear", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clear", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Info_64clear(((struct PyMPIInfoObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Info_64clear(struct PyMPIInfoObject *__pyx_v_self) {
  PyObject *__pyx_v_key = 0;
  int __pyx_v_k;
  int __pyx_v_nkeys;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clear", 1);

  /* "src/mpi4py/MPI.src/Info.pyx":289
 *     def clear(self) -> None:
 *         """Clear contents."""
 *         if not self: return None             # <<<<<<<<<<<<<<
 *         cdef object key
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(28, 289, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Info.pyx":291
 *         if not self: return None
 *         cdef object key
 *         cdef int k = 0, nkeys = self.Get_nkeys()             # <<<<<<<<<<<<<<
 *         while k < nkeys:
 *             key = self.Get_nthkey(0)
 */
  __pyx_v_k = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nkeys); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(28, 291, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nkeys = __pyx_t_7;

  /* "src/mpi4py/MPI.src/Info.pyx":292
 *         cdef object key
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         while k < nkeys:             # <<<<<<<<<<<<<<
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_k < __pyx_v_nkeys);
    if (!__pyx_t_2) break;

    /* "src/mpi4py/MPI.src/Info.pyx":293
 *         cdef int k = 0, nkeys = self.Get_nkeys()
 *         while k < nkeys:
 *             key = self.Get_nthkey(0)             # <<<<<<<<<<<<<<
 *             self.Delete(key)
 *             k += 1
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_nthkey); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_int_0};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 293, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":294
 *         while k < nkeys:
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)             # <<<<<<<<<<<<<<
 *             k += 1
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Delete); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_key};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 294, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Info.pyx":295
 *             key = self.Get_nthkey(0)
 *             self.Delete(key)
 *             k += 1             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_v_k = (__pyx_v_k + 1);
  }

  /* "src/mpi4py/MPI.src/Info.pyx":287
 *         return self.Dup()
 * 
 *     def clear(self) -> None:             # <<<<<<<<<<<<<<
 *         """Clear contents."""
 *         if not self: return None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Info.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":6
 *     """
 * 
 *     def __cinit__(self, Errhandler errhandler: Errhandler | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, errhandler)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10Errhandler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10Errhandler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(29, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(29, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(29, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler___cinit__(((struct PyMPIErrhandlerObject *)__pyx_v_self), __pyx_v_errhandler);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10Errhandler___cinit__(struct PyMPIErrhandlerObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":7
 * 
 *     def __cinit__(self, Errhandler errhandler: Errhandler | None = None):
 *         cinit(self, errhandler)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_errhandler); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(29, 7, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":6
 *     """
 * 
 *     def __cinit__(self, Errhandler errhandler: Errhandler | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, errhandler)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":9
 *         cinit(self, errhandler)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_10Errhandler_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_10Errhandler_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_10Errhandler_2__dealloc__(((struct PyMPIErrhandlerObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_10Errhandler_2__dealloc__(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":10
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(29, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":9
 *         cinit(self, errhandler)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Errhandler.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_4__richcmp__(((struct PyMPIErrhandlerObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_4__richcmp__(struct PyMPIErrhandlerObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Errhandler): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Errhandler); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Errhandler.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Errhandler): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_10Errhandler_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_10Errhandler_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_6__bool__(((struct PyMPIErrhandlerObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_10Errhandler_6__bool__(struct PyMPIErrhandlerObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":17
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Errhandler_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_8__reduce__(((struct PyMPIErrhandlerObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_8__reduce__(struct PyMPIErrhandlerObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":20
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_6handle___get__(((struct PyMPIErrhandlerObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_6handle___get__(struct PyMPIErrhandlerObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":25
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_6__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Errhandler:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Errhandler_10fromhandle, "fromhandle(cls, handle: int) -> Errhandler\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 27, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(29, 27, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":32
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Errhandler> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(29, 32, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Errhandler)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Errhandler:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":34
 *         return fromhandle(<MPI_Errhandler> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Errhandler_12free, "free(self) -> None\n\n        Call `Free` if not null.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_12free(((struct PyMPIErrhandlerObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_12free(struct PyMPIErrhandlerObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":38
 *         Call `Free` if not null.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # Freeing Errorhandlers
 */
  __pyx_t_1 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(29, 38, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":34
 *         return fromhandle(<MPI_Errhandler> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":43
 *     # ---------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an error handler.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_15Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Errhandler_14Free, "Free(self) -> None\n\n        Free an error handler.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_15Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_15Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_14Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_15Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_14Free(((struct PyMPIErrhandlerObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_14Free(struct PyMPIErrhandlerObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":47
 *         Free an error handler.
 *         """
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if self is __ERRORS_RETURN__:    self.ob_mpi = MPI_ERRORS_RETURN
 *         if self is __ERRORS_ABORT__:     self.ob_mpi = MPI_ERRORS_ABORT
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Errhandler_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(29, 47, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":48
 *         """
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )
 *         if self is __ERRORS_RETURN__:    self.ob_mpi = MPI_ERRORS_RETURN             # <<<<<<<<<<<<<<
 *         if self is __ERRORS_ABORT__:     self.ob_mpi = MPI_ERRORS_ABORT
 *         if self is __ERRORS_ARE_FATAL__: self.ob_mpi = MPI_ERRORS_ARE_FATAL
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___ERRORS_RETURN__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_ERRORS_RETURN;
  }

  /* "src/mpi4py/MPI.src/Errhandler.pyx":49
 *         CHKERR( MPI_Errhandler_free(&self.ob_mpi) )
 *         if self is __ERRORS_RETURN__:    self.ob_mpi = MPI_ERRORS_RETURN
 *         if self is __ERRORS_ABORT__:     self.ob_mpi = MPI_ERRORS_ABORT             # <<<<<<<<<<<<<<
 *         if self is __ERRORS_ARE_FATAL__: self.ob_mpi = MPI_ERRORS_ARE_FATAL
 * 
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___ERRORS_ABORT__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_ERRORS_ABORT;
  }

  /* "src/mpi4py/MPI.src/Errhandler.pyx":50
 *         if self is __ERRORS_RETURN__:    self.ob_mpi = MPI_ERRORS_RETURN
 *         if self is __ERRORS_ABORT__:     self.ob_mpi = MPI_ERRORS_ABORT
 *         if self is __ERRORS_ARE_FATAL__: self.ob_mpi = MPI_ERRORS_ARE_FATAL             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_2 = (__pyx_v_self == __pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__);
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_ERRORS_ARE_FATAL;
  }

  /* "src/mpi4py/MPI.src/Errhandler.pyx":43
 *     # ---------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an error handler.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":55
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_17py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Errhandler_16py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_17py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_17py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_16py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_17py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_16py2f(((struct PyMPIErrhandlerObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_16py2f(struct PyMPIErrhandlerObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":58
 *         """
 *         """
 *         return MPI_Errhandler_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Errhandler_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":55
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Errhandler.pyx":60
 *         return MPI_Errhandler_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Errhandler:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_19f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_10Errhandler_18f2py, "f2py(cls, arg: int) -> Errhandler\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_10Errhandler_19f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_19f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_18f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_10Errhandler_19f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 60, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(29, 60, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 60, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_10Errhandler_18f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_10Errhandler_18f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":64
 *         """
 *         """
 *         return fromhandle(MPI_Errhandler_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(29, 64, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_6__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Errhandler_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":60
 *         return MPI_Errhandler_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Errhandler:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Errhandler.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":6
 *     """
 * 
 *     def __cinit__(self, Session session: Session | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, session)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_7Session_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_7Session_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPISessionObject *__pyx_v_session = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_session,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPISessionObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_session);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 6, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(30, 6, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_session = ((struct PyMPISessionObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(30, 6, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_session), __pyx_ptype_6mpi4py_3MPI_Session, 1, "session", 0))) __PYX_ERR(30, 6, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session___cinit__(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_session);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_7Session___cinit__(struct PyMPISessionObject *__pyx_v_self, struct PyMPISessionObject *__pyx_v_session) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":7
 * 
 *     def __cinit__(self, Session session: Session | None = None):
 *         cinit(self, session)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_session); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 7, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":6
 *     """
 * 
 *     def __cinit__(self, Session session: Session | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, session)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Session.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":9
 *         cinit(self, session)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_7Session_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_7Session_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_7Session_2__dealloc__(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_7Session_2__dealloc__(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":10
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":9
 *         cinit(self, session)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Session.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Session.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Session): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_4__richcmp__(((struct PyMPISessionObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_4__richcmp__(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":13
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Session): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Session); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Session.pyx":14
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Session): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":12
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Session): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Session.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_7Session_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_7Session_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_6__bool__(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_7Session_6__bool__(struct PyMPISessionObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Session.pyx":17
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":16
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_8__reduce__(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_8__reduce__(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":20
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Session.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_6handle___get__(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_6handle___get__(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":25
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_7__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":24
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Session.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Session:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_10fromhandle, "fromhandle(cls, handle: int) -> Session\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 27, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(30, 27, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 27, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":32
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Session> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(30, 32, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Session)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Session:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":34
 *         return fromhandle(<MPI_Session> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Finalize` if not null.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_12free, "free(self) -> None\n\n        Call `Finalize` if not null.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_12free(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_12free(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":38
 *         Call `Finalize` if not null.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     #
 */
  __pyx_t_1 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 38, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":34
 *         return fromhandle(<MPI_Session> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Finalize` if not null.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Session.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_15Init(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_14Init, "Init(cls, info: Info = INFO_NULL, errhandler: Errhandler | None = None) -> Self\n\n        Create a new session.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_15Init = {"Init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_15Init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_14Init};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_15Init(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_errhandler,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__77);

    /* "src/mpi4py/MPI.src/Session.pyx":46
 *         cls,
 *         Info info: Info = INFO_NULL,
 *         Errhandler errhandler: Errhandler | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 42, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 42, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Init") < 0)) __PYX_ERR(30, 42, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Init", 0, 0, 2, __pyx_nargs); __PYX_ERR(30, 42, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(30, 45, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(30, 46, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_14Init(((PyTypeObject*)__pyx_v_cls), __pyx_v_info, __pyx_v_errhandler);

  /* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_14Init(PyTypeObject *__pyx_v_cls, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  MPI_Errhandler __pyx_v_cerrhdl;
  struct PyMPISessionObject *__pyx_v_session = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Errhandler __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Init", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":51
 *         Create a new session.
 *         """
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)             # <<<<<<<<<<<<<<
 *         cdef Session session = <Session>New(cls)
 *         CHKERR( MPI_Session_init(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Errhandler(((PyObject *)__pyx_v_errhandler)); if (unlikely(__pyx_t_1 == ((MPI_Errhandler)MPI_ERRHANDLER_NULL) && PyErr_Occurred())) __PYX_ERR(30, 51, __pyx_L1_error)
  __pyx_v_cerrhdl = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Session.pyx":52
 *         """
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Session session = <Session>New(cls)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Session_init(
 *             info.ob_mpi, cerrhdl, &session.ob_mpi) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_session = ((struct PyMPISessionObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":53
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Session session = <Session>New(cls)
 *         CHKERR( MPI_Session_init(             # <<<<<<<<<<<<<<
 *             info.ob_mpi, cerrhdl, &session.ob_mpi) )
 *         session_set_eh(session.ob_mpi)
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_init(__pyx_v_info->ob_mpi, __pyx_v_cerrhdl, (&__pyx_v_session->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(30, 53, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":55
 *         CHKERR( MPI_Session_init(
 *             info.ob_mpi, cerrhdl, &session.ob_mpi) )
 *         session_set_eh(session.ob_mpi)             # <<<<<<<<<<<<<<
 *         return session
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_session_set_eh(__pyx_v_session->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(30, 55, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":56
 *             info.ob_mpi, cerrhdl, &session.ob_mpi) )
 *         session_set_eh(session.ob_mpi)
 *         return session             # <<<<<<<<<<<<<<
 * 
 *     def Finalize(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_session);
  __pyx_r = ((PyObject *)__pyx_v_session);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_session);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":58
 *         return session
 * 
 *     def Finalize(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Finalize a session.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_17Finalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_16Finalize, "Finalize(self) -> None\n\n        Finalize a session.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_17Finalize = {"Finalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_17Finalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_16Finalize};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_17Finalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Finalize (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Finalize", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Finalize", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_16Finalize(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_16Finalize(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Finalize", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":62
 *         Finalize a session.
 *         """
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_num_psets(self, Info info: Info = INFO_NULL) -> int:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_finalize((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 62, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":58
 *         return session
 * 
 *     def Finalize(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Finalize a session.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Session.Finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":64
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )
 * 
 *     def Get_num_psets(self, Info info: Info = INFO_NULL) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Number of available process sets.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_19Get_num_psets(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_18Get_num_psets, "Get_num_psets(self, info: Info = INFO_NULL) -> int\n\n        Number of available process sets.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_19Get_num_psets = {"Get_num_psets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_19Get_num_psets, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_18Get_num_psets};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_19Get_num_psets(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_num_psets (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__78);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 64, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_num_psets") < 0)) __PYX_ERR(30, 64, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_num_psets", 0, 0, 1, __pyx_nargs); __PYX_ERR(30, 64, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_num_psets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(30, 64, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_18Get_num_psets(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_18Get_num_psets(struct PyMPISessionObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  int __pyx_v_num_psets;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_num_psets", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":68
 *         Number of available process sets.
 *         """
 *         cdef int num_psets = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Session_get_num_psets(
 *             self.ob_mpi, info.ob_mpi, &num_psets) )
 */
  __pyx_v_num_psets = -1;

  /* "src/mpi4py/MPI.src/Session.pyx":69
 *         """
 *         cdef int num_psets = -1
 *         CHKERR( MPI_Session_get_num_psets(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi, &num_psets) )
 *         return num_psets
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_get_num_psets(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_num_psets))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 69, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":71
 *         CHKERR( MPI_Session_get_num_psets(
 *             self.ob_mpi, info.ob_mpi, &num_psets) )
 *         return num_psets             # <<<<<<<<<<<<<<
 * 
 *     def Get_nth_pset(self, int n: int, Info info: Info = INFO_NULL) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_num_psets); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":64
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )
 * 
 *     def Get_num_psets(self, Info info: Info = INFO_NULL) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Number of available process sets.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_num_psets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":73
 *         return num_psets
 * 
 *     def Get_nth_pset(self, int n: int, Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Name of the *n*-th process set.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_21Get_nth_pset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_20Get_nth_pset, "Get_nth_pset(self, n: int, info: Info = INFO_NULL) -> str\n\n        Name of the *n*-th process set.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_21Get_nth_pset = {"Get_nth_pset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_21Get_nth_pset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_20Get_nth_pset};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_21Get_nth_pset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_n;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_nth_pset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_info,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__79);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_n)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 73, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 73, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_nth_pset") < 0)) __PYX_ERR(30, 73, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_n = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 73, __pyx_L3_error)
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_nth_pset", 0, 1, 2, __pyx_nargs); __PYX_ERR(30, 73, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_nth_pset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(30, 73, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_20Get_nth_pset(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_n, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_20Get_nth_pset(struct PyMPISessionObject *__pyx_v_self, int __pyx_v_n, struct PyMPIInfoObject *__pyx_v_info) {
  int __pyx_v_nlen;
  char *__pyx_v_pset_name;
  CYTHON_UNUSED PyObject *__pyx_v_unused = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_nth_pset", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":77
 *         Name of the *n*-th process set.
 *         """
 *         cdef int nlen = MPI_MAX_PSET_NAME_LEN             # <<<<<<<<<<<<<<
 *         cdef char *pset_name = NULL
 *         cdef unused = allocate(nlen+1, sizeof(char), &pset_name)
 */
  __pyx_v_nlen = MPI_MAX_PSET_NAME_LEN;

  /* "src/mpi4py/MPI.src/Session.pyx":78
 *         """
 *         cdef int nlen = MPI_MAX_PSET_NAME_LEN
 *         cdef char *pset_name = NULL             # <<<<<<<<<<<<<<
 *         cdef unused = allocate(nlen+1, sizeof(char), &pset_name)
 *         CHKERR( MPI_Session_get_nth_pset(
 */
  __pyx_v_pset_name = NULL;

  /* "src/mpi4py/MPI.src/Session.pyx":79
 *         cdef int nlen = MPI_MAX_PSET_NAME_LEN
 *         cdef char *pset_name = NULL
 *         cdef unused = allocate(nlen+1, sizeof(char), &pset_name)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Session_get_nth_pset(
 *             self.ob_mpi, info.ob_mpi, n, &nlen, pset_name) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate((__pyx_v_nlen + 1), (sizeof(char)), (&__pyx_v_pset_name))); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_unused = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":80
 *         cdef char *pset_name = NULL
 *         cdef unused = allocate(nlen+1, sizeof(char), &pset_name)
 *         CHKERR( MPI_Session_get_nth_pset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi, n, &nlen, pset_name) )
 *         return mpistr(pset_name)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_get_nth_pset(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, __pyx_v_n, (&__pyx_v_nlen), __pyx_v_pset_name)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(30, 80, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":82
 *         CHKERR( MPI_Session_get_nth_pset(
 *             self.ob_mpi, info.ob_mpi, n, &nlen, pset_name) )
 *         return mpistr(pset_name)             # <<<<<<<<<<<<<<
 * 
 *     def Get_info(self) -> Info:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_pset_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":73
 *         return num_psets
 * 
 *     def Get_nth_pset(self, int n: int, Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Name of the *n*-th process set.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_nth_pset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":84
 *         return mpistr(pset_name)
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_23Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_22Get_info, "Get_info(self) -> Info\n\n        Return the current hints for a session.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_23Get_info = {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_23Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_22Get_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_23Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_info", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_info", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_22Get_info(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_22Get_info(struct PyMPISessionObject *__pyx_v_self) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_info", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":88
 *         Return the current hints for a session.
 *         """
 *         cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Session_get_info(
 *             self.ob_mpi, &info.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":89
 *         """
 *         cdef Info info = <Info>New(Info)
 *         CHKERR( MPI_Session_get_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_get_info(__pyx_v_self->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 89, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":91
 *         CHKERR( MPI_Session_get_info(
 *             self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     def Get_pset_info(self, pset_name: str) -> Info:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":84
 *         return mpistr(pset_name)
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":93
 *         return info
 * 
 *     def Get_pset_info(self, pset_name: str) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session and process set.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_25Get_pset_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_24Get_pset_info, "Get_pset_info(self, pset_name: str) -> Info\n\n        Return the current hints for a session and process set.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_25Get_pset_info = {"Get_pset_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_25Get_pset_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_24Get_pset_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_25Get_pset_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pset_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_pset_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pset_name,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pset_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 93, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_pset_info") < 0)) __PYX_ERR(30, 93, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pset_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_pset_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 93, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_pset_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_24Get_pset_info(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_pset_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_24Get_pset_info(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_pset_name) {
  char *__pyx_v_cname;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_pset_info", 0);
  __Pyx_INCREF(__pyx_v_pset_name);

  /* "src/mpi4py/MPI.src/Session.pyx":97
 *         Return the current hints for a session and process set.
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Info info = <Info>New(Info)
 */
  __pyx_v_cname = NULL;

  /* "src/mpi4py/MPI.src/Session.pyx":98
 *         """
 *         cdef char *cname = NULL
 *         pset_name = asmpistr(pset_name, &cname)             # <<<<<<<<<<<<<<
 *         cdef Info info = <Info>New(Info)
 *         CHKERR( MPI_Session_get_pset_info(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_pset_name, (&__pyx_v_cname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_pset_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":99
 *         cdef char *cname = NULL
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Session_get_pset_info(
 *             self.ob_mpi, cname, &info.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":100
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Info info = <Info>New(Info)
 *         CHKERR( MPI_Session_get_pset_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, cname, &info.ob_mpi) )
 *         return info
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_get_pset_info(__pyx_v_self->ob_mpi, __pyx_v_cname, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 100, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":102
 *         CHKERR( MPI_Session_get_pset_info(
 *             self.ob_mpi, cname, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     def Create_group(self, pset_name: str) -> Group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":93
 *         return info
 * 
 *     def Get_pset_info(self, pset_name: str) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session and process set.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_pset_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XDECREF(__pyx_v_pset_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":104
 *         return info
 * 
 *     def Create_group(self, pset_name: str) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group from session and process set.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_27Create_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_26Create_group, "Create_group(self, pset_name: str) -> Group\n\n        Create a new group from session and process set.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_27Create_group = {"Create_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_27Create_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_26Create_group};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_27Create_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pset_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_group (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pset_name,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pset_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 104, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_group") < 0)) __PYX_ERR(30, 104, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_pset_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_group", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Create_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_26Create_group(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_pset_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_26Create_group(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_pset_name) {
  char *__pyx_v_cname;
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_group", 0);
  __Pyx_INCREF(__pyx_v_pset_name);

  /* "src/mpi4py/MPI.src/Session.pyx":108
 *         Create a new group from session and process set.
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Group group = <Group>New(Group)
 */
  __pyx_v_cname = NULL;

  /* "src/mpi4py/MPI.src/Session.pyx":109
 *         """
 *         cdef char *cname = NULL
 *         pset_name = asmpistr(pset_name, &cname)             # <<<<<<<<<<<<<<
 *         cdef Group group = <Group>New(Group)
 *         CHKERR( MPI_Group_from_session_pset(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_pset_name, (&__pyx_v_cname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_pset_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":110
 *         cdef char *cname = NULL
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Group group = <Group>New(Group)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Group_from_session_pset(
 *             self.ob_mpi, cname, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":111
 *         pset_name = asmpistr(pset_name, &cname)
 *         cdef Group group = <Group>New(Group)
 *         CHKERR( MPI_Group_from_session_pset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, cname, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_from_session_pset(__pyx_v_self->ob_mpi, __pyx_v_cname, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 111, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":113
 *         CHKERR( MPI_Group_from_session_pset(
 *             self.ob_mpi, cname, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     # Buffer Allocation and Usage
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":104
 *         return info
 * 
 *     def Create_group(self, pset_name: str) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group from session and process set.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Create_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_pset_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":118
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_29Attach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_28Attach_buffer, "Attach_buffer(self, buf: Buffer | None) -> None\n\n        Attach a user-provided buffer for sending in buffered mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_29Attach_buffer = {"Attach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_29Attach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_28Attach_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_29Attach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Attach_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 118, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Attach_buffer") < 0)) __PYX_ERR(30, 118, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_28Attach_buffer(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_28Attach_buffer(struct PyMPISessionObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  void *__pyx_v_base;
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Attach_buffer", 0);
  __Pyx_INCREF(__pyx_v_buf);

  /* "src/mpi4py/MPI.src/Session.pyx":122
 *         Attach a user-provided buffer for sending in buffered mode.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Session.pyx":123
 *         """
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Session_attach_buffer_c(
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":124
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Session_attach_buffer_c(
 *             self.ob_mpi, base, size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_attach_buffer(__pyx_v_buf, (&__pyx_v_base), (&__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_buf, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":125
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Session_attach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, base, size) )
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Session.pyx":126
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Session_attach_buffer_c(
 *             self.ob_mpi, base, size) )             # <<<<<<<<<<<<<<
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_attach_buffer_c(__pyx_v_self->ob_mpi, __pyx_v_base, __pyx_v_size)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(30, 125, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Session.pyx":125
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Session_attach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, base, size) )
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":127
 *         with nogil: CHKERR( MPI_Session_attach_buffer_c(
 *             self.ob_mpi, base, size) )
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     def Detach_buffer(self) -> Buffer | None:
 */
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_detach_buffer_set(__pyx_v_self, __pyx_v_buf); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(30, 127, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":118
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":129
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_31Detach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_30Detach_buffer, "Detach_buffer(self) -> Buffer | None\n\n        Remove an existing attached buffer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_31Detach_buffer = {"Detach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_31Detach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_30Detach_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_31Detach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Detach_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Detach_buffer", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Detach_buffer", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_30Detach_buffer(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_30Detach_buffer(struct PyMPISessionObject *__pyx_v_self) {
  void *__pyx_v_base;
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Detach_buffer", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":133
 *         Remove an existing attached buffer.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Session_detach_buffer_c(
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Session.pyx":134
 *         """
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Session_detach_buffer_c(
 *             self.ob_mpi, &base, &size) )
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":135
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Session_detach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &base, &size) )
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Session.pyx":136
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Session_detach_buffer_c(
 *             self.ob_mpi, &base, &size) )             # <<<<<<<<<<<<<<
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_detach_buffer_c(__pyx_v_self->ob_mpi, (&__pyx_v_base), (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 135, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Session.pyx":135
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Session_detach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &base, &size) )
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":137
 *         with nogil: CHKERR( MPI_Session_detach_buffer_c(
 *             self.ob_mpi, &base, &size) )
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     def Flush_buffer(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_detach_buffer_get(__pyx_v_self, __pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":129
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Detach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":139
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_33Flush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_32Flush_buffer, "Flush_buffer(self) -> None\n\n        Block until all buffered messages have been transmitted.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_33Flush_buffer = {"Flush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_33Flush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_32Flush_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_33Flush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Flush_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Flush_buffer", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Flush_buffer", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_32Flush_buffer(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_32Flush_buffer(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Flush_buffer", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":143
 *         Block until all buffered messages have been transmitted.
 *         """
 *         with nogil: CHKERR( MPI_Session_flush_buffer(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Iflush_buffer(self) -> Request:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_flush_buffer(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 143, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":139
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Session.Flush_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":145
 *         with nogil: CHKERR( MPI_Session_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_35Iflush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_34Iflush_buffer, "Iflush_buffer(self) -> Request\n\n        Nonblocking flush for buffered messages.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_35Iflush_buffer = {"Iflush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_35Iflush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_34Iflush_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_35Iflush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iflush_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Iflush_buffer", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Iflush_buffer", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_34Iflush_buffer(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_34Iflush_buffer(struct PyMPISessionObject *__pyx_v_self) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iflush_buffer", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":149
 *         Nonblocking flush for buffered messages.
 *         """
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Session_iflush_buffer(
 *             self.ob_mpi, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":150
 *         """
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Session_iflush_buffer(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request  # ~> MPI-4.1
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Session.pyx":151
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Session_iflush_buffer(
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request  # ~> MPI-4.1
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_iflush_buffer(__pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 150, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Session.pyx":150
 *         """
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Session_iflush_buffer(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request  # ~> MPI-4.1
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Session.pyx":152
 *         with nogil: CHKERR( MPI_Session_iflush_buffer(
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     # Error handling
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":145
 *         with nogil: CHKERR( MPI_Session_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Iflush_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":157
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_37Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_36Create_errhandler, "Create_errhandler(cls, errhandler_fn: Callable[[Session, int], None]) -> Errhandler\n\n        Create a new error handler for sessions.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_37Create_errhandler = {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_37Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_36Create_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_37Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_errhandler_fn = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler_fn,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 157, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_errhandler") < 0)) __PYX_ERR(30, 157, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler_fn = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 157, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_36Create_errhandler(((PyTypeObject*)__pyx_v_cls), __pyx_v_errhandler_fn);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_36Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  MPI_Session_errhandler_function *__pyx_v_fn;
  int __pyx_v_index;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_errhandler", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":165
 *         Create a new error handler for sessions.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         cdef MPI_Session_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":166
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_Session_errhandler_function *fn = NULL             # <<<<<<<<<<<<<<
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 */
  __pyx_v_fn = NULL;

  /* "src/mpi4py/MPI.src/Session.pyx":167
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_Session_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)             # <<<<<<<<<<<<<<
 *         try:
 *             CHKERR( MPI_Session_create_errhandler(fn, &errhandler.ob_mpi) )
 */
  __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_new(__pyx_v_errhandler_fn, (&__pyx_v_fn)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 167, __pyx_L1_error)
  __pyx_v_index = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Session.pyx":168
 *         cdef MPI_Session_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Session_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Session.pyx":169
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 *             CHKERR( MPI_Session_create_errhandler(fn, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_create_errhandler(__pyx_v_fn, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 169, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Session.pyx":168
 *         cdef MPI_Session_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Session_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Session.pyx":170
 *         try:
 *             CHKERR( MPI_Session_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Session.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(30, 170, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/Session.pyx":171
 *             CHKERR( MPI_Session_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             raise                   # ~> uncovered
 *         return errhandler
 */
      __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_errhdl_del((&__pyx_v_index), __pyx_v_fn); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 171, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/Session.pyx":172
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_7);
      __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_7 = 0; 
      __PYX_ERR(30, 172, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/Session.pyx":168
 *         cdef MPI_Session_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Session_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/Session.pyx":173
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Get_errhandler(self) -> Errhandler:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":157
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":175
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a session.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_39Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_38Get_errhandler, "Get_errhandler(self) -> Errhandler\n\n        Get the error handler for a session.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_39Get_errhandler = {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_39Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_38Get_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_39Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_errhandler", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_errhandler", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_38Get_errhandler(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_38Get_errhandler(struct PyMPISessionObject *__pyx_v_self) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_errhandler", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":179
 *         Get the error handler for a session.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Session_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":180
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_Session_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_get_errhandler(__pyx_v_self->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(30, 180, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":181
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_Session_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":175
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a session.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.Get_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":183
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a session.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_41Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_40Set_errhandler, "Set_errhandler(self, errhandler: Errhandler) -> None\n\n        Set the error handler for a session.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_41Set_errhandler = {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_41Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_40Set_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_41Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 183, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_errhandler") < 0)) __PYX_ERR(30, 183, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(30, 183, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_40Set_errhandler(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_errhandler);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_40Set_errhandler(struct PyMPISessionObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_errhandler", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":187
 *         Set the error handler for a session.
 *         """
 *         CHKERR( MPI_Session_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_set_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errhandler->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 187, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":183
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a session.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Session.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":189
 *         CHKERR( MPI_Session_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a session.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_43Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_42Call_errhandler, "Call_errhandler(self, errorcode: int) -> None\n\n        Call the error handler installed on a session.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_43Call_errhandler = {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_43Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_42Call_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_43Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Call_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 189, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Call_errhandler") < 0)) __PYX_ERR(30, 189, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 189, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 189, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_42Call_errhandler(((struct PyMPISessionObject *)__pyx_v_self), __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_42Call_errhandler(struct PyMPISessionObject *__pyx_v_self, int __pyx_v_errorcode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Call_errhandler", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":193
 *         Call the error handler installed on a session.
 *         """
 *         CHKERR( MPI_Session_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Session_call_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(30, 193, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":189
 *         CHKERR( MPI_Session_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a session.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Session.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":198
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_45py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_44py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_45py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_45py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_44py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_45py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_44py2f(((struct PyMPISessionObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_44py2f(struct PyMPISessionObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":201
 *         """
 *         """
 *         return MPI_Session_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Session_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":198
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Session.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Session.pyx":203
 *         return MPI_Session_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Session:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_47f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_7Session_46f2py, "f2py(cls, arg: int) -> Session\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_7Session_47f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_47f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_46f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_7Session_47f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 203, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(30, 203, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 203, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Session.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_7Session_46f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_7Session_46f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Session.pyx":207
 *         """
 *         """
 *         return fromhandle(MPI_Session_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(30, 207, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_7__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Session_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Session.pyx":203
 *         return MPI_Session_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Session:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Session.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":39
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, comm)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Comm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Comm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPICommObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 39, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(31, 39, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 39, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(31, 39, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm___cinit__(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Comm___cinit__(struct PyMPICommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":40
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         cinit(self, comm)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_comm); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 40, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":39
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, comm)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":42
 *         cinit(self, comm)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_4Comm_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_4Comm_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_4Comm_2__dealloc__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_4Comm_2__dealloc__(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":43
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":42
 *         cinit(self, comm)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Comm.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Comm.pyx":45
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Comm): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_4__richcmp__(((struct PyMPICommObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4__richcmp__(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":46
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Comm): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Comm); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":47
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Comm): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":45
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Comm): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":49
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Comm_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Comm_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_6__bool__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Comm_6__bool__(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Comm.pyx":50
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":49
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":52
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_8__reduce__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8__reduce__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":53
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":52
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":57
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_6handle___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_6handle___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":58
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_8__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":57
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":60
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Comm:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_10fromhandle, "fromhandle(cls, handle: int) -> Comm\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 60, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(31, 60, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 60, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":65
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Comm> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(31, 65, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Comm)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":60
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Comm:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":67
 *         return fromhandle(<MPI_Comm> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_12free, "free(self) -> None\n\n        Call `Free` if not null or predefined.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_12free(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_12free(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":71
 *         Call `Free` if not null or predefined.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # Group
 */
  __pyx_t_1 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 71, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":67
 *         return fromhandle(<MPI_Comm> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":76
 *     # -----
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group associated with a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_15Get_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_14Get_group, "Get_group(self) -> Group\n\n        Access the group associated with a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_15Get_group = {"Get_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_15Get_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_14Get_group};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_15Get_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_group (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_group", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_group", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_14Get_group(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_14Get_group(struct PyMPICommObject *__pyx_v_self) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_group", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":80
 *         Access the group associated with a communicator.
 *         """
 *         cdef Group group = <Group>New(Group)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":81
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_group(__pyx_v_self->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 81, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":82
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_group(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":76
 *     # -----
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group associated with a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":86
 *     property group:
 *         """Group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_5group_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_5group_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_5group___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_5group___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":87
 *         """Group."""
 *         def __get__(self) -> Group:
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Accessors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":86
 *     property group:
 *         """Group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":92
 *     # ----------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_17Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_16Get_size, "Get_size(self) -> int\n\n        Return the number of processes in a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_17Get_size = {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_17Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_16Get_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_17Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_16Get_size(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_16Get_size(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":96
 *         Return the number of processes in a communicator.
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "src/mpi4py/MPI.src/Comm.pyx":97
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_self->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 97, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":98
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":92
 *     # ----------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":102
 *     property size:
 *         """Number of processes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_4size___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4size___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":103
 *         """Number of processes."""
 *         def __get__(self) -> int:
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     def Get_rank(self) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":102
 *     property size:
 *         """Number of processes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":105
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_19Get_rank(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_18Get_rank, "Get_rank(self) -> int\n\n        Return the rank of this process in a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_19Get_rank = {"Get_rank", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_19Get_rank, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_18Get_rank};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_19Get_rank(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_rank (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_rank", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_rank", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_18Get_rank(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_18Get_rank(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_rank", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":109
 *         Return the rank of this process in a communicator.
 *         """
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":110
 *         """
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_self->ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 110, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":111
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     property rank:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":105
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":115
 *     property rank:
 *         """Rank of this process."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_rank()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4rank_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4rank_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_4rank___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4rank___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":116
 *         """Rank of this process."""
 *         def __get__(self) -> int:
 *             return self.Get_rank()             # <<<<<<<<<<<<<<
 * 
 *     def Compare(self, Comm comm: Comm) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":115
 *     property rank:
 *         """Rank of this process."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_rank()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.rank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":118
 *             return self.Get_rank()
 * 
 *     def Compare(self, Comm comm: Comm) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_21Compare(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_20Compare, "Compare(self, comm: Comm) -> int\n\n        Compare two communicators.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_21Compare = {"Compare", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_21Compare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_20Compare};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_21Compare(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Compare (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 118, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Compare") < 0)) __PYX_ERR(31, 118, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Compare", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 0, "comm", 0))) __PYX_ERR(31, 118, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_20Compare(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_20Compare(struct PyMPICommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Compare", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":122
 *         Compare two communicators.
 *         """
 *         cdef int flag = MPI_UNEQUAL             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_compare(
 *             self.ob_mpi, comm.ob_mpi, &flag) )
 */
  __pyx_v_flag = MPI_UNEQUAL;

  /* "src/mpi4py/MPI.src/Comm.pyx":123
 *         """
 *         cdef int flag = MPI_UNEQUAL
 *         with nogil: CHKERR( MPI_Comm_compare(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, comm.ob_mpi, &flag) )
 *         return flag
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":124
 *         cdef int flag = MPI_UNEQUAL
 *         with nogil: CHKERR( MPI_Comm_compare(
 *             self.ob_mpi, comm.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_compare(__pyx_v_self->ob_mpi, __pyx_v_comm->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 123, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":123
 *         """
 *         cdef int flag = MPI_UNEQUAL
 *         with nogil: CHKERR( MPI_Comm_compare(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, comm.ob_mpi, &flag) )
 *         return flag
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":125
 *         with nogil: CHKERR( MPI_Comm_compare(
 *             self.ob_mpi, comm.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_flag); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":118
 *             return self.Get_rank()
 * 
 *     def Compare(self, Comm comm: Comm) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Compare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":130
 *     # -------------------------
 * 
 *     def Clone(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Clone an existing communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_23Clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_22Clone, "Clone(self) -> Self\n\n        Clone an existing communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_23Clone = {"Clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_23Clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_22Clone};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_23Clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Clone (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Clone", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_22Clone(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_22Clone(struct PyMPICommObject *__pyx_v_self) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Clone", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":134
 *         Clone an existing communicator.
 *         """
 *         cdef Comm comm = <Comm>New(type(self))             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":135
 *         """
 *         cdef Comm comm = <Comm>New(type(self))
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(__pyx_v_self->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 135, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":136
 *         cdef Comm comm = <Comm>New(type(self))
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 136, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":137
 *         with nogil: CHKERR( MPI_Comm_dup(self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Dup(self, Info info: Info | None = None) -> Self:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":130
 *     # -------------------------
 * 
 *     def Clone(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Clone an existing communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":139
 *         return comm
 * 
 *     def Dup(self, Info info: Info | None = None) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_25Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_24Dup, "Dup(self, info: Info | None = None) -> Self\n\n        Duplicate a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_25Dup = {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_25Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_24Dup};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_25Dup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Dup (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIInfoObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 139, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Dup") < 0)) __PYX_ERR(31, 139, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Dup", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 139, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) __PYX_ERR(31, 139, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_24Dup(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_24Dup(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  MPI_Info __pyx_v_cinfo;
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Info __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":143
 *         Duplicate a communicator.
 *         """
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef Comm comm = <Comm>New(type(self))
 *         if info is None:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_1 == ((MPI_Info)MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(31, 143, __pyx_L1_error)
  __pyx_v_cinfo = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":144
 *         """
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Comm comm = <Comm>New(type(self))             # <<<<<<<<<<<<<<
 *         if info is None:
 *             with nogil: CHKERR( MPI_Comm_dup(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":145
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Comm comm = <Comm>New(type(self))
 *         if info is None:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Comm_dup(
 *                 self.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_info) == Py_None);
  if (__pyx_t_4) {

    /* "src/mpi4py/MPI.src/Comm.pyx":146
 *         cdef Comm comm = <Comm>New(type(self))
 *         if info is None:
 *             with nogil: CHKERR( MPI_Comm_dup(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, &comm.ob_mpi) )
 *         else:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Comm.pyx":147
 *         if info is None:
 *             with nogil: CHKERR( MPI_Comm_dup(
 *                 self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         else:
 *             with nogil: CHKERR( MPI_Comm_dup_with_info(
 */
          __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup(__pyx_v_self->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 146, __pyx_L5_error)
        }

        /* "src/mpi4py/MPI.src/Comm.pyx":146
 *         cdef Comm comm = <Comm>New(type(self))
 *         if info is None:
 *             with nogil: CHKERR( MPI_Comm_dup(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, &comm.ob_mpi) )
 *         else:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L6;
          }
          __pyx_L5_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L1_error;
          }
          __pyx_L6:;
        }
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":145
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Comm comm = <Comm>New(type(self))
 *         if info is None:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Comm_dup(
 *                 self.ob_mpi, &comm.ob_mpi) )
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":149
 *                 self.ob_mpi, &comm.ob_mpi) )
 *         else:
 *             with nogil: CHKERR( MPI_Comm_dup_with_info(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, cinfo, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  /*else*/ {
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Comm.pyx":150
 *         else:
 *             with nogil: CHKERR( MPI_Comm_dup_with_info(
 *                 self.ob_mpi, cinfo, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
          __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup_with_info(__pyx_v_self->ob_mpi, __pyx_v_cinfo, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 149, __pyx_L8_error)
        }

        /* "src/mpi4py/MPI.src/Comm.pyx":149
 *                 self.ob_mpi, &comm.ob_mpi) )
 *         else:
 *             with nogil: CHKERR( MPI_Comm_dup_with_info(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, cinfo, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L9;
          }
          __pyx_L8_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L1_error;
          }
          __pyx_L9:;
        }
    }
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":151
 *             with nogil: CHKERR( MPI_Comm_dup_with_info(
 *                 self.ob_mpi, cinfo, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 151, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":152
 *                 self.ob_mpi, cinfo, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Dup_with_info(self, Info info: Info) -> Self:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":139
 *         return comm
 * 
 *     def Dup(self, Info info: Info | None = None) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Dup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":154
 *         return comm
 * 
 *     def Dup_with_info(self, Info info: Info) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator with hints.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_27Dup_with_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_26Dup_with_info, "Dup_with_info(self, info: Info) -> Self\n\n        Duplicate a communicator with hints.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_27Dup_with_info = {"Dup_with_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_27Dup_with_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_26Dup_with_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_27Dup_with_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Dup_with_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 154, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Dup_with_info") < 0)) __PYX_ERR(31, 154, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Dup_with_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 154, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Dup_with_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 154, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_26Dup_with_info(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_26Dup_with_info(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Dup_with_info", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":158
 *         Duplicate a communicator with hints.
 *         """
 *         cdef Comm comm = <Comm>New(type(self))             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_dup_with_info(
 *             self.ob_mpi, info.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":159
 *         """
 *         cdef Comm comm = <Comm>New(type(self))
 *         with nogil: CHKERR( MPI_Comm_dup_with_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":160
 *         cdef Comm comm = <Comm>New(type(self))
 *         with nogil: CHKERR( MPI_Comm_dup_with_info(
 *             self.ob_mpi, info.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_dup_with_info(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 159, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":159
 *         """
 *         cdef Comm comm = <Comm>New(type(self))
 *         with nogil: CHKERR( MPI_Comm_dup_with_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":161
 *         with nogil: CHKERR( MPI_Comm_dup_with_info(
 *             self.ob_mpi, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 161, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":162
 *             self.ob_mpi, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Idup(self, Info info: Info | None = None) -> tuple[Self, Request]:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":154
 *         return comm
 * 
 *     def Dup_with_info(self, Info info: Info) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator with hints.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Dup_with_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":164
 *         return comm
 * 
 *     def Idup(self, Info info: Info | None = None) -> tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_29Idup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_28Idup, "Idup(self, info: Info | None = None) -> tuple[Self, Request]\n\n        Nonblocking duplicate a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_29Idup = {"Idup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_29Idup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_28Idup};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_29Idup(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Idup (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIInfoObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 164, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Idup") < 0)) __PYX_ERR(31, 164, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Idup", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 164, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Idup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 1, "info", 0))) __PYX_ERR(31, 164, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_28Idup(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_28Idup(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  MPI_Info __pyx_v_cinfo;
  struct PyMPICommObject *__pyx_v_comm = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Info __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Idup", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":168
 *         Nonblocking duplicate a communicator.
 *         """
 *         cdef MPI_Info cinfo = arg_Info(info)             # <<<<<<<<<<<<<<
 *         cdef Comm comm = <Comm>New(type(self))
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_1 == ((MPI_Info)MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(31, 168, __pyx_L1_error)
  __pyx_v_cinfo = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":169
 *         """
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Comm comm = <Comm>New(type(self))             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         if info is None:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":170
 *         cdef MPI_Info cinfo = arg_Info(info)
 *         cdef Comm comm = <Comm>New(type(self))
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         if info is None:
 *             with nogil: CHKERR( MPI_Comm_idup(
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":171
 *         cdef Comm comm = <Comm>New(type(self))
 *         cdef Request request = <Request>New(Request)
 *         if info is None:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Comm_idup(
 *                 self.ob_mpi,
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_info) == Py_None);
  if (__pyx_t_4) {

    /* "src/mpi4py/MPI.src/Comm.pyx":172
 *         cdef Request request = <Request>New(Request)
 *         if info is None:
 *             with nogil: CHKERR( MPI_Comm_idup(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi,
 *                 &comm.ob_mpi, &request.ob_mpi) )
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Comm.pyx":174
 *             with nogil: CHKERR( MPI_Comm_idup(
 *                 self.ob_mpi,
 *                 &comm.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         else:
 *             with nogil: CHKERR( MPI_Comm_idup_with_info(
 */
          __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_idup(__pyx_v_self->ob_mpi, (&__pyx_v_comm->ob_mpi), (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 172, __pyx_L5_error)
        }

        /* "src/mpi4py/MPI.src/Comm.pyx":172
 *         cdef Request request = <Request>New(Request)
 *         if info is None:
 *             with nogil: CHKERR( MPI_Comm_idup(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi,
 *                 &comm.ob_mpi, &request.ob_mpi) )
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L6;
          }
          __pyx_L5_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L1_error;
          }
          __pyx_L6:;
        }
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":171
 *         cdef Comm comm = <Comm>New(type(self))
 *         cdef Request request = <Request>New(Request)
 *         if info is None:             # <<<<<<<<<<<<<<
 *             with nogil: CHKERR( MPI_Comm_idup(
 *                 self.ob_mpi,
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":176
 *                 &comm.ob_mpi, &request.ob_mpi) )
 *         else:
 *             with nogil: CHKERR( MPI_Comm_idup_with_info(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, cinfo,
 *                 &comm.ob_mpi, &request.ob_mpi) )
 */
  /*else*/ {
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        _save = NULL;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/mpi4py/MPI.src/Comm.pyx":178
 *             with nogil: CHKERR( MPI_Comm_idup_with_info(
 *                 self.ob_mpi, cinfo,
 *                 &comm.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return (comm, request)
 */
          __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_idup_with_info(__pyx_v_self->ob_mpi, __pyx_v_cinfo, (&__pyx_v_comm->ob_mpi), (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 176, __pyx_L8_error)
        }

        /* "src/mpi4py/MPI.src/Comm.pyx":176
 *                 &comm.ob_mpi, &request.ob_mpi) )
 *         else:
 *             with nogil: CHKERR( MPI_Comm_idup_with_info(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, cinfo,
 *                 &comm.ob_mpi, &request.ob_mpi) )
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L9;
          }
          __pyx_L8_error: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L1_error;
          }
          __pyx_L9:;
        }
    }
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":179
 *                 self.ob_mpi, cinfo,
 *                 &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return (comm, request)
 * 
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 179, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":180
 *                 &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return (comm, request)             # <<<<<<<<<<<<<<
 * 
 *     def Idup_with_info(self, Info info: Info) ->  tuple[Self, Request]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __Pyx_GIVEREF((PyObject *)__pyx_v_comm);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_comm))) __PYX_ERR(31, 180, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __Pyx_GIVEREF((PyObject *)__pyx_v_request);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_request))) __PYX_ERR(31, 180, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":164
 *         return comm
 * 
 *     def Idup(self, Info info: Info | None = None) -> tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Idup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":182
 *         return (comm, request)
 * 
 *     def Idup_with_info(self, Info info: Info) ->  tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator with hints.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_31Idup_with_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_30Idup_with_info, "Idup_with_info(self, info: Info) -> tuple[Self, Request]\n\n        Nonblocking duplicate a communicator with hints.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_31Idup_with_info = {"Idup_with_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_31Idup_with_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_30Idup_with_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_31Idup_with_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Idup_with_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 182, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Idup_with_info") < 0)) __PYX_ERR(31, 182, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Idup_with_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 182, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Idup_with_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 182, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_30Idup_with_info(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_30Idup_with_info(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Idup_with_info", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":186
 *         Nonblocking duplicate a communicator with hints.
 *         """
 *         cdef Comm comm = <Comm>New(type(self))             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_idup_with_info(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(((PyTypeObject*)((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":187
 *         """
 *         cdef Comm comm = <Comm>New(type(self))
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_idup_with_info(
 *             self.ob_mpi, info.ob_mpi,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":188
 *         cdef Comm comm = <Comm>New(type(self))
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_idup_with_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi,
 *             &comm.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":190
 *         with nogil: CHKERR( MPI_Comm_idup_with_info(
 *             self.ob_mpi, info.ob_mpi,
 *             &comm.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return (comm, request)
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_idup_with_info(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_comm->ob_mpi), (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 188, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":188
 *         cdef Comm comm = <Comm>New(type(self))
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_idup_with_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi,
 *             &comm.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":191
 *             self.ob_mpi, info.ob_mpi,
 *             &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return (comm, request)
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 191, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":192
 *             &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return (comm, request)             # <<<<<<<<<<<<<<
 * 
 *     def Create(self, Group group: Group) -> Comm:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __Pyx_GIVEREF((PyObject *)__pyx_v_comm);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_comm))) __PYX_ERR(31, 192, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __Pyx_GIVEREF((PyObject *)__pyx_v_request);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_request))) __PYX_ERR(31, 192, __pyx_L1_error);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":182
 *         return (comm, request)
 * 
 *     def Idup_with_info(self, Info info: Info) ->  tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator with hints.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Idup_with_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":194
 *         return (comm, request)
 * 
 *     def Create(self, Group group: Group) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_33Create(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_32Create, "Create(self, group: Group) -> Comm\n\n        Create communicator from group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_33Create = {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_33Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_32Create};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_33Create(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 194, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create") < 0)) __PYX_ERR(31, 194, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 194, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(31, 194, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_32Create(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_group);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_32Create(struct PyMPICommObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group) {
  PyTypeObject *__pyx_v_cls = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":198
 *         Create communicator from group.
 *         """
 *         cdef type cls = Comm             # <<<<<<<<<<<<<<
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_ptype_6mpi4py_3MPI_Comm;

  /* "src/mpi4py/MPI.src/Comm.pyx":199
 *         """
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm             # <<<<<<<<<<<<<<
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intracomm);
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":200
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm             # <<<<<<<<<<<<<<
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_create(
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intercomm);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":201
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":202
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":203
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create(__pyx_v_self->ob_mpi, __pyx_v_group->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 202, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":202
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":204
 *         with nogil: CHKERR( MPI_Comm_create(
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 204, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":205
 *             self.ob_mpi, group.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Split(self, int color: int = 0, int key: int = 0) -> Comm:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":194
 *         return (comm, request)
 * 
 *     def Create(self, Group group: Group) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":207
 *         return comm
 * 
 *     def Split(self, int color: int = 0, int key: int = 0) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Split communicator by color and key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_35Split(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_34Split, "Split(self, color: int = 0, key: int = 0) -> Comm\n\n        Split communicator by color and key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_35Split = {"Split", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_35Split, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_34Split};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_35Split(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_color;
  int __pyx_v_key;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Split (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_color,&__pyx_n_s_key,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_color);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 207, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 207, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Split") < 0)) __PYX_ERR(31, 207, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_color = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_color == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 207, __pyx_L3_error)
    } else {
      __pyx_v_color = ((int)0);
    }
    if (values[1]) {
      __pyx_v_key = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 207, __pyx_L3_error)
    } else {
      __pyx_v_key = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Split", 0, 0, 2, __pyx_nargs); __PYX_ERR(31, 207, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Split", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_34Split(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_color, __pyx_v_key);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_34Split(struct PyMPICommObject *__pyx_v_self, int __pyx_v_color, int __pyx_v_key) {
  PyTypeObject *__pyx_v_cls = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Split", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":211
 *         Split communicator by color and key.
 *         """
 *         cdef type cls = Comm             # <<<<<<<<<<<<<<
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_ptype_6mpi4py_3MPI_Comm;

  /* "src/mpi4py/MPI.src/Comm.pyx":212
 *         """
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm             # <<<<<<<<<<<<<<
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intracomm);
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":213
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm             # <<<<<<<<<<<<<<
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split(
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intercomm);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":214
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":215
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":216
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_split(__pyx_v_self->ob_mpi, __pyx_v_color, __pyx_v_key, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 215, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":215
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":217
 *         with nogil: CHKERR( MPI_Comm_split(
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 217, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":218
 *             self.ob_mpi, color, key, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Split_type(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":207
 *         return comm
 * 
 *     def Split(self, int color: int = 0, int key: int = 0) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Split communicator by color and key.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Split", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":220
 *         return comm
 * 
 *     def Split_type(             # <<<<<<<<<<<<<<
 *         self,
 *         int split_type: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_37Split_type(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_36Split_type, "Split_type(self, split_type: int, key: int = 0, info: Info = INFO_NULL) -> Comm\n\n        Split communicator by split type.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_37Split_type = {"Split_type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_37Split_type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_36Split_type};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_37Split_type(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_split_type;
  int __pyx_v_key;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Split_type (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_split_type,&__pyx_n_s_key,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__80);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_split_type)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 220, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_key);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 220, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 220, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Split_type") < 0)) __PYX_ERR(31, 220, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_split_type = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_split_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 222, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_key = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_key == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 223, __pyx_L3_error)
    } else {
      __pyx_v_key = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Split_type", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 220, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Split_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 224, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_36Split_type(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_split_type, __pyx_v_key, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_36Split_type(struct PyMPICommObject *__pyx_v_self, int __pyx_v_split_type, int __pyx_v_key, struct PyMPIInfoObject *__pyx_v_info) {
  PyTypeObject *__pyx_v_cls = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Split_type", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":229
 *         Split communicator by split type.
 *         """
 *         cdef type cls = Comm             # <<<<<<<<<<<<<<
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_ptype_6mpi4py_3MPI_Comm;

  /* "src/mpi4py/MPI.src/Comm.pyx":230
 *         """
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm             # <<<<<<<<<<<<<<
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intracomm);
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":231
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm             # <<<<<<<<<<<<<<
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split_type(
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intercomm);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":232
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_split_type(
 *             self.ob_mpi, split_type, key, info.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":233
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split_type(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, split_type, key, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":234
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split_type(
 *             self.ob_mpi, split_type, key, info.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_split_type(__pyx_v_self->ob_mpi, __pyx_v_split_type, __pyx_v_key, __pyx_v_info->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 233, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":233
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_split_type(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, split_type, key, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":235
 *         with nogil: CHKERR( MPI_Comm_split_type(
 *             self.ob_mpi, split_type, key, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 235, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":236
 *             self.ob_mpi, split_type, key, info.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Destructor
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":220
 *         return comm
 * 
 *     def Split_type(             # <<<<<<<<<<<<<<
 *         self,
 *         int split_type: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Split_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":241
 *     # -----------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_39Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_38Free, "Free(self) -> None\n\n        Free a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_39Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_39Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_38Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_39Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_38Free(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_38Free(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":245
 *         Free a communicator.
 *         """
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         if self is __COMM_SELF__:  self.ob_mpi = MPI_COMM_SELF
 *         if self is __COMM_WORLD__: self.ob_mpi = MPI_COMM_WORLD
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 245, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":246
 *         """
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )
 *         if self is __COMM_SELF__:  self.ob_mpi = MPI_COMM_SELF             # <<<<<<<<<<<<<<
 *         if self is __COMM_WORLD__: self.ob_mpi = MPI_COMM_WORLD
 * 
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self) == ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__));
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_COMM_SELF;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":247
 *         with nogil: CHKERR( MPI_Comm_free(&self.ob_mpi) )
 *         if self is __COMM_SELF__:  self.ob_mpi = MPI_COMM_SELF
 *         if self is __COMM_WORLD__: self.ob_mpi = MPI_COMM_WORLD             # <<<<<<<<<<<<<<
 * 
 *     # Process Fault Tolerance
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_self) == ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__));
  if (__pyx_t_2) {
    __pyx_v_self->ob_mpi = MPI_COMM_WORLD;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":241
 *     # -----------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communicator.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":252
 *     # -----------------------
 * 
 *     def Revoke(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Revoke a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_41Revoke(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_40Revoke, "Revoke(self) -> None\n\n        Revoke a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_41Revoke = {"Revoke", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_41Revoke, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_40Revoke};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_41Revoke(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Revoke (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Revoke", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Revoke", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_40Revoke(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_40Revoke(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Revoke", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":256
 *         Revoke a communicator.
 *         """
 *         with nogil: CHKERR( MPI_Comm_revoke(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Is_revoked(self) -> bool:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_revoke(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 256, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":252
 *     # -----------------------
 * 
 *     def Revoke(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Revoke a communicator.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Revoke", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":258
 *         with nogil: CHKERR( MPI_Comm_revoke(self.ob_mpi) )
 * 
 *     def Is_revoked(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Indicate whether the communicator has been revoked.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_43Is_revoked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_42Is_revoked, "Is_revoked(self) -> bool\n\n        Indicate whether the communicator has been revoked.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_43Is_revoked = {"Is_revoked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_43Is_revoked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_42Is_revoked};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_43Is_revoked(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_revoked (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_revoked", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_revoked", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_42Is_revoked(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_42Is_revoked(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_revoked", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":262
 *         Indicate whether the communicator has been revoked.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_is_revoked(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":263
 *         """
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_Comm_is_revoked(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_is_revoked(__pyx_v_self->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 263, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":264
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_Comm_is_revoked(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     def Get_failed(self) -> Group:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":258
 *         with nogil: CHKERR( MPI_Comm_revoke(self.ob_mpi) )
 * 
 *     def Is_revoked(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Indicate whether the communicator has been revoked.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Is_revoked", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":266
 *         return <bint>flag
 * 
 *     def Get_failed(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Extract the group of failed processes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_45Get_failed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_44Get_failed, "Get_failed(self) -> Group\n\n        Extract the group of failed processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_45Get_failed = {"Get_failed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_45Get_failed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_44Get_failed};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_45Get_failed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_failed (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_failed", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_failed", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_44Get_failed(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_44Get_failed(struct PyMPICommObject *__pyx_v_self) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_failed", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":270
 *         Extract the group of failed processes.
 *         """
 *         cdef Group group = <Group>New(Group)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_get_failed(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":271
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_get_failed(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_failed(__pyx_v_self->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 271, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":272
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_get_failed(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     def Ack_failed(self, num_to_ack: int | None = None) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":266
 *         return <bint>flag
 * 
 *     def Get_failed(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Extract the group of failed processes.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_failed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":274
 *         return group
 * 
 *     def Ack_failed(self, num_to_ack: int | None = None) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Acknowledge failures on a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_47Ack_failed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_46Ack_failed, "Ack_failed(self, num_to_ack: int | None = None) -> int\n\n        Acknowledge failures on a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_47Ack_failed = {"Ack_failed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_47Ack_failed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_46Ack_failed};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_47Ack_failed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_num_to_ack = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ack_failed (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_num_to_ack,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_num_to_ack);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 274, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ack_failed") < 0)) __PYX_ERR(31, 274, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_num_to_ack = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ack_failed", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 274, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ack_failed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_46Ack_failed(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_num_to_ack);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_46Ack_failed(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_num_to_ack) {
  int __pyx_v_num_acked;
  int __pyx_v_c_num_to_ack;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ack_failed", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":278
 *         Acknowledge failures on a communicator.
 *         """
 *         cdef int num_acked = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         cdef int c_num_to_ack = MPI_UNDEFINED
 *         if num_to_ack is not None:
 */
  __pyx_v_num_acked = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":279
 *         """
 *         cdef int num_acked = MPI_UNDEFINED
 *         cdef int c_num_to_ack = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         if num_to_ack is not None:
 *             c_num_to_ack = num_to_ack
 */
  __pyx_v_c_num_to_ack = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":280
 *         cdef int num_acked = MPI_UNDEFINED
 *         cdef int c_num_to_ack = MPI_UNDEFINED
 *         if num_to_ack is not None:             # <<<<<<<<<<<<<<
 *             c_num_to_ack = num_to_ack
 *         else:
 */
  __pyx_t_1 = (__pyx_v_num_to_ack != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":281
 *         cdef int c_num_to_ack = MPI_UNDEFINED
 *         if num_to_ack is not None:
 *             c_num_to_ack = num_to_ack             # <<<<<<<<<<<<<<
 *         else:
 *             CHKERR( MPI_Comm_size(self.ob_mpi, &c_num_to_ack) )
 */
    __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_num_to_ack); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 281, __pyx_L1_error)
    __pyx_v_c_num_to_ack = __pyx_t_2;

    /* "src/mpi4py/MPI.src/Comm.pyx":280
 *         cdef int num_acked = MPI_UNDEFINED
 *         cdef int c_num_to_ack = MPI_UNDEFINED
 *         if num_to_ack is not None:             # <<<<<<<<<<<<<<
 *             c_num_to_ack = num_to_ack
 *         else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":283
 *             c_num_to_ack = num_to_ack
 *         else:
 *             CHKERR( MPI_Comm_size(self.ob_mpi, &c_num_to_ack) )             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_ack_failed(
 *             self.ob_mpi, c_num_to_ack, &num_acked) )
 */
  /*else*/ {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_size(__pyx_v_self->ob_mpi, (&__pyx_v_c_num_to_ack))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 283, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":284
 *         else:
 *             CHKERR( MPI_Comm_size(self.ob_mpi, &c_num_to_ack) )
 *         with nogil: CHKERR( MPI_Comm_ack_failed(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, c_num_to_ack, &num_acked) )
 *         return num_acked
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":285
 *             CHKERR( MPI_Comm_size(self.ob_mpi, &c_num_to_ack) )
 *         with nogil: CHKERR( MPI_Comm_ack_failed(
 *             self.ob_mpi, c_num_to_ack, &num_acked) )             # <<<<<<<<<<<<<<
 *         return num_acked
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_ack_failed(__pyx_v_self->ob_mpi, __pyx_v_c_num_to_ack, (&__pyx_v_num_acked))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 284, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":284
 *         else:
 *             CHKERR( MPI_Comm_size(self.ob_mpi, &c_num_to_ack) )
 *         with nogil: CHKERR( MPI_Comm_ack_failed(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, c_num_to_ack, &num_acked) )
 *         return num_acked
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":286
 *         with nogil: CHKERR( MPI_Comm_ack_failed(
 *             self.ob_mpi, c_num_to_ack, &num_acked) )
 *         return num_acked             # <<<<<<<<<<<<<<
 * 
 *     def Agree(self, int flag: int) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_num_acked); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":274
 *         return group
 * 
 *     def Ack_failed(self, num_to_ack: int | None = None) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Acknowledge failures on a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ack_failed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":288
 *         return num_acked
 * 
 *     def Agree(self, int flag: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking agreement.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_49Agree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_48Agree, "Agree(self, flag: int) -> int\n\n        Blocking agreement.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_49Agree = {"Agree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_49Agree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_48Agree};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_49Agree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_flag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Agree (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flag)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 288, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Agree") < 0)) __PYX_ERR(31, 288, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_flag = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 288, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Agree", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 288, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Agree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_48Agree(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_flag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_48Agree(struct PyMPICommObject *__pyx_v_self, int __pyx_v_flag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Agree", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":292
 *         Blocking agreement.
 *         """
 *         with nogil: CHKERR( MPI_Comm_agree(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_agree(__pyx_v_self->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 292, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":293
 *         """
 *         with nogil: CHKERR( MPI_Comm_agree(self.ob_mpi, &flag) )
 *         return flag             # <<<<<<<<<<<<<<
 * 
 *     def Iagree(self, flag: Buffer) -> Request:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_flag); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":288
 *         return num_acked
 * 
 *     def Agree(self, int flag: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking agreement.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Agree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":295
 *         return flag
 * 
 *     def Iagree(self, flag: Buffer) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking agreement.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_51Iagree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_50Iagree, "Iagree(self, flag: Buffer) -> Request\n\n        Nonblocking agreement.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_51Iagree = {"Iagree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_51Iagree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_50Iagree};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_51Iagree(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_flag = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iagree (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flag)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 295, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iagree") < 0)) __PYX_ERR(31, 295, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_flag = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iagree", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 295, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iagree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_50Iagree(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_flag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_50Iagree(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_flag) {
  int *__pyx_v_flag_ptr;
  MPI_Aint __pyx_v_flag_len;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iagree", 0);
  __Pyx_INCREF(__pyx_v_flag);

  /* "src/mpi4py/MPI.src/Comm.pyx":299
 *         Nonblocking agreement.
 *         """
 *         cdef int *flag_ptr = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint flag_len = 0
 *         flag = aspybuffer(flag, <void **>&flag_ptr, &flag_len, 0, b"i")
 */
  __pyx_v_flag_ptr = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":300
 *         """
 *         cdef int *flag_ptr = NULL
 *         cdef MPI_Aint flag_len = 0             # <<<<<<<<<<<<<<
 *         flag = aspybuffer(flag, <void **>&flag_ptr, &flag_len, 0, b"i")
 *         if flag_len != 1: raise ValueError(
 */
  __pyx_v_flag_len = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":301
 *         cdef int *flag_ptr = NULL
 *         cdef MPI_Aint flag_len = 0
 *         flag = aspybuffer(flag, <void **>&flag_ptr, &flag_len, 0, b"i")             # <<<<<<<<<<<<<<
 *         if flag_len != 1: raise ValueError(
 *             "flag: expecting int buffer of length one")
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_aspybuffer(__pyx_v_flag, ((void **)(&__pyx_v_flag_ptr)), (&__pyx_v_flag_len), 0, ((char const *)"i")); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_flag, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":302
 *         cdef MPI_Aint flag_len = 0
 *         flag = aspybuffer(flag, <void **>&flag_ptr, &flag_len, 0, b"i")
 *         if flag_len != 1: raise ValueError(             # <<<<<<<<<<<<<<
 *             "flag: expecting int buffer of length one")
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_2 = (__pyx_v_flag_len != 1);
  if (unlikely(__pyx_t_2)) {
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 302, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(31, 302, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":304
 *         if flag_len != 1: raise ValueError(
 *             "flag: expecting int buffer of length one")
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_iagree(
 *             self.ob_mpi, flag_ptr, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":305
 *             "flag: expecting int buffer of length one")
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_iagree(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, flag_ptr, &request.ob_mpi) )
 *         request.ob_buf = flag
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":306
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_iagree(
 *             self.ob_mpi, flag_ptr, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = flag
 *         return request
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_iagree(__pyx_v_self->ob_mpi, __pyx_v_flag_ptr, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 305, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":305
 *             "flag: expecting int buffer of length one")
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_iagree(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, flag_ptr, &request.ob_mpi) )
 *         request.ob_buf = flag
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":307
 *         with nogil: CHKERR( MPI_Comm_iagree(
 *             self.ob_mpi, flag_ptr, &request.ob_mpi) )
 *         request.ob_buf = flag             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF(__pyx_v_flag);
  __Pyx_GIVEREF(__pyx_v_flag);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_v_flag;

  /* "src/mpi4py/MPI.src/Comm.pyx":308
 *             self.ob_mpi, flag_ptr, &request.ob_mpi) )
 *         request.ob_buf = flag
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Shrink(self) -> Comm:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":295
 *         return flag
 * 
 *     def Iagree(self, flag: Buffer) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking agreement.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iagree", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XDECREF(__pyx_v_flag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":310
 *         return request
 * 
 *     def Shrink(self) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Shrink a communicator to remove all failed processes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_53Shrink(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_52Shrink, "Shrink(self) -> Comm\n\n        Shrink a communicator to remove all failed processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_53Shrink = {"Shrink", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_53Shrink, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_52Shrink};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_53Shrink(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Shrink (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Shrink", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Shrink", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_52Shrink(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_52Shrink(struct PyMPICommObject *__pyx_v_self) {
  PyTypeObject *__pyx_v_cls = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Shrink", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":314
 *         Shrink a communicator to remove all failed processes.
 *         """
 *         cdef type cls = Comm             # <<<<<<<<<<<<<<
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_ptype_6mpi4py_3MPI_Comm;

  /* "src/mpi4py/MPI.src/Comm.pyx":315
 *         """
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm             # <<<<<<<<<<<<<<
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intracomm);
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":316
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm             # <<<<<<<<<<<<<<
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_shrink(self.ob_mpi, &comm.ob_mpi) )
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intercomm);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":317
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_shrink(self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":318
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_shrink(self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_shrink(__pyx_v_self->ob_mpi, (&__pyx_v_comm->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 318, __pyx_L5_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":319
 *         cdef Comm comm = <Comm>New(cls)
 *         with nogil: CHKERR( MPI_Comm_shrink(self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 319, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":320
 *         with nogil: CHKERR( MPI_Comm_shrink(self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Ishrink(self) -> tuple[Comm, Request]:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":310
 *         return request
 * 
 *     def Shrink(self) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Shrink a communicator to remove all failed processes.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Shrink", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":322
 *         return comm
 * 
 *     def Ishrink(self) -> tuple[Comm, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking shrink a communicator to remove all failed processes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_55Ishrink(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_54Ishrink, "Ishrink(self) -> tuple[Comm, Request]\n\n        Nonblocking shrink a communicator to remove all failed processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_55Ishrink = {"Ishrink", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_55Ishrink, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_54Ishrink};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_55Ishrink(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ishrink (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Ishrink", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Ishrink", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_54Ishrink(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_54Ishrink(struct PyMPICommObject *__pyx_v_self) {
  PyTypeObject *__pyx_v_cls = 0;
  struct PyMPICommObject *__pyx_v_comm = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ishrink", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":326
 *         Nonblocking shrink a communicator to remove all failed processes.
 *         """
 *         cdef type cls = Comm             # <<<<<<<<<<<<<<
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm);
  __pyx_v_cls = __pyx_ptype_6mpi4py_3MPI_Comm;

  /* "src/mpi4py/MPI.src/Comm.pyx":327
 *         """
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm             # <<<<<<<<<<<<<<
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intracomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intracomm);
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":328
 *         cdef type cls = Comm
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm             # <<<<<<<<<<<<<<
 *         cdef Comm comm = <Comm>New(cls)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Intercomm); 
  if (__pyx_t_1) {
    __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm);
    __Pyx_DECREF_SET(__pyx_v_cls, __pyx_ptype_6mpi4py_3MPI_Intercomm);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":329
 *         if   isinstance(self, Intracomm): cls = Intracomm
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_ishrink(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":330
 *         elif isinstance(self, Intercomm): cls = Intercomm
 *         cdef Comm comm = <Comm>New(cls)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_ishrink(
 *             self.ob_mpi, &comm.ob_mpi, &request.ob_mpi) )
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":331
 *         cdef Comm comm = <Comm>New(cls)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_ishrink(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":332
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_ishrink(
 *             self.ob_mpi, &comm.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return (comm, request)
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_ishrink(__pyx_v_self->ob_mpi, (&__pyx_v_comm->ob_mpi), (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 331, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":331
 *         cdef Comm comm = <Comm>New(cls)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_ishrink(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":333
 *         with nogil: CHKERR( MPI_Comm_ishrink(
 *             self.ob_mpi, &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return (comm, request)
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 333, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":334
 *             self.ob_mpi, &comm.ob_mpi, &request.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return (comm, request)             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Info
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __Pyx_GIVEREF((PyObject *)__pyx_v_comm);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_comm))) __PYX_ERR(31, 334, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __Pyx_GIVEREF((PyObject *)__pyx_v_request);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_request))) __PYX_ERR(31, 334, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":322
 *         return comm
 * 
 *     def Ishrink(self) -> tuple[Comm, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking shrink a communicator to remove all failed processes.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ishrink", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cls);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":339
 *     # -----------------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_57Set_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_56Set_info, "Set_info(self, info: Info) -> None\n\n        Set new values for the hints associated with a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_57Set_info = {"Set_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_57Set_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_56Set_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_57Set_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 339, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_info") < 0)) __PYX_ERR(31, 339, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 339, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 339, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_56Set_info(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_56Set_info(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_info", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":343
 *         Set new values for the hints associated with a communicator.
 *         """
 *         with nogil: CHKERR( MPI_Comm_set_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":344
 *         """
 *         with nogil: CHKERR( MPI_Comm_set_info(
 *             self.ob_mpi, info.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_info(self) -> Info:
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_info(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 343, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":343
 *         Set new values for the hints associated with a communicator.
 *         """
 *         with nogil: CHKERR( MPI_Comm_set_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, info.ob_mpi) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":339
 *     # -----------------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a communicator.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":346
 *             self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_59Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_58Get_info, "Get_info(self) -> Info\n\n        Return the current hints for a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_59Get_info = {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_59Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_58Get_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_59Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_info", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_info", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_58Get_info(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_58Get_info(struct PyMPICommObject *__pyx_v_self) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_info", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":350
 *         Return the current hints for a communicator.
 *         """
 *         cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_get_info(
 *             self.ob_mpi, &info.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":351
 *         """
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_Comm_get_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":352
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_Comm_get_info(
 *             self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_info(__pyx_v_self->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 351, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":351
 *         """
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_Comm_get_info(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":353
 *         with nogil: CHKERR( MPI_Comm_get_info(
 *             self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     property info:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":346
 *             self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":357
 *     property info:
 *         """Info hints."""
 *         def __get__(self) -> Info:             # <<<<<<<<<<<<<<
 *             return self.Get_info()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4info_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4info_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_4info___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4info___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":358
 *         """Info hints."""
 *         def __get__(self) -> Info:
 *             return self.Get_info()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: Info):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":357
 *     property info:
 *         """Info hints."""
 *         def __get__(self) -> Info:             # <<<<<<<<<<<<<<
 *             return self.Get_info()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":360
 *             return self.Get_info()
 * 
 *         def __set__(self, value: Info):             # <<<<<<<<<<<<<<
 *             self.Set_info(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Comm_4info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Comm_4info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_4info_2__set__(((struct PyMPICommObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Comm_4info_2__set__(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":361
 * 
 *         def __set__(self, value: Info):
 *             self.Set_info(value)             # <<<<<<<<<<<<<<
 * 
 *     # Point to Point communication
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":360
 *             return self.Get_info()
 * 
 *         def __set__(self, value: Info):             # <<<<<<<<<<<<<<
 *             self.Set_info(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.info.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":369
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_61Attach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_60Attach_buffer, "Attach_buffer(self, buf: Buffer | None) -> None\n\n        Attach a user-provided buffer for sending in buffered mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_61Attach_buffer = {"Attach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_61Attach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_60Attach_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_61Attach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Attach_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 369, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Attach_buffer") < 0)) __PYX_ERR(31, 369, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 369, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_60Attach_buffer(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_60Attach_buffer(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  void *__pyx_v_base;
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Attach_buffer", 0);
  __Pyx_INCREF(__pyx_v_buf);

  /* "src/mpi4py/MPI.src/Comm.pyx":373
 *         Attach a user-provided buffer for sending in buffered mode.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":374
 *         """
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Comm_attach_buffer_c(
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":375
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_attach_buffer_c(
 *             self.ob_mpi, base, size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_attach_buffer(__pyx_v_buf, (&__pyx_v_base), (&__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_buf, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":376
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Comm_attach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, base, size) )
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":377
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Comm_attach_buffer_c(
 *             self.ob_mpi, base, size) )             # <<<<<<<<<<<<<<
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_attach_buffer_c(__pyx_v_self->ob_mpi, __pyx_v_base, __pyx_v_size)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 376, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":376
 *         cdef MPI_Count size = 0
 *         buf = attach_buffer(buf, &base, &size)
 *         with nogil: CHKERR( MPI_Comm_attach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, base, size) )
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":378
 *         with nogil: CHKERR( MPI_Comm_attach_buffer_c(
 *             self.ob_mpi, base, size) )
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     def Detach_buffer(self) -> Buffer | None:
 */
  __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_detach_buffer_set(__pyx_v_self, __pyx_v_buf); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 378, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":369
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":380
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_63Detach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_62Detach_buffer, "Detach_buffer(self) -> Buffer | None\n\n        Remove an existing attached buffer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_63Detach_buffer = {"Detach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_63Detach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_62Detach_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_63Detach_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Detach_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Detach_buffer", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Detach_buffer", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_62Detach_buffer(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_62Detach_buffer(struct PyMPICommObject *__pyx_v_self) {
  void *__pyx_v_base;
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Detach_buffer", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":384
 *         Remove an existing attached buffer.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Comm_detach_buffer_c(
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":385
 *         """
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_detach_buffer_c(
 *             self.ob_mpi, &base, &size) )
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":386
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Comm_detach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &base, &size) )
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":387
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Comm_detach_buffer_c(
 *             self.ob_mpi, &base, &size) )             # <<<<<<<<<<<<<<
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_detach_buffer_c(__pyx_v_self->ob_mpi, (&__pyx_v_base), (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 386, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":386
 *         cdef void *base = NULL
 *         cdef MPI_Count size = 0
 *         with nogil: CHKERR( MPI_Comm_detach_buffer_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &base, &size) )
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":388
 *         with nogil: CHKERR( MPI_Comm_detach_buffer_c(
 *             self.ob_mpi, &base, &size) )
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     def Flush_buffer(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_detach_buffer_get(__pyx_v_self, __pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":380
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Detach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":390
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_65Flush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_64Flush_buffer, "Flush_buffer(self) -> None\n\n        Block until all buffered messages have been transmitted.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_65Flush_buffer = {"Flush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_65Flush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_64Flush_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_65Flush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Flush_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Flush_buffer", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Flush_buffer", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_64Flush_buffer(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_64Flush_buffer(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Flush_buffer", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":394
 *         Block until all buffered messages have been transmitted.
 *         """
 *         with nogil: CHKERR( MPI_Comm_flush_buffer(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Iflush_buffer(self) -> Request:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_flush_buffer(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 394, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":390
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Flush_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":396
 *         with nogil: CHKERR( MPI_Comm_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_67Iflush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_66Iflush_buffer, "Iflush_buffer(self) -> Request\n\n        Nonblocking flush for buffered messages.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_67Iflush_buffer = {"Iflush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_67Iflush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_66Iflush_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_67Iflush_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iflush_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Iflush_buffer", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Iflush_buffer", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_66Iflush_buffer(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_66Iflush_buffer(struct PyMPICommObject *__pyx_v_self) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iflush_buffer", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":400
 *         Nonblocking flush for buffered messages.
 *         """
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_iflush_buffer(
 *             self.ob_mpi, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":401
 *         """
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_iflush_buffer(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request  # ~> MPI-4.1
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":402
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_iflush_buffer(
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request  # ~> MPI-4.1
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_iflush_buffer(__pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 401, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":401
 *         """
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Comm_iflush_buffer(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request  # ~> MPI-4.1
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":403
 *         with nogil: CHKERR( MPI_Comm_iflush_buffer(
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 *     # Blocking Send and Receive Operations
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":396
 *         with nogil: CHKERR( MPI_Comm_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iflush_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":408
 *     # ------------------------------------
 * 
 *     def Send(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_69Send(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_68Send, "Send(self, buf: BufSpec, dest: int, tag: int = 0) -> None\n\n        Blocking send.\n\n        .. note:: This function may block until the message is received.\n           Whether `Send` blocks or not depends on several factors and is\n           implementation dependent.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_69Send = {"Send", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_69Send, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_68Send};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_69Send(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Send (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 408, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 408, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Send", 0, 2, 3, 1); __PYX_ERR(31, 408, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 408, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Send") < 0)) __PYX_ERR(31, 408, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 411, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 412, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Send", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 408, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_68Send(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_68Send(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Send", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":421
 *            implementation dependent.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Send_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":422
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Send_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":424
 *         with nogil: CHKERR( MPI_Send_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Recv(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 422, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":422
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Send_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":408
 *     # ------------------------------------
 * 
 *     def Send(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":426
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_71Recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_70Recv, "Recv(self, buf: BufSpec, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> None\n\n        Blocking receive.\n\n        .. note:: This function blocks until the message is received.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_71Recv = {"Recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_71Recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_70Recv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_71Recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Recv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":431
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 426, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 426, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 426, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Recv") < 0)) __PYX_ERR(31, 426, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 429, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__82;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 430, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__83;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Recv", 0, 1, 4, __pyx_nargs); __PYX_ERR(31, 426, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 431, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_70Recv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":426
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_70Recv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Recv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":438
 *         .. note:: This function blocks until the message is received.
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Recv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":439
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Recv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 439, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":440
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Recv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, statusp) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":442
 *         with nogil: CHKERR( MPI_Recv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # Send-Receive
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv_c(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 440, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":440
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Recv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, statusp) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":426
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":447
 *     # ------------
 * 
 *     def Sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_73Sendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_72Sendrecv, "Sendrecv(self, sendbuf: BufSpec, dest: int, sendtag: int = 0, recvbuf: BufSpec | None = None, source: int = ANY_SOURCE, recvtag: int = ANY_TAG, status: Status | None = None) -> None\n\n        Send and receive a message.\n\n        .. note:: This function is guaranteed not to deadlock in situations\n           where pairs of blocking sends and receives may deadlock.\n\n        .. caution:: A common mistake when using this function is to mismatch\n           the tags with the source and destination ranks, which can result in\n           deadlock.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_73Sendrecv = {"Sendrecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_73Sendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_72Sendrecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_73Sendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[7] = {0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Sendrecv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_dest,&__pyx_n_s_sendtag,&__pyx_n_s_recvbuf,&__pyx_n_s_source,&__pyx_n_s_recvtag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":452
 *         int dest: int,
 *         int sendtag: int = 0,
 *         recvbuf: BufSpec | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Comm.pyx":455
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[6] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 447, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 447, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Sendrecv", 0, 2, 7, 1); __PYX_ERR(31, 447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendtag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvtag);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 447, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[6] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 447, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Sendrecv") < 0)) __PYX_ERR(31, 447, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 450, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 451, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 453, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__84;
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 454, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_k__85;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[6]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Sendrecv", 0, 2, 7, __pyx_nargs); __PYX_ERR(31, 447, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 455, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_72Sendrecv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_recvbuf, __pyx_v_source, __pyx_v_recvtag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":447
 *     # ------------
 * 
 *     def Sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_72Sendrecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_recvbuf, int __pyx_v_source, int __pyx_v_recvtag, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Sendrecv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":467
 *            deadlock.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_sendbuf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":468
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_recvbuf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":469
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Sendrecv_c(
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 469, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":470
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":473
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 *             self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Sendrecv_replace(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Sendrecv_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_recvtag, __pyx_v_self->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 470, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":470
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":447
 *     # ------------
 * 
 *     def Sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":475
 *             self.ob_mpi, statusp) )
 * 
 *     def Sendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_75Sendrecv_replace(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_74Sendrecv_replace, "Sendrecv_replace(self, buf: BufSpec, dest: int, sendtag: int = 0, source: int = ANY_SOURCE, recvtag: int = ANY_TAG, status: Status | None = None) -> None\n\n        Send and receive a message.\n\n        .. note:: This function is guaranteed not to deadlock in situations\n           where pairs of blocking sends and receives may deadlock.\n\n        .. caution:: A common mistake when using this function is to mismatch\n           the tags with the source and destination ranks, which can result in\n           deadlock.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_75Sendrecv_replace = {"Sendrecv_replace", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_75Sendrecv_replace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_74Sendrecv_replace};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_75Sendrecv_replace(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Sendrecv_replace (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_sendtag,&__pyx_n_s_source,&__pyx_n_s_recvtag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":482
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[5] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 475, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 475, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Sendrecv_replace", 0, 2, 6, 1); __PYX_ERR(31, 475, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendtag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 475, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 475, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvtag);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 475, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 475, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Sendrecv_replace") < 0)) __PYX_ERR(31, 475, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 478, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 479, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    if (values[3]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 480, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__86;
    }
    if (values[4]) {
      __pyx_v_recvtag = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 481, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_k__87;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[5]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Sendrecv_replace", 0, 2, 6, __pyx_nargs); __PYX_ERR(31, 475, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv_replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 482, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_74Sendrecv_replace(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_source, __pyx_v_recvtag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":475
 *             self.ob_mpi, statusp) )
 * 
 *     def Sendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_74Sendrecv_replace(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_sendtag, int __pyx_v_source, int __pyx_v_recvtag, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_rank;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  MPI_Status *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Sendrecv_replace", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":494
 *            deadlock.
 *         """
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":495
 *         """
 *         cdef int rank = MPI_PROC_NULL
 *         if dest   != MPI_PROC_NULL: rank = dest             # <<<<<<<<<<<<<<
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {
    __pyx_v_rank = __pyx_v_dest;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":496
 *         cdef int rank = MPI_PROC_NULL
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_t_1 = (__pyx_v_source != MPI_PROC_NULL);
  if (__pyx_t_1) {
    __pyx_v_rank = __pyx_v_source;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":497
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_replace_c(
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_rank)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":498
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Sendrecv_replace_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_3 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 498, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Comm.pyx":499
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_replace_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             dest, sendtag, source, recvtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":502
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             dest, sendtag, source, recvtag,
 *             self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking Communications
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Sendrecv_replace_c(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_source, __pyx_v_recvtag, __pyx_v_self->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 499, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":499
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Sendrecv_replace_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             dest, sendtag, source, recvtag,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":475
 *             self.ob_mpi, statusp) )
 * 
 *     def Sendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Sendrecv_replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":507
 *     # --------------------------
 * 
 *     def Isend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_77Isend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_76Isend, "Isend(self, buf: BufSpec, dest: int, tag: int = 0) -> Request\n\n        Nonblocking send.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_77Isend = {"Isend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_77Isend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_76Isend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_77Isend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Isend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 507, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 507, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Isend", 0, 2, 3, 1); __PYX_ERR(31, 507, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 507, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Isend") < 0)) __PYX_ERR(31, 507, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 510, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 511, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Isend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 507, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_76Isend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_76Isend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Isend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":516
 *         Nonblocking send.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isend_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":517
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Isend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":518
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":520
 *         with nogil: CHKERR( MPI_Isend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Isend_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 518, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":518
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":521
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":522
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Irecv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":507
 *     # --------------------------
 * 
 *     def Isend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":524
 *         return request
 * 
 *     def Irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_79Irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_78Irecv, "Irecv(self, buf: BufSpec, source: int = ANY_SOURCE, tag: int = ANY_TAG) -> Request\n\n        Nonblocking receive.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_79Irecv = {"Irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_79Irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_78Irecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_79Irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Irecv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_source,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 524, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 524, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 524, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Irecv") < 0)) __PYX_ERR(31, 524, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 527, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__88;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 528, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__89;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Irecv", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 524, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_78Irecv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_source, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_78Irecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Irecv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":533
 *         Nonblocking receive.
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Irecv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":534
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Irecv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":535
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Irecv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":537
 *         with nogil: CHKERR( MPI_Irecv_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = rmsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Irecv_c(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 535, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":535
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Irecv_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":538
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_rmsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":539
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Isendrecv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":524
 *         return request
 * 
 *     def Irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":541
 *         return request
 * 
 *     def Isendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_81Isendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_80Isendrecv, "Isendrecv(self, sendbuf: BufSpec, dest: int, sendtag: int = 0, recvbuf: BufSpec | None = None, source: int = ANY_SOURCE, recvtag: int = ANY_TAG) -> Request\n\n        Nonblocking send and receive.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_81Isendrecv = {"Isendrecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_81Isendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_80Isendrecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_81Isendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Isendrecv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_dest,&__pyx_n_s_sendtag,&__pyx_n_s_recvbuf,&__pyx_n_s_source,&__pyx_n_s_recvtag,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":546
 *         int dest: int,
 *         int sendtag: int = 0,
 *         recvbuf: BufSpec | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 541, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 541, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Isendrecv", 0, 2, 6, 1); __PYX_ERR(31, 541, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendtag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 541, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 541, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 541, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvtag);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 541, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Isendrecv") < 0)) __PYX_ERR(31, 541, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 544, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 545, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 547, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__90;
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 548, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_k__91;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Isendrecv", 0, 2, 6, __pyx_nargs); __PYX_ERR(31, 541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_80Isendrecv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_recvbuf, __pyx_v_source, __pyx_v_recvtag);

  /* "src/mpi4py/MPI.src/Comm.pyx":541
 *         return request
 * 
 *     def Isendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_80Isendrecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_recvbuf, int __pyx_v_source, int __pyx_v_recvtag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Isendrecv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":553
 *         Nonblocking send and receive.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_sendbuf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":554
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isendrecv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_recvbuf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":555
 *         cdef _p_msg_p2p smsg = message_p2p_send(sendbuf, dest)
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Isendrecv_c(
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":556
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isendrecv_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":559
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = (smsg, rmsg)
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Isendrecv_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_recvtag, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 556, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":556
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(recvbuf, source)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isendrecv_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype, dest,   sendtag,
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":560
 *             rmsg.buf, rmsg.count, rmsg.dtype, source, recvtag,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = (smsg, rmsg)             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_smsg))) __PYX_ERR(31, 560, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_rmsg);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_rmsg))) __PYX_ERR(31, 560, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":561
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = (smsg, rmsg)
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Isendrecv_replace(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":541
 *         return request
 * 
 *     def Isendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":563
 *         return request
 * 
 *     def Isendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_83Isendrecv_replace(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_82Isendrecv_replace, "Isendrecv_replace(self, buf: BufSpec, dest: int, sendtag: int = 0, source: int = ANY_SOURCE, recvtag: int = ANY_TAG) -> Request\n\n        Send and receive a message.\n\n        .. note:: This function is guaranteed not to deadlock in situations\n           where pairs of blocking sends and receives may deadlock.\n\n        .. caution:: A common mistake when using this function is to mismatch\n           the tags with the source and destination ranks, which can result in\n           deadlock.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_83Isendrecv_replace = {"Isendrecv_replace", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_83Isendrecv_replace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_82Isendrecv_replace};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_83Isendrecv_replace(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Isendrecv_replace (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_sendtag,&__pyx_n_s_source,&__pyx_n_s_recvtag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 563, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 563, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Isendrecv_replace", 0, 2, 5, 1); __PYX_ERR(31, 563, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendtag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 563, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 563, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvtag);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 563, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Isendrecv_replace") < 0)) __PYX_ERR(31, 563, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 566, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 567, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    if (values[3]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 568, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__92;
    }
    if (values[4]) {
      __pyx_v_recvtag = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 569, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_k__93;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Isendrecv_replace", 0, 2, 5, __pyx_nargs); __PYX_ERR(31, 563, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isendrecv_replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_82Isendrecv_replace(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_source, __pyx_v_recvtag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_82Isendrecv_replace(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_sendtag, int __pyx_v_source, int __pyx_v_recvtag) {
  int __pyx_v_rank;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Isendrecv_replace", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":581
 *            deadlock.
 *         """
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":582
 *         """
 *         cdef int rank = MPI_PROC_NULL
 *         if dest   != MPI_PROC_NULL: rank = dest             # <<<<<<<<<<<<<<
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 */
  __pyx_t_1 = (__pyx_v_dest != MPI_PROC_NULL);
  if (__pyx_t_1) {
    __pyx_v_rank = __pyx_v_dest;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":583
 *         cdef int rank = MPI_PROC_NULL
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source             # <<<<<<<<<<<<<<
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = (__pyx_v_source != MPI_PROC_NULL);
  if (__pyx_t_1) {
    __pyx_v_rank = __pyx_v_source;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":584
 *         if dest   != MPI_PROC_NULL: rank = dest
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isendrecv_replace_c(
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_rank)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":585
 *         if source != MPI_PROC_NULL: rank = source
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Isendrecv_replace_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":586
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isendrecv_replace_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             dest, sendtag, source, recvtag,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":589
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             dest, sendtag, source, recvtag,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = rmsg
 *         return request
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Isendrecv_replace_c(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_source, __pyx_v_recvtag, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 586, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":586
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, rank)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Isendrecv_replace_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             dest, sendtag, source, recvtag,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":590
 *             dest, sendtag, source, recvtag,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_rmsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":591
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Probe
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":563
 *         return request
 * 
 *     def Isendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Isendrecv_replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":596
 *     # -----
 * 
 *     def Probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_85Probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_84Probe, "Probe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Literal[True]\n\n        Blocking test for a message.\n\n        .. note:: This function blocks until the message arrives.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_85Probe = {"Probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_85Probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_84Probe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_85Probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Probe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":600
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Literal[True]:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 596, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 596, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 596, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Probe") < 0)) __PYX_ERR(31, 596, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 598, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__94;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 599, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__95;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Probe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 596, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 600, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_84Probe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":596
 *     # -----
 * 
 *     def Probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_84Probe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Probe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":607
 *         .. note:: This function blocks until the message arrives.
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Probe(
 *             source, tag, self.ob_mpi, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 607, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":608
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, statusp) )
 *         return True
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":609
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(
 *             source, tag, self.ob_mpi, statusp) )             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Probe(__pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 608, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":608
 *         """
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Probe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, statusp) )
 *         return True
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":610
 *         with nogil: CHKERR( MPI_Probe(
 *             source, tag, self.ob_mpi, statusp) )
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     def Iprobe(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":596
 *     # -----
 * 
 *     def Probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":612
 *         return True
 * 
 *     def Iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_87Iprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_86Iprobe, "Iprobe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> bool\n\n        Nonblocking test for a message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_87Iprobe = {"Iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_87Iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_86Iprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_87Iprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iprobe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":616
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 612, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 612, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 612, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iprobe") < 0)) __PYX_ERR(31, 612, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 614, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__96;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 615, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__97;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iprobe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 612, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 616, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_86Iprobe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":612
 *         return True
 * 
 *     def Iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_86Iprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iprobe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":621
 *         Nonblocking test for a message.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":622
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 622, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":623
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":624
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_flag), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 623, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":623
 *         cdef int flag = 0
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Iprobe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return <bint>flag
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":625
 *         with nogil: CHKERR( MPI_Iprobe(
 *             source, tag, self.ob_mpi, &flag, statusp) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     # Matching Probe
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":612
 *         return True
 * 
 *     def Iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":630
 *     # --------------
 * 
 *     def Mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_89Mprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_88Mprobe, "Mprobe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Message\n\n        Blocking test for a matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_89Mprobe = {"Mprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_89Mprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_88Mprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_89Mprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Mprobe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":634
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 630, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 630, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 630, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Mprobe") < 0)) __PYX_ERR(31, 630, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 632, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__98;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 633, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__99;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Mprobe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 630, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Mprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 634, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_88Mprobe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":630
 *     # --------------
 * 
 *     def Mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_88Mprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Message __pyx_v_cmessage;
  MPI_Status *__pyx_v_statusp;
  struct PyMPIMessageObject *__pyx_v_message = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__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;
  __Pyx_RefNannySetupContext("Mprobe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":639
 *         Blocking test for a matched message.
 *         """
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(
 */
  __pyx_v_cmessage = MPI_MESSAGE_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":640
 *         """
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Mprobe(
 *             source, tag, self.ob_mpi, &cmessage, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 640, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":641
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(Message)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":642
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(
 *             source, tag, self.ob_mpi, &cmessage, statusp) )             # <<<<<<<<<<<<<<
 *         cdef Message message = <Message>New(Message)
 *         message.ob_mpi = cmessage
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Mprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_cmessage), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 641, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":641
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Mprobe(             # <<<<<<<<<<<<<<
 *             source, tag, self.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(Message)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":643
 *         with nogil: CHKERR( MPI_Mprobe(
 *             source, tag, self.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(Message)             # <<<<<<<<<<<<<<
 *         message.ob_mpi = cmessage
 *         return message
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":644
 *             source, tag, self.ob_mpi, &cmessage, statusp) )
 *         cdef Message message = <Message>New(Message)
 *         message.ob_mpi = cmessage             # <<<<<<<<<<<<<<
 *         return message
 * 
 */
  __pyx_v_message->ob_mpi = __pyx_v_cmessage;

  /* "src/mpi4py/MPI.src/Comm.pyx":645
 *         cdef Message message = <Message>New(Message)
 *         message.ob_mpi = cmessage
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     def Improbe(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":630
 *     # --------------
 * 
 *     def Mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Mprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":647
 *         return message
 * 
 *     def Improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_91Improbe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_90Improbe, "Improbe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Message | None\n\n        Nonblocking test for a matched message.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_91Improbe = {"Improbe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_91Improbe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_90Improbe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_91Improbe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Improbe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":651
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message | None:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 647, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 647, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 647, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Improbe") < 0)) __PYX_ERR(31, 647, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 649, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__100;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 650, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__101;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Improbe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 647, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Improbe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 651, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_90Improbe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":647
 *         return message
 * 
 *     def Improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_90Improbe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  MPI_Message __pyx_v_cmessage;
  MPI_Status *__pyx_v_statusp;
  struct PyMPIMessageObject *__pyx_v_message = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Status *__pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Improbe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":656
 *         Nonblocking test for a matched message.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":657
 *         """
 *         cdef int flag = 0
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(
 */
  __pyx_v_cmessage = MPI_MESSAGE_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":658
 *         cdef int flag = 0
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Improbe(
 *              source, tag, self.ob_mpi, &flag, &cmessage, statusp) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_1 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 658, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":659
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(             # <<<<<<<<<<<<<<
 *              source, tag, self.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":660
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(
 *              source, tag, self.ob_mpi, &flag, &cmessage, statusp) )             # <<<<<<<<<<<<<<
 *         if flag == 0: return None
 *         cdef Message message = <Message>New(Message)
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Improbe(__pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_flag), (&__pyx_v_cmessage), __pyx_v_statusp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 659, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":659
 *         cdef MPI_Message cmessage = MPI_MESSAGE_NULL
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_Improbe(             # <<<<<<<<<<<<<<
 *              source, tag, self.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":661
 *         with nogil: CHKERR( MPI_Improbe(
 *              source, tag, self.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None             # <<<<<<<<<<<<<<
 *         cdef Message message = <Message>New(Message)
 *         message.ob_mpi = cmessage
 */
  __pyx_t_3 = (__pyx_v_flag == 0);
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":662
 *              source, tag, self.ob_mpi, &flag, &cmessage, statusp) )
 *         if flag == 0: return None
 *         cdef Message message = <Message>New(Message)             # <<<<<<<<<<<<<<
 *         message.ob_mpi = cmessage
 *         return message
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":663
 *         if flag == 0: return None
 *         cdef Message message = <Message>New(Message)
 *         message.ob_mpi = cmessage             # <<<<<<<<<<<<<<
 *         return message
 * 
 */
  __pyx_v_message->ob_mpi = __pyx_v_cmessage;

  /* "src/mpi4py/MPI.src/Comm.pyx":664
 *         cdef Message message = <Message>New(Message)
 *         message.ob_mpi = cmessage
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     # Persistent Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":647
 *         return message
 * 
 *     def Improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Improbe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":669
 *     # ------------------------
 * 
 *     def Send_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_93Send_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_92Send_init, "Send_init(self, buf: BufSpec, dest: int, tag: int = 0) -> Prequest\n\n        Create a persistent request for a standard send.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_93Send_init = {"Send_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_93Send_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_92Send_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_93Send_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Send_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 669, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 669, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Send_init", 0, 2, 3, 1); __PYX_ERR(31, 669, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 669, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Send_init") < 0)) __PYX_ERR(31, 669, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 672, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 673, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Send_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 669, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_92Send_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_92Send_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Send_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":678
 *         Create a persistent request for a standard send.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Send_init_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":679
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Send_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":680
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Send_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":682
 *         with nogil: CHKERR( MPI_Send_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Send_init_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 680, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":680
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Send_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":683
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":684
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Recv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":669
 *     # ------------------------
 * 
 *     def Send_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Send_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":686
 *         return request
 * 
 *     def Recv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_95Recv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_94Recv_init, "Recv_init(self, buf: BufSpec, source: int = ANY_SOURCE, tag: int = ANY_TAG) -> Prequest\n\n        Create a persistent request for a receive.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_95Recv_init = {"Recv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_95Recv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_94Recv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_95Recv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Recv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_source,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 686, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 686, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 686, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Recv_init") < 0)) __PYX_ERR(31, 686, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 689, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__102;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 690, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__103;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Recv_init", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 686, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_94Recv_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_source, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_94Recv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Recv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":695
 *         Create a persistent request for a receive.
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Recv_init_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_recv(__pyx_v_buf, __pyx_v_source)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 695, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":696
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Recv_init_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":697
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Recv_init_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":699
 *         with nogil: CHKERR( MPI_Recv_init_c(
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = rmsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Recv_init_c(__pyx_v_rmsg->buf, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 697, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":697
 *         cdef _p_msg_p2p rmsg = message_p2p_recv(buf, source)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Recv_init_c(             # <<<<<<<<<<<<<<
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":700
 *             rmsg.buf, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_rmsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":701
 *             source, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Partitioned Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":686
 *         return request
 * 
 *     def Recv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Recv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":706
 *     # -------------------------
 * 
 *     def Psend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_97Psend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_96Psend_init, "Psend_init(self, buf: BufSpec, partitions: int, dest: int, tag: int = 0, info: Info = INFO_NULL) -> Prequest\n\n        Create request for a partitioned send operation.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_97Psend_init = {"Psend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_97Psend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_96Psend_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_97Psend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_partitions;
  int __pyx_v_dest;
  int __pyx_v_tag;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Psend_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_partitions,&__pyx_n_s_dest,&__pyx_n_s_tag,&__pyx_n_s_info,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__104);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 706, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partitions)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 706, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Psend_init", 0, 3, 5, 1); __PYX_ERR(31, 706, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 706, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Psend_init", 0, 3, 5, 2); __PYX_ERR(31, 706, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 706, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 706, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Psend_init") < 0)) __PYX_ERR(31, 706, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_partitions = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_partitions == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 709, __pyx_L3_error)
    __pyx_v_dest = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 710, __pyx_L3_error)
    if (values[3]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 711, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Psend_init", 0, 3, 5, __pyx_nargs); __PYX_ERR(31, 706, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Psend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 712, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_96Psend_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_partitions, __pyx_v_dest, __pyx_v_tag, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_96Psend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_partitions, int __pyx_v_dest, int __pyx_v_tag, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Psend_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":717
 *         Create request for a partitioned send operation.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_psend(buf, dest, partitions)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Psend_init(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_psend(__pyx_v_buf, __pyx_v_dest, __pyx_v_partitions)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":718
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_psend(buf, dest, partitions)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Psend_init(
 *             smsg.buf, partitions, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":719
 *         cdef _p_msg_p2p smsg = message_p2p_psend(buf, dest, partitions)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Psend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, partitions, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":721
 *         with nogil: CHKERR( MPI_Psend_init(
 *             smsg.buf, partitions, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Psend_init(__pyx_v_smsg->buf, __pyx_v_partitions, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 719, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":719
 *         cdef _p_msg_p2p smsg = message_p2p_psend(buf, dest, partitions)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Psend_init(             # <<<<<<<<<<<<<<
 *             smsg.buf, partitions, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":722
 *             smsg.buf, partitions, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":723
 *             dest, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Precv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":706
 *     # -------------------------
 * 
 *     def Psend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Psend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":725
 *         return request
 * 
 *     def Precv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_99Precv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_98Precv_init, "Precv_init(self, buf: BufSpec, partitions: int, source: int = ANY_SOURCE, tag: int = ANY_TAG, info: Info = INFO_NULL) -> Prequest\n\n        Create request for a partitioned recv operation.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_99Precv_init = {"Precv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_99Precv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_98Precv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_99Precv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_partitions;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Precv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_partitions,&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_info,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__105);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 725, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_partitions)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 725, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Precv_init", 0, 2, 5, 1); __PYX_ERR(31, 725, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 725, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 725, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 725, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Precv_init") < 0)) __PYX_ERR(31, 725, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_partitions = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_partitions == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 728, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 729, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__106;
    }
    if (values[3]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 730, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__107;
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Precv_init", 0, 2, 5, __pyx_nargs); __PYX_ERR(31, 725, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Precv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 731, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_98Precv_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_partitions, __pyx_v_source, __pyx_v_tag, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_98Precv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_partitions, int __pyx_v_source, int __pyx_v_tag, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_rmsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Precv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":736
 *         Create request for a partitioned recv operation.
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_precv(buf, source, partitions)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Precv_init(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_precv(__pyx_v_buf, __pyx_v_source, __pyx_v_partitions)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rmsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":737
 *         """
 *         cdef _p_msg_p2p rmsg = message_p2p_precv(buf, source, partitions)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Precv_init(
 *             rmsg.buf, partitions, rmsg.count, rmsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 737, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":738
 *         cdef _p_msg_p2p rmsg = message_p2p_precv(buf, source, partitions)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Precv_init(             # <<<<<<<<<<<<<<
 *             rmsg.buf, partitions, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":740
 *         with nogil: CHKERR( MPI_Precv_init(
 *             rmsg.buf, partitions, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = rmsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Precv_init(__pyx_v_rmsg->buf, __pyx_v_partitions, __pyx_v_rmsg->count, __pyx_v_rmsg->dtype, __pyx_v_source, __pyx_v_tag, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 738, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":738
 *         cdef _p_msg_p2p rmsg = message_p2p_precv(buf, source, partitions)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Precv_init(             # <<<<<<<<<<<<<<
 *             rmsg.buf, partitions, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":741
 *             rmsg.buf, partitions, rmsg.count, rmsg.dtype,
 *             source, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_rmsg);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_rmsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":742
 *             source, tag, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = rmsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Communication Modes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":725
 *         return request
 * 
 *     def Precv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Precv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rmsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":749
 *     # Blocking calls
 * 
 *     def Bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_101Bsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_100Bsend, "Bsend(self, buf: BufSpec, dest: int, tag: int = 0) -> None\n\n        Blocking send in buffered mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_101Bsend = {"Bsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_101Bsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_100Bsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_101Bsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Bsend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 749, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 749, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Bsend", 0, 2, 3, 1); __PYX_ERR(31, 749, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 749, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Bsend") < 0)) __PYX_ERR(31, 749, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 752, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 753, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Bsend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 749, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_100Bsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_100Bsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Bsend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":758
 *         Blocking send in buffered mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":759
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Bsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":761
 *         with nogil: CHKERR( MPI_Bsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Ssend(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bsend_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 759, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":759
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Bsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":749
 *     # Blocking calls
 * 
 *     def Bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":763
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_103Ssend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_102Ssend, "Ssend(self, buf: BufSpec, dest: int, tag: int = 0) -> None\n\n        Blocking send in synchronous mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_103Ssend = {"Ssend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_103Ssend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_102Ssend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_103Ssend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ssend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 763, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 763, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ssend", 0, 2, 3, 1); __PYX_ERR(31, 763, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 763, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ssend") < 0)) __PYX_ERR(31, 763, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 766, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 767, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ssend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 763, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_102Ssend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_102Ssend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ssend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":772
 *         Blocking send in synchronous mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ssend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":773
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Ssend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":775
 *         with nogil: CHKERR( MPI_Ssend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Rsend(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ssend_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 773, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":773
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Ssend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":763
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":777
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Rsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_105Rsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_104Rsend, "Rsend(self, buf: BufSpec, dest: int, tag: int = 0) -> None\n\n        Blocking send in ready mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_105Rsend = {"Rsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_105Rsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_104Rsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_105Rsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Rsend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 777, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 777, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Rsend", 0, 2, 3, 1); __PYX_ERR(31, 777, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 777, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Rsend") < 0)) __PYX_ERR(31, 777, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 780, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 781, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Rsend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 777, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_104Rsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_104Rsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Rsend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":786
 *         Blocking send in ready mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":787
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Rsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":789
 *         with nogil: CHKERR( MPI_Rsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking calls
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Rsend_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 787, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":787
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         with nogil: CHKERR( MPI_Rsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":777
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Rsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":793
 *     # Nonblocking calls
 * 
 *     def Ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_107Ibsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_106Ibsend, "Ibsend(self, buf: BufSpec, dest: int, tag: int = 0) -> Request\n\n        Nonblocking send in buffered mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_107Ibsend = {"Ibsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_107Ibsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_106Ibsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_107Ibsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ibsend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 793, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 793, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ibsend", 0, 2, 3, 1); __PYX_ERR(31, 793, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 793, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ibsend") < 0)) __PYX_ERR(31, 793, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 796, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 797, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ibsend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 793, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_106Ibsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_106Ibsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ibsend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":802
 *         Nonblocking send in buffered mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibsend_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":803
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ibsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":804
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":806
 *         with nogil: CHKERR( MPI_Ibsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ibsend_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 804, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":804
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":807
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":808
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Issend(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":793
 *     # Nonblocking calls
 * 
 *     def Ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":810
 *         return request
 * 
 *     def Issend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_109Issend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_108Issend, "Issend(self, buf: BufSpec, dest: int, tag: int = 0) -> Request\n\n        Nonblocking send in synchronous mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_109Issend = {"Issend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_109Issend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_108Issend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_109Issend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Issend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 810, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 810, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Issend", 0, 2, 3, 1); __PYX_ERR(31, 810, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 810, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Issend") < 0)) __PYX_ERR(31, 810, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 813, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 814, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Issend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 810, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_108Issend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_108Issend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Issend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":819
 *         Nonblocking send in synchronous mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Issend_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":820
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Issend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":821
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Issend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":823
 *         with nogil: CHKERR( MPI_Issend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Issend_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 821, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":821
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Issend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":824
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":825
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Irsend(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":810
 *         return request
 * 
 *     def Issend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":827
 *         return request
 * 
 *     def Irsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_111Irsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_110Irsend, "Irsend(self, buf: BufSpec, dest: int, tag: int = 0) -> Request\n\n        Nonblocking send in ready mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_111Irsend = {"Irsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_111Irsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_110Irsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_111Irsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Irsend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 827, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 827, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Irsend", 0, 2, 3, 1); __PYX_ERR(31, 827, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 827, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Irsend") < 0)) __PYX_ERR(31, 827, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 830, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 831, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Irsend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 827, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_110Irsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_110Irsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Irsend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":836
 *         Nonblocking send in ready mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Irsend_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 836, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":837
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Irsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":838
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Irsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":840
 *         with nogil: CHKERR( MPI_Irsend_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Irsend_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 838, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":838
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Irsend_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":841
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":842
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Persistent Requests
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":827
 *         return request
 * 
 *     def Irsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Irsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":846
 *     # Persistent Requests
 * 
 *     def Bsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_113Bsend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_112Bsend_init, "Bsend_init(self, buf: BufSpec, dest: int, tag: int = 0) -> Request\n\n        Persistent request for a send in buffered mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_113Bsend_init = {"Bsend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_113Bsend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_112Bsend_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_113Bsend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Bsend_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 846, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 846, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Bsend_init", 0, 2, 3, 1); __PYX_ERR(31, 846, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 846, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Bsend_init") < 0)) __PYX_ERR(31, 846, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 849, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 850, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Bsend_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 846, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_112Bsend_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_112Bsend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Bsend_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":855
 *         Persistent request for a send in buffered mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Bsend_init_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":856
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bsend_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":857
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Bsend_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":859
 *         with nogil: CHKERR( MPI_Bsend_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bsend_init_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 857, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":857
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Bsend_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":860
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":861
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ssend_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":846
 *     # Persistent Requests
 * 
 *     def Bsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":863
 *         return request
 * 
 *     def Ssend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_115Ssend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_114Ssend_init, "Ssend_init(self, buf: BufSpec, dest: int, tag: int = 0) -> Request\n\n        Persistent request for a send in synchronous mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_115Ssend_init = {"Ssend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_115Ssend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_114Ssend_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_115Ssend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ssend_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 863, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 863, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ssend_init", 0, 2, 3, 1); __PYX_ERR(31, 863, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 863, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ssend_init") < 0)) __PYX_ERR(31, 863, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 866, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 867, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ssend_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 863, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_114Ssend_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_114Ssend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ssend_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":872
 *         Persistent request for a send in synchronous mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Ssend_init_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":873
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ssend_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 873, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":874
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Ssend_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":876
 *         with nogil: CHKERR( MPI_Ssend_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ssend_init_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 874, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":874
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Ssend_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":877
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":878
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Rsend_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":863
 *         return request
 * 
 *     def Ssend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ssend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":880
 *         return request
 * 
 *     def Rsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_117Rsend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_116Rsend_init, "Rsend_init(self, buf: BufSpec, dest: int, tag: int = 0) -> Request\n\n        Persistent request for a send in ready mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_117Rsend_init = {"Rsend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_117Rsend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_116Rsend_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_117Rsend_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Rsend_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 880, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 880, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Rsend_init", 0, 2, 3, 1); __PYX_ERR(31, 880, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 880, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Rsend_init") < 0)) __PYX_ERR(31, 880, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 883, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 884, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Rsend_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 880, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_116Rsend_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_116Rsend_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_dest, int __pyx_v_tag) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *__pyx_v_smsg = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Rsend_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":889
 *         Persistent request for a send in ready mode.
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Rsend_init_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_p2p_send(__pyx_v_buf, __pyx_v_dest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_smsg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":890
 *         """
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rsend_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":891
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Rsend_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":893
 *         with nogil: CHKERR( MPI_Rsend_init_c(
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = smsg
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Rsend_init_c(__pyx_v_smsg->buf, __pyx_v_smsg->count, __pyx_v_smsg->dtype, __pyx_v_dest, __pyx_v_tag, __pyx_v_self->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 891, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":891
 *         cdef _p_msg_p2p smsg = message_p2p_send(buf, dest)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Rsend_init_c(             # <<<<<<<<<<<<<<
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":894
 *             smsg.buf, smsg.count, smsg.dtype,
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_smsg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_smsg);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_smsg);

  /* "src/mpi4py/MPI.src/Comm.pyx":895
 *             dest, tag, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = smsg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Collective Communications
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":880
 *         return request
 * 
 *     def Rsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Rsend_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_smsg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":903
 *     # -----------------------
 * 
 *     def Barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_119Barrier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_118Barrier, "Barrier(self) -> None\n\n        Barrier synchronization.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_119Barrier = {"Barrier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_119Barrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_118Barrier};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_119Barrier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Barrier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Barrier", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Barrier", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_118Barrier(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_118Barrier(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Barrier", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":907
 *         Barrier synchronization.
 *         """
 *         with nogil: CHKERR( MPI_Barrier(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Global Communication Functions
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 907, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":903
 *     # -----------------------
 * 
 *     def Barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Barrier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":912
 *     # ------------------------------
 * 
 *     def Bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_121Bcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_120Bcast, "Bcast(self, buf: BufSpec, root: int = 0) -> None\n\n        Broadcast data from one process to all other processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_121Bcast = {"Bcast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_121Bcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_120Bcast};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_121Bcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Bcast (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 912, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 912, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Bcast") < 0)) __PYX_ERR(31, 912, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 915, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Bcast", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 912, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_120Bcast(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_120Bcast(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Bcast", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":920
 *         Broadcast data from one process to all other processes.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Bcast_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 920, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":921
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast(__pyx_v_m, __pyx_v_buf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 921, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":922
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":924
 *         with nogil: CHKERR( MPI_Bcast_c(
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Gather(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_root, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 922, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":922
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Bcast_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":912
 *     # ------------------------------
 * 
 *     def Bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":926
 *             root, self.ob_mpi) )
 * 
 *     def Gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_123Gather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_122Gather, "Gather(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecB | None, root: int = 0) -> None\n\n        Gather data to one process from all other processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_123Gather = {"Gather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_123Gather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_122Gather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_123Gather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Gather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 926, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 926, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Gather", 0, 2, 3, 1); __PYX_ERR(31, 926, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 926, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Gather") < 0)) __PYX_ERR(31, 926, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 930, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Gather", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 926, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_122Gather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_122Gather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Gather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":935
 *         Gather data to one process from all other processes.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gather_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":936
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gather_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 936, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":937
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":940
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Gatherv(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gather_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 937, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":937
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":926
 *             root, self.ob_mpi) )
 * 
 *     def Gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":942
 *             root, self.ob_mpi) )
 * 
 *     def Gatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_125Gatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_124Gatherv, "Gatherv(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecV | None, root: int = 0) -> None\n\n        Gather Vector.\n\n        Gather data to one process from all other processes\n        providing different amounts of data and displacements.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_125Gatherv = {"Gatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_125Gatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_124Gatherv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_125Gatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Gatherv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 942, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 942, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Gatherv", 0, 2, 3, 1); __PYX_ERR(31, 942, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 942, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Gatherv") < 0)) __PYX_ERR(31, 942, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 946, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Gatherv", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 942, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_124Gatherv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_124Gatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Gatherv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":954
 *         providing different amounts of data and displacements.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gatherv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":955
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gatherv_c(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 955, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":956
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":959
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Scatter(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gatherv_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 956, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":956
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Gatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":942
 *             root, self.ob_mpi) )
 * 
 *     def Gatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":961
 *             root, self.ob_mpi) )
 * 
 *     def Scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_127Scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_126Scatter, "Scatter(self, sendbuf: BufSpecB | None, recvbuf: BufSpec | InPlace, root: int = 0) -> None\n\n        Scatter data from one process to all other processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_127Scatter = {"Scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_127Scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_126Scatter};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_127Scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Scatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 961, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 961, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Scatter", 0, 2, 3, 1); __PYX_ERR(31, 961, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 961, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Scatter") < 0)) __PYX_ERR(31, 961, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 965, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scatter", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 961, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_126Scatter(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_126Scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Scatter", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":970
 *         Scatter data from one process to all other processes.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatter_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":971
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatter_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 971, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":972
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":975
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Scatterv(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatter_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 972, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":972
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":961
 *             root, self.ob_mpi) )
 * 
 *     def Scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":977
 *             root, self.ob_mpi) )
 * 
 *     def Scatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_129Scatterv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_128Scatterv, "Scatterv(self, sendbuf: BufSpecV | None, recvbuf: BufSpec | InPlace, root: int = 0) -> None\n\n        Scatter Vector.\n\n        Scatter data from one process to all other processes\n        providing different amounts of data and displacements.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_129Scatterv = {"Scatterv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_129Scatterv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_128Scatterv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_129Scatterv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Scatterv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 977, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 977, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Scatterv", 0, 2, 3, 1); __PYX_ERR(31, 977, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 977, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Scatterv") < 0)) __PYX_ERR(31, 977, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 981, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scatterv", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 977, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatterv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_128Scatterv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_128Scatterv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Scatterv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":989
 *         providing different amounts of data and displacements.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatterv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":990
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatterv_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 990, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":991
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatterv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":994
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 *             root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Allgather(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatterv_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 991, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":991
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scatterv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":977
 *             root, self.ob_mpi) )
 * 
 *     def Scatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatterv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":996
 *             root, self.ob_mpi) )
 * 
 *     def Allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_131Allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_130Allgather, "Allgather(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecB) -> None\n\n        Gather to All.\n\n        Gather data from all processes and broadcast the combined data to all\n        other processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_131Allgather = {"Allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_131Allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_130Allgather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_131Allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allgather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 996, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 996, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Allgather", 1, 2, 2, 1); __PYX_ERR(31, 996, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allgather") < 0)) __PYX_ERR(31, 996, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allgather", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 996, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_130Allgather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_130Allgather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allgather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1007
 *         other processes.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgather_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1008
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgather_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1008, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1009
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1012
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Allgatherv(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgather_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1009, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1009
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":996
 *             root, self.ob_mpi) )
 * 
 *     def Allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1014
 *             self.ob_mpi) )
 * 
 *     def Allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_133Allgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_132Allgatherv, "Allgatherv(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecV) -> None\n\n        Gather to All Vector.\n\n        Gather data from all processes and send it to all other processes\n        providing different amounts of data and displacements.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_133Allgatherv = {"Allgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_133Allgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_132Allgatherv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_133Allgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allgatherv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1014, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1014, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Allgatherv", 1, 2, 2, 1); __PYX_ERR(31, 1014, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allgatherv") < 0)) __PYX_ERR(31, 1014, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allgatherv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1014, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_132Allgatherv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_132Allgatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allgatherv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1025
 *         providing different amounts of data and displacements.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgatherv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1026
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgatherv_c(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1026, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1027
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1030
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Alltoall(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgatherv_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1027, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1027
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1014
 *             self.ob_mpi) )
 * 
 *     def Allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1032
 *             self.ob_mpi) )
 * 
 *     def Alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_135Alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_134Alltoall, "Alltoall(self, sendbuf: BufSpecB | InPlace, recvbuf: BufSpecB) -> None\n\n        All to All Scatter/Gather.\n\n        Send data to all processes and recv data from all processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_135Alltoall = {"Alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_135Alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_134Alltoall};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_135Alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Alltoall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1032, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1032, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoall", 1, 2, 2, 1); __PYX_ERR(31, 1032, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Alltoall") < 0)) __PYX_ERR(31, 1032, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoall", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1032, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_134Alltoall(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_134Alltoall(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Alltoall", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1042
 *         Send data to all processes and recv data from all processes.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoall_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1043
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoall_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1043, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1044
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1047
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Alltoallv(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoall_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1044, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1044
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1032
 *             self.ob_mpi) )
 * 
 *     def Alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1049
 *             self.ob_mpi) )
 * 
 *     def Alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_137Alltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_136Alltoallv, "Alltoallv(self, sendbuf: BufSpecV | InPlace, recvbuf: BufSpecV) -> None\n\n        All to All Scatter/Gather Vector.\n\n        Send data to all processes and recv data from all processes\n        providing different amounts of data and displacements.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_137Alltoallv = {"Alltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_137Alltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_136Alltoallv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_137Alltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Alltoallv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1049, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1049, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoallv", 1, 2, 2, 1); __PYX_ERR(31, 1049, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Alltoallv") < 0)) __PYX_ERR(31, 1049, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoallv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1049, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_136Alltoallv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_136Alltoallv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Alltoallv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1060
 *         providing different amounts of data and displacements.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1061
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoallv_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1061, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1062
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1065
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Alltoallw(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallv_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1062, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1062
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1049
 *             self.ob_mpi) )
 * 
 *     def Alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1067
 *             self.ob_mpi) )
 * 
 *     def Alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_139Alltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_138Alltoallw, "Alltoallw(self, sendbuf: BufSpecW | InPlace, recvbuf: BufSpecW) -> None\n\n        All to All Scatter/Gather General.\n\n        Send/recv data to/from all processes allowing the specification of\n        different counts, displacements, and datatypes for each dest/source.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_139Alltoallw = {"Alltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_139Alltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_138Alltoallw};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_139Alltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Alltoallw (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1067, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1067, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoallw", 1, 2, 2, 1); __PYX_ERR(31, 1067, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Alltoallw") < 0)) __PYX_ERR(31, 1067, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoallw", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1067, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_138Alltoallw(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_138Alltoallw(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Alltoallw", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1078
 *         different counts, displacements, and datatypes for each dest/source.
 *         """
 *         cdef _p_msg_ccow m = message_ccow()             # <<<<<<<<<<<<<<
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallw_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_ccow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1078, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1079
 *         """
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoallw_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_alltoallw(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1079, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1080
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1083
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Global Reduction Operations
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallw_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stypes, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtypes, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1080, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1080
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Alltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1067
 *             self.ob_mpi) )
 * 
 *     def Alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1088
 *     # ---------------------------
 * 
 *     def Reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_141Reduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_140Reduce, "Reduce(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec | None, op: Op = SUM, root: int = 0) -> None\n\n        Reduce to Root.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_141Reduce = {"Reduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_141Reduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_140Reduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_141Reduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Reduce (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,&__pyx_n_s_root,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__108);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1088, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1088, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce", 0, 2, 4, 1); __PYX_ERR(31, 1088, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1088, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1088, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Reduce") < 0)) __PYX_ERR(31, 1088, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1093, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1088, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1092, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_140Reduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op, __pyx_v_root);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_140Reduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Reduce", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1098
 *         Reduce to Root.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1099
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1099, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1100
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1102
 *         with nogil: CHKERR( MPI_Reduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Allreduce(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_root, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1100, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1100
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1088
 *     # ---------------------------
 * 
 *     def Reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1104
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_143Allreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_142Allreduce, "Allreduce(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM) -> None\n\n        Reduce to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_143Allreduce = {"Allreduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_143Allreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_142Allreduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_143Allreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allreduce (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__109);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1104, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1104, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Allreduce", 0, 2, 3, 1); __PYX_ERR(31, 1104, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1104, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allreduce") < 0)) __PYX_ERR(31, 1104, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allreduce", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1104, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1108, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_142Allreduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_142Allreduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allreduce", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1113
 *         Reduce to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allreduce_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1114
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allreduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1114, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1115
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allreduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1117
 *         with nogil: CHKERR( MPI_Allreduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_scatter_block(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allreduce_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1115, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1115
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Allreduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1104
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1119
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_145Reduce_scatter_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_144Reduce_scatter_block, "Reduce_scatter_block(self, sendbuf: BufSpecB | InPlace, recvbuf: BufSpec | BufSpecB, op: Op = SUM) -> None\n\n        Reduce-Scatter Block (regular, non-vector version).\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_145Reduce_scatter_block = {"Reduce_scatter_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_145Reduce_scatter_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_144Reduce_scatter_block};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_145Reduce_scatter_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Reduce_scatter_block (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__110);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1119, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1119, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block", 0, 2, 3, 1); __PYX_ERR(31, 1119, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1119, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Reduce_scatter_block") < 0)) __PYX_ERR(31, 1119, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1119, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1123, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_144Reduce_scatter_block(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_144Reduce_scatter_block(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Reduce_scatter_block", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1128
 *         Reduce-Scatter Block (regular, non-vector version).
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1129
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1129, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1130
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1132
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_scatter(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_scatter_block_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1130, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1130
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1119
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1134
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_147Reduce_scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_146Reduce_scatter, "Reduce_scatter(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, recvcounts: Sequence[int] | None = None, op: Op = SUM) -> None\n\n        Reduce-Scatter (vector version).\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_147Reduce_scatter = {"Reduce_scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_147Reduce_scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_146Reduce_scatter};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_147Reduce_scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyObject *__pyx_v_recvcounts = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Reduce_scatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_recvcounts,&__pyx_n_s_op,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":1138
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__111);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1134, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1134, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_scatter", 0, 2, 4, 1); __PYX_ERR(31, 1134, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvcounts);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1134, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1134, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Reduce_scatter") < 0)) __PYX_ERR(31, 1134, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_recvcounts = values[2];
    __pyx_v_op = ((struct PyMPIOpObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_scatter", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1134, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1139, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_146Reduce_scatter(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_recvcounts, __pyx_v_op);

  /* "src/mpi4py/MPI.src/Comm.pyx":1134
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_146Reduce_scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, PyObject *__pyx_v_recvcounts, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Reduce_scatter", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1144
 *         Reduce-Scatter (vector version).
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1145
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter(sendbuf, recvbuf,             # <<<<<<<<<<<<<<
 *                              recvcounts, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_recvcounts, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1145, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1147
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1149
 *         with nogil: CHKERR( MPI_Reduce_scatter_c(
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking Collectives
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_scatter_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1147, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1147
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Reduce_scatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1134
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1154
 *     # -----------------------
 * 
 *     def Ibarrier(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking Barrier.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_149Ibarrier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_148Ibarrier, "Ibarrier(self) -> Request\n\n        Nonblocking Barrier.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_149Ibarrier = {"Ibarrier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_149Ibarrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_148Ibarrier};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_149Ibarrier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ibarrier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Ibarrier", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Ibarrier", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_148Ibarrier(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_148Ibarrier(struct PyMPICommObject *__pyx_v_self) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ibarrier", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1158
 *         Nonblocking Barrier.
 *         """
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ibarrier(self.ob_mpi, &request.ob_mpi) )
 *         return request
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1159
 *         """
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibarrier(self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ibarrier(__pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1159, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1160
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibarrier(self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ibcast(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1154
 *     # -----------------------
 * 
 *     def Ibarrier(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking Barrier.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibarrier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1162
 *         return request
 * 
 *     def Ibcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_151Ibcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_150Ibcast, "Ibcast(self, buf: BufSpec, root: int = 0) -> Request\n\n        Nonblocking Broadcast.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_151Ibcast = {"Ibcast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_151Ibcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_150Ibcast};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_151Ibcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ibcast (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1162, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1162, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ibcast") < 0)) __PYX_ERR(31, 1162, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1165, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ibcast", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 1162, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_150Ibcast(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_150Ibcast(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ibcast", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1170
 *         Nonblocking Broadcast.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1171
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibcast_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast(__pyx_v_m, __pyx_v_buf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1171, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1172
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ibcast_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1173
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibcast_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1175
 *         with nogil: CHKERR( MPI_Ibcast_c(
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ibcast_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_root, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1173, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1173
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ibcast_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1176
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1177
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Igather(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1162
 *         return request
 * 
 *     def Ibcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ibcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1179
 *         return request
 * 
 *     def Igather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_153Igather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_152Igather, "Igather(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecB | None, root: int = 0) -> Request\n\n        Nonblocking Gather.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_153Igather = {"Igather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_153Igather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_152Igather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_153Igather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Igather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1179, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1179, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Igather", 0, 2, 3, 1); __PYX_ERR(31, 1179, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1179, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Igather") < 0)) __PYX_ERR(31, 1179, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1183, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Igather", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1179, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Igather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_152Igather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_152Igather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Igather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1188
 *         Nonblocking Gather.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1189
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Igather_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1189, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1190
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Igather_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1191
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Igather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1194
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Igather_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1191, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1191
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Igather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1195
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1196
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Igatherv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1179
 *         return request
 * 
 *     def Igather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Igather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1198
 *         return request
 * 
 *     def Igatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_155Igatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_154Igatherv, "Igatherv(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecV | None, root: int = 0) -> Request\n\n        Nonblocking Gather Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_155Igatherv = {"Igatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_155Igatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_154Igatherv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_155Igatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Igatherv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1198, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1198, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Igatherv", 0, 2, 3, 1); __PYX_ERR(31, 1198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1198, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Igatherv") < 0)) __PYX_ERR(31, 1198, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1202, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Igatherv", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1198, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Igatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_154Igatherv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_154Igatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Igatherv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1207
 *         Nonblocking Gather Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1208
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Igatherv_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1208, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1209
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Igatherv_c(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1210
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Igatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1213
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Igatherv_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1210, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1210
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Igatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1214
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1215
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iscatter(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1198
 *         return request
 * 
 *     def Igatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Igatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1217
 *         return request
 * 
 *     def Iscatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_157Iscatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_156Iscatter, "Iscatter(self, sendbuf: BufSpecB | None, recvbuf: BufSpec | InPlace, root: int = 0) -> Request\n\n        Nonblocking Scatter.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_157Iscatter = {"Iscatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_157Iscatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_156Iscatter};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_157Iscatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iscatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1217, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1217, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iscatter", 0, 2, 3, 1); __PYX_ERR(31, 1217, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1217, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iscatter") < 0)) __PYX_ERR(31, 1217, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1221, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iscatter", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1217, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iscatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_156Iscatter(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_156Iscatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iscatter", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1226
 *         Nonblocking Scatter.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1227
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscatter_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1227, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1228
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iscatter_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1229
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1232
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iscatter_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1229, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1229
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1233
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1234
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iscatterv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1217
 *         return request
 * 
 *     def Iscatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iscatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1236
 *         return request
 * 
 *     def Iscatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_159Iscatterv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_158Iscatterv, "Iscatterv(self, sendbuf: BufSpecV | None, recvbuf: BufSpec | InPlace, root: int = 0) -> Request\n\n        Nonblocking Scatter Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_159Iscatterv = {"Iscatterv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_159Iscatterv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_158Iscatterv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_159Iscatterv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iscatterv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1236, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1236, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iscatterv", 0, 2, 3, 1); __PYX_ERR(31, 1236, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1236, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iscatterv") < 0)) __PYX_ERR(31, 1236, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1240, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iscatterv", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1236, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iscatterv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_158Iscatterv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_158Iscatterv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iscatterv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1245
 *         Nonblocking Scatter Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1246
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscatterv_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1246, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1247
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iscatterv_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1248
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscatterv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1251
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iscatterv_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1248, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1248
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscatterv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1252
 *             m.rbuf, m.rcount,             m.rtype,
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1253
 *             root, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iallgather(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1236
 *         return request
 * 
 *     def Iscatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iscatterv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1255
 *         return request
 * 
 *     def Iallgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_161Iallgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_160Iallgather, "Iallgather(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecB) -> Request\n\n        Nonblocking Gather to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_161Iallgather = {"Iallgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_161Iallgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_160Iallgather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_161Iallgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iallgather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1255, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1255, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iallgather", 1, 2, 2, 1); __PYX_ERR(31, 1255, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iallgather") < 0)) __PYX_ERR(31, 1255, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iallgather", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1255, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iallgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_160Iallgather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_160Iallgather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iallgather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1263
 *         Nonblocking Gather to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1264
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallgather_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1264, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1265
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iallgather_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1266
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1269
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iallgather_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1266, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1266
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1270
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1271
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iallgatherv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1255
 *         return request
 * 
 *     def Iallgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iallgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1273
 *         return request
 * 
 *     def Iallgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_163Iallgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_162Iallgatherv, "Iallgatherv(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecV) -> Request\n\n        Nonblocking Gather to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_163Iallgatherv = {"Iallgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_163Iallgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_162Iallgatherv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_163Iallgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iallgatherv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1273, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1273, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iallgatherv", 1, 2, 2, 1); __PYX_ERR(31, 1273, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iallgatherv") < 0)) __PYX_ERR(31, 1273, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iallgatherv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1273, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iallgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_162Iallgatherv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_162Iallgatherv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iallgatherv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1281
 *         Nonblocking Gather to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1282
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallgatherv_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1282, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1283
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iallgatherv_c(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1284
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1287
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iallgatherv_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1284, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1284
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1288
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ialltoall(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1273
 *         return request
 * 
 *     def Iallgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iallgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1290
 *         return request
 * 
 *     def Ialltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_165Ialltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_164Ialltoall, "Ialltoall(self, sendbuf: BufSpecB | InPlace, recvbuf: BufSpecB) -> Request\n\n        Nonblocking All to All Scatter/Gather.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_165Ialltoall = {"Ialltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_165Ialltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_164Ialltoall};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_165Ialltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ialltoall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1290, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1290, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ialltoall", 1, 2, 2, 1); __PYX_ERR(31, 1290, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ialltoall") < 0)) __PYX_ERR(31, 1290, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ialltoall", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1290, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ialltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_164Ialltoall(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_164Ialltoall(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ialltoall", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1298
 *         Nonblocking All to All Scatter/Gather.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1299
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoall_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1299, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1300
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ialltoall_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1301
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1304
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ialltoall_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1301, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1301
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1305
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1306
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ialltoallv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1290
 *         return request
 * 
 *     def Ialltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ialltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1308
 *         return request
 * 
 *     def Ialltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_167Ialltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_166Ialltoallv, "Ialltoallv(self, sendbuf: BufSpecV | InPlace, recvbuf: BufSpecV) -> Request\n\n        Nonblocking All to All Scatter/Gather Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_167Ialltoallv = {"Ialltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_167Ialltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_166Ialltoallv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_167Ialltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ialltoallv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1308, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1308, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ialltoallv", 1, 2, 2, 1); __PYX_ERR(31, 1308, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ialltoallv") < 0)) __PYX_ERR(31, 1308, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ialltoallv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1308, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ialltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_166Ialltoallv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_166Ialltoallv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ialltoallv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1316
 *         Nonblocking All to All Scatter/Gather Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1317
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoallv_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1317, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1318
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ialltoallv_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1319
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1322
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ialltoallv_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1319, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1319
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1323
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1324
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ialltoallw(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1308
 *         return request
 * 
 *     def Ialltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ialltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1326
 *         return request
 * 
 *     def Ialltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_169Ialltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_168Ialltoallw, "Ialltoallw(self, sendbuf: BufSpecW | InPlace, recvbuf: BufSpecW) -> Request\n\n        Nonblocking All to All Scatter/Gather General.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_169Ialltoallw = {"Ialltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_169Ialltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_168Ialltoallw};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_169Ialltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ialltoallw (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1326, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1326, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ialltoallw", 1, 2, 2, 1); __PYX_ERR(31, 1326, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ialltoallw") < 0)) __PYX_ERR(31, 1326, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ialltoallw", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1326, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ialltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_168Ialltoallw(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_168Ialltoallw(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ialltoallw", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1334
 *         Nonblocking All to All Scatter/Gather General.
 *         """
 *         cdef _p_msg_ccow m = message_ccow()             # <<<<<<<<<<<<<<
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_ccow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1335
 *         """
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoallw_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_alltoallw(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1335, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1336
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ialltoallw_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1337
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1340
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ialltoallw_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stypes, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtypes, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1337, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1337
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ialltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1341
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1342
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ireduce(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1326
 *         return request
 * 
 *     def Ialltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ialltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1344
 *         return request
 * 
 *     def Ireduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_171Ireduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_170Ireduce, "Ireduce(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec | None, op: Op = SUM, root: int = 0) -> Request\n\n        Nonblocking Reduce to Root.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_171Ireduce = {"Ireduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_171Ireduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_170Ireduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_171Ireduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ireduce (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,&__pyx_n_s_root,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__112);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1344, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1344, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ireduce", 0, 2, 4, 1); __PYX_ERR(31, 1344, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1344, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1344, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ireduce") < 0)) __PYX_ERR(31, 1344, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1349, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ireduce", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1344, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ireduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1348, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_170Ireduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op, __pyx_v_root);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_170Ireduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, int __pyx_v_root) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ireduce", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1354
 *         Nonblocking Reduce to Root.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1355
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1355, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1356
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ireduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1357
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1359
 *         with nogil: CHKERR( MPI_Ireduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ireduce_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_root, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1357, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1357
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1360
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iallreduce(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1344
 *         return request
 * 
 *     def Ireduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ireduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1362
 *         return request
 * 
 *     def Iallreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_173Iallreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_172Iallreduce, "Iallreduce(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM) -> Request\n\n        Nonblocking Reduce to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_173Iallreduce = {"Iallreduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_173Iallreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_172Iallreduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_173Iallreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iallreduce (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__113);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1362, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1362, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iallreduce", 0, 2, 3, 1); __PYX_ERR(31, 1362, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1362, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iallreduce") < 0)) __PYX_ERR(31, 1362, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iallreduce", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1362, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iallreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1366, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_172Iallreduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_172Iallreduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iallreduce", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1371
 *         Nonblocking Reduce to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1372
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallreduce_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1372, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1373
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iallreduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1374
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallreduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1376
 *         with nogil: CHKERR( MPI_Iallreduce_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iallreduce_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1374, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1374
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iallreduce_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1377
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ireduce_scatter_block(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1362
 *         return request
 * 
 *     def Iallreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Iallreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1379
 *         return request
 * 
 *     def Ireduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_174Ireduce_scatter_block, "Ireduce_scatter_block(self, sendbuf: BufSpecB | InPlace, recvbuf: BufSpec | BufSpecB, op: Op = SUM) -> Request\n\n        Nonblocking Reduce-Scatter Block (regular, non-vector version).\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block = {"Ireduce_scatter_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_174Ireduce_scatter_block};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ireduce_scatter_block (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__114);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1379, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1379, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ireduce_scatter_block", 0, 2, 3, 1); __PYX_ERR(31, 1379, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1379, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ireduce_scatter_block") < 0)) __PYX_ERR(31, 1379, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ireduce_scatter_block", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1379, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ireduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1383, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_174Ireduce_scatter_block(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_174Ireduce_scatter_block(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ireduce_scatter_block", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1388
 *         Nonblocking Reduce-Scatter Block (regular, non-vector version).
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1389
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_scatter_block_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1389, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1390
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ireduce_scatter_block_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1391
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_scatter_block_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1393
 *         with nogil: CHKERR( MPI_Ireduce_scatter_block_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ireduce_scatter_block_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1391, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1391
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_scatter_block_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1394
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ireduce_scatter(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1379
 *         return request
 * 
 *     def Ireduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ireduce_scatter_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1396
 *         return request
 * 
 *     def Ireduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_177Ireduce_scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_176Ireduce_scatter, "Ireduce_scatter(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, recvcounts: Sequence[int] | None = None, op: Op = SUM) -> Request\n\n        Nonblocking Reduce-Scatter (vector version).\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_177Ireduce_scatter = {"Ireduce_scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_177Ireduce_scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_176Ireduce_scatter};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_177Ireduce_scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyObject *__pyx_v_recvcounts = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ireduce_scatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_recvcounts,&__pyx_n_s_op,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":1400
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__115);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1396, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1396, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ireduce_scatter", 0, 2, 4, 1); __PYX_ERR(31, 1396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvcounts);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1396, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1396, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ireduce_scatter") < 0)) __PYX_ERR(31, 1396, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_recvcounts = values[2];
    __pyx_v_op = ((struct PyMPIOpObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ireduce_scatter", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1396, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ireduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1401, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_176Ireduce_scatter(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_recvcounts, __pyx_v_op);

  /* "src/mpi4py/MPI.src/Comm.pyx":1396
 *         return request
 * 
 *     def Ireduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_176Ireduce_scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, PyObject *__pyx_v_recvcounts, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ireduce_scatter", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1406
 *         Nonblocking Reduce-Scatter (vector version).
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1407
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter(sendbuf, recvbuf,             # <<<<<<<<<<<<<<
 *                              recvcounts, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_recvcounts, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1407, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1409
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ireduce_scatter_c(
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1410
 *                              recvcounts, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_scatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1412
 *         with nogil: CHKERR( MPI_Ireduce_scatter_c(
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ireduce_scatter_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1410, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1410
 *                              recvcounts, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ireduce_scatter_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1413
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Persistent Collectives
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1396
 *         return request
 * 
 *     def Ireduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Ireduce_scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1418
 *     # ----------------------
 * 
 *     def Barrier_init(             # <<<<<<<<<<<<<<
 *         self,
 *         Info info: Info = INFO_NULL,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_179Barrier_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_178Barrier_init, "Barrier_init(self, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Barrier.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_179Barrier_init = {"Barrier_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_179Barrier_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_178Barrier_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_179Barrier_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Barrier_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__116);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1418, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Barrier_init") < 0)) __PYX_ERR(31, 1418, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Barrier_init", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 1418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Barrier_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1420, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_178Barrier_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_178Barrier_init(struct PyMPICommObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Barrier_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1425
 *         Persistent Barrier.
 *         """
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Barrier_init(
 *                 self.ob_mpi, info.ob_mpi,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1426
 *         """
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Barrier_init(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, info.ob_mpi,
 *                 &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1428
 *         with nogil: CHKERR( MPI_Barrier_init(
 *                 self.ob_mpi, info.ob_mpi,
 *                 &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Barrier_init(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1426, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1426
 *         """
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Barrier_init(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, info.ob_mpi,
 *                 &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1429
 *                 self.ob_mpi, info.ob_mpi,
 *                 &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Bcast_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1418
 *     # ----------------------
 * 
 *     def Barrier_init(             # <<<<<<<<<<<<<<
 *         self,
 *         Info info: Info = INFO_NULL,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Barrier_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1431
 *         return request
 * 
 *     def Bcast_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_181Bcast_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_180Bcast_init, "Bcast_init(self, buf: BufSpec, root: int = 0, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Broadcast.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_181Bcast_init = {"Bcast_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_181Bcast_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_180Bcast_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_181Bcast_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_root;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Bcast_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_root,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__117);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1431, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1431, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1431, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Bcast_init") < 0)) __PYX_ERR(31, 1431, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1434, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Bcast_init", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 1431, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bcast_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1435, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_180Bcast_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_root, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_180Bcast_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Bcast_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1440
 *         Persistent Broadcast.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1441
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Bcast_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast(__pyx_v_m, __pyx_v_buf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1441, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1442
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Bcast_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1443
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Bcast_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1445
 *         with nogil: CHKERR( MPI_Bcast_init_c(
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Bcast_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_root, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1443, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1443
 *         m.for_bcast(buf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Bcast_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1446
 *             m.sbuf, m.scount, m.stype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1447
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Gather_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1431
 *         return request
 * 
 *     def Bcast_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Bcast_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1449
 *         return request
 * 
 *     def Gather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_183Gather_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_182Gather_init, "Gather_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecB | None, root: int = 0, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Gather.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_183Gather_init = {"Gather_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_183Gather_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_182Gather_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_183Gather_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Gather_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,&__pyx_n_s_info,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__118);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1449, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1449, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Gather_init", 0, 2, 4, 1); __PYX_ERR(31, 1449, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1449, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1449, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Gather_init") < 0)) __PYX_ERR(31, 1449, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1453, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Gather_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1449, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gather_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1454, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_182Gather_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_182Gather_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Gather_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1459
 *         Persistent Gather.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1460
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Gather_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1460, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1461
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gather_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1462
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Gather_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1465
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gather_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1462, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1462
 *         m.for_gather(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Gather_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1466
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1467
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Gatherv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1449
 *         return request
 * 
 *     def Gather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gather_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1469
 *         return request
 * 
 *     def Gatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_185Gatherv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_184Gatherv_init, "Gatherv_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecV | None, root: int = 0, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Gather Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_185Gatherv_init = {"Gatherv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_185Gatherv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_184Gatherv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_185Gatherv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Gatherv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,&__pyx_n_s_info,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__119);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1469, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1469, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Gatherv_init", 0, 2, 4, 1); __PYX_ERR(31, 1469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1469, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1469, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Gatherv_init") < 0)) __PYX_ERR(31, 1469, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1473, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Gatherv_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1469, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gatherv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1474, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_184Gatherv_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_184Gatherv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Gatherv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1479
 *         Persistent Gather Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1480
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Gatherv_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1480, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1481
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Gatherv_init_c(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1482
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Gatherv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1485
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Gatherv_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1482, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1482
 *         m.for_gather(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Gatherv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1486
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1487
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Scatter_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1469
 *         return request
 * 
 *     def Gatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Gatherv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1489
 *         return request
 * 
 *     def Scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_187Scatter_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_186Scatter_init, "Scatter_init(self, sendbuf: BufSpecB | None, recvbuf: BufSpec | InPlace, root: int = 0, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Scatter.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_187Scatter_init = {"Scatter_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_187Scatter_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_186Scatter_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_187Scatter_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Scatter_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,&__pyx_n_s_info,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__120);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1489, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1489, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Scatter_init", 0, 2, 4, 1); __PYX_ERR(31, 1489, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1489, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1489, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Scatter_init") < 0)) __PYX_ERR(31, 1489, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1493, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scatter_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1489, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatter_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1494, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_186Scatter_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_186Scatter_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Scatter_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1499
 *         Persistent Scatter.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1500
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scatter_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1500, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1501
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatter_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1502
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scatter_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1505
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatter_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1502, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1502
 *         m.for_scatter(0, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scatter_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1506
 *             m.rbuf, m.rcount, m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1507
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Scatterv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1489
 *         return request
 * 
 *     def Scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatter_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1509
 *         return request
 * 
 *     def Scatterv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_189Scatterv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_188Scatterv_init, "Scatterv_init(self, sendbuf: BufSpecV | None, recvbuf: BufSpec | InPlace, root: int = 0, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Scatter Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_189Scatterv_init = {"Scatterv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_189Scatterv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_188Scatterv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_189Scatterv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_root;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Scatterv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_root,&__pyx_n_s_info,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__121);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1509, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1509, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Scatterv_init", 0, 2, 4, 1); __PYX_ERR(31, 1509, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1509, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1509, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Scatterv_init") < 0)) __PYX_ERR(31, 1509, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1513, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scatterv_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1509, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatterv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1514, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_188Scatterv_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_188Scatterv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Scatterv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1519
 *         Persistent Scatter Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1520
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scatterv_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1520, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1521
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scatterv_init_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1522
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scatterv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1525
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scatterv_init_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_root, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1522, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1522
 *         m.for_scatter(1, sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scatterv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcount,             m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1526
 *             m.rbuf, m.rcount,             m.rtype,
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1527
 *             root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Allgather_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1509
 *         return request
 * 
 *     def Scatterv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Scatterv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1529
 *         return request
 * 
 *     def Allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_191Allgather_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_190Allgather_init, "Allgather_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecB, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Gather to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_191Allgather_init = {"Allgather_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_191Allgather_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_190Allgather_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_191Allgather_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allgather_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__122);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1529, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1529, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Allgather_init", 0, 2, 3, 1); __PYX_ERR(31, 1529, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1529, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allgather_init") < 0)) __PYX_ERR(31, 1529, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allgather_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1529, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgather_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1533, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_190Allgather_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_190Allgather_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allgather_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1538
 *         Persistent Gather to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1539
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allgather_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1539, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1540
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgather_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1540, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1541
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allgather_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1544
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgather_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1541, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1541
 *         m.for_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allgather_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1545
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1546
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Allgatherv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1529
 *         return request
 * 
 *     def Allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgather_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1548
 *         return request
 * 
 *     def Allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_193Allgatherv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_192Allgatherv_init, "Allgatherv_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpecV, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Gather to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_193Allgatherv_init = {"Allgatherv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_193Allgatherv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_192Allgatherv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_193Allgatherv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allgatherv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__123);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1548, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1548, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Allgatherv_init", 0, 2, 3, 1); __PYX_ERR(31, 1548, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1548, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allgatherv_init") < 0)) __PYX_ERR(31, 1548, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allgatherv_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1548, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgatherv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1552, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_192Allgatherv_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_192Allgatherv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allgatherv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1557
 *         Persistent Gather to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1558
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allgatherv_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1558, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1559
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allgatherv_init_c(
 *             m.sbuf, m.scount,             m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1560
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allgatherv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1563
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allgatherv_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1560, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1560
 *         m.for_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allgatherv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount,             m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1564
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Alltoall_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1548
 *         return request
 * 
 *     def Allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allgatherv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1566
 *         return request
 * 
 *     def Alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_195Alltoall_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_194Alltoall_init, "Alltoall_init(self, sendbuf: BufSpecB | InPlace, recvbuf: BufSpecB, info: Info = INFO_NULL) -> Prequest\n\n        Persistent All to All Scatter/Gather.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_195Alltoall_init = {"Alltoall_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_195Alltoall_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_194Alltoall_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_195Alltoall_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Alltoall_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__124);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1566, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1566, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoall_init", 0, 2, 3, 1); __PYX_ERR(31, 1566, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1566, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Alltoall_init") < 0)) __PYX_ERR(31, 1566, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoall_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1566, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoall_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1570, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_194Alltoall_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_194Alltoall_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Alltoall_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1575
 *         Persistent All to All Scatter/Gather.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1576
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoall_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1576, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1577
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoall_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1578
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoall_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1581
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoall_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1578, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1578
 *         m.for_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoall_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1582
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1583
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Alltoallv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1566
 *         return request
 * 
 *     def Alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoall_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1585
 *         return request
 * 
 *     def Alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_197Alltoallv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_196Alltoallv_init, "Alltoallv_init(self, sendbuf: BufSpecV | InPlace, recvbuf: BufSpecV, info: Info = INFO_NULL) -> Prequest\n\n        Persistent All to All Scatter/Gather Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_197Alltoallv_init = {"Alltoallv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_197Alltoallv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_196Alltoallv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_197Alltoallv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Alltoallv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__125);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1585, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1585, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoallv_init", 0, 2, 3, 1); __PYX_ERR(31, 1585, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1585, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Alltoallv_init") < 0)) __PYX_ERR(31, 1585, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoallv_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1585, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1589, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_196Alltoallv_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_196Alltoallv_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Alltoallv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1594
 *         Persistent All to All Scatter/Gather Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1595
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoallv_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1595, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1596
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoallv_init_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1597
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoallv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1600
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallv_init_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1597, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1597
 *         m.for_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoallv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1601
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1602
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Alltoallw_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1585
 *         return request
 * 
 *     def Alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1604
 *         return request
 * 
 *     def Alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_199Alltoallw_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_198Alltoallw_init, "Alltoallw_init(self, sendbuf: BufSpecW | InPlace, recvbuf: BufSpecW, info: Info = INFO_NULL) -> Prequest\n\n        Persistent All to All Scatter/Gather General.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_199Alltoallw_init = {"Alltoallw_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_199Alltoallw_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_198Alltoallw_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_199Alltoallw_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Alltoallw_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__126);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1604, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1604, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Alltoallw_init", 0, 2, 3, 1); __PYX_ERR(31, 1604, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1604, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Alltoallw_init") < 0)) __PYX_ERR(31, 1604, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alltoallw_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1604, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallw_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1608, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_198Alltoallw_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_198Alltoallw_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Alltoallw_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1613
 *         Persistent All to All Scatter/Gather General.
 *         """
 *         cdef _p_msg_ccow m = message_ccow()             # <<<<<<<<<<<<<<
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_ccow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1614
 *         """
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoallw_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_alltoallw(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1614, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1615
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Alltoallw_init_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1616
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoallw_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1619
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alltoallw_init_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stypes, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtypes, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1616, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1616
 *         m.for_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Alltoallw_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1620
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":1621
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1604
 *         return request
 * 
 *     def Alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Alltoallw_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1623
 *         return request
 * 
 *     def Reduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_201Reduce_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_200Reduce_init, "Reduce_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec | None, op: Op = SUM, root: int = 0, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Reduce to Root.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_201Reduce_init = {"Reduce_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_201Reduce_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_200Reduce_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_201Reduce_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  int __pyx_v_root;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Reduce_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,&__pyx_n_s_root,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__127);
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__128);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1623, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1623, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_init", 0, 2, 5, 1); __PYX_ERR(31, 1623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1623, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1623, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Reduce_init") < 0)) __PYX_ERR(31, 1623, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    if (values[3]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1628, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_init", 0, 2, 5, __pyx_nargs); __PYX_ERR(31, 1623, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1627, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1629, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_200Reduce_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op, __pyx_v_root, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_200Reduce_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, int __pyx_v_root, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Reduce_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1634
 *         Persistent Reduce to Root.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1635
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_root, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1635, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1636
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1637
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1639
 *         with nogil: CHKERR( MPI_Reduce_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_init_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_root, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1637, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1637
 *         m.for_reduce(sendbuf, recvbuf, root, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1640
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, root, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Allreduce_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1623
 *         return request
 * 
 *     def Reduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1642
 *         return request
 * 
 *     def Allreduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_203Allreduce_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_202Allreduce_init, "Allreduce_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Reduce to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_203Allreduce_init = {"Allreduce_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_203Allreduce_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_202Allreduce_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_203Allreduce_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allreduce_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__129);
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__130);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1642, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1642, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Allreduce_init", 0, 2, 4, 1); __PYX_ERR(31, 1642, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1642, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1642, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allreduce_init") < 0)) __PYX_ERR(31, 1642, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allreduce_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1642, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allreduce_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1646, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1647, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_202Allreduce_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_202Allreduce_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allreduce_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1652
 *         Persistent Reduce to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1653
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allreduce_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1653, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1654
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Allreduce_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1655
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allreduce_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1657
 *         with nogil: CHKERR( MPI_Allreduce_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Allreduce_init_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1655, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1655
 *         m.for_allreduce(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Allreduce_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1658
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_scatter_block_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1642
 *         return request
 * 
 *     def Allreduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Allreduce_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1660
 *         return request
 * 
 *     def Reduce_scatter_block_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_204Reduce_scatter_block_init, "Reduce_scatter_block_init(self, sendbuf: BufSpecB | InPlace, recvbuf: BufSpec | BufSpecB, op: Op = SUM, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Reduce-Scatter Block (regular, non-vector version).\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init = {"Reduce_scatter_block_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_204Reduce_scatter_block_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Reduce_scatter_block_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__131);
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__132);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1660, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1660, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block_init", 0, 2, 4, 1); __PYX_ERR(31, 1660, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1660, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1660, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Reduce_scatter_block_init") < 0)) __PYX_ERR(31, 1660, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_scatter_block_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 1660, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_block_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1664, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1665, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_204Reduce_scatter_block_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_204Reduce_scatter_block_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Reduce_scatter_block_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1670
 *         Persistent Reduce-Scatter Block (regular, non-vector version).
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1670, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1671
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1671, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1672
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1672, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1673
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1675
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_scatter_block_init_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1673, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1673
 *         m.for_reduce_scatter_block(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_scatter_block_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1676
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Reduce_scatter_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1660
 *         return request
 * 
 *     def Reduce_scatter_block_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_block_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1678
 *         return request
 * 
 *     def Reduce_scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_207Reduce_scatter_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_206Reduce_scatter_init, "Reduce_scatter_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, recvcounts: Sequence[int] | None = None, op: Op = SUM, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Reduce-Scatter (vector version).\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_207Reduce_scatter_init = {"Reduce_scatter_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_207Reduce_scatter_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_206Reduce_scatter_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_207Reduce_scatter_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  PyObject *__pyx_v_recvcounts = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Reduce_scatter_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_recvcounts,&__pyx_n_s_op,&__pyx_n_s_info,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":1682
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__133);
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__134);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1678, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1678, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Reduce_scatter_init", 0, 2, 5, 1); __PYX_ERR(31, 1678, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvcounts);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1678, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1678, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1678, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Reduce_scatter_init") < 0)) __PYX_ERR(31, 1678, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_recvcounts = values[2];
    __pyx_v_op = ((struct PyMPIOpObject *)values[3]);
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Reduce_scatter_init", 0, 2, 5, __pyx_nargs); __PYX_ERR(31, 1678, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 1683, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 1684, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_206Reduce_scatter_init(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_recvcounts, __pyx_v_op, __pyx_v_info);

  /* "src/mpi4py/MPI.src/Comm.pyx":1678
 *         return request
 * 
 *     def Reduce_scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_206Reduce_scatter_init(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, PyObject *__pyx_v_recvcounts, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Reduce_scatter_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1689
 *         Persistent Reduce-Scatter (vector version).
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1690
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_reduce_scatter(sendbuf, recvbuf,             # <<<<<<<<<<<<<<
 *                              recvcounts, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_recvcounts, __pyx_v_self->ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1690, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1692
 *         m.for_reduce_scatter(sendbuf, recvbuf,
 *                              recvcounts, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Reduce_scatter_init_c(
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1692, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1693
 *                              recvcounts, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_scatter_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":1695
 *         with nogil: CHKERR( MPI_Reduce_scatter_init_c(
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Reduce_scatter_init_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1693, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":1693
 *                              recvcounts, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Reduce_scatter_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1696
 *             m.sbuf, m.rbuf, m.rcounts, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Tests
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1678
 *         return request
 * 
 *     def Reduce_scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Reduce_scatter_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1701
 *     # -----
 * 
 *     def Is_inter(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intercommunicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_209Is_inter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_208Is_inter, "Is_inter(self) -> bool\n\n        Return whether the communicator is an intercommunicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_209Is_inter = {"Is_inter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_209Is_inter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_208Is_inter};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_209Is_inter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_inter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_inter", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_inter", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_208Is_inter(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_208Is_inter(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_inter", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1705
 *         Return whether the communicator is an intercommunicator.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1706
 *         """
 *         cdef int flag = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_self->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1706, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1707
 *         cdef int flag = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     property is_inter:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1701
 *     # -----
 * 
 *     def Is_inter(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intercommunicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Is_inter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1711
 *     property is_inter:
 *         """Is intercommunicator."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_inter()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_8is_inter_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_8is_inter_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_8is_inter___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_inter___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1712
 *         """Is intercommunicator."""
 *         def __get__(self) -> bool:
 *             return self.Is_inter()             # <<<<<<<<<<<<<<
 * 
 *     def Is_intra(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Is_inter); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1711
 *     property is_inter:
 *         """Is intercommunicator."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_inter()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.is_inter.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1714
 *             return self.Is_inter()
 * 
 *     def Is_intra(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intracommunicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_211Is_intra(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_210Is_intra, "Is_intra(self) -> bool\n\n        Return whether the communicator is an intracommunicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_211Is_intra = {"Is_intra", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_211Is_intra, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_210Is_intra};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_211Is_intra(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_intra (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Is_intra", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Is_intra", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_210Is_intra(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_210Is_intra(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_intra", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1718
 *         Return whether the communicator is an intracommunicator.
 *         """
 *         return not self.Is_inter()             # <<<<<<<<<<<<<<
 * 
 *     property is_intra:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Is_inter); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(31, 1718, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong((!__pyx_t_5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1714
 *             return self.Is_inter()
 * 
 *     def Is_intra(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intracommunicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Is_intra", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1722
 *     property is_intra:
 *         """Is intracommunicator."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_intra()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_8is_intra_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_8is_intra_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_8is_intra___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8is_intra___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1723
 *         """Is intracommunicator."""
 *         def __get__(self) -> bool:
 *             return self.Is_intra()             # <<<<<<<<<<<<<<
 * 
 *     def Get_topology(self) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Is_intra); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1722
 *     property is_intra:
 *         """Is intracommunicator."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Is_intra()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.is_intra.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1725
 *             return self.Is_intra()
 * 
 *     def Get_topology(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the type of topology (if any) associated with a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_213Get_topology(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_212Get_topology, "Get_topology(self) -> int\n\n        Return the type of topology (if any) associated with a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_213Get_topology = {"Get_topology", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_213Get_topology, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_212Get_topology};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_213Get_topology(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_topology (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_topology", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_topology", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_212Get_topology(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_212Get_topology(struct PyMPICommObject *__pyx_v_self) {
  int __pyx_v_topo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_topology", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1729
 *         Return the type of topology (if any) associated with a communicator.
 *         """
 *         cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         return topo
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":1730
 *         """
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *         return topo
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_self->ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1730, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1731
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         return topo             # <<<<<<<<<<<<<<
 * 
 *     property topology:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1725
 *             return self.Is_intra()
 * 
 *     def Get_topology(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the type of topology (if any) associated with a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_topology", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1735
 *     property topology:
 *         """Topology type."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_topology()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_8topology_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_8topology_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_8topology___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_8topology___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1736
 *         """Topology type."""
 *         def __get__(self) -> int:
 *             return self.Get_topology()             # <<<<<<<<<<<<<<
 * 
 *     property is_topo:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topology); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1735
 *     property topology:
 *         """Topology type."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_topology()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.topology.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1740
 *     property is_topo:
 *         """Is a topology."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Get_topology() != MPI_UNDEFINED
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_7is_topo_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_7is_topo_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_7is_topo___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_7is_topo___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1741
 *         """Is a topology."""
 *         def __get__(self) -> bool:
 *             return self.Get_topology() != MPI_UNDEFINED             # <<<<<<<<<<<<<<
 * 
 *     # Process Creation and Management
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topology); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyInt_From___pyx_anon_enum(MPI_UNDEFINED); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1740
 *     property is_topo:
 *         """Is a topology."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Get_topology() != MPI_UNDEFINED
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.is_topo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1746
 *     # -------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_parent(cls) -> Intercomm:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_215Get_parent(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_214Get_parent, "Get_parent(cls) -> Intercomm\n\n        Return the parent intercommunicator for this process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_215Get_parent = {"Get_parent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_215Get_parent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_214Get_parent};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_215Get_parent(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_parent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_parent", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_parent", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_214Get_parent(((PyTypeObject*)__pyx_v_cls));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_214Get_parent(CYTHON_UNUSED PyTypeObject *__pyx_v_cls) {
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_parent", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1751
 *         Return the parent intercommunicator for this process.
 *         """
 *         cdef Intercomm comm = __COMM_PARENT__             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__);
  __pyx_v_comm = __pyx_v_6mpi4py_3MPI___COMM_PARENT__;

  /* "src/mpi4py/MPI.src/Comm.pyx":1752
 *         """
 *         cdef Intercomm comm = __COMM_PARENT__
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_parent((&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1752, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1753
 *         cdef Intercomm comm = __COMM_PARENT__
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1753, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1754
 *         with nogil: CHKERR( MPI_Comm_get_parent(&comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Disconnect(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1746
 *     # -------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_parent(cls) -> Intercomm:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_parent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1756
 *         return comm
 * 
 *     def Disconnect(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Disconnect from a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_217Disconnect(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_216Disconnect, "Disconnect(self) -> None\n\n        Disconnect from a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_217Disconnect = {"Disconnect", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_217Disconnect, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_216Disconnect};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_217Disconnect(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Disconnect (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Disconnect", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Disconnect", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_216Disconnect(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_216Disconnect(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Disconnect", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1760
 *         Disconnect from a communicator.
 *         """
 *         with nogil: CHKERR( MPI_Comm_disconnect(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_disconnect((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1760, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1756
 *         return comm
 * 
 *     def Disconnect(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Disconnect from a communicator.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Disconnect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1762
 *         with nogil: CHKERR( MPI_Comm_disconnect(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Join(cls, int fd: int) -> Intercomm:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_219Join(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_218Join, "Join(cls, fd: int) -> Intercomm\n\n        Interconnect two processes connected by a socket.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_219Join = {"Join", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_219Join, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_218Join};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_219Join(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_fd;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Join (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fd)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1762, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Join") < 0)) __PYX_ERR(31, 1762, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_fd = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_fd == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1763, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Join", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1762, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Join", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_218Join(((PyTypeObject*)__pyx_v_cls), __pyx_v_fd);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_218Join(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_fd) {
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Join", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1767
 *         Interconnect two processes connected by a socket.
 *         """
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_join(fd, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1768
 *         """
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_join(fd, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_join(__pyx_v_fd, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1768, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1769
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_join(fd, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1769, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1770
 *         with nogil: CHKERR( MPI_Comm_join(fd, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Attributes
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1762
 *         with nogil: CHKERR( MPI_Comm_disconnect(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Join(cls, int fd: int) -> Intercomm:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Join", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1775
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_221Get_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_220Get_attr, "Get_attr(self, keyval: int) -> int | Any | None\n\n        Retrieve attribute value by key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_221Get_attr = {"Get_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_221Get_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_220Get_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_221Get_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1775, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_attr") < 0)) __PYX_ERR(31, 1775, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1775, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1775, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_220Get_attr(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_220Get_attr(struct PyMPICommObject *__pyx_v_self, int __pyx_v_keyval) {
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_attr", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1779
 *         Retrieve attribute value by key.
 *         """
 *         cdef void *attrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int  flag = 0
 *         CHKERR( MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 */
  __pyx_v_attrval = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":1780
 *         """
 *         cdef void *attrval = NULL
 *         cdef int  flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1781
 *         cdef void *attrval = NULL
 *         cdef int  flag = 0
 *         CHKERR( MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )             # <<<<<<<<<<<<<<
 *         if not flag: return None
 *         if attrval == NULL: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_attr(__pyx_v_self->ob_mpi, __pyx_v_keyval, (&__pyx_v_attrval), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1781, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1782
 *         cdef int  flag = 0
 *         CHKERR( MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None             # <<<<<<<<<<<<<<
 *         if attrval == NULL: return 0
 *         # MPI-1 predefined attribute keyvals
 */
  __pyx_t_2 = (!(__pyx_v_flag != 0));
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1783
 *         CHKERR( MPI_Comm_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if not flag: return None
 *         if attrval == NULL: return 0             # <<<<<<<<<<<<<<
 *         # MPI-1 predefined attribute keyvals
 *         if (
 */
  __pyx_t_2 = (__pyx_v_attrval == NULL);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1786
 *         # MPI-1 predefined attribute keyvals
 *         if (
 *             keyval == MPI_TAG_UB or             # <<<<<<<<<<<<<<
 *             keyval == MPI_IO or
 *             keyval == MPI_WTIME_IS_GLOBAL
 */
  __pyx_t_3 = (__pyx_v_keyval == MPI_TAG_UB);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1787
 *         if (
 *             keyval == MPI_TAG_UB or
 *             keyval == MPI_IO or             # <<<<<<<<<<<<<<
 *             keyval == MPI_WTIME_IS_GLOBAL
 *         ):
 */
  __pyx_t_3 = (__pyx_v_keyval == MPI_IO);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L6_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1788
 *             keyval == MPI_TAG_UB or
 *             keyval == MPI_IO or
 *             keyval == MPI_WTIME_IS_GLOBAL             # <<<<<<<<<<<<<<
 *         ):
 *             return (<int*>attrval)[0]
 */
  __pyx_t_3 = (__pyx_v_keyval == MPI_WTIME_IS_GLOBAL);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L6_bool_binop_done:;

  /* "src/mpi4py/MPI.src/Comm.pyx":1785
 *         if attrval == NULL: return 0
 *         # MPI-1 predefined attribute keyvals
 *         if (             # <<<<<<<<<<<<<<
 *             keyval == MPI_TAG_UB or
 *             keyval == MPI_IO or
 */
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":1790
 *             keyval == MPI_WTIME_IS_GLOBAL
 *         ):
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # MPI-2 predefined attribute keyvals
 *         if (
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyInt_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 1790, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":1785
 *         if attrval == NULL: return 0
 *         # MPI-1 predefined attribute keyvals
 *         if (             # <<<<<<<<<<<<<<
 *             keyval == MPI_TAG_UB or
 *             keyval == MPI_IO or
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1793
 *         # MPI-2 predefined attribute keyvals
 *         if (
 *             keyval == MPI_UNIVERSE_SIZE or             # <<<<<<<<<<<<<<
 *             keyval == MPI_APPNUM or
 *             keyval == MPI_LASTUSEDCODE
 */
  __pyx_t_3 = (__pyx_v_keyval == MPI_UNIVERSE_SIZE);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L10_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1794
 *         if (
 *             keyval == MPI_UNIVERSE_SIZE or
 *             keyval == MPI_APPNUM or             # <<<<<<<<<<<<<<
 *             keyval == MPI_LASTUSEDCODE
 *         ):
 */
  __pyx_t_3 = (__pyx_v_keyval == MPI_APPNUM);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L10_bool_binop_done;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1795
 *             keyval == MPI_UNIVERSE_SIZE or
 *             keyval == MPI_APPNUM or
 *             keyval == MPI_LASTUSEDCODE             # <<<<<<<<<<<<<<
 *         ):
 *             return (<int*>attrval)[0]
 */
  __pyx_t_3 = (__pyx_v_keyval == MPI_LASTUSEDCODE);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L10_bool_binop_done:;

  /* "src/mpi4py/MPI.src/Comm.pyx":1792
 *             return (<int*>attrval)[0]
 *         # MPI-2 predefined attribute keyvals
 *         if (             # <<<<<<<<<<<<<<
 *             keyval == MPI_UNIVERSE_SIZE or
 *             keyval == MPI_APPNUM or
 */
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":1797
 *             keyval == MPI_LASTUSEDCODE
 *         ):
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # user-defined attribute keyval
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyInt_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 1797, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":1792
 *             return (<int*>attrval)[0]
 *         # MPI-2 predefined attribute keyvals
 *         if (             # <<<<<<<<<<<<<<
 *             keyval == MPI_UNIVERSE_SIZE or
 *             keyval == MPI_APPNUM or
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1799
 *             return (<int*>attrval)[0]
 *         # user-defined attribute keyval
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(__pyx_v_self->ob_mpi, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 1799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1775
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1801
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_223Set_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_222Set_attr, "Set_attr(self, keyval: int, attrval: Any) -> None\n\n        Store attribute value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_223Set_attr = {"Set_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_223Set_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_222Set_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_223Set_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  PyObject *__pyx_v_attrval = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,&__pyx_n_s_attrval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1801, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_attrval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1801, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, 1); __PYX_ERR(31, 1801, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_attr") < 0)) __PYX_ERR(31, 1801, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1801, __pyx_L3_error)
    __pyx_v_attrval = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 1801, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_222Set_attr(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_keyval, __pyx_v_attrval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_222Set_attr(struct PyMPICommObject *__pyx_v_self, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_attr", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1805
 *         Store attribute value associated with a key.
 *         """
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Delete_attr(self, int keyval: int) -> None:
 */
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(__pyx_v_self->ob_mpi, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1805, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1801
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1807
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_225Delete_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_224Delete_attr, "Delete_attr(self, keyval: int) -> None\n\n        Delete attribute value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_225Delete_attr = {"Delete_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_225Delete_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_224Delete_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_225Delete_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Delete_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1807, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Delete_attr") < 0)) __PYX_ERR(31, 1807, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1807, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1807, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_224Delete_attr(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_224Delete_attr(struct PyMPICommObject *__pyx_v_self, int __pyx_v_keyval) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Delete_attr", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1811
 *         Delete attribute value associated with a key.
 *         """
 *         PyMPI_attr_del(self.ob_mpi, keyval)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(__pyx_v_self->ob_mpi, __pyx_v_keyval); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1811, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1807
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1813
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_227Create_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_226Create_keyval, "Create_keyval(cls, copy_fn: Callable[[Comm, int, Any], Any] | None = None, delete_fn: Callable[[Comm, int, Any], None] | None = None, nopython: bool = False) -> int\n\n        Create a new attribute key for communicators.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_227Create_keyval = {"Create_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_227Create_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_226Create_keyval};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_227Create_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_delete_fn = 0;
  PyObject *__pyx_v_nopython = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_keyval (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_copy_fn,&__pyx_n_s_delete_fn,&__pyx_n_s_nopython,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":1816
 *     def Create_keyval(
 *         cls,
 *         copy_fn: Callable[[Comm, int, Any], Any] | None = None,             # <<<<<<<<<<<<<<
 *         delete_fn: Callable[[Comm, int, Any], None] | None = None,
 *         nopython: bool = False,
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Comm.pyx":1817
 *         cls,
 *         copy_fn: Callable[[Comm, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Comm, int, Any], None] | None = None,             # <<<<<<<<<<<<<<
 *         nopython: bool = False,
 *     ) -> int:
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Comm.pyx":1818
 *         copy_fn: Callable[[Comm, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Comm, int, Any], None] | None = None,
 *         nopython: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_copy_fn);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1813, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_delete_fn);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1813, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nopython);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1813, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_keyval") < 0)) __PYX_ERR(31, 1813, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_copy_fn = values[0];
    __pyx_v_delete_fn = values[1];
    __pyx_v_nopython = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_keyval", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 1813, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_226Create_keyval(((PyTypeObject*)__pyx_v_cls), __pyx_v_copy_fn, __pyx_v_delete_fn, __pyx_v_nopython);

  /* "src/mpi4py/MPI.src/Comm.pyx":1813
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_226Create_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython) {
  int __pyx_v_keyval;
  MPI_Comm_copy_attr_function *__pyx_v__copy;
  MPI_Comm_delete_attr_function *__pyx_v__del;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_keyval", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1823
 *         Create a new attribute key for communicators.
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Comm_delete_attr_function *_del = PyMPI_attr_delete_fn
 */
  __pyx_v_keyval = MPI_KEYVAL_INVALID;

  /* "src/mpi4py/MPI.src/Comm.pyx":1824
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Comm_copy_attr_function *_copy = PyMPI_attr_copy_fn             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 */
  __pyx_v__copy = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn;

  /* "src/mpi4py/MPI.src/Comm.pyx":1825
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Comm_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Comm_delete_attr_function *_del = PyMPI_attr_delete_fn             # <<<<<<<<<<<<<<
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, <void *>state) )
 */
  __pyx_v__del = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn;

  /* "src/mpi4py/MPI.src/Comm.pyx":1826
 *         cdef MPI_Comm_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Comm_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_COMM_NULL, keyval, state)
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_copy_fn);
  __Pyx_GIVEREF(__pyx_v_copy_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_copy_fn)) __PYX_ERR(31, 1826, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_delete_fn);
  __Pyx_GIVEREF(__pyx_v_delete_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_delete_fn)) __PYX_ERR(31, 1826, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_nopython);
  __Pyx_GIVEREF(__pyx_v_nopython);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_nopython)) __PYX_ERR(31, 1826, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI__p_keyval), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1827
 *         cdef MPI_Comm_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, <void *>state) )             # <<<<<<<<<<<<<<
 *         PyMPI_attr_state_set(MPI_COMM_NULL, keyval, state)
 *         return keyval
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create_keyval(__pyx_v__copy, __pyx_v__del, (&__pyx_v_keyval), ((void *)__pyx_v_state))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1827, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1828
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_COMM_NULL, keyval, state)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_COMM_NULL, __pyx_v_keyval, __pyx_v_state); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1828, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1829
 *         CHKERR( MPI_Comm_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_COMM_NULL, keyval, state)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1813
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1831
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_229Free_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_228Free_keyval, "Free_keyval(cls, keyval: int) -> int\n\n        Free an attribute key for communicators.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_229Free_keyval = {"Free_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_229Free_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_228Free_keyval};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_229Free_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free_keyval (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1831, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Free_keyval") < 0)) __PYX_ERR(31, 1831, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1832, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1831, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_228Free_keyval(((PyTypeObject*)__pyx_v_cls), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_228Free_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_keyval) {
  int __pyx_v_keyval_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free_keyval", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1836
 *         Free an attribute key for communicators.
 *         """
 *         cdef int keyval_save = keyval             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_COMM_NULL, keyval_save)
 */
  __pyx_v_keyval_save = __pyx_v_keyval;

  /* "src/mpi4py/MPI.src/Comm.pyx":1837
 *         """
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Comm_free_keyval(&keyval) )             # <<<<<<<<<<<<<<
 *         PyMPI_attr_state_del(MPI_COMM_NULL, keyval_save)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_free_keyval((&__pyx_v_keyval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1837, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1838
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Comm_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_COMM_NULL, keyval_save)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_COMM_NULL, __pyx_v_keyval_save); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1838, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1839
 *         CHKERR( MPI_Comm_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_COMM_NULL, keyval_save)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     # Error handling
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1831
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1844
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_231Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_230Create_errhandler, "Create_errhandler(cls, errhandler_fn: Callable[[Comm, int], None]) -> Errhandler\n\n        Create a new error handler for communicators.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_231Create_errhandler = {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_231Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_230Create_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_231Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_errhandler_fn = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler_fn,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1844, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_errhandler") < 0)) __PYX_ERR(31, 1844, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler_fn = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1844, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_230Create_errhandler(((PyTypeObject*)__pyx_v_cls), __pyx_v_errhandler_fn);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_230Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  MPI_Comm_errhandler_function *__pyx_v_fn;
  int __pyx_v_index;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_errhandler", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1852
 *         Create a new error handler for communicators.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1853
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_Comm_errhandler_function *fn = NULL             # <<<<<<<<<<<<<<
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 */
  __pyx_v_fn = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":1854
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_Comm_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)             # <<<<<<<<<<<<<<
 *         try:
 *             CHKERR( MPI_Comm_create_errhandler(fn, &errhandler.ob_mpi) )
 */
  __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_new(__pyx_v_errhandler_fn, (&__pyx_v_fn)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1854, __pyx_L1_error)
  __pyx_v_index = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Comm.pyx":1855
 *         cdef MPI_Comm_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Comm.pyx":1856
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 *             CHKERR( MPI_Comm_create_errhandler(fn, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create_errhandler(__pyx_v_fn, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1856, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":1855
 *         cdef MPI_Comm_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":1857
 *         try:
 *             CHKERR( MPI_Comm_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Comm.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(31, 1857, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/Comm.pyx":1858
 *             CHKERR( MPI_Comm_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             raise                   # ~> uncovered
 *         return errhandler
 */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_errhdl_del((&__pyx_v_index), __pyx_v_fn); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1858, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":1859
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_7);
      __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_7 = 0; 
      __PYX_ERR(31, 1859, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":1855
 *         cdef MPI_Comm_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Comm_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":1860
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Get_errhandler(self) -> Errhandler:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1844
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1862
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_233Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_232Get_errhandler, "Get_errhandler(self) -> Errhandler\n\n        Get the error handler for a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_233Get_errhandler = {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_233Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_232Get_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_233Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_errhandler", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_errhandler", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_232Get_errhandler(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_232Get_errhandler(struct PyMPICommObject *__pyx_v_self) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_errhandler", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1866
 *         Get the error handler for a communicator.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1867
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_errhandler(__pyx_v_self->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 1867, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1868
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_Comm_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1862
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1870
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_235Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_234Set_errhandler, "Set_errhandler(self, errhandler: Errhandler) -> None\n\n        Set the error handler for a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_235Set_errhandler = {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_235Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_234Set_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_235Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1870, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_errhandler") < 0)) __PYX_ERR(31, 1870, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1870, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(31, 1870, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_234Set_errhandler(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_errhandler);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_234Set_errhandler(struct PyMPICommObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_errhandler", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1874
 *         Set the error handler for a communicator.
 *         """
 *         CHKERR( MPI_Comm_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errhandler->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1874, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1870
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a communicator.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1876
 *         CHKERR( MPI_Comm_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_237Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_236Call_errhandler, "Call_errhandler(self, errorcode: int) -> None\n\n        Call the error handler installed on a communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_237Call_errhandler = {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_237Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_236Call_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_237Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Call_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1876, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Call_errhandler") < 0)) __PYX_ERR(31, 1876, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1876, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1876, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_236Call_errhandler(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_236Call_errhandler(struct PyMPICommObject *__pyx_v_self, int __pyx_v_errorcode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Call_errhandler", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1880
 *         Call the error handler installed on a communicator.
 *         """
 *         CHKERR( MPI_Comm_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     def Abort(self, int errorcode: int = 0) -> NoReturn:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_call_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1880, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1876
 *         CHKERR( MPI_Comm_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a communicator.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1882
 *         CHKERR( MPI_Comm_call_errhandler(self.ob_mpi, errorcode) )
 * 
 *     def Abort(self, int errorcode: int = 0) -> NoReturn:             # <<<<<<<<<<<<<<
 *         """
 *         Terminate the MPI execution environment.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_239Abort(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_238Abort, "Abort(self, errorcode: int = 0) -> NoReturn\n\n        Terminate the MPI execution environment.\n\n        .. warning:: The invocation of this method prevents the execution of\n           various Python exit and cleanup mechanisms. Use this method as a\n           last resort to prevent parallel deadlocks in case of unrecoverable\n           errors.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_239Abort = {"Abort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_239Abort, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_238Abort};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_239Abort(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Abort (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1882, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Abort") < 0)) __PYX_ERR(31, 1882, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1882, __pyx_L3_error)
    } else {
      __pyx_v_errorcode = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Abort", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 1882, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_238Abort(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_238Abort(struct PyMPICommObject *__pyx_v_self, int __pyx_v_errorcode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Abort", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1891
 *            errors.
 *         """
 *         CHKERR( MPI_Abort(self.ob_mpi, errorcode) )  # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 *     # Naming Objects
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Abort(__pyx_v_self->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1891, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1882
 *         CHKERR( MPI_Comm_call_errhandler(self.ob_mpi, errorcode) )
 * 
 *     def Abort(self, int errorcode: int = 0) -> NoReturn:             # <<<<<<<<<<<<<<
 *         """
 *         Terminate the MPI execution environment.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1896
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_241Get_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_240Get_name, "Get_name(self) -> str\n\n        Get the print name for this communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_241Get_name = {"Get_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_241Get_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_240Get_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_241Get_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_name", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_name", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_240Get_name(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_240Get_name(struct PyMPICommObject *__pyx_v_self) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_name", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1901
 *         """
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1902
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0
 *         CHKERR( MPI_Comm_get_name(self.ob_mpi, name, &nlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_get_name(__pyx_v_self->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 1902, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1903
 *         cdef int nlen = 0
 *         CHKERR( MPI_Comm_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 *     def Set_name(self, name: str) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1896
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1905
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_243Set_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_242Set_name, "Set_name(self, name: str) -> None\n\n        Set the print name for this communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_243Set_name = {"Set_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_243Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_242Set_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_243Set_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1905, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_name") < 0)) __PYX_ERR(31, 1905, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1905, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_242Set_name(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_242Set_name(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_name", 0);
  __Pyx_INCREF(__pyx_v_name);

  /* "src/mpi4py/MPI.src/Comm.pyx":1909
 *         Set the print name for this communicator.
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         name = asmpistr(name, &cname)
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )
 */
  __pyx_v_cname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":1910
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1911
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname)
 *         CHKERR( MPI_Comm_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_set_name(__pyx_v_self->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 1911, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1905
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this communicator.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1915
 *     property name:
 *         """Print name."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_4name___get__(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_4name___get__(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1916
 *         """Print name."""
 *         def __get__(self) -> str:
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: str):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1915
 *     property name:
 *         """Print name."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1918
 *             return self.Get_name()
 * 
 *         def __set__(self, value: str):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4Comm_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4Comm_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_4name_2__set__(((struct PyMPICommObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4Comm_4name_2__set__(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1919
 * 
 *         def __set__(self, value: str):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1919, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1918
 *             return self.Get_name()
 * 
 *         def __set__(self, value: str):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1924
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_245py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_244py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_245py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_245py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_244py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_245py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_244py2f(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_244py2f(struct PyMPICommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1927
 *         """
 *         """
 *         return MPI_Comm_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Comm_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 1927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1924
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1929
 *         return MPI_Comm_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Comm:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_247f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_246f2py, "f2py(cls, arg: int) -> Comm\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_247f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_247f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_246f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_247f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1929, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(31, 1929, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 1929, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_246f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_246f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1933
 *         """
 *         """
 *         return fromhandle(MPI_Comm_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(31, 1933, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_8__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Comm_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1929
 *         return MPI_Comm_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Comm:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1938
 *     # --------------------
 * 
 *     def send(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_249send(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_248send, "send(self, obj: Any, dest: int, tag: int = 0) -> None\nSend in standard mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_249send = {"send", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_249send, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_248send};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_249send(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1938, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1938, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("send", 0, 2, 3, 1); __PYX_ERR(31, 1938, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1938, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "send") < 0)) __PYX_ERR(31, 1938, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1941, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1942, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("send", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1938, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_248send(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_248send(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("send", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1945
 *     ) -> None:
 *         """Send in standard mode."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_send(obj, dest, tag, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":1946
 *         """Send in standard mode."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_send(obj, dest, tag, comm)             # <<<<<<<<<<<<<<
 * 
 *     def bsend(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_send(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1938
 *     # --------------------
 * 
 *     def send(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1948
 *         return PyMPI_send(obj, dest, tag, comm)
 * 
 *     def bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_251bsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_250bsend, "bsend(self, obj: Any, dest: int, tag: int = 0) -> None\nSend in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_251bsend = {"bsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_251bsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_250bsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_251bsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bsend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1948, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1948, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("bsend", 0, 2, 3, 1); __PYX_ERR(31, 1948, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1948, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "bsend") < 0)) __PYX_ERR(31, 1948, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1951, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1952, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bsend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1948, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_250bsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_250bsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bsend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1955
 *     ) -> None:
 *         """Send in buffered mode."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_bsend(obj, dest, tag, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":1956
 *         """Send in buffered mode."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_bsend(obj, dest, tag, comm)             # <<<<<<<<<<<<<<
 * 
 *     def ssend(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_bsend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1948
 *         return PyMPI_send(obj, dest, tag, comm)
 * 
 *     def bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1958
 *         return PyMPI_bsend(obj, dest, tag, comm)
 * 
 *     def ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_253ssend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_252ssend, "ssend(self, obj: Any, dest: int, tag: int = 0) -> None\nSend in synchronous mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_253ssend = {"ssend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_253ssend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_252ssend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_253ssend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ssend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1958, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1958, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("ssend", 0, 2, 3, 1); __PYX_ERR(31, 1958, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1958, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "ssend") < 0)) __PYX_ERR(31, 1958, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1961, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1962, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ssend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1958, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_252ssend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_252ssend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ssend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1965
 *     ) -> None:
 *         """Send in synchronous mode."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":1966
 *         """Send in synchronous mode."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_ssend(obj, dest, tag, comm)             # <<<<<<<<<<<<<<
 * 
 *     def recv(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_ssend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 1966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1958
 *         return PyMPI_bsend(obj, dest, tag, comm)
 * 
 *     def ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ssend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1968
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 *     def recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_255recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_254recv, "recv(self, buf: Buffer | None = None, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Any\nReceive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_255recv = {"recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_255recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_254recv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_255recv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("recv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":1970
 *     def recv(
 *         self,
 *         buf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Comm.pyx":1973
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Receive."""
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1968, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1968, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1968, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1968, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "recv") < 0)) __PYX_ERR(31, 1968, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1971, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__135;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1972, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__136;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("recv", 0, 0, 4, __pyx_nargs); __PYX_ERR(31, 1968, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 1973, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_254recv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":1968
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 *     def recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_254recv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  MPI_Status *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("recv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1976
 *     ) -> Any:
 *         """Receive."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":1977
 *         """Receive."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 1977, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":1978
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_recv(buf, source, tag, comm, statusp)             # <<<<<<<<<<<<<<
 * 
 *     def sendrecv(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_recv(__pyx_v_buf, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_statusp); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1968
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 *     def recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.recv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1980
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 *     def sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_257sendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_256sendrecv, "sendrecv(self, sendobj: Any, dest: int, sendtag: int = 0, recvbuf: Buffer | None = None, source: int = ANY_SOURCE, recvtag: int = ANY_TAG, status: Status | None = None) -> Any\nSend and Receive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_257sendrecv = {"sendrecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_257sendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_256sendrecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_257sendrecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  int __pyx_v_dest;
  int __pyx_v_sendtag;
  PyObject *__pyx_v_recvbuf = 0;
  int __pyx_v_source;
  int __pyx_v_recvtag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[7] = {0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sendrecv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,&__pyx_n_s_dest,&__pyx_n_s_sendtag,&__pyx_n_s_recvbuf,&__pyx_n_s_source,&__pyx_n_s_recvtag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":1985
 *         int dest: int,
 *         int sendtag: int = 0,
 *         recvbuf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Comm.pyx":1988
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Send and Receive."""
 */
    values[6] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1980, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1980, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("sendrecv", 0, 2, 7, 1); __PYX_ERR(31, 1980, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendtag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1980, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1980, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1980, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvtag);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1980, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[6] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1980, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sendrecv") < 0)) __PYX_ERR(31, 1980, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1983, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_sendtag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_sendtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1984, __pyx_L3_error)
    } else {
      __pyx_v_sendtag = ((int)0);
    }
    __pyx_v_recvbuf = values[3];
    if (values[4]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1986, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__137;
    }
    if (values[5]) {
      __pyx_v_recvtag = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_recvtag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1987, __pyx_L3_error)
    } else {
      __pyx_v_recvtag = __pyx_k__138;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[6]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sendrecv", 0, 2, 7, __pyx_nargs); __PYX_ERR(31, 1980, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 1988, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_256sendrecv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_recvbuf, __pyx_v_source, __pyx_v_recvtag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":1980
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 *     def sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_256sendrecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_dest, int __pyx_v_sendtag, PyObject *__pyx_v_recvbuf, int __pyx_v_source, int __pyx_v_recvtag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  MPI_Status *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sendrecv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":1991
 *     ) -> Any:
 *         """Send and Receive."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":1992
 *         """Send and Receive."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,
 *                               recvbuf, source, recvtag,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 1992, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":1993
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,             # <<<<<<<<<<<<<<
 *                               recvbuf, source, recvtag,
 *                               comm, statusp)
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/mpi4py/MPI.src/Comm.pyx":1995
 *         return PyMPI_sendrecv(sendobj, dest,   sendtag,
 *                               recvbuf, source, recvtag,
 *                               comm, statusp)             # <<<<<<<<<<<<<<
 * 
 *     def isend(
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_sendrecv(__pyx_v_sendobj, __pyx_v_dest, __pyx_v_sendtag, __pyx_v_recvbuf, __pyx_v_source, __pyx_v_recvtag, __pyx_v_comm, __pyx_v_statusp); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1980
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 *     def sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.sendrecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":1997
 *                               comm, statusp)
 * 
 *     def isend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_259isend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_258isend, "isend(self, obj: Any, dest: int, tag: int = 0) -> Request\nNonblocking send.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_259isend = {"isend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_259isend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_258isend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_259isend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("isend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1997, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1997, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("isend", 0, 2, 3, 1); __PYX_ERR(31, 1997, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 1997, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "isend") < 0)) __PYX_ERR(31, 1997, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2000, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2001, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("isend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 1997, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_258isend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_258isend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag) {
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("isend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2004
 *     ) -> Request:
 *         """Nonblocking send."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2005
 *         """Nonblocking send."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2006
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_isend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2007
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_isend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def ibsend(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1997
 *                               comm, statusp)
 * 
 *     def isend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.isend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2009
 *         return request
 * 
 *     def ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_261ibsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_260ibsend, "ibsend(self, obj: Any, dest: int, tag: int = 0) -> Request\nNonblocking send in buffered mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_261ibsend = {"ibsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_261ibsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_260ibsend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_261ibsend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ibsend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2009, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2009, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("ibsend", 0, 2, 3, 1); __PYX_ERR(31, 2009, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2009, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "ibsend") < 0)) __PYX_ERR(31, 2009, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2012, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2013, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ibsend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2009, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_260ibsend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_260ibsend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag) {
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ibsend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2016
 *     ) -> Request:
 *         """Nonblocking send in buffered mode."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2017
 *         """Nonblocking send in buffered mode."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2018
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_ibsend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2019
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_ibsend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def issend(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2009
 *         return request
 * 
 *     def ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.ibsend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2021
 *         return request
 * 
 *     def issend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_263issend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_262issend, "issend(self, obj: Any, dest: int, tag: int = 0) -> Request\nNonblocking send in synchronous mode.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_263issend = {"issend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_263issend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_262issend};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_263issend(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_dest;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("issend (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_dest,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2021, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dest)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2021, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("issend", 0, 2, 3, 1); __PYX_ERR(31, 2021, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2021, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "issend") < 0)) __PYX_ERR(31, 2021, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    __pyx_v_dest = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_dest == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2024, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2025, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("issend", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2021, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_262issend(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_dest, __pyx_v_tag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_262issend(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_dest, int __pyx_v_tag) {
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("issend", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2028
 *     ) -> Request:
 *         """Nonblocking send in synchronous mode."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2029
 *         """Nonblocking send in synchronous mode."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2030
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_issend(__pyx_v_obj, __pyx_v_dest, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2031
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_issend(obj, dest, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def irecv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2021
 *         return request
 * 
 *     def issend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.issend", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2033
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_265irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_264irecv, "irecv(self, buf: Buffer | None = None, source: int = ANY_SOURCE, tag: int = ANY_TAG) -> Request\nNonblocking receive.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_265irecv = {"irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_265irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_264irecv};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_265irecv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  int __pyx_v_source;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("irecv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_source,&__pyx_n_s_tag,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2035
 *     def irecv(
 *         self,
 *         buf: Buffer | None = None,             # <<<<<<<<<<<<<<
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2033, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2033, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2033, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "irecv") < 0)) __PYX_ERR(31, 2033, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    if (values[1]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2036, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__139;
    }
    if (values[2]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2037, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__140;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("irecv", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 2033, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_264irecv(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_source, __pyx_v_tag);

  /* "src/mpi4py/MPI.src/Comm.pyx":2033
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_264irecv(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_buf, int __pyx_v_source, int __pyx_v_tag) {
  MPI_Comm __pyx_v_comm;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("irecv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2040
 *     ) -> Request:
 *         """Nonblocking receive."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_irecv(buf, source, tag, comm, &request.ob_mpi)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2041
 *         """Nonblocking receive."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         request.ob_buf = PyMPI_irecv(buf, source, tag, comm, &request.ob_mpi)
 *         return request
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2042
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_irecv(buf, source, tag, comm, &request.ob_mpi)             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_irecv(__pyx_v_buf, __pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_request->ob_mpi)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2043
 *         cdef Request request = <Request>New(Request)
 *         request.ob_buf = PyMPI_irecv(buf, source, tag, comm, &request.ob_mpi)
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def probe(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2033
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.irecv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2045
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_267probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_266probe, "probe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Literal[True]\nBlocking test for a message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_267probe = {"probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_267probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_266probe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_267probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2049
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Literal[True]:
 *         """Blocking test for a message."""
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2045, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2045, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "probe") < 0)) __PYX_ERR(31, 2045, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2047, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__141;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2048, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__142;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("probe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 2045, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 2049, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_266probe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2045
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_266probe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  MPI_Status *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2052
 *     ) -> Literal[True]:
 *         """Blocking test for a message."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_probe(source, tag, comm, statusp)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2053
 *         """Blocking test for a message."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 2053, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2054
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_probe(source, tag, comm, statusp)             # <<<<<<<<<<<<<<
 * 
 *     def iprobe(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_probe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_statusp); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2045
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2056
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 *     def iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_269iprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_268iprobe, "iprobe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> bool\nNonblocking test for a message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_269iprobe = {"iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_269iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_268iprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_269iprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("iprobe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2060
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> bool:
 *         """Nonblocking test for a message."""
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2056, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2056, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2056, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "iprobe") < 0)) __PYX_ERR(31, 2056, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2058, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__143;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2059, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__144;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("iprobe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 2056, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 2060, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_268iprobe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2056
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 *     def iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_268iprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  MPI_Status *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("iprobe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2063
 *     ) -> bool:
 *         """Nonblocking test for a message."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2064
 *         """Nonblocking test for a message."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 2064, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2065
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         return PyMPI_iprobe(source, tag, comm, statusp)             # <<<<<<<<<<<<<<
 * 
 *     def mprobe(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_PyMPI_iprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, __pyx_v_statusp); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2056
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 *     def iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.iprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2067
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 *     def mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_271mprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_270mprobe, "mprobe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Message\nBlocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_271mprobe = {"mprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_271mprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_270mprobe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_271mprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mprobe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2071
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message:
 *         """Blocking test for a matched message."""
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2067, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2067, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2067, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mprobe") < 0)) __PYX_ERR(31, 2067, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2069, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__145;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2070, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__146;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mprobe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 2067, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.mprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 2071, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_270mprobe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2067
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 *     def mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_270mprobe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  struct PyMPIMessageObject *__pyx_v_message = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  MPI_Status *__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;
  __Pyx_RefNannySetupContext("mprobe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2074
 *     ) -> Message:
 *         """Blocking test for a matched message."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef Message message = <Message>New(Message)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2075
 *         """Blocking test for a matched message."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         cdef Message message = <Message>New(Message)
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 2075, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2076
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef Message message = <Message>New(Message)             # <<<<<<<<<<<<<<
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm,
 *                                       &message.ob_mpi, statusp)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2077
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef Message message = <Message>New(Message)
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm,             # <<<<<<<<<<<<<<
 *                                       &message.ob_mpi, statusp)
 *         return message
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_mprobe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_message->ob_mpi), __pyx_v_statusp); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2077, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_message->ob_buf);
  __Pyx_DECREF(__pyx_v_message->ob_buf);
  __pyx_v_message->ob_buf = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2079
 *         message.ob_buf = PyMPI_mprobe(source, tag, comm,
 *                                       &message.ob_mpi, statusp)
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     def improbe(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2067
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 *     def mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.mprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2081
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_273improbe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_272improbe, "improbe(self, source: int = ANY_SOURCE, tag: int = ANY_TAG, status: Status | None = None) -> Message | None\nNonblocking test for a matched message.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_273improbe = {"improbe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_273improbe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_272improbe};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_273improbe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_source;
  int __pyx_v_tag;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("improbe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_tag,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2085
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Message | None:
 *         """Nonblocking test for a matched message."""
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2081, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2081, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2081, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "improbe") < 0)) __PYX_ERR(31, 2081, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_source = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_source == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2083, __pyx_L3_error)
    } else {
      __pyx_v_source = __pyx_k__147;
    }
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2084, __pyx_L3_error)
    } else {
      __pyx_v_tag = __pyx_k__148;
    }
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("improbe", 0, 0, 3, __pyx_nargs); __PYX_ERR(31, 2081, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.improbe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(31, 2085, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_272improbe(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_source, __pyx_v_tag, __pyx_v_status);

  /* "src/mpi4py/MPI.src/Comm.pyx":2081
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_272improbe(struct PyMPICommObject *__pyx_v_self, int __pyx_v_source, int __pyx_v_tag, struct PyMPIStatusObject *__pyx_v_status) {
  int __pyx_v_flag;
  MPI_Comm __pyx_v_comm;
  MPI_Status *__pyx_v_statusp;
  struct PyMPIMessageObject *__pyx_v_message = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  MPI_Status *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("improbe", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2088
 *     ) -> Message | None:
 *         """Nonblocking test for a matched message."""
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2089
 *         """Nonblocking test for a matched message."""
 *         cdef int flag = 0
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef Message message = <Message>New(Message)
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2090
 *         cdef int flag = 0
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         cdef Message message = <Message>New(Message)
 *         message.ob_buf = PyMPI_improbe(source, tag, comm, &flag,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(31, 2090, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2091
 *         cdef MPI_Comm comm = self.ob_mpi
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef Message message = <Message>New(Message)             # <<<<<<<<<<<<<<
 *         message.ob_buf = PyMPI_improbe(source, tag, comm, &flag,
 *                                        &message.ob_mpi, statusp)
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2091, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_message = ((struct PyMPIMessageObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2092
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         cdef Message message = <Message>New(Message)
 *         message.ob_buf = PyMPI_improbe(source, tag, comm, &flag,             # <<<<<<<<<<<<<<
 *                                        &message.ob_mpi, statusp)
 *         if flag == 0: return None
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_PyMPI_improbe(__pyx_v_source, __pyx_v_tag, __pyx_v_comm, (&__pyx_v_flag), (&__pyx_v_message->ob_mpi), __pyx_v_statusp); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_message->ob_buf);
  __Pyx_DECREF(__pyx_v_message->ob_buf);
  __pyx_v_message->ob_buf = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2094
 *         message.ob_buf = PyMPI_improbe(source, tag, comm, &flag,
 *                                        &message.ob_mpi, statusp)
 *         if flag == 0: return None             # <<<<<<<<<<<<<<
 *         return message
 * 
 */
  __pyx_t_5 = (__pyx_v_flag == 0);
  if (__pyx_t_5) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2095
 *                                        &message.ob_mpi, statusp)
 *         if flag == 0: return None
 *         return message             # <<<<<<<<<<<<<<
 * 
 *     def barrier(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_message);
  __pyx_r = ((PyObject *)__pyx_v_message);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2081
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.improbe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2097
 *         return message
 * 
 *     def barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_275barrier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_274barrier, "barrier(self) -> None\n\n        Barrier synchronization.\n\n        .. note:: This method is equivalent to `Barrier`.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_275barrier = {"barrier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_275barrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_274barrier};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_275barrier(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("barrier (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("barrier", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "barrier", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_274barrier(((struct PyMPICommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_274barrier(struct PyMPICommObject *__pyx_v_self) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("barrier", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2103
 *         .. note:: This method is equivalent to `Barrier`.
 *         """
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_barrier(comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2104
 *         """
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_barrier(comm)             # <<<<<<<<<<<<<<
 * 
 *     def bcast(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_barrier(__pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2097
 *         return message
 * 
 *     def barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.barrier", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2106
 *         return PyMPI_barrier(comm)
 * 
 *     def bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_277bcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_276bcast, "bcast(self, obj: Any, root: int = 0) -> Any\nBroadcast.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_277bcast = {"bcast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_277bcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_276bcast};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_277bcast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bcast (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_obj,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_obj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2106, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "bcast") < 0)) __PYX_ERR(31, 2106, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_obj = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2109, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bcast", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_276bcast(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_obj, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_276bcast(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_obj, int __pyx_v_root) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bcast", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2112
 *     ) -> Any:
 *         """Broadcast."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_bcast(obj, root, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2113
 *         """Broadcast."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_bcast(obj, root, comm)             # <<<<<<<<<<<<<<
 * 
 *     def gather(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_bcast(__pyx_v_obj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2106
 *         return PyMPI_barrier(comm)
 * 
 *     def bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.bcast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2115
 *         return PyMPI_bcast(obj, root, comm)
 * 
 *     def gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_279gather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_278gather, "gather(self, sendobj: Any, root: int = 0) -> list[Any] | None\nGather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_279gather = {"gather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_279gather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_278gather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_279gather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("gather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2115, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2115, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "gather") < 0)) __PYX_ERR(31, 2115, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2118, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("gather", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2115, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_278gather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_278gather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_root) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("gather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2121
 *     ) -> list[Any] | None:
 *         """Gather."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_gather(sendobj, root, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2122
 *         """Gather."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_gather(sendobj, root, comm)             # <<<<<<<<<<<<<<
 * 
 *     def scatter(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_gather(__pyx_v_sendobj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2115
 *         return PyMPI_bcast(obj, root, comm)
 * 
 *     def gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.gather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2124
 *         return PyMPI_gather(sendobj, root, comm)
 * 
 *     def scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any] | None,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_281scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_280scatter, "scatter(self, sendobj: Sequence[Any] | None, root: int = 0) -> Any\nScatter.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_281scatter = {"scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_281scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_280scatter};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_281scatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scatter (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,&__pyx_n_s_root,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2124, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2124, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scatter") < 0)) __PYX_ERR(31, 2124, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    if (values[1]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2127, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scatter", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2124, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_280scatter(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_280scatter(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, int __pyx_v_root) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scatter", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2130
 *     ) -> Any:
 *         """Scatter."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_scatter(sendobj, root, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2131
 *         """Scatter."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_scatter(sendobj, root, comm)             # <<<<<<<<<<<<<<
 * 
 *     def allgather(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_scatter(__pyx_v_sendobj, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2124
 *         return PyMPI_gather(sendobj, root, comm)
 * 
 *     def scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any] | None,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.scatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2133
 *         return PyMPI_scatter(sendobj, root, comm)
 * 
 *     def allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_283allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_282allgather, "allgather(self, sendobj: Any) -> list[Any]\nGather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_283allgather = {"allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_283allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_282allgather};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_283allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("allgather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2133, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "allgather") < 0)) __PYX_ERR(31, 2133, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("allgather", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 2133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_282allgather(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_282allgather(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allgather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2138
 *     ) -> list[Any]:
 *         """Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_allgather(sendobj, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2139
 *         """Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_allgather(sendobj, comm)             # <<<<<<<<<<<<<<
 * 
 *     def alltoall(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_allgather(__pyx_v_sendobj, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2133
 *         return PyMPI_scatter(sendobj, root, comm)
 * 
 *     def allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2141
 *         return PyMPI_allgather(sendobj, comm)
 * 
 *     def alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_285alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_284alltoall, "alltoall(self, sendobj: Sequence[Any]) -> list[Any]\nAll to All Scatter/Gather.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_285alltoall = {"alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_285alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_284alltoall};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_285alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("alltoall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2141, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "alltoall") < 0)) __PYX_ERR(31, 2141, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("alltoall", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 2141, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_284alltoall(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_284alltoall(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("alltoall", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2146
 *     ) -> list[Any]:
 *         """All to All Scatter/Gather."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_alltoall(sendobj, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2147
 *         """All to All Scatter/Gather."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_alltoall(sendobj, comm)             # <<<<<<<<<<<<<<
 * 
 *     def reduce(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_alltoall(__pyx_v_sendobj, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2141
 *         return PyMPI_allgather(sendobj, comm)
 * 
 *     def alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2149
 *         return PyMPI_alltoall(sendobj, comm)
 * 
 *     def reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_287reduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_286reduce, "reduce(self, sendobj: Any, op: Op | Callable[[Any, Any], Any] = SUM, root: int = 0) -> Any | None\nReduce to Root.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_287reduce = {"reduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_287reduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_286reduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_287reduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_op = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reduce (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,&__pyx_n_s_op,&__pyx_n_s_root,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__149);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2149, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2149, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2149, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "reduce") < 0)) __PYX_ERR(31, 2149, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_op = values[1];
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2153, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reduce", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 2149, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_286reduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_op, __pyx_v_root);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_286reduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op, int __pyx_v_root) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reduce", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2156
 *     ) -> Any | None:
 *         """Reduce to Root."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_reduce(sendobj, op, root, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2157
 *         """Reduce to Root."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_reduce(sendobj, op, root, comm)             # <<<<<<<<<<<<<<
 * 
 *     def allreduce(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_reduce(__pyx_v_sendobj, __pyx_v_op, __pyx_v_root, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2149
 *         return PyMPI_alltoall(sendobj, comm)
 * 
 *     def reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.reduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2159
 *         return PyMPI_reduce(sendobj, op, root, comm)
 * 
 *     def allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_289allreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4Comm_288allreduce, "allreduce(self, sendobj: Any, op: Op | Callable[[Any, Any], Any] = SUM) -> Any\nReduce to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4Comm_289allreduce = {"allreduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_289allreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_288allreduce};
static PyObject *__pyx_pw_6mpi4py_3MPI_4Comm_289allreduce(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("allreduce (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,&__pyx_n_s_op,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__150);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2159, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2159, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "allreduce") < 0)) __PYX_ERR(31, 2159, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_op = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("allreduce", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2159, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4Comm_288allreduce(((struct PyMPICommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_op);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4Comm_288allreduce(struct PyMPICommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("allreduce", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2165
 *     ) -> Any:
 *         """Reduce to All."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_allreduce(sendobj, op, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2166
 *         """Reduce to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_allreduce(sendobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_allreduce(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2159
 *         return PyMPI_reduce(sendobj, op, root, comm)
 * 
 *     def allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Comm.allreduce", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2174
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9Intracomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9Intracomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPICommObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2174, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(31, 2174, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 2174, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(31, 2174, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm___cinit__(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9Intracomm___cinit__(struct PyMPIIntracommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2175
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int inter = 1
 */
  ((void)__pyx_v_comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2176
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter = 1
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.ob_mpi == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2177
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int inter = 1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if inter:
 */
  __pyx_v_inter = 1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2178
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int inter = 1
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )             # <<<<<<<<<<<<<<
 *         if inter:
 *             raise TypeError("expecting an intracommunicator")
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2178, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2179
 *         cdef int inter = 1
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if inter:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting an intracommunicator")
 * 
 */
  __pyx_t_1 = (__pyx_v_inter != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2180
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if inter:
 *             raise TypeError("expecting an intracommunicator")             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__151, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(31, 2180, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":2179
 *         cdef int inter = 1
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if inter:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting an intracommunicator")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2174
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2185
 *     # -------------------------
 * 
 *     def Create_group(self, Group group: Group, int tag: int = 0) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_3Create_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_2Create_group, "Create_group(self, group: Group, tag: int = 0) -> Intracomm\n\n        Create communicator from group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_3Create_group = {"Create_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_3Create_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_2Create_group};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_3Create_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_group (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2185, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2185, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_group") < 0)) __PYX_ERR(31, 2185, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2185, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_group", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2185, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(31, 2185, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_2Create_group(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_group, __pyx_v_tag);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_2Create_group(struct PyMPIIntracommObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group, int __pyx_v_tag) {
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_group", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2189
 *         Create communicator from group.
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_create_group(
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2190
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2191
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_group(
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create_group(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_group->ob_mpi, __pyx_v_tag, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 2190, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2190
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2192
 *         with nogil: CHKERR( MPI_Comm_create_group(
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 2192, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2193
 *             self.ob_mpi, group.ob_mpi, tag, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2185
 *     # -------------------------
 * 
 *     def Create_group(self, Group group: Group, int tag: int = 0) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_5Create_from_group(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_4Create_from_group, "Create_from_group(cls, group: Group, stringtag: str = 'org.mpi4py', info: Info = INFO_NULL, errhandler: Errhandler | None = None) -> Intracomm\n\n        Create communicator from group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_5Create_from_group = {"Create_from_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_5Create_from_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_4Create_from_group};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_5Create_from_group(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_v_stringtag = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_from_group (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_stringtag,&__pyx_n_s_info,&__pyx_n_s_errhandler,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s_org_mpi4py));
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__152);

    /* "src/mpi4py/MPI.src/Comm.pyx":2201
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,
 *         Errhandler errhandler: Errhandler | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intracomm:
 *         """
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2195, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stringtag);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2195, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2195, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2195, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_from_group") < 0)) __PYX_ERR(31, 2195, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_stringtag = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_from_group", 0, 1, 4, __pyx_nargs); __PYX_ERR(31, 2195, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_from_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(31, 2198, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2200, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(31, 2201, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_4Create_from_group(((PyTypeObject*)__pyx_v_cls), __pyx_v_group, __pyx_v_stringtag, __pyx_v_info, __pyx_v_errhandler);

  /* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_4Create_from_group(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_group, PyObject *__pyx_v_stringtag, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  char *__pyx_v_cstringtag;
  MPI_Errhandler __pyx_v_cerrhdl;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Errhandler __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_from_group", 0);
  __Pyx_INCREF(__pyx_v_stringtag);

  /* "src/mpi4py/MPI.src/Comm.pyx":2206
 *         Create communicator from group.
 *         """
 *         cdef char *cstringtag = NULL             # <<<<<<<<<<<<<<
 *         stringtag = asmpistr(stringtag, &cstringtag)
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 */
  __pyx_v_cstringtag = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2207
 *         """
 *         cdef char *cstringtag = NULL
 *         stringtag = asmpistr(stringtag, &cstringtag)             # <<<<<<<<<<<<<<
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_stringtag, (&__pyx_v_cstringtag)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_stringtag, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2208
 *         cdef char *cstringtag = NULL
 *         stringtag = asmpistr(stringtag, &cstringtag)
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)             # <<<<<<<<<<<<<<
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_from_group(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Errhandler(((PyObject *)__pyx_v_errhandler)); if (unlikely(__pyx_t_2 == ((MPI_Errhandler)MPI_ERRHANDLER_NULL) && PyErr_Occurred())) __PYX_ERR(31, 2208, __pyx_L1_error)
  __pyx_v_cerrhdl = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":2209
 *         stringtag = asmpistr(stringtag, &cstringtag)
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_create_from_group(
 *             group.ob_mpi, cstringtag, info.ob_mpi, cerrhdl, &comm.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2210
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_from_group(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, cstringtag, info.ob_mpi, cerrhdl, &comm.ob_mpi) )
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2211
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_from_group(
 *             group.ob_mpi, cstringtag, info.ob_mpi, cerrhdl, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_create_from_group(__pyx_v_group->ob_mpi, __pyx_v_cstringtag, __pyx_v_info->ob_mpi, __pyx_v_cerrhdl, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 2210, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2210
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Comm_create_from_group(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, cstringtag, info.ob_mpi, cerrhdl, &comm.ob_mpi) )
 *         return comm
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2212
 *         with nogil: CHKERR( MPI_Comm_create_from_group(
 *             group.ob_mpi, cstringtag, info.ob_mpi, cerrhdl, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_cart(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_from_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_stringtag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2214
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_7Create_cart(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_6Create_cart, "Create_cart(self, dims: Sequence[int], periods: Sequence[bool] | None = None, reorder: bool = False) -> Cartcomm\n\n        Create cartesian communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_7Create_cart = {"Create_cart", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_7Create_cart, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_6Create_cart};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_7Create_cart(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dims = 0;
  PyObject *__pyx_v_periods = 0;
  int __pyx_v_reorder;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_cart (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dims,&__pyx_n_s_periods,&__pyx_n_s_reorder,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2217
 *         self,
 *         dims: Sequence[int],
 *         periods: Sequence[bool] | None = None,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Cartcomm:
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dims)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2214, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_periods);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2214, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_reorder);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2214, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_cart") < 0)) __PYX_ERR(31, 2214, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dims = values[0];
    __pyx_v_periods = values[1];
    if (values[2]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2218, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2218
 *         dims: Sequence[int],
 *         periods: Sequence[bool] | None = None,
 *         bint reorder: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> Cartcomm:
 *         """
 */
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_cart", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 2214, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_cart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_6Create_cart(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_dims, __pyx_v_periods, __pyx_v_reorder);

  /* "src/mpi4py/MPI.src/Comm.pyx":2214
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_6Create_cart(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_dims, PyObject *__pyx_v_periods, int __pyx_v_reorder) {
  int __pyx_v_ndims;
  int *__pyx_v_idims;
  int *__pyx_v_iperiods;
  struct PyMPICartcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_cart", 0);
  __Pyx_INCREF(__pyx_v_dims);
  __Pyx_INCREF(__pyx_v_periods);

  /* "src/mpi4py/MPI.src/Comm.pyx":2223
 *         Create cartesian communicator.
 *         """
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL             # <<<<<<<<<<<<<<
 *         dims = getarray(dims, &ndims, &idims)
 *         if periods is None: periods = False
 */
  __pyx_v_ndims = 0;
  __pyx_v_idims = NULL;
  __pyx_v_iperiods = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2224
 *         """
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL
 *         dims = getarray(dims, &ndims, &idims)             # <<<<<<<<<<<<<<
 *         if periods is None: periods = False
 *         if isinstance(periods, bool): periods = [periods] * ndims
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_dims, (&__pyx_v_ndims), (&__pyx_v_idims)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_dims, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2225
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL
 *         dims = getarray(dims, &ndims, &idims)
 *         if periods is None: periods = False             # <<<<<<<<<<<<<<
 *         if isinstance(periods, bool): periods = [periods] * ndims
 *         periods = chkarray(periods, ndims, &iperiods)
 */
  __pyx_t_2 = (__pyx_v_periods == Py_None);
  if (__pyx_t_2) {
    __Pyx_INCREF(Py_False);
    __Pyx_DECREF_SET(__pyx_v_periods, Py_False);
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2226
 *         dims = getarray(dims, &ndims, &idims)
 *         if periods is None: periods = False
 *         if isinstance(periods, bool): periods = [periods] * ndims             # <<<<<<<<<<<<<<
 *         periods = chkarray(periods, ndims, &iperiods)
 *         #
 */
  __pyx_t_1 = ((PyObject*)&PyBool_Type);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_periods, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
    __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndims<0) ? 0:__pyx_v_ndims)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    { Py_ssize_t __pyx_temp;
      for (__pyx_temp=0; __pyx_temp < __pyx_v_ndims; __pyx_temp++) {
        __Pyx_INCREF(__pyx_v_periods);
        __Pyx_GIVEREF(__pyx_v_periods);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_v_periods)) __PYX_ERR(31, 2226, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_periods, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2227
 *         if periods is None: periods = False
 *         if isinstance(periods, bool): periods = [periods] * ndims
 *         periods = chkarray(periods, ndims, &iperiods)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_periods, __pyx_v_ndims, (&__pyx_v_iperiods)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_periods, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2229
 *         periods = chkarray(periods, ndims, &iperiods)
 *         #
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Cartcomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPICartcommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2230
 *         #
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2231
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_create(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_ndims, __pyx_v_idims, __pyx_v_iperiods, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 2230, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2230
 *         #
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2232
 *         with nogil: CHKERR( MPI_Cart_create(
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 2232, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2233
 *             self.ob_mpi, ndims, idims, iperiods, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_graph(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2214
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_cart", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XDECREF(__pyx_v_periods);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2235
 *         return comm
 * 
 *     def Create_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_9Create_graph(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_8Create_graph, "Create_graph(self, index: Sequence[int], edges: Sequence[int], reorder: bool = False) -> Graphcomm\n\n        Create graph communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_9Create_graph = {"Create_graph", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_9Create_graph, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_8Create_graph};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_9Create_graph(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  PyObject *__pyx_v_edges = 0;
  int __pyx_v_reorder;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_graph (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_edges,&__pyx_n_s_reorder,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2235, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edges)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2235, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_graph", 0, 2, 3, 1); __PYX_ERR(31, 2235, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_reorder);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2235, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_graph") < 0)) __PYX_ERR(31, 2235, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_index = values[0];
    __pyx_v_edges = values[1];
    if (values[2]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2239, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2239
 *         index: Sequence[int],
 *         edges: Sequence[int],
 *         bint reorder: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> Graphcomm:
 *         """
 */
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_graph", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2235, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_8Create_graph(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_index, __pyx_v_edges, __pyx_v_reorder);

  /* "src/mpi4py/MPI.src/Comm.pyx":2235
 *         return comm
 * 
 *     def Create_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_8Create_graph(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_edges, int __pyx_v_reorder) {
  int __pyx_v_nnodes;
  int *__pyx_v_iindex;
  int __pyx_v_nedges;
  int *__pyx_v_iedges;
  struct PyMPIGraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_graph", 0);
  __Pyx_INCREF(__pyx_v_index);
  __Pyx_INCREF(__pyx_v_edges);

  /* "src/mpi4py/MPI.src/Comm.pyx":2244
 *         Create graph communicator.
 *         """
 *         cdef int nnodes = 0, *iindex = NULL             # <<<<<<<<<<<<<<
 *         index = getarray(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 */
  __pyx_v_nnodes = 0;
  __pyx_v_iindex = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2245
 *         """
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray(index, &nnodes, &iindex)             # <<<<<<<<<<<<<<
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray(edges, &nedges, &iedges)
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_index, (&__pyx_v_nnodes), (&__pyx_v_iindex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2246
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL             # <<<<<<<<<<<<<<
 *         edges = getarray(edges, &nedges, &iedges)
 *         # extension: 'standard' adjacency arrays
 */
  __pyx_v_nedges = 0;
  __pyx_v_iedges = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2247
 *         index = getarray(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray(edges, &nedges, &iedges)             # <<<<<<<<<<<<<<
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_edges, (&__pyx_v_nedges), (&__pyx_v_iedges)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_edges, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2249
 *         edges = getarray(edges, &nedges, &iedges)
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:             # <<<<<<<<<<<<<<
 *             nnodes -= 1
 *             iindex += 1
 */
  __pyx_t_3 = ((__pyx_v_iindex[0]) == 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_iindex[(__pyx_v_nnodes - 1)]) == __pyx_v_nedges);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2250
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1             # <<<<<<<<<<<<<<
 *             iindex += 1
 *         #
 */
    __pyx_v_nnodes = (__pyx_v_nnodes - 1);

    /* "src/mpi4py/MPI.src/Comm.pyx":2251
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1
 *             iindex += 1             # <<<<<<<<<<<<<<
 *         #
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)
 */
    __pyx_v_iindex = (__pyx_v_iindex + 1);

    /* "src/mpi4py/MPI.src/Comm.pyx":2249
 *         edges = getarray(edges, &nedges, &iedges)
 *         # extension: 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:             # <<<<<<<<<<<<<<
 *             nnodes -= 1
 *             iindex += 1
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2253
 *             iindex += 1
 *         #
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Graphcomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIGraphcommObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2254
 *         #
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2255
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_5 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_create(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_nnodes, __pyx_v_iindex, __pyx_v_iedges, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 2254, __pyx_L7_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2254
 *         #
 *         cdef Graphcomm comm = <Graphcomm>New(Graphcomm)
 *         with nogil: CHKERR( MPI_Graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L7_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L8:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2256
 *         with nogil: CHKERR( MPI_Graph_create(
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(31, 2256, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2257
 *             self.ob_mpi, nnodes, iindex, iedges, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_dist_graph_adjacent(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2235
 *         return comm
 * 
 *     def Create_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2259
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_10Create_dist_graph_adjacent, "Create_dist_graph_adjacent(self, sources: Sequence[int], destinations: Sequence[int], sourceweights: Sequence[int] | None = None, destweights: Sequence[int] | None = None, info: Info = INFO_NULL, reorder: bool = False) -> Distgraphcomm\n\n        Create distributed graph communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent = {"Create_dist_graph_adjacent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_10Create_dist_graph_adjacent};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sources = 0;
  PyObject *__pyx_v_destinations = 0;
  PyObject *__pyx_v_sourceweights = 0;
  PyObject *__pyx_v_destweights = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_reorder;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_dist_graph_adjacent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sources,&__pyx_n_s_destinations,&__pyx_n_s_sourceweights,&__pyx_n_s_destweights,&__pyx_n_s_info,&__pyx_n_s_reorder,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2263
 *         sources: Sequence[int],
 *         destinations: Sequence[int],
 *         sourceweights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Comm.pyx":2264
 *         destinations: Sequence[int],
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__153);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sources)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2259, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_destinations)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2259, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_dist_graph_adjacent", 0, 2, 6, 1); __PYX_ERR(31, 2259, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sourceweights);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2259, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_destweights);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2259, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2259, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_reorder);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2259, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_dist_graph_adjacent") < 0)) __PYX_ERR(31, 2259, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sources = values[0];
    __pyx_v_destinations = values[1];
    __pyx_v_sourceweights = values[2];
    __pyx_v_destweights = values[3];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
    if (values[5]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2266, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2266
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> Distgraphcomm:
 *         """
 */
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_dist_graph_adjacent", 0, 2, 6, __pyx_nargs); __PYX_ERR(31, 2259, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph_adjacent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2265, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_10Create_dist_graph_adjacent(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sources, __pyx_v_destinations, __pyx_v_sourceweights, __pyx_v_destweights, __pyx_v_info, __pyx_v_reorder);

  /* "src/mpi4py/MPI.src/Comm.pyx":2259
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_10Create_dist_graph_adjacent(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sources, PyObject *__pyx_v_destinations, PyObject *__pyx_v_sourceweights, PyObject *__pyx_v_destweights, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_reorder) {
  int __pyx_v_indegree;
  int *__pyx_v_isource;
  int __pyx_v_outdegree;
  int *__pyx_v_idest;
  int *__pyx_v_isourceweight;
  int *__pyx_v_idestweight;
  struct PyMPIDistgraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_dist_graph_adjacent", 0);
  __Pyx_INCREF(__pyx_v_sources);
  __Pyx_INCREF(__pyx_v_destinations);
  __Pyx_INCREF(__pyx_v_sourceweights);
  __Pyx_INCREF(__pyx_v_destweights);

  /* "src/mpi4py/MPI.src/Comm.pyx":2271
 *         Create distributed graph communicator.
 *         """
 *         cdef int indegree  = 0, *isource = NULL             # <<<<<<<<<<<<<<
 *         cdef int outdegree = 0, *idest   = NULL
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 */
  __pyx_v_indegree = 0;
  __pyx_v_isource = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2272
 *         """
 *         cdef int indegree  = 0, *isource = NULL
 *         cdef int outdegree = 0, *idest   = NULL             # <<<<<<<<<<<<<<
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 */
  __pyx_v_outdegree = 0;
  __pyx_v_idest = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2273
 *         cdef int indegree  = 0, *isource = NULL
 *         cdef int outdegree = 0, *idest   = NULL
 *         cdef int *isourceweight = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 *         if sources is not None:
 */
  __pyx_v_isourceweight = MPI_UNWEIGHTED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2274
 *         cdef int outdegree = 0, *idest   = NULL
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 *         cdef int *idestweight   = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         if sources is not None:
 *             sources = getarray(sources, &indegree, &isource)
 */
  __pyx_v_idestweight = MPI_UNWEIGHTED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2275
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 *         if sources is not None:             # <<<<<<<<<<<<<<
 *             sources = getarray(sources, &indegree, &isource)
 *         sourceweights = asarray_weights(
 */
  __pyx_t_1 = (__pyx_v_sources != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2276
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 *         if sources is not None:
 *             sources = getarray(sources, &indegree, &isource)             # <<<<<<<<<<<<<<
 *         sourceweights = asarray_weights(
 *             sourceweights, indegree, &isourceweight)
 */
    __pyx_t_2 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_sources, (&__pyx_v_indegree), (&__pyx_v_isource)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_sources, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2275
 *         cdef int *isourceweight = MPI_UNWEIGHTED
 *         cdef int *idestweight   = MPI_UNWEIGHTED
 *         if sources is not None:             # <<<<<<<<<<<<<<
 *             sources = getarray(sources, &indegree, &isource)
 *         sourceweights = asarray_weights(
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2277
 *         if sources is not None:
 *             sources = getarray(sources, &indegree, &isource)
 *         sourceweights = asarray_weights(             # <<<<<<<<<<<<<<
 *             sourceweights, indegree, &isourceweight)
 *         if destinations is not None:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_weights(__pyx_v_sourceweights, __pyx_v_indegree, (&__pyx_v_isourceweight)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_sourceweights, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2279
 *         sourceweights = asarray_weights(
 *             sourceweights, indegree, &isourceweight)
 *         if destinations is not None:             # <<<<<<<<<<<<<<
 *             destinations = getarray(destinations, &outdegree, &idest)
 *         destweights = asarray_weights(
 */
  __pyx_t_1 = (__pyx_v_destinations != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2280
 *             sourceweights, indegree, &isourceweight)
 *         if destinations is not None:
 *             destinations = getarray(destinations, &outdegree, &idest)             # <<<<<<<<<<<<<<
 *         destweights = asarray_weights(
 *             destweights, outdegree, &idestweight)
 */
    __pyx_t_2 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_destinations, (&__pyx_v_outdegree), (&__pyx_v_idest)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_destinations, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2279
 *         sourceweights = asarray_weights(
 *             sourceweights, indegree, &isourceweight)
 *         if destinations is not None:             # <<<<<<<<<<<<<<
 *             destinations = getarray(destinations, &outdegree, &idest)
 *         destweights = asarray_weights(
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2281
 *         if destinations is not None:
 *             destinations = getarray(destinations, &outdegree, &idest)
 *         destweights = asarray_weights(             # <<<<<<<<<<<<<<
 *             destweights, outdegree, &idestweight)
 *         #
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asarray_weights(__pyx_v_destweights, __pyx_v_outdegree, (&__pyx_v_idestweight)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_destweights, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2284
 *             destweights, outdegree, &idestweight)
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(
 *             self.ob_mpi,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Distgraphcomm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPIDistgraphcommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2285
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             indegree,  isource, isourceweight,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2289
 *             indegree,  isource, isourceweight,
 *             outdegree, idest,   idestweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_create_adjacent(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_indegree, __pyx_v_isource, __pyx_v_isourceweight, __pyx_v_outdegree, __pyx_v_idest, __pyx_v_idestweight, __pyx_v_info->ob_mpi, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 2285, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2285
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create_adjacent(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             indegree,  isource, isourceweight,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2290
 *             outdegree, idest,   idestweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 2290, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2291
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_dist_graph(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2259
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph_adjacent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_sources);
  __Pyx_XDECREF(__pyx_v_destinations);
  __Pyx_XDECREF(__pyx_v_sourceweights);
  __Pyx_XDECREF(__pyx_v_destweights);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2293
 *         return comm
 * 
 *     def Create_dist_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_13Create_dist_graph(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_12Create_dist_graph, "Create_dist_graph(self, sources: Sequence[int], degrees: Sequence[int], destinations: Sequence[int], weights: Sequence[int] | None = None, info: Info = INFO_NULL, reorder: bool = False) -> Distgraphcomm\n\n        Create distributed graph communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_13Create_dist_graph = {"Create_dist_graph", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_13Create_dist_graph, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_12Create_dist_graph};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_13Create_dist_graph(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sources = 0;
  PyObject *__pyx_v_degrees = 0;
  PyObject *__pyx_v_destinations = 0;
  PyObject *__pyx_v_weights = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_reorder;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_dist_graph (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sources,&__pyx_n_s_degrees,&__pyx_n_s_destinations,&__pyx_n_s_weights,&__pyx_n_s_info,&__pyx_n_s_reorder,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2298
 *         degrees: Sequence[int],
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__154);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sources)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2293, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_degrees)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2293, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_dist_graph", 0, 3, 6, 1); __PYX_ERR(31, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_destinations)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2293, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_dist_graph", 0, 3, 6, 2); __PYX_ERR(31, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weights);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_reorder);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2293, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_dist_graph") < 0)) __PYX_ERR(31, 2293, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sources = values[0];
    __pyx_v_degrees = values[1];
    __pyx_v_destinations = values[2];
    __pyx_v_weights = values[3];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
    if (values[5]) {
      __pyx_v_reorder = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_reorder == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2300, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/Comm.pyx":2300
 *         weights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> Distgraphcomm:
 *         """
 */
      __pyx_v_reorder = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_dist_graph", 0, 3, 6, __pyx_nargs); __PYX_ERR(31, 2293, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2299, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_12Create_dist_graph(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sources, __pyx_v_degrees, __pyx_v_destinations, __pyx_v_weights, __pyx_v_info, __pyx_v_reorder);

  /* "src/mpi4py/MPI.src/Comm.pyx":2293
 *         return comm
 * 
 *     def Create_dist_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_12Create_dist_graph(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sources, PyObject *__pyx_v_degrees, PyObject *__pyx_v_destinations, PyObject *__pyx_v_weights, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_reorder) {
  int __pyx_v_nv;
  int __pyx_v_ne;
  int *__pyx_v_isource;
  int *__pyx_v_idegree;
  int *__pyx_v_idest;
  int *__pyx_v_iweight;
  int __pyx_v_i;
  struct PyMPIDistgraphcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_dist_graph", 0);
  __Pyx_INCREF(__pyx_v_sources);
  __Pyx_INCREF(__pyx_v_degrees);
  __Pyx_INCREF(__pyx_v_destinations);
  __Pyx_INCREF(__pyx_v_weights);

  /* "src/mpi4py/MPI.src/Comm.pyx":2305
 *         Create distributed graph communicator.
 *         """
 *         cdef int nv = 0, ne = 0             # <<<<<<<<<<<<<<
 *         cdef int *isource = NULL, *idegree = NULL,
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 */
  __pyx_v_nv = 0;
  __pyx_v_ne = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2306
 *         """
 *         cdef int nv = 0, ne = 0
 *         cdef int *isource = NULL, *idegree = NULL,             # <<<<<<<<<<<<<<
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 *         sources = getarray(sources, &nv, &isource)
 */
  __pyx_v_isource = NULL;
  __pyx_v_idegree = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2307
 *         cdef int nv = 0, ne = 0
 *         cdef int *isource = NULL, *idegree = NULL,
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         sources = getarray(sources, &nv, &isource)
 *         degrees = chkarray(degrees,  nv, &idegree)
 */
  __pyx_v_idest = NULL;
  __pyx_v_iweight = MPI_UNWEIGHTED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2308
 *         cdef int *isource = NULL, *idegree = NULL,
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 *         sources = getarray(sources, &nv, &isource)             # <<<<<<<<<<<<<<
 *         degrees = chkarray(degrees,  nv, &idegree)
 *         for i in range(nv): ne += idegree[i]
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_sources, (&__pyx_v_nv), (&__pyx_v_isource)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_sources, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2309
 *         cdef int *idest = NULL, *iweight = MPI_UNWEIGHTED
 *         sources = getarray(sources, &nv, &isource)
 *         degrees = chkarray(degrees,  nv, &idegree)             # <<<<<<<<<<<<<<
 *         for i in range(nv): ne += idegree[i]
 *         destinations = chkarray(destinations, ne, &idest)
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_degrees, __pyx_v_nv, (&__pyx_v_idegree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_degrees, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2310
 *         sources = getarray(sources, &nv, &isource)
 *         degrees = chkarray(degrees,  nv, &idegree)
 *         for i in range(nv): ne += idegree[i]             # <<<<<<<<<<<<<<
 *         destinations = chkarray(destinations, ne, &idest)
 *         weights = asarray_weights(weights, ne, &iweight)
 */
  __pyx_t_2 = __pyx_v_nv;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;
    __pyx_v_ne = (__pyx_v_ne + (__pyx_v_idegree[__pyx_v_i]));
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2311
 *         degrees = chkarray(degrees,  nv, &idegree)
 *         for i in range(nv): ne += idegree[i]
 *         destinations = chkarray(destinations, ne, &idest)             # <<<<<<<<<<<<<<
 *         weights = asarray_weights(weights, ne, &iweight)
 *         #
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_destinations, __pyx_v_ne, (&__pyx_v_idest)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_destinations, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2312
 *         for i in range(nv): ne += idegree[i]
 *         destinations = chkarray(destinations, ne, &idest)
 *         weights = asarray_weights(weights, ne, &iweight)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asarray_weights(__pyx_v_weights, __pyx_v_ne, (&__pyx_v_iweight)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_weights, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2314
 *         weights = asarray_weights(weights, ne, &iweight)
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Dist_graph_create(
 *             self.ob_mpi,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Distgraphcomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIDistgraphcommObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2315
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             nv, isource, idegree, idest, iweight,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2318
 *             self.ob_mpi,
 *             nv, isource, idegree, idest, iweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_create(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_nv, __pyx_v_isource, __pyx_v_idegree, __pyx_v_idest, __pyx_v_iweight, __pyx_v_info->ob_mpi, __pyx_v_reorder, (&__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2315, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2315
 *         #
 *         cdef Distgraphcomm comm = <Distgraphcomm>New(Distgraphcomm)
 *         with nogil: CHKERR( MPI_Dist_graph_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi,
 *             nv, isource, idegree, idest, iweight,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2319
 *             nv, isource, idegree, idest, iweight,
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2319, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2320
 *             info.ob_mpi, reorder, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Create_intercomm(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2293
 *         return comm
 * 
 *     def Create_dist_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_dist_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_sources);
  __Pyx_XDECREF(__pyx_v_degrees);
  __Pyx_XDECREF(__pyx_v_destinations);
  __Pyx_XDECREF(__pyx_v_weights);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2322
 *         return comm
 * 
 *     def Create_intercomm(             # <<<<<<<<<<<<<<
 *         self,
 *         int local_leader: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_15Create_intercomm(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_14Create_intercomm, "Create_intercomm(self, local_leader: int, peer_comm: Intracomm, remote_leader: int, tag: int = 0) -> Intercomm\n\n        Create intercommunicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_15Create_intercomm = {"Create_intercomm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_15Create_intercomm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_14Create_intercomm};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_15Create_intercomm(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_local_leader;
  struct PyMPIIntracommObject *__pyx_v_peer_comm = 0;
  int __pyx_v_remote_leader;
  int __pyx_v_tag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_intercomm (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_local_leader,&__pyx_n_s_peer_comm,&__pyx_n_s_remote_leader,&__pyx_n_s_tag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_local_leader)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2322, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_peer_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2322, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, 1); __PYX_ERR(31, 2322, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_remote_leader)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2322, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, 2); __PYX_ERR(31, 2322, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2322, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_intercomm") < 0)) __PYX_ERR(31, 2322, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_local_leader = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_local_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2324, __pyx_L3_error)
    __pyx_v_peer_comm = ((struct PyMPIIntracommObject *)values[1]);
    __pyx_v_remote_leader = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_remote_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2326, __pyx_L3_error)
    if (values[3]) {
      __pyx_v_tag = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_tag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2327, __pyx_L3_error)
    } else {
      __pyx_v_tag = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_intercomm", 0, 3, 4, __pyx_nargs); __PYX_ERR(31, 2322, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_intercomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_peer_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "peer_comm", 0))) __PYX_ERR(31, 2325, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_14Create_intercomm(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_local_leader, __pyx_v_peer_comm, __pyx_v_remote_leader, __pyx_v_tag);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_14Create_intercomm(struct PyMPIIntracommObject *__pyx_v_self, int __pyx_v_local_leader, struct PyMPIIntracommObject *__pyx_v_peer_comm, int __pyx_v_remote_leader, int __pyx_v_tag) {
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_intercomm", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2332
 *         Create intercommunicator.
 *         """
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Intercomm_create(
 *             self.ob_mpi, local_leader,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2333
 *         """
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2336
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 *             tag, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Intercomm_create(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_local_leader, __pyx_v_peer_comm->__pyx_base.ob_mpi, __pyx_v_remote_leader, __pyx_v_tag, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 2333, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2333
 *         """
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, local_leader,
 *             peer_comm.ob_mpi, remote_leader,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2337
 *             peer_comm.ob_mpi, remote_leader,
 *             tag, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 2337, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2338
 *             tag, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Low-Level Topology Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2322
 *         return comm
 * 
 *     def Create_intercomm(             # <<<<<<<<<<<<<<
 *         self,
 *         int local_leader: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Create_intercomm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2343
 *     # ----------------------------
 * 
 *     def Cart_map(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_17Cart_map(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_16Cart_map, "Cart_map(self, dims: Sequence[int], periods: Sequence[bool] | None = None) -> int\n\n        Determine optimal process placement on a Cartesian topology.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_17Cart_map = {"Cart_map", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_17Cart_map, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_16Cart_map};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_17Cart_map(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dims = 0;
  PyObject *__pyx_v_periods = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Cart_map (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dims,&__pyx_n_s_periods,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2346
 *         self,
 *         dims: Sequence[int],
 *         periods: Sequence[bool] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dims)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2343, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_periods);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2343, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Cart_map") < 0)) __PYX_ERR(31, 2343, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_dims = values[0];
    __pyx_v_periods = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Cart_map", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2343, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Cart_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_16Cart_map(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_dims, __pyx_v_periods);

  /* "src/mpi4py/MPI.src/Comm.pyx":2343
 *     # ----------------------------
 * 
 *     def Cart_map(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_16Cart_map(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_dims, PyObject *__pyx_v_periods) {
  int __pyx_v_ndims;
  int *__pyx_v_idims;
  int *__pyx_v_iperiods;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Cart_map", 0);
  __Pyx_INCREF(__pyx_v_dims);
  __Pyx_INCREF(__pyx_v_periods);

  /* "src/mpi4py/MPI.src/Comm.pyx":2351
 *         Determine optimal process placement on a Cartesian topology.
 *         """
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL             # <<<<<<<<<<<<<<
 *         dims = getarray(dims, &ndims, &idims)
 *         if periods is None: periods = False
 */
  __pyx_v_ndims = 0;
  __pyx_v_idims = NULL;
  __pyx_v_iperiods = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2352
 *         """
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL
 *         dims = getarray(dims, &ndims, &idims)             # <<<<<<<<<<<<<<
 *         if periods is None: periods = False
 *         if isinstance(periods, bool): periods = [periods] * ndims
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_dims, (&__pyx_v_ndims), (&__pyx_v_idims)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_dims, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2353
 *         cdef int ndims = 0, *idims = NULL, *iperiods = NULL
 *         dims = getarray(dims, &ndims, &idims)
 *         if periods is None: periods = False             # <<<<<<<<<<<<<<
 *         if isinstance(periods, bool): periods = [periods] * ndims
 *         periods = chkarray(periods, ndims, &iperiods)
 */
  __pyx_t_2 = (__pyx_v_periods == Py_None);
  if (__pyx_t_2) {
    __Pyx_INCREF(Py_False);
    __Pyx_DECREF_SET(__pyx_v_periods, Py_False);
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2354
 *         dims = getarray(dims, &ndims, &idims)
 *         if periods is None: periods = False
 *         if isinstance(periods, bool): periods = [periods] * ndims             # <<<<<<<<<<<<<<
 *         periods = chkarray(periods, ndims, &iperiods)
 *         cdef int rank = MPI_PROC_NULL
 */
  __pyx_t_1 = ((PyObject*)&PyBool_Type);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_IsInstance(__pyx_v_periods, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2354, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
    __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndims<0) ? 0:__pyx_v_ndims)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2354, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    { Py_ssize_t __pyx_temp;
      for (__pyx_temp=0; __pyx_temp < __pyx_v_ndims; __pyx_temp++) {
        __Pyx_INCREF(__pyx_v_periods);
        __Pyx_GIVEREF(__pyx_v_periods);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_v_periods)) __PYX_ERR(31, 2354, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_periods, __pyx_t_1);
    __pyx_t_1 = 0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2355
 *         if periods is None: periods = False
 *         if isinstance(periods, bool): periods = [periods] * ndims
 *         periods = chkarray(periods, ndims, &iperiods)             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_periods, __pyx_v_ndims, (&__pyx_v_iperiods)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_periods, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2356
 *         if isinstance(periods, bool): periods = [periods] * ndims
 *         periods = chkarray(periods, ndims, &iperiods)
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2357
 *         periods = chkarray(periods, ndims, &iperiods)
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_map(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_ndims, __pyx_v_idims, __pyx_v_iperiods, (&__pyx_v_rank))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 2357, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2358
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_map(self.ob_mpi, ndims, idims, iperiods, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     def Graph_map(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2343
 *     # ----------------------------
 * 
 *     def Cart_map(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Cart_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XDECREF(__pyx_v_periods);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2360
 *         return rank
 * 
 *     def Graph_map(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_19Graph_map(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_18Graph_map, "Graph_map(self, index: Sequence[int], edges: Sequence[int]) -> int\n\n        Determine optimal process placement on a graph topology.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_19Graph_map = {"Graph_map", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_19Graph_map, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_18Graph_map};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_19Graph_map(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_index = 0;
  PyObject *__pyx_v_edges = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Graph_map (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index,&__pyx_n_s_edges,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2360, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edges)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2360, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Graph_map", 1, 2, 2, 1); __PYX_ERR(31, 2360, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Graph_map") < 0)) __PYX_ERR(31, 2360, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_index = values[0];
    __pyx_v_edges = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Graph_map", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2360, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Graph_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_18Graph_map(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_index, __pyx_v_edges);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_18Graph_map(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_index, PyObject *__pyx_v_edges) {
  int __pyx_v_nnodes;
  int *__pyx_v_iindex;
  int __pyx_v_nedges;
  int *__pyx_v_iedges;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Graph_map", 0);
  __Pyx_INCREF(__pyx_v_index);
  __Pyx_INCREF(__pyx_v_edges);

  /* "src/mpi4py/MPI.src/Comm.pyx":2368
 *         Determine optimal process placement on a graph topology.
 *         """
 *         cdef int nnodes = 0, *iindex = NULL             # <<<<<<<<<<<<<<
 *         index = getarray(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 */
  __pyx_v_nnodes = 0;
  __pyx_v_iindex = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2369
 *         """
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray(index, &nnodes, &iindex)             # <<<<<<<<<<<<<<
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray(edges, &nedges, &iedges)
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_index, (&__pyx_v_nnodes), (&__pyx_v_iindex)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2370
 *         cdef int nnodes = 0, *iindex = NULL
 *         index = getarray(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL             # <<<<<<<<<<<<<<
 *         edges = getarray(edges, &nedges, &iedges)
 *         # extension: accept more 'standard' adjacency arrays
 */
  __pyx_v_nedges = 0;
  __pyx_v_iedges = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2371
 *         index = getarray(index, &nnodes, &iindex)
 *         cdef int nedges = 0, *iedges = NULL
 *         edges = getarray(edges, &nedges, &iedges)             # <<<<<<<<<<<<<<
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 */
  __pyx_t_1 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_getarray(__pyx_v_edges, (&__pyx_v_nedges), (&__pyx_v_iedges)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_edges, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2373
 *         edges = getarray(edges, &nedges, &iedges)
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:             # <<<<<<<<<<<<<<
 *             nnodes -= 1
 *             iindex += 1
 */
  __pyx_t_3 = ((__pyx_v_iindex[0]) == 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_iindex[(__pyx_v_nnodes - 1)]) == __pyx_v_nedges);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2374
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1             # <<<<<<<<<<<<<<
 *             iindex += 1
 *         cdef int rank = MPI_PROC_NULL
 */
    __pyx_v_nnodes = (__pyx_v_nnodes - 1);

    /* "src/mpi4py/MPI.src/Comm.pyx":2375
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:
 *             nnodes -= 1
 *             iindex += 1             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )
 */
    __pyx_v_iindex = (__pyx_v_iindex + 1);

    /* "src/mpi4py/MPI.src/Comm.pyx":2373
 *         edges = getarray(edges, &nedges, &iedges)
 *         # extension: accept more 'standard' adjacency arrays
 *         if iindex[0]==0 and iindex[nnodes-1]==nedges:             # <<<<<<<<<<<<<<
 *             nnodes -= 1
 *             iindex += 1
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2376
 *             nnodes -= 1
 *             iindex += 1
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2377
 *             iindex += 1
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_map(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_nnodes, __pyx_v_iindex, __pyx_v_iedges, (&__pyx_v_rank))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 2377, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2378
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Graph_map(self.ob_mpi, nnodes, iindex, iedges, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     # Global Reduction Operations
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2360
 *         return rank
 * 
 *     def Graph_map(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Graph_map", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2385
 *     # Inclusive Scan
 * 
 *     def Scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_21Scan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_20Scan, "Scan(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM) -> None\n\n        Inclusive Scan.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_21Scan = {"Scan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_21Scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_20Scan};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_21Scan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Scan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__155);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2385, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2385, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Scan", 0, 2, 3, 1); __PYX_ERR(31, 2385, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2385, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Scan") < 0)) __PYX_ERR(31, 2385, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scan", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2385, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 2389, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_20Scan(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_20Scan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Scan", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2394
 *         Inclusive Scan.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scan_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2395
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2395, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2396
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2398
 *         with nogil: CHKERR( MPI_Scan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Exclusive Scan
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scan_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2396, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2396
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Scan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2385
 *     # Inclusive Scan
 * 
 *     def Scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2402
 *     # Exclusive Scan
 * 
 *     def Exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_23Exscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_22Exscan, "Exscan(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM) -> None\n\n        Exclusive Scan.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_23Exscan = {"Exscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_23Exscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_22Exscan};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_23Exscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Exscan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__156);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2402, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2402, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Exscan", 0, 2, 3, 1); __PYX_ERR(31, 2402, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2402, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Exscan") < 0)) __PYX_ERR(31, 2402, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Exscan", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2402, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 2406, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_22Exscan(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_22Exscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Exscan", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2411
 *         Exclusive Scan.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Exscan_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2412
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Exscan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2412, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2413
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Exscan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2415
 *         with nogil: CHKERR( MPI_Exscan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Exscan_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2413, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2413
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Exscan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2402
 *     # Exclusive Scan
 * 
 *     def Exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2419
 *     # Nonblocking
 * 
 *     def Iscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_25Iscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_24Iscan, "Iscan(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM) -> Request\n\n        Inclusive Scan.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_25Iscan = {"Iscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_25Iscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_24Iscan};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_25Iscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iscan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__157);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2419, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2419, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iscan", 0, 2, 3, 1); __PYX_ERR(31, 2419, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2419, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iscan") < 0)) __PYX_ERR(31, 2419, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iscan", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2419, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Iscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 2423, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_24Iscan(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_24Iscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iscan", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2428
 *         Inclusive Scan.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2429
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscan_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2429, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2430
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iscan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2431
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2433
 *         with nogil: CHKERR( MPI_Iscan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iscan_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2431, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2431
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iscan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2434
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iexscan(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2419
 *     # Nonblocking
 * 
 *     def Iscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Iscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2436
 *         return request
 * 
 *     def Iexscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_27Iexscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_26Iexscan, "Iexscan(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM) -> Request\n\n        Inclusive Scan.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_27Iexscan = {"Iexscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_27Iexscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_26Iexscan};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_27Iexscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iexscan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__158);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2436, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2436, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iexscan", 0, 2, 3, 1); __PYX_ERR(31, 2436, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2436, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iexscan") < 0)) __PYX_ERR(31, 2436, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iexscan", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2436, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Iexscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 2440, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_26Iexscan(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_26Iexscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iexscan", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2445
 *         Inclusive Scan.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2446
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iexscan_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2446, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2447
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Iexscan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2448
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iexscan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2450
 *         with nogil: CHKERR( MPI_Iexscan_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Iexscan_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2448, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2448
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Iexscan_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2451
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Persistent
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2436
 *         return request
 * 
 *     def Iexscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Iexscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2455
 *     # Persistent
 * 
 *     def Scan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_29Scan_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_28Scan_init, "Scan_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Inclusive Scan.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_29Scan_init = {"Scan_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_29Scan_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_28Scan_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_29Scan_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Scan_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__159);
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__160);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2455, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2455, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Scan_init", 0, 2, 4, 1); __PYX_ERR(31, 2455, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2455, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2455, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Scan_init") < 0)) __PYX_ERR(31, 2455, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Scan_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 2455, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Scan_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 2459, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2460, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_28Scan_init(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_28Scan_init(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Scan_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2465
 *         Persistent Inclusive Scan.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2466
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scan_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2466, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2467
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Scan_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2468
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scan_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2470
 *         with nogil: CHKERR( MPI_Scan_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Scan_init_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->__pyx_base.ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2468, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2468
 *         m.for_scan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Scan_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2471
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2472
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Exscan_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2455
 *     # Persistent
 * 
 *     def Scan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Scan_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2474
 *         return request
 * 
 *     def Exscan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_31Exscan_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_30Exscan_init, "Exscan_init(self, sendbuf: BufSpec | InPlace, recvbuf: BufSpec, op: Op = SUM, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Exclusive Scan.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_31Exscan_init = {"Exscan_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_31Exscan_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_30Exscan_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_31Exscan_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Exscan_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_op,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__161);
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__162);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2474, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2474, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Exscan_init", 0, 2, 4, 1); __PYX_ERR(31, 2474, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2474, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2474, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Exscan_init") < 0)) __PYX_ERR(31, 2474, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_op = ((struct PyMPIOpObject *)values[2]);
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Exscan_init", 0, 2, 4, __pyx_nargs); __PYX_ERR(31, 2474, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Exscan_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(31, 2478, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2479, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_30Exscan_init(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_op, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_30Exscan_init(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIOpObject *__pyx_v_op, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Exscan_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2484
 *         Persistent Exclusive Scan.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2485
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Exscan_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2485, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2486
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Exscan_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2487
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Exscan_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2489
 *         with nogil: CHKERR( MPI_Exscan_init_c(
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Exscan_init_c(__pyx_v_m->sbuf, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_op->ob_mpi, __pyx_v_self->__pyx_base.ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2487, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2487
 *         m.for_exscan(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Exscan_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2490
 *             m.sbuf, m.rbuf, m.rcount, m.rtype,
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2491
 *             op.ob_mpi, self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2474
 *         return request
 * 
 *     def Exscan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Exscan_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2495
 *     # Python Communication
 * 
 *     def scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_33scan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_32scan, "scan(self, sendobj: Any, op: Op | Callable[[Any, Any], Any] = SUM) -> Any\nInclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_33scan = {"scan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_33scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_32scan};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_33scan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,&__pyx_n_s_op,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__163);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2495, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2495, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scan") < 0)) __PYX_ERR(31, 2495, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_op = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scan", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2495, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_32scan(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_op);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_32scan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scan", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2501
 *     ) -> Any:
 *         """Inclusive Scan."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_scan(sendobj, op, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->__pyx_base.ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2502
 *         """Inclusive Scan."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_scan(sendobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 *     def exscan(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_scan(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2495
 *     # Python Communication
 * 
 *     def scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2504
 *         return PyMPI_scan(sendobj, op, comm)
 * 
 *     def exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_35exscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_34exscan, "exscan(self, sendobj: Any, op: Op | Callable[[Any, Any], Any] = SUM) -> Any\nExclusive Scan.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_35exscan = {"exscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_35exscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_34exscan};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_35exscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  PyObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exscan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,&__pyx_n_s_op,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__164);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2504, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2504, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "exscan") < 0)) __PYX_ERR(31, 2504, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendobj = values[0];
    __pyx_v_op = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("exscan", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 2504, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_34exscan(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_sendobj, __pyx_v_op);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_34exscan(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_sendobj, PyObject *__pyx_v_op) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("exscan", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2510
 *     ) -> Any:
 *         """Exclusive Scan."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_exscan(sendobj, op, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->__pyx_base.ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2511
 *         """Exclusive Scan."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_exscan(sendobj, op, comm)             # <<<<<<<<<<<<<<
 * 
 *     # Establishing Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_exscan(__pyx_v_sendobj, __pyx_v_op, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2504
 *         return PyMPI_scan(sendobj, op, comm)
 * 
 *     def exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.exscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2518
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_37Spawn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_36Spawn, "Spawn(self, command: str, args: Sequence[str] | None = None, maxprocs: int = 1, info: Info = INFO_NULL, root: int = 0, errcodes: list[int] | None = None) -> Intercomm\n\n        Spawn instances of a single MPI application.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_37Spawn = {"Spawn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_37Spawn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_36Spawn};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_37Spawn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_command = 0;
  PyObject *__pyx_v_args = 0;
  int __pyx_v_maxprocs;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  PyObject *__pyx_v_errcodes = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Spawn (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_command,&__pyx_n_s_args,&__pyx_n_s_maxprocs,&__pyx_n_s_info,&__pyx_n_s_root,&__pyx_n_s_errcodes,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2521
 *         self,
 *         command: str,
 *         args: Sequence[str] | None = None,             # <<<<<<<<<<<<<<
 *         int maxprocs: int = 1,
 *         Info info: Info = INFO_NULL,
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__165);

    /* "src/mpi4py/MPI.src/Comm.pyx":2525
 *         Info info: Info = INFO_NULL,
 *         int root: int = 0,
 *         errcodes: list[int] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intercomm:
 *         """
 */
    values[5] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_command)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2518, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maxprocs);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2518, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errcodes);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2518, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Spawn") < 0)) __PYX_ERR(31, 2518, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_command = values[0];
    __pyx_v_args = values[1];
    if (values[2]) {
      __pyx_v_maxprocs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_maxprocs == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2522, __pyx_L3_error)
    } else {
      __pyx_v_maxprocs = ((int)1);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
    if (values[4]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2524, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_errcodes = values[5];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Spawn", 0, 1, 6, __pyx_nargs); __PYX_ERR(31, 2518, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2523, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_36Spawn(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_command, __pyx_v_args, __pyx_v_maxprocs, __pyx_v_info, __pyx_v_root, __pyx_v_errcodes);

  /* "src/mpi4py/MPI.src/Comm.pyx":2518
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: str,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_36Spawn(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_command, PyObject *__pyx_v_args, int __pyx_v_maxprocs, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_root, PyObject *__pyx_v_errcodes) {
  char *__pyx_v_cmd;
  char **__pyx_v_argv;
  int *__pyx_v_ierrcodes;
  int __pyx_v_rank;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused3 = 0;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  int __pyx_8genexpr9__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Spawn", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2530
 *         Spawn instances of a single MPI application.
 *         """
 *         cdef char *cmd = NULL             # <<<<<<<<<<<<<<
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 */
  __pyx_v_cmd = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2531
 *         """
 *         cdef char *cmd = NULL
 *         cdef char **argv = MPI_ARGV_NULL             # <<<<<<<<<<<<<<
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 */
  __pyx_v_argv = MPI_ARGV_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2532
 *         cdef char *cmd = NULL
 *         cdef char **argv = MPI_ARGV_NULL
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef int rank = MPI_UNDEFINED
 */
  __pyx_v_ierrcodes = MPI_ERRCODES_IGNORE;

  /* "src/mpi4py/MPI.src/Comm.pyx":2534
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2535
 *         #
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         cdef object unused1, unused2, unused3
 *         if root == rank:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2535, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2537
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             unused1 = asmpistr(command, &cmd)
 *             unused2 = asarray_argv(args, &argv)
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2538
 *         cdef object unused1, unused2, unused3
 *         if root == rank:
 *             unused1 = asmpistr(command, &cmd)             # <<<<<<<<<<<<<<
 *             unused2 = asarray_argv(args, &argv)
 *         if errcodes is not None:
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_command, (&__pyx_v_cmd)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2538, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused1 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2539
 *         if root == rank:
 *             unused1 = asmpistr(command, &cmd)
 *             unused2 = asarray_argv(args, &argv)             # <<<<<<<<<<<<<<
 *         if errcodes is not None:
 *             unused3 = newarray(maxprocs, &ierrcodes)
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_argv(__pyx_v_args, (&__pyx_v_argv)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused2 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2537
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             unused1 = asmpistr(command, &cmd)
 *             unused2 = asarray_argv(args, &argv)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2540
 *             unused1 = asmpistr(command, &cmd)
 *             unused2 = asarray_argv(args, &argv)
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             unused3 = newarray(maxprocs, &ierrcodes)
 *         #
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2541
 *             unused2 = asarray_argv(args, &argv)
 *         if errcodes is not None:
 *             unused3 = newarray(maxprocs, &ierrcodes)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 */
    __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_maxprocs, (&__pyx_v_ierrcodes)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused3 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2540
 *             unused1 = asmpistr(command, &cmd)
 *             unused2 = asarray_argv(args, &argv)
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             unused3 = newarray(maxprocs, &ierrcodes)
 *         #
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2543
 *             unused3 = newarray(maxprocs, &ierrcodes)
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_spawn(
 *             cmd, argv, maxprocs, info.ob_mpi, root,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2544
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn(             # <<<<<<<<<<<<<<
 *             cmd, argv, maxprocs, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2546
 *         with nogil: CHKERR( MPI_Comm_spawn(
 *             cmd, argv, maxprocs, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )             # <<<<<<<<<<<<<<
 *         #
 *         if errcodes is not None:
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_spawn(__pyx_v_cmd, __pyx_v_argv, __pyx_v_maxprocs, __pyx_v_info->ob_mpi, __pyx_v_root, __pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi), __pyx_v_ierrcodes)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2544, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2544
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn(             # <<<<<<<<<<<<<<
 *             cmd, argv, maxprocs, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2548
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 *         #
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]
 *         #
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2549
 *         #
 *         if errcodes is not None:
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]             # <<<<<<<<<<<<<<
 *         #
 *         comm_set_eh(comm.ob_mpi)
 */
    { /* enter inner scope */
      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2549, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __pyx_v_maxprocs;
      __pyx_t_5 = __pyx_t_1;
      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
        __pyx_8genexpr9__pyx_v_i = __pyx_t_6;
        __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_ierrcodes[__pyx_8genexpr9__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_3))) __PYX_ERR(31, 2549, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
    } /* exit inner scope */
    if (__Pyx_PyObject_SetSlice(__pyx_v_errcodes, __pyx_t_4, 0, 0, NULL, NULL, &__pyx_slice__166, 0, 0, 1) < 0) __PYX_ERR(31, 2549, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2548
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 *         #
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]
 *         #
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2551
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]
 *         #
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2551, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2552
 *         #
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     def Spawn_multiple(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2518
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_unused3);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2554
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[str],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_39Spawn_multiple(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_38Spawn_multiple, "Spawn_multiple(self, command: Sequence[str], args: Sequence[Sequence[str]] | None = None, maxprocs: Sequence[int] | None = None, info: Sequence[Info] | Info = INFO_NULL, root: int = 0, errcodes: list[list[int]] | None = None) -> Intercomm\n\n        Spawn instances of multiple MPI applications.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_39Spawn_multiple = {"Spawn_multiple", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_39Spawn_multiple, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_38Spawn_multiple};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_39Spawn_multiple(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_command = 0;
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_maxprocs = 0;
  PyObject *__pyx_v_info = 0;
  int __pyx_v_root;
  PyObject *__pyx_v_errcodes = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Spawn_multiple (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_command,&__pyx_n_s_args,&__pyx_n_s_maxprocs,&__pyx_n_s_info,&__pyx_n_s_root,&__pyx_n_s_errcodes,0};

    /* "src/mpi4py/MPI.src/Comm.pyx":2557
 *         self,
 *         command: Sequence[str],
 *         args: Sequence[Sequence[str]] | None = None,             # <<<<<<<<<<<<<<
 *         maxprocs: Sequence[int] | None = None,
 *         info: Sequence[Info] | Info = INFO_NULL,
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Comm.pyx":2558
 *         command: Sequence[str],
 *         args: Sequence[Sequence[str]] | None = None,
 *         maxprocs: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         info: Sequence[Info] | Info = INFO_NULL,
 *         int root: int = 0,
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__167);

    /* "src/mpi4py/MPI.src/Comm.pyx":2561
 *         info: Sequence[Info] | Info = INFO_NULL,
 *         int root: int = 0,
 *         errcodes: list[list[int]] | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intercomm:
 *         """
 */
    values[5] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_command)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2554, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2554, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maxprocs);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2554, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2554, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2554, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errcodes);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2554, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Spawn_multiple") < 0)) __PYX_ERR(31, 2554, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_command = values[0];
    __pyx_v_args = values[1];
    __pyx_v_maxprocs = values[2];
    __pyx_v_info = values[3];
    if (values[4]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2560, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
    __pyx_v_errcodes = values[5];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Spawn_multiple", 0, 1, 6, __pyx_nargs); __PYX_ERR(31, 2554, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn_multiple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_38Spawn_multiple(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_command, __pyx_v_args, __pyx_v_maxprocs, __pyx_v_info, __pyx_v_root, __pyx_v_errcodes);

  /* "src/mpi4py/MPI.src/Comm.pyx":2554
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[str],
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_38Spawn_multiple(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_command, PyObject *__pyx_v_args, PyObject *__pyx_v_maxprocs, PyObject *__pyx_v_info, int __pyx_v_root, PyObject *__pyx_v_errcodes) {
  int __pyx_v_count;
  char **__pyx_v_cmds;
  char ***__pyx_v_argvs;
  MPI_Info *__pyx_v_infos;
  int *__pyx_v_imaxprocs;
  int *__pyx_v_ierrcodes;
  int __pyx_v_rank;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused3 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused4 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused5 = 0;
  int __pyx_v_np;
  int __pyx_v_i;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  int __pyx_v_p;
  int __pyx_v_q;
  CYTHON_UNUSED int __pyx_9genexpr10__pyx_v__;
  int __pyx_9genexpr11__pyx_v_j;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Spawn_multiple", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2566
 *         Spawn instances of multiple MPI applications.
 *         """
 *         cdef int count = 0             # <<<<<<<<<<<<<<
 *         cdef char **cmds = NULL
 *         cdef char ***argvs = MPI_ARGVS_NULL
 */
  __pyx_v_count = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2567
 *         """
 *         cdef int count = 0
 *         cdef char **cmds = NULL             # <<<<<<<<<<<<<<
 *         cdef char ***argvs = MPI_ARGVS_NULL
 *         cdef MPI_Info *infos = NULL
 */
  __pyx_v_cmds = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2568
 *         cdef int count = 0
 *         cdef char **cmds = NULL
 *         cdef char ***argvs = MPI_ARGVS_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Info *infos = NULL
 *         cdef int *imaxprocs = NULL
 */
  __pyx_v_argvs = MPI_ARGVS_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2569
 *         cdef char **cmds = NULL
 *         cdef char ***argvs = MPI_ARGVS_NULL
 *         cdef MPI_Info *infos = NULL             # <<<<<<<<<<<<<<
 *         cdef int *imaxprocs = NULL
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 */
  __pyx_v_infos = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2570
 *         cdef char ***argvs = MPI_ARGVS_NULL
 *         cdef MPI_Info *infos = NULL
 *         cdef int *imaxprocs = NULL             # <<<<<<<<<<<<<<
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 */
  __pyx_v_imaxprocs = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2571
 *         cdef MPI_Info *infos = NULL
 *         cdef int *imaxprocs = NULL
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE             # <<<<<<<<<<<<<<
 *         #
 *         cdef int rank = MPI_UNDEFINED
 */
  __pyx_v_ierrcodes = MPI_ERRCODES_IGNORE;

  /* "src/mpi4py/MPI.src/Comm.pyx":2573
 *         cdef int *ierrcodes = MPI_ERRCODES_IGNORE
 *         #
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3, unused4, unused5
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2574
 *         #
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         cdef object unused1, unused2, unused3, unused4, unused5
 *         if root == rank:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2574, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2576
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3, unused4, unused5
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             unused1 = asarray_cmds(command, &count, &cmds)
 *             unused2 = asarray_argvs(args, count, &argvs)
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2577
 *         cdef object unused1, unused2, unused3, unused4, unused5
 *         if root == rank:
 *             unused1 = asarray_cmds(command, &count, &cmds)             # <<<<<<<<<<<<<<
 *             unused2 = asarray_argvs(args, count, &argvs)
 *             unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_cmds(__pyx_v_command, (&__pyx_v_count), (&__pyx_v_cmds)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused1 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2578
 *         if root == rank:
 *             unused1 = asarray_cmds(command, &count, &cmds)
 *             unused2 = asarray_argvs(args, count, &argvs)             # <<<<<<<<<<<<<<
 *             unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             unused4 = asarray_Info(info, count, &infos)
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_argvs(__pyx_v_args, __pyx_v_count, (&__pyx_v_argvs)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2578, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused2 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2579
 *             unused1 = asarray_cmds(command, &count, &cmds)
 *             unused2 = asarray_argvs(args, count, &argvs)
 *             unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)             # <<<<<<<<<<<<<<
 *             unused4 = asarray_Info(info, count, &infos)
 *         cdef int np = 0
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_nprocs(__pyx_v_maxprocs, __pyx_v_count, (&__pyx_v_imaxprocs)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused3 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2580
 *             unused2 = asarray_argvs(args, count, &argvs)
 *             unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             unused4 = asarray_Info(info, count, &infos)             # <<<<<<<<<<<<<<
 *         cdef int np = 0
 *         if errcodes is not None:
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_Info(__pyx_v_info, __pyx_v_count, (&__pyx_v_infos)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused4 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2576
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         cdef object unused1, unused2, unused3, unused4, unused5
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             unused1 = asarray_cmds(command, &count, &cmds)
 *             unused2 = asarray_argvs(args, count, &argvs)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2581
 *             unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             unused4 = asarray_Info(info, count, &infos)
 *         cdef int np = 0             # <<<<<<<<<<<<<<
 *         if errcodes is not None:
 *             if root != rank:
 */
  __pyx_v_np = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2582
 *             unused4 = asarray_Info(info, count, &infos)
 *         cdef int np = 0
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             if root != rank:
 *                 count = <int>len(maxprocs)
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2583
 *         cdef int np = 0
 *         if errcodes is not None:
 *             if root != rank:             # <<<<<<<<<<<<<<
 *                 count = <int>len(maxprocs)
 *                 unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 */
    __pyx_t_2 = (__pyx_v_root != __pyx_v_rank);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/Comm.pyx":2584
 *         if errcodes is not None:
 *             if root != rank:
 *                 count = <int>len(maxprocs)             # <<<<<<<<<<<<<<
 *                 unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             for i in range(count):
 */
      __pyx_t_4 = PyObject_Length(__pyx_v_maxprocs); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(31, 2584, __pyx_L1_error)
      __pyx_v_count = ((int)__pyx_t_4);

      /* "src/mpi4py/MPI.src/Comm.pyx":2585
 *             if root != rank:
 *                 count = <int>len(maxprocs)
 *                 unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)             # <<<<<<<<<<<<<<
 *             for i in range(count):
 *                 np += imaxprocs[i]
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asarray_nprocs(__pyx_v_maxprocs, __pyx_v_count, (&__pyx_v_imaxprocs)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_unused3, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/Comm.pyx":2583
 *         cdef int np = 0
 *         if errcodes is not None:
 *             if root != rank:             # <<<<<<<<<<<<<<
 *                 count = <int>len(maxprocs)
 *                 unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 */
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":2586
 *                 count = <int>len(maxprocs)
 *                 unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             for i in range(count):             # <<<<<<<<<<<<<<
 *                 np += imaxprocs[i]
 *             unused5 = newarray(np, &ierrcodes)
 */
    __pyx_t_1 = __pyx_v_count;
    __pyx_t_5 = __pyx_t_1;
    for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
      __pyx_v_i = __pyx_t_6;

      /* "src/mpi4py/MPI.src/Comm.pyx":2587
 *                 unused3 = asarray_nprocs(maxprocs, count, &imaxprocs)
 *             for i in range(count):
 *                 np += imaxprocs[i]             # <<<<<<<<<<<<<<
 *             unused5 = newarray(np, &ierrcodes)
 *         #
 */
      __pyx_v_np = (__pyx_v_np + (__pyx_v_imaxprocs[__pyx_v_i]));
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":2588
 *             for i in range(count):
 *                 np += imaxprocs[i]
 *             unused5 = newarray(np, &ierrcodes)             # <<<<<<<<<<<<<<
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 */
    __pyx_t_3 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_np, (&__pyx_v_ierrcodes)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2588, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_unused5 = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2582
 *             unused4 = asarray_Info(info, count, &infos)
 *         cdef int np = 0
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             if root != rank:
 *                 count = <int>len(maxprocs)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2590
 *             unused5 = newarray(np, &ierrcodes)
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(
 *             count, cmds, argvs, imaxprocs, infos, root,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2591
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(             # <<<<<<<<<<<<<<
 *             count, cmds, argvs, imaxprocs, infos, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2593
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(
 *             count, cmds, argvs, imaxprocs, infos, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )             # <<<<<<<<<<<<<<
 *         #
 *         cdef int p=0, q=0
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_spawn_multiple(__pyx_v_count, __pyx_v_cmds, __pyx_v_argvs, __pyx_v_imaxprocs, __pyx_v_infos, __pyx_v_root, __pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi), __pyx_v_ierrcodes)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2591, __pyx_L9_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2591
 *         #
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_spawn_multiple(             # <<<<<<<<<<<<<<
 *             count, cmds, argvs, imaxprocs, infos, root,
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L10;
        }
        __pyx_L9_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L10:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2595
 *             self.ob_mpi, &comm.ob_mpi, ierrcodes) )
 *         #
 *         cdef int p=0, q=0             # <<<<<<<<<<<<<<
 *         if errcodes is not None:
 *             errcodes[:] = [[] for _ in range(count)]
 */
  __pyx_v_p = 0;
  __pyx_v_q = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2596
 *         #
 *         cdef int p=0, q=0
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             errcodes[:] = [[] for _ in range(count)]
 *             for i in range(count):
 */
  __pyx_t_2 = (__pyx_v_errcodes != Py_None);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2597
 *         cdef int p=0, q=0
 *         if errcodes is not None:
 *             errcodes[:] = [[] for _ in range(count)]             # <<<<<<<<<<<<<<
 *             for i in range(count):
 *                 q = p + imaxprocs[i]
 */
    { /* enter inner scope */
      __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(31, 2597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = __pyx_v_count;
      __pyx_t_5 = __pyx_t_1;
      for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
        __pyx_9genexpr10__pyx_v__ = __pyx_t_6;
        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2597, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_3))) __PYX_ERR(31, 2597, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
    } /* exit inner scope */
    if (__Pyx_PyObject_SetSlice(__pyx_v_errcodes, __pyx_t_7, 0, 0, NULL, NULL, &__pyx_slice__166, 0, 0, 1) < 0) __PYX_ERR(31, 2597, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2598
 *         if errcodes is not None:
 *             errcodes[:] = [[] for _ in range(count)]
 *             for i in range(count):             # <<<<<<<<<<<<<<
 *                 q = p + imaxprocs[i]
 *                 errcodes[i][:] = [ierrcodes[j] for j in range(p, q)]
 */
    __pyx_t_1 = __pyx_v_count;
    __pyx_t_5 = __pyx_t_1;
    for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
      __pyx_v_i = __pyx_t_6;

      /* "src/mpi4py/MPI.src/Comm.pyx":2599
 *             errcodes[:] = [[] for _ in range(count)]
 *             for i in range(count):
 *                 q = p + imaxprocs[i]             # <<<<<<<<<<<<<<
 *                 errcodes[i][:] = [ierrcodes[j] for j in range(p, q)]
 *                 p = q
 */
      __pyx_v_q = (__pyx_v_p + (__pyx_v_imaxprocs[__pyx_v_i]));

      /* "src/mpi4py/MPI.src/Comm.pyx":2600
 *             for i in range(count):
 *                 q = p + imaxprocs[i]
 *                 errcodes[i][:] = [ierrcodes[j] for j in range(p, q)]             # <<<<<<<<<<<<<<
 *                 p = q
 *         #
 */
      { /* enter inner scope */
        __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(31, 2600, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_v_q;
        __pyx_t_9 = __pyx_t_8;
        for (__pyx_t_10 = __pyx_v_p; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
          __pyx_9genexpr11__pyx_v_j = __pyx_t_10;
          __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_ierrcodes[__pyx_9genexpr11__pyx_v_j])); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2600, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_7, (PyObject*)__pyx_t_3))) __PYX_ERR(31, 2600, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
      } /* exit inner scope */
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_errcodes, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__Pyx_PyObject_SetSlice(__pyx_t_3, __pyx_t_7, 0, 0, NULL, NULL, &__pyx_slice__166, 0, 0, 1) < 0) __PYX_ERR(31, 2600, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/mpi4py/MPI.src/Comm.pyx":2601
 *                 q = p + imaxprocs[i]
 *                 errcodes[i][:] = [ierrcodes[j] for j in range(p, q)]
 *                 p = q             # <<<<<<<<<<<<<<
 *         #
 *         comm_set_eh(comm.ob_mpi)
 */
      __pyx_v_p = __pyx_v_q;
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":2596
 *         #
 *         cdef int p=0, q=0
 *         if errcodes is not None:             # <<<<<<<<<<<<<<
 *             errcodes[:] = [[] for _ in range(count)]
 *             for i in range(count):
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2603
 *                 p = q
 *         #
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2603, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2604
 *         #
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Server Routines
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2554
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[str],
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Spawn_multiple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_unused3);
  __Pyx_XDECREF(__pyx_v_unused4);
  __Pyx_XDECREF(__pyx_v_unused5);
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2608
 *     # Server Routines
 * 
 *     def Accept(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_41Accept(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_40Accept, "Accept(self, port_name: str, info: Info = INFO_NULL, root: int = 0) -> Intercomm\n\n        Accept a request to form a new intercommunicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_41Accept = {"Accept", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_41Accept, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_40Accept};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_41Accept(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_port_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Accept (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_port_name,&__pyx_n_s_info,&__pyx_n_s_root,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__168);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_port_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2608, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2608, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2608, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Accept") < 0)) __PYX_ERR(31, 2608, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2612, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Accept", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 2608, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2611, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_40Accept(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_port_name, __pyx_v_info, __pyx_v_root);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_40Accept(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_root) {
  char *__pyx_v_cportname;
  int __pyx_v_rank;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  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;
  __Pyx_RefNannySetupContext("Accept", 0);
  __Pyx_INCREF(__pyx_v_port_name);

  /* "src/mpi4py/MPI.src/Comm.pyx":2617
 *         Accept a request to form a new intercommunicator.
 *         """
 *         cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 */
  __pyx_v_cportname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2618
 *         """
 *         cdef char *cportname = NULL
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2619
 *         cdef char *cportname = NULL
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2619, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2620
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2621
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname)             # <<<<<<<<<<<<<<
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_accept(
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_port_name, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2620
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2622
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_accept(
 *             cportname, info.ob_mpi, root,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2623
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_accept(             # <<<<<<<<<<<<<<
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2625
 *         with nogil: CHKERR( MPI_Comm_accept(
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_accept(__pyx_v_cportname, __pyx_v_info->ob_mpi, __pyx_v_root, __pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2623, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2623
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_accept(             # <<<<<<<<<<<<<<
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2626
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2626, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2627
 *             self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Client Routines
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2608
 *     # Server Routines
 * 
 *     def Accept(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Accept", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2631
 *     # Client Routines
 * 
 *     def Connect(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_43Connect(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intracomm_42Connect, "Connect(self, port_name: str, info: Info = INFO_NULL, root: int = 0) -> Intercomm\n\n        Make a request to form a new intercommunicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intracomm_43Connect = {"Connect", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_43Connect, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_42Connect};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intracomm_43Connect(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_port_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  int __pyx_v_root;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Connect (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_port_name,&__pyx_n_s_info,&__pyx_n_s_root,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__169);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_port_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2631, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2631, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_root);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2631, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Connect") < 0)) __PYX_ERR(31, 2631, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_port_name = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
    if (values[2]) {
      __pyx_v_root = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_root == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2635, __pyx_L3_error)
    } else {
      __pyx_v_root = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Connect", 0, 1, 3, __pyx_nargs); __PYX_ERR(31, 2631, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2634, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intracomm_42Connect(((struct PyMPIIntracommObject *)__pyx_v_self), __pyx_v_port_name, __pyx_v_info, __pyx_v_root);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intracomm_42Connect(struct PyMPIIntracommObject *__pyx_v_self, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info, int __pyx_v_root) {
  char *__pyx_v_cportname;
  int __pyx_v_rank;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  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;
  __Pyx_RefNannySetupContext("Connect", 0);
  __Pyx_INCREF(__pyx_v_port_name);

  /* "src/mpi4py/MPI.src/Comm.pyx":2640
 *         Make a request to form a new intercommunicator.
 *         """
 *         cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 */
  __pyx_v_cportname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":2641
 *         """
 *         cdef char *cportname = NULL
 *         cdef int rank = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 */
  __pyx_v_rank = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2642
 *         cdef char *cportname = NULL
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )             # <<<<<<<<<<<<<<
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_rank(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2642, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2643
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 */
  __pyx_t_2 = (__pyx_v_root == __pyx_v_rank);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2644
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname)             # <<<<<<<<<<<<<<
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_connect(
 */
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_port_name, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2643
 *         cdef int rank = MPI_UNDEFINED
 *         CHKERR( MPI_Comm_rank(self.ob_mpi, &rank) )
 *         if root == rank:             # <<<<<<<<<<<<<<
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2645
 *         if root == rank:
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_connect(
 *             cportname, info.ob_mpi, root,
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2646
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_connect(             # <<<<<<<<<<<<<<
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2648
 *         with nogil: CHKERR( MPI_Comm_connect(
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_connect(__pyx_v_cportname, __pyx_v_info->ob_mpi, __pyx_v_root, __pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2646, __pyx_L5_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2646
 *             port_name = asmpistr(port_name, &cportname)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Comm_connect(             # <<<<<<<<<<<<<<
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L5_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L6:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2649
 *             cportname, info.ob_mpi, root,
 *             self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 2649, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2650
 *             self.ob_mpi, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2631
 *     # Client Routines
 * 
 *     def Connect(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Intracomm.Connect", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2658
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_8Topocomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_8Topocomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPICommObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2658, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(31, 2658, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 2658, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(31, 2658, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm___cinit__(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_8Topocomm___cinit__(struct PyMPITopocommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_v_topo;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2659
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 */
  ((void)__pyx_v_comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2660
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base.ob_mpi == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2661
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo == MPI_UNDEFINED:
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":2662
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *         if topo == MPI_UNDEFINED:
 *             raise TypeError("expecting a topology communicator")
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_self->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2662, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2663
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a topology communicator")
 * 
 */
  __pyx_t_1 = (__pyx_v_topo == MPI_UNDEFINED);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2664
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo == MPI_UNDEFINED:
 *             raise TypeError("expecting a topology communicator")             # <<<<<<<<<<<<<<
 * 
 *     property degrees:
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__170, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(31, 2664, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":2663
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo == MPI_UNDEFINED:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a topology communicator")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2658
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2668
 *     property degrees:
 *         """Number of incoming and outgoing neighbors."""
 *         def __get__(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *             cdef object dim, rank
 *             cdef object nneighbors
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_7degrees_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_7degrees_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_7degrees___get__(((struct PyMPITopocommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_7degrees___get__(struct PyMPITopocommObject *__pyx_v_self) {
  PyObject *__pyx_v_dim = 0;
  PyObject *__pyx_v_rank = 0;
  PyObject *__pyx_v_nneighbors = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2671
 *             cdef object dim, rank
 *             cdef object nneighbors
 *             if isinstance(self, Cartcomm):             # <<<<<<<<<<<<<<
 *                 dim = self.Get_dim()
 *                 return (2*dim, 2*dim)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Cartcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2672
 *             cdef object nneighbors
 *             if isinstance(self, Cartcomm):
 *                 dim = self.Get_dim()             # <<<<<<<<<<<<<<
 *                 return (2*dim, 2*dim)
 *             if isinstance(self, Graphcomm):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_dim = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2673
 *             if isinstance(self, Cartcomm):
 *                 dim = self.Get_dim()
 *                 return (2*dim, 2*dim)             # <<<<<<<<<<<<<<
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_MultiplyCObj(__pyx_int_2, __pyx_v_dim, 2, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2673, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_MultiplyCObj(__pyx_int_2, __pyx_v_dim, 2, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2673, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2673, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(31, 2673, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(31, 2673, __pyx_L1_error);
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2671
 *             cdef object dim, rank
 *             cdef object nneighbors
 *             if isinstance(self, Cartcomm):             # <<<<<<<<<<<<<<
 *                 dim = self.Get_dim()
 *                 return (2*dim, 2*dim)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2674
 *                 dim = self.Get_dim()
 *                 return (2*dim, 2*dim)
 *             if isinstance(self, Graphcomm):             # <<<<<<<<<<<<<<
 *                 rank = self.Get_rank()
 *                 nneighbors = self.Get_neighbors_count(rank)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Graphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2675
 *                 return (2*dim, 2*dim)
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *                 nneighbors = self.Get_neighbors_count(rank)
 *                 return (nneighbors, nneighbors)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2675, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2675, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_rank = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2676
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()
 *                 nneighbors = self.Get_neighbors_count(rank)             # <<<<<<<<<<<<<<
 *                 return (nneighbors, nneighbors)
 *             if isinstance(self, Distgraphcomm):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_neighbors_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2676, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_rank};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2676, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_nneighbors = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2677
 *                 rank = self.Get_rank()
 *                 nneighbors = self.Get_neighbors_count(rank)
 *                 return (nneighbors, nneighbors)             # <<<<<<<<<<<<<<
 *             if isinstance(self, Distgraphcomm):
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_nneighbors);
    __Pyx_GIVEREF(__pyx_v_nneighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_nneighbors)) __PYX_ERR(31, 2677, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_nneighbors);
    __Pyx_GIVEREF(__pyx_v_nneighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_nneighbors)) __PYX_ERR(31, 2677, __pyx_L1_error);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2674
 *                 dim = self.Get_dim()
 *                 return (2*dim, 2*dim)
 *             if isinstance(self, Graphcomm):             # <<<<<<<<<<<<<<
 *                 rank = self.Get_rank()
 *                 nneighbors = self.Get_neighbors_count(rank)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2678
 *                 nneighbors = self.Get_neighbors_count(rank)
 *                 return (nneighbors, nneighbors)
 *             if isinstance(self, Distgraphcomm):             # <<<<<<<<<<<<<<
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]
 *                 return nneighbors
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Distgraphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2679
 *                 return (nneighbors, nneighbors)
 *             if isinstance(self, Distgraphcomm):
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]             # <<<<<<<<<<<<<<
 *                 return nneighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dist_neighbors_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 2, NULL, NULL, &__pyx_slice__171, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_nneighbors = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2680
 *             if isinstance(self, Distgraphcomm):
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]
 *                 return nneighbors             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_nneighbors);
    __pyx_r = __pyx_v_nneighbors;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2678
 *                 nneighbors = self.Get_neighbors_count(rank)
 *                 return (nneighbors, nneighbors)
 *             if isinstance(self, Distgraphcomm):             # <<<<<<<<<<<<<<
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]
 *                 return nneighbors
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2681
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]
 *                 return nneighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 *     property indegree:
 */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__170, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __PYX_ERR(31, 2681, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2668
 *     property degrees:
 *         """Number of incoming and outgoing neighbors."""
 *         def __get__(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *             cdef object dim, rank
 *             cdef object nneighbors
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.degrees.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dim);
  __Pyx_XDECREF(__pyx_v_rank);
  __Pyx_XDECREF(__pyx_v_nneighbors);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2685
 *     property indegree:
 *         """Number of incoming neighbors."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.degrees[0]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_8indegree_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_8indegree_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_8indegree___get__(((struct PyMPITopocommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_8indegree___get__(struct PyMPITopocommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2686
 *         """Number of incoming neighbors."""
 *         def __get__(self) -> int:
 *             return self.degrees[0]             # <<<<<<<<<<<<<<
 * 
 *     property outdegree:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_degrees); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2685
 *     property indegree:
 *         """Number of incoming neighbors."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.degrees[0]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.indegree.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2690
 *     property outdegree:
 *         """Number of outgoing neighbors."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.degrees[1]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_9outdegree_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_9outdegree_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_9outdegree___get__(((struct PyMPITopocommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_9outdegree___get__(struct PyMPITopocommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2691
 *         """Number of outgoing neighbors."""
 *         def __get__(self) -> int:
 *             return self.degrees[1]             # <<<<<<<<<<<<<<
 * 
 *     property inoutedges:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_degrees); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2690
 *     property outdegree:
 *         """Number of outgoing neighbors."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.degrees[1]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.outdegree.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2695
 *     property inoutedges:
 *         """Incoming and outgoing neighbors."""
 *         def __get__(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *             cdef object direction, source, dest, rank
 *             cdef object neighbors
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_10inoutedges_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_10inoutedges_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_10inoutedges___get__(((struct PyMPITopocommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_10inoutedges___get__(struct PyMPITopocommObject *__pyx_v_self) {
  PyObject *__pyx_v_direction = 0;
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_dest = 0;
  PyObject *__pyx_v_rank = 0;
  PyObject *__pyx_v_neighbors = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2698
 *             cdef object direction, source, dest, rank
 *             cdef object neighbors
 *             if isinstance(self, Cartcomm):             # <<<<<<<<<<<<<<
 *                 neighbors = []
 *                 for direction in range(self.Get_dim()):
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Cartcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2699
 *             cdef object neighbors
 *             if isinstance(self, Cartcomm):
 *                 neighbors = []             # <<<<<<<<<<<<<<
 *                 for direction in range(self.Get_dim()):
 *                     source, dest = self.Shift(direction, 1)
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2699, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_neighbors = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2700
 *             if isinstance(self, Cartcomm):
 *                 neighbors = []
 *                 for direction in range(self.Get_dim()):             # <<<<<<<<<<<<<<
 *                     source, dest = self.Shift(direction, 1)
 *                     neighbors.append(source)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2700, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2700, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2700, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2);
      __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
    } else {
      __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2700, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(31, 2700, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_7)) {
        if (likely(PyList_CheckExact(__pyx_t_2))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 2700, __pyx_L1_error)
            #endif
            if (__pyx_t_6 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(31, 2700, __pyx_L1_error)
          #else
          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2700, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
            #if !CYTHON_ASSUME_SAFE_MACROS
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(31, 2700, __pyx_L1_error)
            #endif
            if (__pyx_t_6 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(31, 2700, __pyx_L1_error)
          #else
          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2700, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_7(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(31, 2700, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_direction, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/Comm.pyx":2701
 *                 neighbors = []
 *                 for direction in range(self.Get_dim()):
 *                     source, dest = self.Shift(direction, 1)             # <<<<<<<<<<<<<<
 *                     neighbors.append(source)
 *                     neighbors.append(dest)
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Shift); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = NULL;
      __pyx_t_5 = 0;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_5 = 1;
        }
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_direction, __pyx_int_1};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2701, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(31, 2701, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_8);
        #else
        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 2701, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2701, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2701, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
        index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(31, 2701, __pyx_L1_error)
        __pyx_t_10 = NULL;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L7_unpacking_done;
        __pyx_L6_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_10 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(31, 2701, __pyx_L1_error)
        __pyx_L7_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_source, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_XDECREF_SET(__pyx_v_dest, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "src/mpi4py/MPI.src/Comm.pyx":2702
 *                 for direction in range(self.Get_dim()):
 *                     source, dest = self.Shift(direction, 1)
 *                     neighbors.append(source)             # <<<<<<<<<<<<<<
 *                     neighbors.append(dest)
 *                 return (neighbors, neighbors)
 */
      __pyx_t_11 = __Pyx_PyObject_Append(__pyx_v_neighbors, __pyx_v_source); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(31, 2702, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2703
 *                     source, dest = self.Shift(direction, 1)
 *                     neighbors.append(source)
 *                     neighbors.append(dest)             # <<<<<<<<<<<<<<
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Graphcomm):
 */
      __pyx_t_11 = __Pyx_PyObject_Append(__pyx_v_neighbors, __pyx_v_dest); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(31, 2703, __pyx_L1_error)

      /* "src/mpi4py/MPI.src/Comm.pyx":2700
 *             if isinstance(self, Cartcomm):
 *                 neighbors = []
 *                 for direction in range(self.Get_dim()):             # <<<<<<<<<<<<<<
 *                     source, dest = self.Shift(direction, 1)
 *                     neighbors.append(source)
 */
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2704
 *                     neighbors.append(source)
 *                     neighbors.append(dest)
 *                 return (neighbors, neighbors)             # <<<<<<<<<<<<<<
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_neighbors)) __PYX_ERR(31, 2704, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_neighbors)) __PYX_ERR(31, 2704, __pyx_L1_error);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2698
 *             cdef object direction, source, dest, rank
 *             cdef object neighbors
 *             if isinstance(self, Cartcomm):             # <<<<<<<<<<<<<<
 *                 neighbors = []
 *                 for direction in range(self.Get_dim()):
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2705
 *                     neighbors.append(dest)
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Graphcomm):             # <<<<<<<<<<<<<<
 *                 rank = self.Get_rank()
 *                 neighbors = self.Get_neighbors(rank)
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Graphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2706
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *                 neighbors = self.Get_neighbors(rank)
 *                 return (neighbors, neighbors)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2706, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2706, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_rank = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2707
 *             if isinstance(self, Graphcomm):
 *                 rank = self.Get_rank()
 *                 neighbors = self.Get_neighbors(rank)             # <<<<<<<<<<<<<<
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Distgraphcomm):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_neighbors); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2707, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_rank};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2707, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_neighbors = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2708
 *                 rank = self.Get_rank()
 *                 neighbors = self.Get_neighbors(rank)
 *                 return (neighbors, neighbors)             # <<<<<<<<<<<<<<
 *             if isinstance(self, Distgraphcomm):
 *                 neighbors = self.Get_dist_neighbors()[:2]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2708, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_neighbors)) __PYX_ERR(31, 2708, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_neighbors);
    __Pyx_GIVEREF(__pyx_v_neighbors);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_neighbors)) __PYX_ERR(31, 2708, __pyx_L1_error);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2705
 *                     neighbors.append(dest)
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Graphcomm):             # <<<<<<<<<<<<<<
 *                 rank = self.Get_rank()
 *                 neighbors = self.Get_neighbors(rank)
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2709
 *                 neighbors = self.Get_neighbors(rank)
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Distgraphcomm):             # <<<<<<<<<<<<<<
 *                 neighbors = self.Get_dist_neighbors()[:2]
 *                 return neighbors
 */
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_self), __pyx_ptype_6mpi4py_3MPI_Distgraphcomm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":2710
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Distgraphcomm):
 *                 neighbors = self.Get_dist_neighbors()[:2]             # <<<<<<<<<<<<<<
 *                 return neighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dist_neighbors); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2710, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2710, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, 2, NULL, NULL, &__pyx_slice__171, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2710, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_neighbors = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2711
 *             if isinstance(self, Distgraphcomm):
 *                 neighbors = self.Get_dist_neighbors()[:2]
 *                 return neighbors             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_neighbors);
    __pyx_r = __pyx_v_neighbors;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Comm.pyx":2709
 *                 neighbors = self.Get_neighbors(rank)
 *                 return (neighbors, neighbors)
 *             if isinstance(self, Distgraphcomm):             # <<<<<<<<<<<<<<
 *                 neighbors = self.Get_dist_neighbors()[:2]
 *                 return neighbors
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2712
 *                 neighbors = self.Get_dist_neighbors()[:2]
 *                 return neighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 *     property inedges:
 */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__170, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __PYX_ERR(31, 2712, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2695
 *     property inoutedges:
 *         """Incoming and outgoing neighbors."""
 *         def __get__(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *             cdef object direction, source, dest, rank
 *             cdef object neighbors
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.inoutedges.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_direction);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_dest);
  __Pyx_XDECREF(__pyx_v_rank);
  __Pyx_XDECREF(__pyx_v_neighbors);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2716
 *     property inedges:
 *         """Incoming neighbors."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.inoutedges[0]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_7inedges_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_7inedges_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_7inedges___get__(((struct PyMPITopocommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_7inedges___get__(struct PyMPITopocommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2717
 *         """Incoming neighbors."""
 *         def __get__(self) -> list[int]:
 *             return self.inoutedges[0]             # <<<<<<<<<<<<<<
 * 
 *     property outedges:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_inoutedges); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2716
 *     property inedges:
 *         """Incoming neighbors."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.inoutedges[0]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.inedges.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2721
 *     property outedges:
 *         """Outgoing neighbors."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.inoutedges[1]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_8outedges_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_8outedges_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_8outedges___get__(((struct PyMPITopocommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_8outedges___get__(struct PyMPITopocommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2722
 *         """Outgoing neighbors."""
 *         def __get__(self) -> list[int]:
 *             return self.inoutedges[1]             # <<<<<<<<<<<<<<
 * 
 *     # Neighborhood Collectives
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_inoutedges); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2721
 *     property outedges:
 *         """Outgoing neighbors."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.inoutedges[1]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.outedges.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2727
 *     # ------------------------
 * 
 *     def Neighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_2Neighbor_allgather, "Neighbor_allgather(self, sendbuf: BufSpec, recvbuf: BufSpecB) -> None\n\n        Neighbor Gather to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather = {"Neighbor_allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_2Neighbor_allgather};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_allgather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2727, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2727, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_allgather", 1, 2, 2, 1); __PYX_ERR(31, 2727, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_allgather") < 0)) __PYX_ERR(31, 2727, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_allgather", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2727, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_2Neighbor_allgather(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_2Neighbor_allgather(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_allgather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2735
 *         Neighbor Gather to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2736
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2736, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2737
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2740
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_allgatherv(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_allgather_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2737, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2737
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_allgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2727
 *     # ------------------------
 * 
 *     def Neighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2742
 *             self.ob_mpi) )
 * 
 *     def Neighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_4Neighbor_allgatherv, "Neighbor_allgatherv(self, sendbuf: BufSpec, recvbuf: BufSpecV) -> None\n\n        Neighbor Gather to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv = {"Neighbor_allgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_4Neighbor_allgatherv};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_allgatherv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2742, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2742, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_allgatherv", 1, 2, 2, 1); __PYX_ERR(31, 2742, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_allgatherv") < 0)) __PYX_ERR(31, 2742, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_allgatherv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2742, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_4Neighbor_allgatherv(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_4Neighbor_allgatherv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_allgatherv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2750
 *         Neighbor Gather to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2751
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2751, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2752
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2755
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_alltoall(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_allgatherv_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2752, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2752
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2742
 *             self.ob_mpi) )
 * 
 *     def Neighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2757
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_6Neighbor_alltoall, "Neighbor_alltoall(self, sendbuf: BufSpecB, recvbuf: BufSpecB) -> None\n\n        Neighbor All to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall = {"Neighbor_alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_6Neighbor_alltoall};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_alltoall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2757, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2757, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_alltoall", 1, 2, 2, 1); __PYX_ERR(31, 2757, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_alltoall") < 0)) __PYX_ERR(31, 2757, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_alltoall", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2757, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_6Neighbor_alltoall(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_6Neighbor_alltoall(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_alltoall", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2765
 *         Neighbor All to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2766
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2766, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2767
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2770
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_alltoallv(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoall_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2767, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2767
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2757
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2772
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_8Neighbor_alltoallv, "Neighbor_alltoallv(self, sendbuf: BufSpecV, recvbuf: BufSpecV) -> None\n\n        Neighbor All to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv = {"Neighbor_alltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_8Neighbor_alltoallv};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_alltoallv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2772, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2772, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallv", 1, 2, 2, 1); __PYX_ERR(31, 2772, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_alltoallv") < 0)) __PYX_ERR(31, 2772, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2772, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_8Neighbor_alltoallv(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_8Neighbor_alltoallv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_alltoallv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2780
 *         Neighbor All to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2781
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2781, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2782
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2785
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_alltoallw(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoallv_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2782, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2782
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2772
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2787
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_10Neighbor_alltoallw, "Neighbor_alltoallw(self, sendbuf: BufSpecW, recvbuf: BufSpecW) -> None\n\n        Neighbor All to All General.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw = {"Neighbor_alltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_10Neighbor_alltoallw};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_alltoallw (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2787, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2787, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallw", 1, 2, 2, 1); __PYX_ERR(31, 2787, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_alltoallw") < 0)) __PYX_ERR(31, 2787, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallw", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2787, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_10Neighbor_alltoallw(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_10Neighbor_alltoallw(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_alltoallw", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2795
 *         Neighbor All to All General.
 *         """
 *         cdef _p_msg_ccow m = message_ccow()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_ccow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2796
 *         """
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_neighbor_alltoallw(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2796, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2797
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2800
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Nonblocking Neighborhood Collectives
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoallw_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stypes, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtypes, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2797, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2797
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2787
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2805
 *     # ------------------------------------
 * 
 *     def Ineighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_12Ineighbor_allgather, "Ineighbor_allgather(self, sendbuf: BufSpec, recvbuf: BufSpecB) -> Request\n\n        Nonblocking Neighbor Gather to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather = {"Ineighbor_allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_12Ineighbor_allgather};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ineighbor_allgather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2805, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2805, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ineighbor_allgather", 1, 2, 2, 1); __PYX_ERR(31, 2805, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ineighbor_allgather") < 0)) __PYX_ERR(31, 2805, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ineighbor_allgather", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2805, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_12Ineighbor_allgather(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_12Ineighbor_allgather(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ineighbor_allgather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2813
 *         Nonblocking Neighbor Gather to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2814
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_allgather_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2814, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2815
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ineighbor_allgather_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2816
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_allgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2819
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ineighbor_allgather_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2816, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2816
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_allgather_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2820
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2821
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ineighbor_allgatherv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2805
 *     # ------------------------------------
 * 
 *     def Ineighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2823
 *         return request
 * 
 *     def Ineighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_14Ineighbor_allgatherv, "Ineighbor_allgatherv(self, sendbuf: BufSpec, recvbuf: BufSpecV) -> Request\n\n        Nonblocking Neighbor Gather to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv = {"Ineighbor_allgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_14Ineighbor_allgatherv};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ineighbor_allgatherv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2823, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2823, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ineighbor_allgatherv", 1, 2, 2, 1); __PYX_ERR(31, 2823, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ineighbor_allgatherv") < 0)) __PYX_ERR(31, 2823, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ineighbor_allgatherv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2823, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_14Ineighbor_allgatherv(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_14Ineighbor_allgatherv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ineighbor_allgatherv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2831
 *         Nonblocking Neighbor Gather to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2832
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_allgatherv_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2832, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2833
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ineighbor_allgatherv_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2834
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_allgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2837
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ineighbor_allgatherv_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2834, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2834
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_allgatherv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2838
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2839
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ineighbor_alltoall(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2823
 *         return request
 * 
 *     def Ineighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_allgatherv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2841
 *         return request
 * 
 *     def Ineighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_16Ineighbor_alltoall, "Ineighbor_alltoall(self, sendbuf: BufSpecB, recvbuf: BufSpecB) -> Request\n\n        Nonblocking Neighbor All to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall = {"Ineighbor_alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_16Ineighbor_alltoall};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ineighbor_alltoall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2841, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2841, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoall", 1, 2, 2, 1); __PYX_ERR(31, 2841, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ineighbor_alltoall") < 0)) __PYX_ERR(31, 2841, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoall", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2841, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_16Ineighbor_alltoall(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_16Ineighbor_alltoall(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ineighbor_alltoall", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2849
 *         Nonblocking Neighbor All to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2850
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoall_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2850, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2851
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ineighbor_alltoall_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2852
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2855
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ineighbor_alltoall_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2852, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2852
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoall_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2856
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2857
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ineighbor_alltoallv(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2841
 *         return request
 * 
 *     def Ineighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2859
 *         return request
 * 
 *     def Ineighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_18Ineighbor_alltoallv, "Ineighbor_alltoallv(self, sendbuf: BufSpecV, recvbuf: BufSpecV) -> Request\n\n        Nonblocking Neighbor All to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv = {"Ineighbor_alltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_18Ineighbor_alltoallv};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ineighbor_alltoallv (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2859, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2859, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoallv", 1, 2, 2, 1); __PYX_ERR(31, 2859, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ineighbor_alltoallv") < 0)) __PYX_ERR(31, 2859, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoallv", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2859, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_18Ineighbor_alltoallv(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_18Ineighbor_alltoallv(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ineighbor_alltoallv", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2867
 *         Nonblocking Neighbor All to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2868
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallv_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2868, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2869
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallv_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2870
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2873
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ineighbor_alltoallv_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2870, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2870
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallv_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2874
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2875
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Ineighbor_alltoallw(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2859
 *         return request
 * 
 *     def Ineighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_alltoallv", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2877
 *         return request
 * 
 *     def Ineighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_20Ineighbor_alltoallw, "Ineighbor_alltoallw(self, sendbuf: BufSpecW, recvbuf: BufSpecW) -> Request\n\n        Nonblocking Neighbor All to All General.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw = {"Ineighbor_alltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_20Ineighbor_alltoallw};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Ineighbor_alltoallw (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2877, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2877, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoallw", 1, 2, 2, 1); __PYX_ERR(31, 2877, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Ineighbor_alltoallw") < 0)) __PYX_ERR(31, 2877, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Ineighbor_alltoallw", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 2877, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_20Ineighbor_alltoallw(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_20Ineighbor_alltoallw(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Ineighbor_alltoallw", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2885
 *         Nonblocking Neighbor All to All General.
 *         """
 *         cdef _p_msg_ccow m = message_ccow()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_ccow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2886
 *         """
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallw_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_neighbor_alltoallw(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2886, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2887
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallw_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2888
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2891
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Ineighbor_alltoallw_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stypes, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtypes, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2888, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2888
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Ineighbor_alltoallw_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2892
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2893
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Persistent Neighborhood Collectives
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2877
 *         return request
 * 
 *     def Ineighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Ineighbor_alltoallw", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2898
 *     # -----------------------------------
 * 
 *     def Neighbor_allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_22Neighbor_allgather_init, "Neighbor_allgather_init(self, sendbuf: BufSpec, recvbuf: BufSpecB, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Neighbor Gather to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init = {"Neighbor_allgather_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_22Neighbor_allgather_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_allgather_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__172);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2898, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2898, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_allgather_init", 0, 2, 3, 1); __PYX_ERR(31, 2898, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2898, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_allgather_init") < 0)) __PYX_ERR(31, 2898, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_allgather_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2898, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgather_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2902, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_22Neighbor_allgather_init(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_22Neighbor_allgather_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_allgather_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2907
 *         Persistent Neighbor Gather to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2908
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_allgather_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2908, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2909
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_allgather_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2910
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_allgather_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2913
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_allgather_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2910, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2910
 *         m.for_neighbor_allgather(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_allgather_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2914
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2915
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_allgatherv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2898
 *     # -----------------------------------
 * 
 *     def Neighbor_allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgather_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2917
 *         return request
 * 
 *     def Neighbor_allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_24Neighbor_allgatherv_init, "Neighbor_allgatherv_init(self, sendbuf: BufSpec, recvbuf: BufSpecV, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Neighbor Gather to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init = {"Neighbor_allgatherv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_24Neighbor_allgatherv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_allgatherv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__173);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2917, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2917, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_allgatherv_init", 0, 2, 3, 1); __PYX_ERR(31, 2917, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2917, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_allgatherv_init") < 0)) __PYX_ERR(31, 2917, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_allgatherv_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2917, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgatherv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2921, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_24Neighbor_allgatherv_init(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_24Neighbor_allgatherv_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_allgatherv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2926
 *         Persistent Neighbor Gather to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2927
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2927, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2928
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2929
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2932
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_allgatherv_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2929, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2929
 *         m.for_neighbor_allgather(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_allgatherv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2933
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2934
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_alltoall_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2917
 *         return request
 * 
 *     def Neighbor_allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_allgatherv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2936
 *         return request
 * 
 *     def Neighbor_alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_26Neighbor_alltoall_init, "Neighbor_alltoall_init(self, sendbuf: BufSpecB, recvbuf: BufSpecB, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Neighbor All to All.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init = {"Neighbor_alltoall_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_26Neighbor_alltoall_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_alltoall_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__174);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2936, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2936, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_alltoall_init", 0, 2, 3, 1); __PYX_ERR(31, 2936, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2936, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_alltoall_init") < 0)) __PYX_ERR(31, 2936, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_alltoall_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2936, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoall_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2940, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_26Neighbor_alltoall_init(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_26Neighbor_alltoall_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_alltoall_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2945
 *         Persistent Neighbor All to All.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2946
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(__pyx_v_m, 0, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2946, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2947
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_init_c(
 *             m.sbuf, m.scount, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2948
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2951
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoall_init_c(__pyx_v_m->sbuf, __pyx_v_m->scount, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcount, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2948, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2948
 *         m.for_neighbor_alltoall(0, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoall_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scount, m.stype,
 *             m.rbuf, m.rcount, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2952
 *             m.rbuf, m.rcount, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2953
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_alltoallv_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2936
 *         return request
 * 
 *     def Neighbor_alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoall_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2955
 *         return request
 * 
 *     def Neighbor_alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_28Neighbor_alltoallv_init, "Neighbor_alltoallv_init(self, sendbuf: BufSpecV, recvbuf: BufSpecV, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Neighbor All to All Vector.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init = {"Neighbor_alltoallv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_28Neighbor_alltoallv_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_alltoallv_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__175);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2955, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2955, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallv_init", 0, 2, 3, 1); __PYX_ERR(31, 2955, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2955, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_alltoallv_init") < 0)) __PYX_ERR(31, 2955, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallv_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2955, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2959, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_28Neighbor_alltoallv_init(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_28Neighbor_alltoallv_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_alltoallv_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2964
 *         Persistent Neighbor All to All Vector.
 *         """
 *         cdef _p_msg_cco m = message_cco()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_cco()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2965
 *         """
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall(__pyx_v_m, 1, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2965, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2966
 *         cdef _p_msg_cco m = message_cco()
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_init_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2967
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2970
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoallv_init_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stype, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtype, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2967, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2967
 *         m.for_neighbor_alltoall(1, sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallv_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stype,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2971
 *             m.rbuf, m.rcounts, m.rdispls, m.rtype,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2972
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Neighbor_alltoallw_init(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2955
 *         return request
 * 
 *     def Neighbor_alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallv_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2974
 *         return request
 * 
 *     def Neighbor_alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_30Neighbor_alltoallw_init, "Neighbor_alltoallw_init(self, sendbuf: BufSpecW, recvbuf: BufSpecW, info: Info = INFO_NULL) -> Prequest\n\n        Persistent Neighbor All to All General.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init = {"Neighbor_alltoallw_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_30Neighbor_alltoallw_init};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendbuf = 0;
  PyObject *__pyx_v_recvbuf = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Neighbor_alltoallw_init (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendbuf,&__pyx_n_s_recvbuf,&__pyx_n_s_info,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__176);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2974, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_recvbuf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2974, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallw_init", 0, 2, 3, 1); __PYX_ERR(31, 2974, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2974, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Neighbor_alltoallw_init") < 0)) __PYX_ERR(31, 2974, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sendbuf = values[0];
    __pyx_v_recvbuf = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Neighbor_alltoallw_init", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 2974, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallw_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 2978, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_30Neighbor_alltoallw_init(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_30Neighbor_alltoallw_init(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendbuf, PyObject *__pyx_v_recvbuf, struct PyMPIInfoObject *__pyx_v_info) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *__pyx_v_m = 0;
  struct PyMPIPrequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Neighbor_alltoallw_init", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2983
 *         Persistent Neighbor All to All General.
 *         """
 *         cdef _p_msg_ccow m = message_ccow()             # <<<<<<<<<<<<<<
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_ccow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2984
 *         """
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)             # <<<<<<<<<<<<<<
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_init_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_neighbor_alltoallw(__pyx_v_m, __pyx_v_sendbuf, __pyx_v_recvbuf, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2984, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2985
 *         cdef _p_msg_ccow m = message_ccow()
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_init_c(
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Prequest); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIPrequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2986
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":2989
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Neighbor_alltoallw_init_c(__pyx_v_m->sbuf, __pyx_v_m->scounts, __pyx_v_m->sdispls, __pyx_v_m->stypes, __pyx_v_m->rbuf, __pyx_v_m->rcounts, __pyx_v_m->rdispls, __pyx_v_m->rtypes, __pyx_v_self->__pyx_base.__pyx_base.ob_mpi, __pyx_v_info->ob_mpi, (&__pyx_v_request->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 2986, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":2986
 *         m.for_neighbor_alltoallw(sendbuf, recvbuf, self.ob_mpi)
 *         cdef Prequest request = <Prequest>New(Prequest)
 *         with nogil: CHKERR( MPI_Neighbor_alltoallw_init_c(             # <<<<<<<<<<<<<<
 *             m.sbuf, m.scounts, m.sdispls, m.stypes,
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":2990
 *             m.rbuf, m.rcounts, m.rdispls, m.rtypes,
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->__pyx_base.ob_buf);
  __Pyx_DECREF(__pyx_v_request->__pyx_base.ob_buf);
  __pyx_v_request->__pyx_base.ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/Comm.pyx":2991
 *             self.ob_mpi, info.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Python Communication
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2974
 *         return request
 * 
 *     def Neighbor_alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.Neighbor_alltoallw_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":2995
 *     # Python Communication
 * 
 *     def neighbor_allgather(self, sendobj: Any) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_33neighbor_allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_32neighbor_allgather, "neighbor_allgather(self, sendobj: Any) -> list[Any]\nNeighbor Gather to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_33neighbor_allgather = {"neighbor_allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_33neighbor_allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_32neighbor_allgather};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_33neighbor_allgather(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("neighbor_allgather (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 2995, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "neighbor_allgather") < 0)) __PYX_ERR(31, 2995, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("neighbor_allgather", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 2995, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.neighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_32neighbor_allgather(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendobj);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_32neighbor_allgather(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendobj) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("neighbor_allgather", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":2997
 *     def neighbor_allgather(self, sendobj: Any) -> list[Any]:
 *         """Neighbor Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_neighbor_allgather(sendobj, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->__pyx_base.__pyx_base.ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":2998
 *         """Neighbor Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_neighbor_allgather(sendobj, comm)             # <<<<<<<<<<<<<<
 * 
 *     def neighbor_alltoall(self, sendobj: list[Any]) -> list[Any]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_neighbor_allgather(__pyx_v_sendobj, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 2998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2995
 *     # Python Communication
 * 
 *     def neighbor_allgather(self, sendobj: Any) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.neighbor_allgather", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3000
 *         return PyMPI_neighbor_allgather(sendobj, comm)
 * 
 *     def neighbor_alltoall(self, sendobj: list[Any]) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor All to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Topocomm_34neighbor_alltoall, "neighbor_alltoall(self, sendobj: list[Any]) -> list[Any]\nNeighbor All to All.");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall = {"neighbor_alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_34neighbor_alltoall};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sendobj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("neighbor_alltoall (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sendobj,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sendobj)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3000, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "neighbor_alltoall") < 0)) __PYX_ERR(31, 3000, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_sendobj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("neighbor_alltoall", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3000, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.neighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Topocomm_34neighbor_alltoall(((struct PyMPITopocommObject *)__pyx_v_self), __pyx_v_sendobj);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Topocomm_34neighbor_alltoall(struct PyMPITopocommObject *__pyx_v_self, PyObject *__pyx_v_sendobj) {
  MPI_Comm __pyx_v_comm;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Comm __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("neighbor_alltoall", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3002
 *     def neighbor_alltoall(self, sendobj: list[Any]) -> list[Any]:
 *         """Neighbor All to All."""
 *         cdef MPI_Comm comm = self.ob_mpi             # <<<<<<<<<<<<<<
 *         return PyMPI_neighbor_alltoall(sendobj, comm)
 * 
 */
  __pyx_t_1 = __pyx_v_self->__pyx_base.__pyx_base.ob_mpi;
  __pyx_v_comm = __pyx_t_1;

  /* "src/mpi4py/MPI.src/Comm.pyx":3003
 *         """Neighbor All to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 *         return PyMPI_neighbor_alltoall(sendobj, comm)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_PyMPI_neighbor_alltoall(__pyx_v_sendobj, __pyx_v_comm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3003, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3000
 *         return PyMPI_neighbor_allgather(sendobj, comm)
 * 
 *     def neighbor_alltoall(self, sendobj: list[Any]) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor All to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Topocomm.neighbor_alltoall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3011
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_8Cartcomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_8Cartcomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPICommObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3011, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(31, 3011, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 3011, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(31, 3011, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm___cinit__(((struct PyMPICartcommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_8Cartcomm___cinit__(struct PyMPICartcommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_v_topo;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3012
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 */
  ((void)__pyx_v_comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3013
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3014
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_CART:
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":3015
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *         if topo != MPI_CART:
 *             raise TypeError("expecting a Cartesian communicator")
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 3015, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3016
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_CART:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a Cartesian communicator")
 * 
 */
  __pyx_t_1 = (__pyx_v_topo != MPI_CART);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/Comm.pyx":3017
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_CART:
 *             raise TypeError("expecting a Cartesian communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Inquiry Functions
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__177, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3017, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(31, 3017, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3016
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_CART:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a Cartesian communicator")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3011
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3022
 *     # ---------------------------
 * 
 *     def Get_dim(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of dimensions.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_3Get_dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_2Get_dim, "Get_dim(self) -> int\n\n        Return number of dimensions.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_3Get_dim = {"Get_dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_3Get_dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_2Get_dim};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_3Get_dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_dim (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dim", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_2Get_dim(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_2Get_dim(struct PyMPICartcommObject *__pyx_v_self) {
  int __pyx_v_dim;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_dim", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3026
 *         Return number of dimensions.
 *         """
 *         cdef int dim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )
 *         return dim
 */
  __pyx_v_dim = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3027
 *         """
 *         cdef int dim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )             # <<<<<<<<<<<<<<
 *         return dim
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_dim))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3027, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3028
 *         cdef int dim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &dim) )
 *         return dim             # <<<<<<<<<<<<<<
 * 
 *     property dim:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3022
 *     # ---------------------------
 * 
 *     def Get_dim(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of dimensions.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3032
 *     property dim:
 *         """Number of dimensions."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dim()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_3dim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_3dim_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_3dim___get__(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_3dim___get__(struct PyMPICartcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3033
 *         """Number of dimensions."""
 *         def __get__(self) -> int:
 *             return self.Get_dim()             # <<<<<<<<<<<<<<
 * 
 *     property ndim:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3033, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3032
 *     property dim:
 *         """Number of dimensions."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dim()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.dim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3037
 *     property ndim:
 *         """Number of dimensions."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dim()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_4ndim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_4ndim_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_4ndim___get__(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4ndim___get__(struct PyMPICartcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3038
 *         """Number of dimensions."""
 *         def __get__(self) -> int:
 *             return self.Get_dim()             # <<<<<<<<<<<<<<
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int], list[int]]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3037
 *     property ndim:
 *         """Number of dimensions."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dim()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.ndim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3040
 *             return self.Get_dim()
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the cartesian topology.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_5Get_topo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_4Get_topo, "Get_topo(self) -> tuple[list[int], list[int], list[int]]\n\n        Return information on the cartesian topology.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_5Get_topo = {"Get_topo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_5Get_topo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_4Get_topo};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_5Get_topo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_topo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_topo", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_topo", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_4Get_topo(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4Get_topo(struct PyMPICartcommObject *__pyx_v_self) {
  int __pyx_v_ndim;
  int *__pyx_v_idims;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  int *__pyx_v_iperiods;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  int *__pyx_v_icoords;
  CYTHON_UNUSED PyObject *__pyx_v_unused3 = 0;
  PyObject *__pyx_v_dims = 0;
  PyObject *__pyx_v_periods = 0;
  PyObject *__pyx_v_coords = 0;
  int __pyx_9genexpr12__pyx_v_i;
  int __pyx_9genexpr13__pyx_v_i;
  int __pyx_9genexpr14__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_topo", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3044
 *         Return information on the cartesian topology.
 *         """
 *         cdef int ndim = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *idims = NULL
 */
  __pyx_v_ndim = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3045
 *         """
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         cdef int *idims = NULL
 *         cdef unused1 = newarray(ndim, &idims)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3045, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3046
 *         cdef int ndim = 0
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *idims = NULL             # <<<<<<<<<<<<<<
 *         cdef unused1 = newarray(ndim, &idims)
 *         cdef int *iperiods = NULL
 */
  __pyx_v_idims = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3047
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef int *idims = NULL
 *         cdef unused1 = newarray(ndim, &idims)             # <<<<<<<<<<<<<<
 *         cdef int *iperiods = NULL
 *         cdef unused2 = newarray(ndim, &iperiods)
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_ndim, (&__pyx_v_idims)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3048
 *         cdef int *idims = NULL
 *         cdef unused1 = newarray(ndim, &idims)
 *         cdef int *iperiods = NULL             # <<<<<<<<<<<<<<
 *         cdef unused2 = newarray(ndim, &iperiods)
 *         cdef int *icoords = NULL
 */
  __pyx_v_iperiods = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3049
 *         cdef unused1 = newarray(ndim, &idims)
 *         cdef int *iperiods = NULL
 *         cdef unused2 = newarray(ndim, &iperiods)             # <<<<<<<<<<<<<<
 *         cdef int *icoords = NULL
 *         cdef unused3 = newarray(ndim, &icoords)
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_ndim, (&__pyx_v_iperiods)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3050
 *         cdef int *iperiods = NULL
 *         cdef unused2 = newarray(ndim, &iperiods)
 *         cdef int *icoords = NULL             # <<<<<<<<<<<<<<
 *         cdef unused3 = newarray(ndim, &icoords)
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 */
  __pyx_v_icoords = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3051
 *         cdef unused2 = newarray(ndim, &iperiods)
 *         cdef int *icoords = NULL
 *         cdef unused3 = newarray(ndim, &icoords)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef object dims    = [idims[i]    for i in range(ndim)]
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused3 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3052
 *         cdef int *icoords = NULL
 *         cdef unused3 = newarray(ndim, &icoords)
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )             # <<<<<<<<<<<<<<
 *         cdef object dims    = [idims[i]    for i in range(ndim)]
 *         cdef object periods = [iperiods[i] for i in range(ndim)]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_ndim, __pyx_v_idims, __pyx_v_iperiods, __pyx_v_icoords)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3052, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3053
 *         cdef unused3 = newarray(ndim, &icoords)
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef object dims    = [idims[i]    for i in range(ndim)]             # <<<<<<<<<<<<<<
 *         cdef object periods = [iperiods[i] for i in range(ndim)]
 *         cdef object coords  = [icoords[i]  for i in range(ndim)]
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3053, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_ndim;
    __pyx_t_3 = __pyx_t_1;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr12__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_idims[__pyx_9genexpr12__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3053, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 3053, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_dims = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3054
 *         CHKERR( MPI_Cart_get(self.ob_mpi, ndim, idims, iperiods, icoords) )
 *         cdef object dims    = [idims[i]    for i in range(ndim)]
 *         cdef object periods = [iperiods[i] for i in range(ndim)]             # <<<<<<<<<<<<<<
 *         cdef object coords  = [icoords[i]  for i in range(ndim)]
 *         return (dims, periods, coords)
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_ndim;
    __pyx_t_3 = __pyx_t_1;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr13__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_iperiods[__pyx_9genexpr13__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3054, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 3054, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_periods = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3055
 *         cdef object dims    = [idims[i]    for i in range(ndim)]
 *         cdef object periods = [iperiods[i] for i in range(ndim)]
 *         cdef object coords  = [icoords[i]  for i in range(ndim)]             # <<<<<<<<<<<<<<
 *         return (dims, periods, coords)
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3055, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_ndim;
    __pyx_t_3 = __pyx_t_1;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr14__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_icoords[__pyx_9genexpr14__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3055, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 3055, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_coords = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3056
 *         cdef object periods = [iperiods[i] for i in range(ndim)]
 *         cdef object coords  = [icoords[i]  for i in range(ndim)]
 *         return (dims, periods, coords)             # <<<<<<<<<<<<<<
 * 
 *     property topo:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_dims);
  __Pyx_GIVEREF(__pyx_v_dims);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_dims)) __PYX_ERR(31, 3056, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_periods);
  __Pyx_GIVEREF(__pyx_v_periods);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_periods)) __PYX_ERR(31, 3056, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_coords);
  __Pyx_GIVEREF(__pyx_v_coords);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_coords)) __PYX_ERR(31, 3056, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3040
 *             return self.Get_dim()
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the cartesian topology.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_topo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_unused3);
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XDECREF(__pyx_v_periods);
  __Pyx_XDECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3060
 *     property topo:
 *         """Topology information."""
 *         def __get__(self) -> tuple[list[int], list[int], list[int]]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_4topo_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_4topo_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_4topo___get__(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4topo___get__(struct PyMPICartcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3061
 *         """Topology information."""
 *         def __get__(self) -> tuple[list[int], list[int], list[int]]:
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property dims:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3061, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3060
 *     property topo:
 *         """Topology information."""
 *         def __get__(self) -> tuple[list[int], list[int], list[int]]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.topo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3065
 *     property dims:
 *         """Dimensions."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[0]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_4dims_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_4dims_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_4dims___get__(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_4dims___get__(struct PyMPICartcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3066
 *         """Dimensions."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property periods:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3066, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3065
 *     property dims:
 *         """Dimensions."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[0]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.dims.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3070
 *     property periods:
 *         """Periodicity."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[1]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_7periods_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_7periods_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_7periods___get__(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_7periods___get__(struct PyMPICartcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3071
 *         """Periodicity."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     property coords:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3071, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3070
 *     property periods:
 *         """Periodicity."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[1]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.periods.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3075
 *     property coords:
 *         """Coordinates."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[2]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_6coords_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_6coords_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_6coords___get__(((struct PyMPICartcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6coords___get__(struct PyMPICartcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3076
 *         """Coordinates."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[2]             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Translator Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3076, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3075
 *     property coords:
 *         """Coordinates."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[2]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.coords.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3081
 *     # ------------------------------
 * 
 *     def Get_cart_rank(self, coords: Sequence[int]) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate logical coordinates to ranks.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_6Get_cart_rank, "Get_cart_rank(self, coords: Sequence[int]) -> int\n\n        Translate logical coordinates to ranks.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank = {"Get_cart_rank", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_6Get_cart_rank};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_coords = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_cart_rank (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coords,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_coords)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3081, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_cart_rank") < 0)) __PYX_ERR(31, 3081, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_coords = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_cart_rank", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3081, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_cart_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_6Get_cart_rank(((struct PyMPICartcommObject *)__pyx_v_self), __pyx_v_coords);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_6Get_cart_rank(struct PyMPICartcommObject *__pyx_v_self, PyObject *__pyx_v_coords) {
  int __pyx_v_ndim;
  int *__pyx_v_icoords;
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_cart_rank", 0);
  __Pyx_INCREF(__pyx_v_coords);

  /* "src/mpi4py/MPI.src/Comm.pyx":3085
 *         Translate logical coordinates to ranks.
 *         """
 *         cdef int ndim = 0, *icoords = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         coords = chkarray(coords, ndim, &icoords)
 */
  __pyx_v_ndim = 0;
  __pyx_v_icoords = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3086
 *         """
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         coords = chkarray(coords, ndim, &icoords)
 *         cdef int rank = MPI_PROC_NULL
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3086, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3087
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         coords = chkarray(coords, ndim, &icoords)             # <<<<<<<<<<<<<<
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 */
  __pyx_t_2 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_coords, __pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_coords, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3088
 *         CHKERR( MPI_Cartdim_get( self.ob_mpi, &ndim) )
 *         coords = chkarray(coords, ndim, &icoords)
 *         cdef int rank = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 *         return rank
 */
  __pyx_v_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3089
 *         coords = chkarray(coords, ndim, &icoords)
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )             # <<<<<<<<<<<<<<
 *         return rank
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_rank(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_icoords, (&__pyx_v_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3089, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3090
 *         cdef int rank = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_rank(self.ob_mpi, icoords, &rank) )
 *         return rank             # <<<<<<<<<<<<<<
 * 
 *     def Get_coords(self, int rank: int) -> list[int]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3090, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3081
 *     # ------------------------------
 * 
 *     def Get_cart_rank(self, coords: Sequence[int]) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate logical coordinates to ranks.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_cart_rank", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3092
 *         return rank
 * 
 *     def Get_coords(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Translate ranks to logical coordinates.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_9Get_coords(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_8Get_coords, "Get_coords(self, rank: int) -> list[int]\n\n        Translate ranks to logical coordinates.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_9Get_coords = {"Get_coords", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_9Get_coords, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_8Get_coords};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_9Get_coords(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_coords (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3092, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_coords") < 0)) __PYX_ERR(31, 3092, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3092, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_coords", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3092, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_8Get_coords(((struct PyMPICartcommObject *)__pyx_v_self), __pyx_v_rank);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_8Get_coords(struct PyMPICartcommObject *__pyx_v_self, int __pyx_v_rank) {
  int __pyx_v_ndim;
  int *__pyx_v_icoords;
  CYTHON_UNUSED PyObject *__pyx_v_unused = 0;
  PyObject *__pyx_v_coords = 0;
  int __pyx_9genexpr15__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_coords", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3096
 *         Translate ranks to logical coordinates.
 *         """
 *         cdef int ndim = 0, *icoords = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef unused = newarray(ndim, &icoords)
 */
  __pyx_v_ndim = 0;
  __pyx_v_icoords = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3097
 *         """
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         cdef unused = newarray(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3097, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3098
 *         cdef int ndim = 0, *icoords = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef unused = newarray(ndim, &icoords)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         cdef object coords = [icoords[i] for i in range(ndim)]
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_ndim, (&__pyx_v_icoords)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3099
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         cdef unused = newarray(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )             # <<<<<<<<<<<<<<
 *         cdef object coords = [icoords[i] for i in range(ndim)]
 *         return coords
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_coords(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, __pyx_v_ndim, __pyx_v_icoords)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3099, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3100
 *         cdef unused = newarray(ndim, &icoords)
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         cdef object coords = [icoords[i] for i in range(ndim)]             # <<<<<<<<<<<<<<
 *         return coords
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_ndim;
    __pyx_t_3 = __pyx_t_1;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr15__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_icoords[__pyx_9genexpr15__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 3100, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_coords = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3101
 *         CHKERR( MPI_Cart_coords(self.ob_mpi, rank, ndim, icoords) )
 *         cdef object coords = [icoords[i] for i in range(ndim)]
 *         return coords             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Shift Function
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_coords);
  __pyx_r = __pyx_v_coords;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3092
 *         return rank
 * 
 *     def Get_coords(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Translate ranks to logical coordinates.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Get_coords", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XDECREF(__pyx_v_coords);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3106
 *     # ------------------------
 * 
 *     def Shift(self, int direction: int, int disp: int) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return a process ranks for data shifting with `Sendrecv`.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_11Shift(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_10Shift, "Shift(self, direction: int, disp: int) -> tuple[int, int]\n\n        Return a process ranks for data shifting with `Sendrecv`.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_11Shift = {"Shift", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_11Shift, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_10Shift};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_11Shift(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_direction;
  int __pyx_v_disp;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Shift (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_direction,&__pyx_n_s_disp,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_direction)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_disp)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3106, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Shift", 1, 2, 2, 1); __PYX_ERR(31, 3106, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Shift") < 0)) __PYX_ERR(31, 3106, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_direction = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3106, __pyx_L3_error)
    __pyx_v_disp = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_disp == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3106, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Shift", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 3106, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Shift", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_10Shift(((struct PyMPICartcommObject *)__pyx_v_self), __pyx_v_direction, __pyx_v_disp);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_10Shift(struct PyMPICartcommObject *__pyx_v_self, int __pyx_v_direction, int __pyx_v_disp) {
  int __pyx_v_source;
  int __pyx_v_dest;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Shift", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3110
 *         Return a process ranks for data shifting with `Sendrecv`.
 *         """
 *         cdef int source = MPI_PROC_NULL, dest = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cart_shift(self.ob_mpi, direction, disp, &source, &dest) )
 *         return (source, dest)
 */
  __pyx_v_source = MPI_PROC_NULL;
  __pyx_v_dest = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3111
 *         """
 *         cdef int source = MPI_PROC_NULL, dest = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_shift(self.ob_mpi, direction, disp, &source, &dest) )             # <<<<<<<<<<<<<<
 *         return (source, dest)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_shift(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_direction, __pyx_v_disp, (&__pyx_v_source), (&__pyx_v_dest))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3111, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3112
 *         cdef int source = MPI_PROC_NULL, dest = MPI_PROC_NULL
 *         CHKERR( MPI_Cart_shift(self.ob_mpi, direction, disp, &source, &dest) )
 *         return (source, dest)             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Partition Function
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_dest); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(31, 3112, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(31, 3112, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3106
 *     # ------------------------
 * 
 *     def Shift(self, int direction: int, int disp: int) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return a process ranks for data shifting with `Sendrecv`.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Shift", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3117
 *     # ----------------------------
 * 
 *     def Sub(self, remain_dims: Sequence[bool]) -> Cartcomm:             # <<<<<<<<<<<<<<
 *         """
 *         Return a lower-dimensional Cartesian topology.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_13Sub(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_8Cartcomm_12Sub, "Sub(self, remain_dims: Sequence[bool]) -> Cartcomm\n\n        Return a lower-dimensional Cartesian topology.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_8Cartcomm_13Sub = {"Sub", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_13Sub, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_12Sub};
static PyObject *__pyx_pw_6mpi4py_3MPI_8Cartcomm_13Sub(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_remain_dims = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Sub (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_remain_dims,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_remain_dims)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3117, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Sub") < 0)) __PYX_ERR(31, 3117, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_remain_dims = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Sub", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3117, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Sub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_8Cartcomm_12Sub(((struct PyMPICartcommObject *)__pyx_v_self), __pyx_v_remain_dims);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_8Cartcomm_12Sub(struct PyMPICartcommObject *__pyx_v_self, PyObject *__pyx_v_remain_dims) {
  int __pyx_v_ndim;
  int *__pyx_v_iremdims;
  struct PyMPICartcommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Sub", 0);
  __Pyx_INCREF(__pyx_v_remain_dims);

  /* "src/mpi4py/MPI.src/Comm.pyx":3121
 *         Return a lower-dimensional Cartesian topology.
 *         """
 *         cdef int ndim = 0, *iremdims = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         remain_dims = chkarray(remain_dims, ndim, &iremdims)
 */
  __pyx_v_ndim = 0;
  __pyx_v_iremdims = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3122
 *         """
 *         cdef int ndim = 0, *iremdims = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )             # <<<<<<<<<<<<<<
 *         remain_dims = chkarray(remain_dims, ndim, &iremdims)
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cartdim_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_ndim))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3122, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3123
 *         cdef int ndim = 0, *iremdims = NULL
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         remain_dims = chkarray(remain_dims, ndim, &iremdims)             # <<<<<<<<<<<<<<
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 */
  __pyx_t_2 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_remain_dims, __pyx_v_ndim, (&__pyx_v_iremdims)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF_SET(__pyx_v_remain_dims, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3124
 *         CHKERR( MPI_Cartdim_get(self.ob_mpi, &ndim) )
 *         remain_dims = chkarray(remain_dims, ndim, &iremdims)
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Cartcomm); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_comm = ((struct PyMPICartcommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3125
 *         remain_dims = chkarray(remain_dims, ndim, &iremdims)
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Cart_sub(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_iremdims, (&__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3125, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3126
 *         cdef Cartcomm comm = <Cartcomm>New(Cartcomm)
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.__pyx_base.__pyx_base.ob_mpi); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3126, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3127
 *         with nogil: CHKERR( MPI_Cart_sub(self.ob_mpi, iremdims, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3117
 *     # ----------------------------
 * 
 *     def Sub(self, remain_dims: Sequence[bool]) -> Cartcomm:             # <<<<<<<<<<<<<<
 *         """
 *         Return a lower-dimensional Cartesian topology.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Cartcomm.Sub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_remain_dims);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3132
 * # Cartesian Convenience Function
 * 
 * def Compute_dims(int nnodes: int, dims: int | Sequence[int]) -> list[int]:             # <<<<<<<<<<<<<<
 *     """
 *     Return a balanced distribution of processes per coordinate direction.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_33Compute_dims(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_32Compute_dims, "Compute_dims(nnodes: int, dims: int | Sequence[int]) -> list[int]\n\n    Return a balanced distribution of processes per coordinate direction.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_33Compute_dims = {"Compute_dims", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_33Compute_dims, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_32Compute_dims};
static PyObject *__pyx_pw_6mpi4py_3MPI_33Compute_dims(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_nnodes;
  PyObject *__pyx_v_dims = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Compute_dims (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nnodes,&__pyx_n_s_dims,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nnodes)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3132, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_dims)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3132, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Compute_dims", 1, 2, 2, 1); __PYX_ERR(31, 3132, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Compute_dims") < 0)) __PYX_ERR(31, 3132, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_nnodes = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_nnodes == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3132, __pyx_L3_error)
    __pyx_v_dims = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Compute_dims", 1, 2, 2, __pyx_nargs); __PYX_ERR(31, 3132, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Compute_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_32Compute_dims(__pyx_self, __pyx_v_nnodes, __pyx_v_dims);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_32Compute_dims(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_nnodes, PyObject *__pyx_v_dims) {
  int __pyx_v_ndims;
  int *__pyx_v_idims;
  CYTHON_UNUSED PyObject *__pyx_v_unused = 0;
  int __pyx_9genexpr16__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Compute_dims", 0);
  __Pyx_INCREF(__pyx_v_dims);

  /* "src/mpi4py/MPI.src/Comm.pyx":3136
 *     Return a balanced distribution of processes per coordinate direction.
 *     """
 *     cdef int ndims = 0, *idims = NULL             # <<<<<<<<<<<<<<
 *     if is_integral(dims):
 *         ndims = <int> PyNumber_Index(dims)
 */
  __pyx_v_ndims = 0;
  __pyx_v_idims = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3137
 *     """
 *     cdef int ndims = 0, *idims = NULL
 *     if is_integral(dims):             # <<<<<<<<<<<<<<
 *         ndims = <int> PyNumber_Index(dims)
 *         dims = [0] * ndims
 */
  __pyx_t_1 = (__pyx_f_6mpi4py_3MPI_is_integral(__pyx_v_dims) != 0);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Comm.pyx":3138
 *     cdef int ndims = 0, *idims = NULL
 *     if is_integral(dims):
 *         ndims = <int> PyNumber_Index(dims)             # <<<<<<<<<<<<<<
 *         dims = [0] * ndims
 *     else:
 */
    __pyx_t_2 = PyNumber_Index(__pyx_v_dims); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3138, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_ndims = ((int)__pyx_t_3);

    /* "src/mpi4py/MPI.src/Comm.pyx":3139
 *     if is_integral(dims):
 *         ndims = <int> PyNumber_Index(dims)
 *         dims = [0] * ndims             # <<<<<<<<<<<<<<
 *     else:
 *         ndims = <int> len(dims)
 */
    __pyx_t_2 = PyList_New(1 * ((__pyx_v_ndims<0) ? 0:__pyx_v_ndims)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    { Py_ssize_t __pyx_temp;
      for (__pyx_temp=0; __pyx_temp < __pyx_v_ndims; __pyx_temp++) {
        __Pyx_INCREF(__pyx_int_0);
        __Pyx_GIVEREF(__pyx_int_0);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_2, __pyx_temp, __pyx_int_0)) __PYX_ERR(31, 3139, __pyx_L1_error);
      }
    }
    __Pyx_DECREF_SET(__pyx_v_dims, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":3137
 *     """
 *     cdef int ndims = 0, *idims = NULL
 *     if is_integral(dims):             # <<<<<<<<<<<<<<
 *         ndims = <int> PyNumber_Index(dims)
 *         dims = [0] * ndims
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3141
 *         dims = [0] * ndims
 *     else:
 *         ndims = <int> len(dims)             # <<<<<<<<<<<<<<
 *     cdef unused = chkarray(dims, ndims, &idims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 */
  /*else*/ {
    __pyx_t_4 = PyObject_Length(__pyx_v_dims); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(31, 3141, __pyx_L1_error)
    __pyx_v_ndims = ((int)__pyx_t_4);
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/Comm.pyx":3142
 *     else:
 *         ndims = <int> len(dims)
 *     cdef unused = chkarray(dims, ndims, &idims)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     dims = [idims[i] for i in range(ndims)]
 */
  __pyx_t_2 = __pyx_fuse_0_0__pyx_f_6mpi4py_3MPI_chkarray(__pyx_v_dims, __pyx_v_ndims, (&__pyx_v_idims)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3143
 *         ndims = <int> len(dims)
 *     cdef unused = chkarray(dims, ndims, &idims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )             # <<<<<<<<<<<<<<
 *     dims = [idims[i] for i in range(ndims)]
 *     return dims
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dims_create(__pyx_v_nnodes, __pyx_v_ndims, __pyx_v_idims)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3143, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3144
 *     cdef unused = chkarray(dims, ndims, &idims)
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     dims = [idims[i] for i in range(ndims)]             # <<<<<<<<<<<<<<
 *     return dims
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_v_ndims;
    __pyx_t_5 = __pyx_t_3;
    for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
      __pyx_9genexpr16__pyx_v_i = __pyx_t_6;
      __pyx_t_7 = __Pyx_PyInt_From_int((__pyx_v_idims[__pyx_9genexpr16__pyx_v_i])); if (unlikely(!__pyx_t_7)) __PYX_ERR(31, 3144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_7))) __PYX_ERR(31, 3144, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  } /* exit inner scope */
  __Pyx_DECREF_SET(__pyx_v_dims, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3145
 *     CHKERR( MPI_Dims_create(nnodes, ndims, idims) )
 *     dims = [idims[i] for i in range(ndims)]
 *     return dims             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_dims);
  __pyx_r = __pyx_v_dims;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3132
 * # Cartesian Convenience Function
 * 
 * def Compute_dims(int nnodes: int, dims: int | Sequence[int]) -> list[int]:             # <<<<<<<<<<<<<<
 *     """
 *     Return a balanced distribution of processes per coordinate direction.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Compute_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XDECREF(__pyx_v_dims);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3153
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9Graphcomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9Graphcomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPICommObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3153, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(31, 3153, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 3153, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(31, 3153, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm___cinit__(((struct PyMPIGraphcommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9Graphcomm___cinit__(struct PyMPIGraphcommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_v_topo;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3154
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 */
  ((void)__pyx_v_comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3155
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3156
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_GRAPH:
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":3157
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *         if topo != MPI_GRAPH:
 *             raise TypeError("expecting a general graph communicator")
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 3157, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3158
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_GRAPH:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a general graph communicator")
 * 
 */
  __pyx_t_1 = (__pyx_v_topo != MPI_GRAPH);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/Comm.pyx":3159
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_GRAPH:
 *             raise TypeError("expecting a general graph communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Graph Inquiry Functions
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__178, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3159, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(31, 3159, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3158
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_GRAPH:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a general graph communicator")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3153
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3164
 *     # -----------------------
 * 
 *     def Get_dims(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of nodes and edges.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_3Get_dims(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_2Get_dims, "Get_dims(self) -> tuple[int, int]\n\n        Return the number of nodes and edges.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_3Get_dims = {"Get_dims", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_3Get_dims, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_2Get_dims};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_3Get_dims(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_dims (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dims", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dims", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_2Get_dims(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_2Get_dims(struct PyMPIGraphcommObject *__pyx_v_self) {
  int __pyx_v_nnodes;
  int __pyx_v_nedges;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_dims", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3168
 *         Return the number of nodes and edges.
 *         """
 *         cdef int nnodes = 0, nedges = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graphdims_get(self.ob_mpi, &nnodes, &nedges) )
 *         return (nnodes, nedges)
 */
  __pyx_v_nnodes = 0;
  __pyx_v_nedges = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3169
 *         """
 *         cdef int nnodes = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get(self.ob_mpi, &nnodes, &nedges) )             # <<<<<<<<<<<<<<
 *         return (nnodes, nedges)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graphdims_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_nnodes), (&__pyx_v_nedges))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3169, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3170
 *         cdef int nnodes = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get(self.ob_mpi, &nnodes, &nedges) )
 *         return (nnodes, nedges)             # <<<<<<<<<<<<<<
 * 
 *     property dims:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_nnodes); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_nedges); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 3170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(31, 3170, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(31, 3170, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3164
 *     # -----------------------
 * 
 *     def Get_dims(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of nodes and edges.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3174
 *     property dims:
 *         """Number of nodes and edges."""
 *         def __get__(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *             return self.Get_dims()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_4dims_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_4dims_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_4dims___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4dims___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3175
 *         """Number of nodes and edges."""
 *         def __get__(self) -> tuple[int, int]:
 *             return self.Get_dims()             # <<<<<<<<<<<<<<
 * 
 *     property nnodes:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dims); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3174
 *     property dims:
 *         """Number of nodes and edges."""
 *         def __get__(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *             return self.Get_dims()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.dims.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3179
 *     property nnodes:
 *         """Number of nodes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dims()[0]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_6nnodes_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_6nnodes_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_6nnodes___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nnodes___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3180
 *         """Number of nodes."""
 *         def __get__(self) -> int:
 *             return self.Get_dims()[0]             # <<<<<<<<<<<<<<
 * 
 *     property nedges:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dims); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3179
 *     property nnodes:
 *         """Number of nodes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dims()[0]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nnodes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3184
 *     property nedges:
 *         """Number of edges."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dims()[1]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_6nedges_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_6nedges_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_6nedges___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6nedges___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3185
 *         """Number of edges."""
 *         def __get__(self) -> int:
 *             return self.Get_dims()[1]             # <<<<<<<<<<<<<<
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int]]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_dims); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3184
 *     property nedges:
 *         """Number of edges."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_dims()[1]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nedges.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3187
 *             return self.Get_dims()[1]
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return index and edges.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_5Get_topo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_4Get_topo, "Get_topo(self) -> tuple[list[int], list[int]]\n\n        Return index and edges.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_5Get_topo = {"Get_topo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_5Get_topo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_4Get_topo};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_5Get_topo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_topo (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_topo", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_topo", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_4Get_topo(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4Get_topo(struct PyMPIGraphcommObject *__pyx_v_self) {
  int __pyx_v_nindex;
  int __pyx_v_nedges;
  int *__pyx_v_iindex;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  int *__pyx_v_iedges;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  PyObject *__pyx_v_index = 0;
  PyObject *__pyx_v_edges = 0;
  int __pyx_9genexpr17__pyx_v_i;
  int __pyx_9genexpr18__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_topo", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3191
 *         Return index and edges.
 *         """
 *         cdef int nindex = 0, nedges = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )
 *         cdef int *iindex = NULL
 */
  __pyx_v_nindex = 0;
  __pyx_v_nedges = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3192
 *         """
 *         cdef int nindex = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )             # <<<<<<<<<<<<<<
 *         cdef int *iindex = NULL
 *         cdef unused1 = newarray(nindex, &iindex)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graphdims_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_nindex), (&__pyx_v_nedges))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3192, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3193
 *         cdef int nindex = 0, nedges = 0
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )
 *         cdef int *iindex = NULL             # <<<<<<<<<<<<<<
 *         cdef unused1 = newarray(nindex, &iindex)
 *         cdef int *iedges = NULL
 */
  __pyx_v_iindex = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3194
 *         CHKERR( MPI_Graphdims_get( self.ob_mpi, &nindex, &nedges) )
 *         cdef int *iindex = NULL
 *         cdef unused1 = newarray(nindex, &iindex)             # <<<<<<<<<<<<<<
 *         cdef int *iedges = NULL
 *         cdef unused2 = newarray(nedges, &iedges)
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_nindex, (&__pyx_v_iindex)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3195
 *         cdef int *iindex = NULL
 *         cdef unused1 = newarray(nindex, &iindex)
 *         cdef int *iedges = NULL             # <<<<<<<<<<<<<<
 *         cdef unused2 = newarray(nedges, &iedges)
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 */
  __pyx_v_iedges = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3196
 *         cdef unused1 = newarray(nindex, &iindex)
 *         cdef int *iedges = NULL
 *         cdef unused2 = newarray(nedges, &iedges)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef object index = [iindex[i] for i in range(nindex)]
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_nedges, (&__pyx_v_iedges)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3197
 *         cdef int *iedges = NULL
 *         cdef unused2 = newarray(nedges, &iedges)
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )             # <<<<<<<<<<<<<<
 *         cdef object index = [iindex[i] for i in range(nindex)]
 *         cdef object edges = [iedges[i] for i in range(nedges)]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_get(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_nindex, __pyx_v_nedges, __pyx_v_iindex, __pyx_v_iedges)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3197, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3198
 *         cdef unused2 = newarray(nedges, &iedges)
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef object index = [iindex[i] for i in range(nindex)]             # <<<<<<<<<<<<<<
 *         cdef object edges = [iedges[i] for i in range(nedges)]
 *         return (index, edges)
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3198, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_nindex;
    __pyx_t_3 = __pyx_t_1;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr17__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_iindex[__pyx_9genexpr17__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 3198, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_index = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3199
 *         CHKERR( MPI_Graph_get(self.ob_mpi, nindex, nedges, iindex, iedges) )
 *         cdef object index = [iindex[i] for i in range(nindex)]
 *         cdef object edges = [iedges[i] for i in range(nedges)]             # <<<<<<<<<<<<<<
 *         return (index, edges)
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_nedges;
    __pyx_t_3 = __pyx_t_1;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr18__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_iedges[__pyx_9genexpr18__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 3199, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_edges = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3200
 *         cdef object index = [iindex[i] for i in range(nindex)]
 *         cdef object edges = [iedges[i] for i in range(nedges)]
 *         return (index, edges)             # <<<<<<<<<<<<<<
 * 
 *     property topo:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_index);
  __Pyx_GIVEREF(__pyx_v_index);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_index)) __PYX_ERR(31, 3200, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_edges);
  __Pyx_GIVEREF(__pyx_v_edges);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_edges)) __PYX_ERR(31, 3200, __pyx_L1_error);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3187
 *             return self.Get_dims()[1]
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return index and edges.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_topo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_edges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3204
 *     property topo:
 *         """Topology information."""
 *         def __get__(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_4topo_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_4topo_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_4topo___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_4topo___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3205
 *         """Topology information."""
 *         def __get__(self) -> tuple[list[int], list[int]]:
 *             return self.Get_topo()             # <<<<<<<<<<<<<<
 * 
 *     property index:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3204
 *     property topo:
 *         """Topology information."""
 *         def __get__(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.topo.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3209
 *     property index:
 *         """Index."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[0]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_5index_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_5index_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_5index___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5index___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3210
 *         """Index."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[0]             # <<<<<<<<<<<<<<
 * 
 *     property edges:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3209
 *     property index:
 *         """Index."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[0]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.index.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3214
 *     property edges:
 *         """Edges."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[1]
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_5edges_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_5edges_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_5edges___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_5edges___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3215
 *         """Edges."""
 *         def __get__(self) -> list[int]:
 *             return self.Get_topo()[1]             # <<<<<<<<<<<<<<
 * 
 *     # Graph Information Functions
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_topo); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3214
 *     property edges:
 *         """Edges."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             return self.Get_topo()[1]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.edges.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3220
 *     # ---------------------------
 * 
 *     def Get_neighbors_count(self, int rank: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of neighbors of a process.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_6Get_neighbors_count, "Get_neighbors_count(self, rank: int) -> int\n\n        Return number of neighbors of a process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count = {"Get_neighbors_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_6Get_neighbors_count};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_neighbors_count (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3220, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_neighbors_count") < 0)) __PYX_ERR(31, 3220, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3220, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_neighbors_count", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3220, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_6Get_neighbors_count(((struct PyMPIGraphcommObject *)__pyx_v_self), __pyx_v_rank);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_6Get_neighbors_count(struct PyMPIGraphcommObject *__pyx_v_self, int __pyx_v_rank) {
  int __pyx_v_nneighbors;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_neighbors_count", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3224
 *         Return number of neighbors of a process.
 *         """
 *         cdef int nneighbors = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_neighbors_count(self.ob_mpi, rank, &nneighbors) )
 *         return nneighbors
 */
  __pyx_v_nneighbors = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3225
 *         """
 *         cdef int nneighbors = 0
 *         CHKERR( MPI_Graph_neighbors_count(self.ob_mpi, rank, &nneighbors) )             # <<<<<<<<<<<<<<
 *         return nneighbors
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors_count(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, (&__pyx_v_nneighbors))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3225, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3226
 *         cdef int nneighbors = 0
 *         CHKERR( MPI_Graph_neighbors_count(self.ob_mpi, rank, &nneighbors) )
 *         return nneighbors             # <<<<<<<<<<<<<<
 * 
 *     property nneighbors:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_nneighbors); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3220
 *     # ---------------------------
 * 
 *     def Get_neighbors_count(self, int rank: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of neighbors of a process.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3230
 *     property nneighbors:
 *         """Number of neighbors."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors_count(rank)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_10nneighbors_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_10nneighbors_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_10nneighbors___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_10nneighbors___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3231
 *         """Number of neighbors."""
 *         def __get__(self) -> int:
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors_count(rank)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_rank = __pyx_t_5;

  /* "src/mpi4py/MPI.src/Comm.pyx":3232
 *         def __get__(self) -> int:
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors_count(rank)             # <<<<<<<<<<<<<<
 * 
 *     def Get_neighbors(self, int rank: int) -> list[int]:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_neighbors_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3230
 *     property nneighbors:
 *         """Number of neighbors."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors_count(rank)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.nneighbors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3234
 *             return self.Get_neighbors_count(rank)
 * 
 *     def Get_neighbors(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return list of neighbors of a process.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_9Get_neighbors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Graphcomm_8Get_neighbors, "Get_neighbors(self, rank: int) -> list[int]\n\n        Return list of neighbors of a process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Graphcomm_9Get_neighbors = {"Get_neighbors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_9Get_neighbors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_8Get_neighbors};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_9Get_neighbors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_neighbors (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3234, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_neighbors") < 0)) __PYX_ERR(31, 3234, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3234, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_neighbors", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3234, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_8Get_neighbors(((struct PyMPIGraphcommObject *)__pyx_v_self), __pyx_v_rank);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_8Get_neighbors(struct PyMPIGraphcommObject *__pyx_v_self, int __pyx_v_rank) {
  int __pyx_v_nneighbors;
  int *__pyx_v_ineighbors;
  CYTHON_UNUSED PyObject *__pyx_v_unused = 0;
  PyObject *__pyx_v_neighbors = 0;
  int __pyx_9genexpr19__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_neighbors", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3238
 *         Return list of neighbors of a process.
 *         """
 *         cdef int nneighbors = 0, *ineighbors = NULL             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_neighbors_count(
 *                 self.ob_mpi, rank, &nneighbors) )
 */
  __pyx_v_nneighbors = 0;
  __pyx_v_ineighbors = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3239
 *         """
 *         cdef int nneighbors = 0, *ineighbors = NULL
 *         CHKERR( MPI_Graph_neighbors_count(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, rank, &nneighbors) )
 *         cdef unused = newarray(nneighbors, &ineighbors)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors_count(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, (&__pyx_v_nneighbors))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3239, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3241
 *         CHKERR( MPI_Graph_neighbors_count(
 *                 self.ob_mpi, rank, &nneighbors) )
 *         cdef unused = newarray(nneighbors, &ineighbors)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Graph_neighbors(
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_nneighbors, (&__pyx_v_ineighbors)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3242
 *                 self.ob_mpi, rank, &nneighbors) )
 *         cdef unused = newarray(nneighbors, &ineighbors)
 *         CHKERR( MPI_Graph_neighbors(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )
 *         cdef object neighbors = [ineighbors[i] for i in range(nneighbors)]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Graph_neighbors(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_rank, __pyx_v_nneighbors, __pyx_v_ineighbors)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3242, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3244
 *         CHKERR( MPI_Graph_neighbors(
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )
 *         cdef object neighbors = [ineighbors[i] for i in range(nneighbors)]             # <<<<<<<<<<<<<<
 *         return neighbors
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_nneighbors;
    __pyx_t_3 = __pyx_t_1;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_9genexpr19__pyx_v_i = __pyx_t_4;
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_ineighbors[__pyx_9genexpr19__pyx_v_i])); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3244, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(31, 3244, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  } /* exit inner scope */
  __pyx_v_neighbors = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3245
 *                 self.ob_mpi, rank, nneighbors, ineighbors) )
 *         cdef object neighbors = [ineighbors[i] for i in range(nneighbors)]
 *         return neighbors             # <<<<<<<<<<<<<<
 * 
 *     property neighbors:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_neighbors);
  __pyx_r = __pyx_v_neighbors;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3234
 *             return self.Get_neighbors_count(rank)
 * 
 *     def Get_neighbors(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return list of neighbors of a process.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.Get_neighbors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused);
  __Pyx_XDECREF(__pyx_v_neighbors);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3249
 *     property neighbors:
 *         """Neighbors."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors(rank)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_9neighbors_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Graphcomm_9neighbors_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Graphcomm_9neighbors___get__(((struct PyMPIGraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Graphcomm_9neighbors___get__(struct PyMPIGraphcommObject *__pyx_v_self) {
  int __pyx_v_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3250
 *         """Neighbors."""
 *         def __get__(self) -> list[int]:
 *             cdef int rank = self.Get_rank()             # <<<<<<<<<<<<<<
 *             return self.Get_neighbors(rank)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_rank); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_rank = __pyx_t_5;

  /* "src/mpi4py/MPI.src/Comm.pyx":3251
 *         def __get__(self) -> list[int]:
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors(rank)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_neighbors); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_rank); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3249
 *     property neighbors:
 *         """Neighbors."""
 *         def __get__(self) -> list[int]:             # <<<<<<<<<<<<<<
 *             cdef int rank = self.Get_rank()
 *             return self.Get_neighbors(rank)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Graphcomm.neighbors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3259
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_13Distgraphcomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_13Distgraphcomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPICommObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3259, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(31, 3259, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 3259, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(31, 3259, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_13Distgraphcomm___cinit__(((struct PyMPIDistgraphcommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_13Distgraphcomm___cinit__(struct PyMPIDistgraphcommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_v_topo;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3260
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 */
  ((void)__pyx_v_comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3261
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3262
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_DIST_GRAPH:
 */
  __pyx_v_topo = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/Comm.pyx":3263
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )             # <<<<<<<<<<<<<<
 *         if topo != MPI_DIST_GRAPH:
 *             raise TypeError("expecting a distributed graph communicator")
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Topo_test(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_topo))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 3263, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3264
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a distributed graph communicator")
 * 
 */
  __pyx_t_1 = (__pyx_v_topo != MPI_DIST_GRAPH);
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/Comm.pyx":3265
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_DIST_GRAPH:
 *             raise TypeError("expecting a distributed graph communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Topology Inquiry Functions
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__179, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(31, 3265, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3264
 *         cdef int topo = MPI_UNDEFINED
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_DIST_GRAPH:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting a distributed graph communicator")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3259
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3270
 *     # --------------------------
 * 
 *     def Get_dist_neighbors_count(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return adjacency information for a distributed graph topology.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count, "Get_dist_neighbors_count(self) -> int\n\n        Return adjacency information for a distributed graph topology.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count = {"Get_dist_neighbors_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count};
static PyObject *__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_dist_neighbors_count (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dist_neighbors_count", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dist_neighbors_count", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count(((struct PyMPIDistgraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count(struct PyMPIDistgraphcommObject *__pyx_v_self) {
  int __pyx_v_indegree;
  int __pyx_v_outdegree;
  int __pyx_v_weighted;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  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;
  __Pyx_RefNannySetupContext("Get_dist_neighbors_count", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3274
 *         Return adjacency information for a distributed graph topology.
 *         """
 *         cdef int indegree = 0             # <<<<<<<<<<<<<<
 *         cdef int outdegree = 0
 *         cdef int weighted = 0
 */
  __pyx_v_indegree = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3275
 *         """
 *         cdef int indegree = 0
 *         cdef int outdegree = 0             # <<<<<<<<<<<<<<
 *         cdef int weighted = 0
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 */
  __pyx_v_outdegree = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3276
 *         cdef int indegree = 0
 *         cdef int outdegree = 0
 *         cdef int weighted = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &indegree, &outdegree, &weighted) )
 */
  __pyx_v_weighted = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3277
 *         cdef int outdegree = 0
 *         cdef int weighted = 0
 *         CHKERR( MPI_Dist_graph_neighbors_count(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, &indegree, &outdegree, &weighted) )
 *         return (indegree, outdegree, <bint>weighted)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_neighbors_count(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_indegree), (&__pyx_v_outdegree), (&__pyx_v_weighted))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3277, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3279
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &indegree, &outdegree, &weighted) )
 *         return (indegree, outdegree, <bint>weighted)             # <<<<<<<<<<<<<<
 * 
 *     def Get_dist_neighbors(self) -> \
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_indegree); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_outdegree); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyBool_FromLong((__pyx_v_weighted != 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 3279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 3279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2)) __PYX_ERR(31, 3279, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(31, 3279, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(31, 3279, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3270
 *     # --------------------------
 * 
 *     def Get_dist_neighbors_count(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return adjacency information for a distributed graph topology.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.Get_dist_neighbors_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3281
 *         return (indegree, outdegree, <bint>weighted)
 * 
 *     def Get_dist_neighbors(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], tuple[list[int], list[int]] | None]:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_13Distgraphcomm_4Get_dist_neighbors, "Get_dist_neighbors(self) -> tuple[list[int], list[int], tuple[list[int], list[int]] | None]\n\n        Return adjacency information for a distributed graph topology.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors = {"Get_dist_neighbors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_13Distgraphcomm_4Get_dist_neighbors};
static PyObject *__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_dist_neighbors (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_dist_neighbors", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_dist_neighbors", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_13Distgraphcomm_4Get_dist_neighbors(((struct PyMPIDistgraphcommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_13Distgraphcomm_4Get_dist_neighbors(struct PyMPIDistgraphcommObject *__pyx_v_self) {
  int __pyx_v_maxindegree;
  int __pyx_v_maxoutdegree;
  int __pyx_v_weighted;
  int *__pyx_v_sources;
  int *__pyx_v_destinations;
  int *__pyx_v_sourceweights;
  int *__pyx_v_destweights;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused3 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused4 = 0;
  int __pyx_v_i;
  PyObject *__pyx_v_src = 0;
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_sw = 0;
  PyObject *__pyx_v_dw = 0;
  int __pyx_9genexpr20__pyx_v_i;
  int __pyx_9genexpr21__pyx_v_i;
  int __pyx_9genexpr22__pyx_v_i;
  int __pyx_9genexpr23__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_dist_neighbors", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3286
 *         Return adjacency information for a distributed graph topology.
 *         """
 *         cdef int maxindegree = 0, maxoutdegree = 0, weighted = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Dist_graph_neighbors_count(
 *                 self.ob_mpi, &maxindegree, &maxoutdegree, &weighted) )
 */
  __pyx_v_maxindegree = 0;
  __pyx_v_maxoutdegree = 0;
  __pyx_v_weighted = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3287
 *         """
 *         cdef int maxindegree = 0, maxoutdegree = 0, weighted = 0
 *         CHKERR( MPI_Dist_graph_neighbors_count(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi, &maxindegree, &maxoutdegree, &weighted) )
 *         #
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_neighbors_count(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, (&__pyx_v_maxindegree), (&__pyx_v_maxoutdegree), (&__pyx_v_weighted))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3287, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3290
 *                 self.ob_mpi, &maxindegree, &maxoutdegree, &weighted) )
 *         #
 *         cdef int *sources = NULL, *destinations = NULL             # <<<<<<<<<<<<<<
 *         cdef int *sourceweights = MPI_UNWEIGHTED
 *         cdef int *destweights   = MPI_UNWEIGHTED
 */
  __pyx_v_sources = NULL;
  __pyx_v_destinations = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3291
 *         #
 *         cdef int *sources = NULL, *destinations = NULL
 *         cdef int *sourceweights = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         cdef int *destweights   = MPI_UNWEIGHTED
 *         cdef object unused1, unused2, unused3, unused4
 */
  __pyx_v_sourceweights = MPI_UNWEIGHTED;

  /* "src/mpi4py/MPI.src/Comm.pyx":3292
 *         cdef int *sources = NULL, *destinations = NULL
 *         cdef int *sourceweights = MPI_UNWEIGHTED
 *         cdef int *destweights   = MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 *         cdef object unused1, unused2, unused3, unused4
 *         unused1 = newarray(maxindegree,  &sources)
 */
  __pyx_v_destweights = MPI_UNWEIGHTED;

  /* "src/mpi4py/MPI.src/Comm.pyx":3294
 *         cdef int *destweights   = MPI_UNWEIGHTED
 *         cdef object unused1, unused2, unused3, unused4
 *         unused1 = newarray(maxindegree,  &sources)             # <<<<<<<<<<<<<<
 *         unused2 = newarray(maxoutdegree, &destinations)
 *         if weighted:
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_maxindegree, (&__pyx_v_sources)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused1 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3295
 *         cdef object unused1, unused2, unused3, unused4
 *         unused1 = newarray(maxindegree,  &sources)
 *         unused2 = newarray(maxoutdegree, &destinations)             # <<<<<<<<<<<<<<
 *         if weighted:
 *             unused3 = newarray(maxindegree, &sourceweights)
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_maxoutdegree, (&__pyx_v_destinations)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_unused2 = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3296
 *         unused1 = newarray(maxindegree,  &sources)
 *         unused2 = newarray(maxoutdegree, &destinations)
 *         if weighted:             # <<<<<<<<<<<<<<
 *             unused3 = newarray(maxindegree, &sourceweights)
 *             for i in range(maxindegree):
 */
  __pyx_t_3 = (__pyx_v_weighted != 0);
  if (__pyx_t_3) {

    /* "src/mpi4py/MPI.src/Comm.pyx":3297
 *         unused2 = newarray(maxoutdegree, &destinations)
 *         if weighted:
 *             unused3 = newarray(maxindegree, &sourceweights)             # <<<<<<<<<<<<<<
 *             for i in range(maxindegree):
 *                 sourceweights[i] = 1
 */
    __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_maxindegree, (&__pyx_v_sourceweights)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_unused3 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":3298
 *         if weighted:
 *             unused3 = newarray(maxindegree, &sourceweights)
 *             for i in range(maxindegree):             # <<<<<<<<<<<<<<
 *                 sourceweights[i] = 1
 *             unused4 = newarray(maxoutdegree, &destweights)
 */
    __pyx_t_1 = __pyx_v_maxindegree;
    __pyx_t_4 = __pyx_t_1;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_v_i = __pyx_t_5;

      /* "src/mpi4py/MPI.src/Comm.pyx":3299
 *             unused3 = newarray(maxindegree, &sourceweights)
 *             for i in range(maxindegree):
 *                 sourceweights[i] = 1             # <<<<<<<<<<<<<<
 *             unused4 = newarray(maxoutdegree, &destweights)
 *             for i in range(maxoutdegree):
 */
      (__pyx_v_sourceweights[__pyx_v_i]) = 1;
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":3300
 *             for i in range(maxindegree):
 *                 sourceweights[i] = 1
 *             unused4 = newarray(maxoutdegree, &destweights)             # <<<<<<<<<<<<<<
 *             for i in range(maxoutdegree):
 *                 destweights[i]   = 1
 */
    __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_newarray(__pyx_v_maxoutdegree, (&__pyx_v_destweights)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_unused4 = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Comm.pyx":3301
 *                 sourceweights[i] = 1
 *             unused4 = newarray(maxoutdegree, &destweights)
 *             for i in range(maxoutdegree):             # <<<<<<<<<<<<<<
 *                 destweights[i]   = 1
 *         #
 */
    __pyx_t_1 = __pyx_v_maxoutdegree;
    __pyx_t_4 = __pyx_t_1;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_v_i = __pyx_t_5;

      /* "src/mpi4py/MPI.src/Comm.pyx":3302
 *             unused4 = newarray(maxoutdegree, &destweights)
 *             for i in range(maxoutdegree):
 *                 destweights[i]   = 1             # <<<<<<<<<<<<<<
 *         #
 *         CHKERR( MPI_Dist_graph_neighbors(
 */
      (__pyx_v_destweights[__pyx_v_i]) = 1;
    }

    /* "src/mpi4py/MPI.src/Comm.pyx":3296
 *         unused1 = newarray(maxindegree,  &sources)
 *         unused2 = newarray(maxoutdegree, &destinations)
 *         if weighted:             # <<<<<<<<<<<<<<
 *             unused3 = newarray(maxindegree, &sourceweights)
 *             for i in range(maxindegree):
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3304
 *                 destweights[i]   = 1
 *         #
 *         CHKERR( MPI_Dist_graph_neighbors(             # <<<<<<<<<<<<<<
 *                 self.ob_mpi,
 *                 maxindegree,  sources,      sourceweights,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Dist_graph_neighbors(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.ob_mpi, __pyx_v_maxindegree, __pyx_v_sources, __pyx_v_sourceweights, __pyx_v_maxoutdegree, __pyx_v_destinations, __pyx_v_destweights)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3304, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3309
 *                 maxoutdegree, destinations, destweights) )
 *         #
 *         cdef object src = [sources[i]      for i in range(maxindegree)]             # <<<<<<<<<<<<<<
 *         cdef object dst = [destinations[i] for i in range(maxoutdegree)]
 *         if not weighted: return (src, dst, None)
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_maxindegree;
    __pyx_t_4 = __pyx_t_1;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_9genexpr20__pyx_v_i = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_sources[__pyx_9genexpr20__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 3309, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(31, 3309, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_src = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3310
 *         #
 *         cdef object src = [sources[i]      for i in range(maxindegree)]
 *         cdef object dst = [destinations[i] for i in range(maxoutdegree)]             # <<<<<<<<<<<<<<
 *         if not weighted: return (src, dst, None)
 *         #
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_maxoutdegree;
    __pyx_t_4 = __pyx_t_1;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_9genexpr21__pyx_v_i = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_destinations[__pyx_9genexpr21__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 3310, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(31, 3310, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_dst = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3311
 *         cdef object src = [sources[i]      for i in range(maxindegree)]
 *         cdef object dst = [destinations[i] for i in range(maxoutdegree)]
 *         if not weighted: return (src, dst, None)             # <<<<<<<<<<<<<<
 *         #
 *         cdef object sw = [sourceweights[i] for i in range(maxindegree)]
 */
  __pyx_t_3 = (!(__pyx_v_weighted != 0));
  if (__pyx_t_3) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_src);
    __Pyx_GIVEREF(__pyx_v_src);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_src)) __PYX_ERR(31, 3311, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_dst);
    __Pyx_GIVEREF(__pyx_v_dst);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_dst)) __PYX_ERR(31, 3311, __pyx_L1_error);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(31, 3311, __pyx_L1_error);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3313
 *         if not weighted: return (src, dst, None)
 *         #
 *         cdef object sw = [sourceweights[i] for i in range(maxindegree)]             # <<<<<<<<<<<<<<
 *         cdef object dw = [destweights[i]   for i in range(maxoutdegree)]
 *         return (src, dst, (sw, dw))
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_maxindegree;
    __pyx_t_4 = __pyx_t_1;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_9genexpr22__pyx_v_i = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_sourceweights[__pyx_9genexpr22__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 3313, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(31, 3313, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_sw = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3314
 *         #
 *         cdef object sw = [sourceweights[i] for i in range(maxindegree)]
 *         cdef object dw = [destweights[i]   for i in range(maxoutdegree)]             # <<<<<<<<<<<<<<
 *         return (src, dst, (sw, dw))
 * 
 */
  { /* enter inner scope */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_v_maxoutdegree;
    __pyx_t_4 = __pyx_t_1;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_9genexpr23__pyx_v_i = __pyx_t_5;
      __pyx_t_6 = __Pyx_PyInt_From_int((__pyx_v_destweights[__pyx_9genexpr23__pyx_v_i])); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 3314, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(31, 3314, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  } /* exit inner scope */
  __pyx_v_dw = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3315
 *         cdef object sw = [sourceweights[i] for i in range(maxindegree)]
 *         cdef object dw = [destweights[i]   for i in range(maxoutdegree)]
 *         return (src, dst, (sw, dw))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_sw);
  __Pyx_GIVEREF(__pyx_v_sw);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sw)) __PYX_ERR(31, 3315, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_dw);
  __Pyx_GIVEREF(__pyx_v_dw);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_dw)) __PYX_ERR(31, 3315, __pyx_L1_error);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 3315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_src);
  __Pyx_GIVEREF(__pyx_v_src);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_src)) __PYX_ERR(31, 3315, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_dst);
  __Pyx_GIVEREF(__pyx_v_dst);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_dst)) __PYX_ERR(31, 3315, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_2)) __PYX_ERR(31, 3315, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3281
 *         return (indegree, outdegree, <bint>weighted)
 * 
 *     def Get_dist_neighbors(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], tuple[list[int], list[int]] | None]:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.Distgraphcomm.Get_dist_neighbors", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_unused3);
  __Pyx_XDECREF(__pyx_v_unused4);
  __Pyx_XDECREF(__pyx_v_src);
  __Pyx_XDECREF(__pyx_v_dst);
  __Pyx_XDECREF(__pyx_v_sw);
  __Pyx_XDECREF(__pyx_v_dw);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3323
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_9Intercomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_9Intercomm_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPICommObject *__pyx_v_comm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPICommObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3323, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(31, 3323, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPICommObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 3323, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Comm, 1, "comm", 0))) __PYX_ERR(31, 3323, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intercomm___cinit__(((struct PyMPIIntercommObject *)__pyx_v_self), __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_9Intercomm___cinit__(struct PyMPIIntercommObject *__pyx_v_self, struct PyMPICommObject *__pyx_v_comm) {
  int __pyx_v_inter;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3324
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused             # <<<<<<<<<<<<<<
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int inter = 0
 */
  ((void)__pyx_v_comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3325
 *     def __cinit__(self, Comm comm: Comm | None = None):
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return             # <<<<<<<<<<<<<<
 *         cdef int inter = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.ob_mpi == MPI_COMM_NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3326
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int inter = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if not inter:
 */
  __pyx_v_inter = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3327
 *         if self.ob_mpi == MPI_COMM_NULL: return
 *         cdef int inter = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )             # <<<<<<<<<<<<<<
 *         if not inter:
 *             raise TypeError("expecting an intercommunicator")
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_test_inter(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_inter))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 3327, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3328
 *         cdef int inter = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if not inter:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting an intercommunicator")
 * 
 */
  __pyx_t_1 = (!(__pyx_v_inter != 0));
  if (unlikely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/Comm.pyx":3329
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if not inter:
 *             raise TypeError("expecting an intercommunicator")             # <<<<<<<<<<<<<<
 * 
 *     # Intercommunicator Constructors
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__180, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(31, 3329, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Comm.pyx":3328
 *         cdef int inter = 0
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if not inter:             # <<<<<<<<<<<<<<
 *             raise TypeError("expecting an intercommunicator")
 * 
 */
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3323
 *     """
 * 
 *     def __cinit__(self, Comm comm: Comm | None = None):             # <<<<<<<<<<<<<<
 *         <void> comm  # unused
 *         if self.ob_mpi == MPI_COMM_NULL: return
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3334
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_3Create_from_groups(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intercomm_2Create_from_groups, "Create_from_groups(cls, local_group: Group, local_leader: int, remote_group: Group, remote_leader: int, stringtag: str = 'org.mpi4py', info: Info = INFO_NULL, errhandler: Errhandler | None = None) -> Intracomm\n\n        Create communicator from group.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_3Create_from_groups = {"Create_from_groups", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_3Create_from_groups, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_2Create_from_groups};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_3Create_from_groups(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_local_group = 0;
  int __pyx_v_local_leader;
  struct PyMPIGroupObject *__pyx_v_remote_group = 0;
  int __pyx_v_remote_leader;
  PyObject *__pyx_v_stringtag = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[7] = {0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_from_groups (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_local_group,&__pyx_n_s_local_leader,&__pyx_n_s_remote_group,&__pyx_n_s_remote_leader,&__pyx_n_s_stringtag,&__pyx_n_s_info,&__pyx_n_s_errhandler,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_kp_s_org_mpi4py));
    values[5] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__181);

    /* "src/mpi4py/MPI.src/Comm.pyx":3343
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,
 *         Errhandler errhandler: Errhandler | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Intracomm:
 *         """
 */
    values[6] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIErrhandlerObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_local_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3334, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_local_leader)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3334, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_from_groups", 0, 4, 7, 1); __PYX_ERR(31, 3334, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_remote_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3334, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_from_groups", 0, 4, 7, 2); __PYX_ERR(31, 3334, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_remote_leader)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3334, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Create_from_groups", 0, 4, 7, 3); __PYX_ERR(31, 3334, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_stringtag);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3334, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[5] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3334, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler);
          if (value) { values[6] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3334, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_from_groups") < 0)) __PYX_ERR(31, 3334, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_local_group = ((struct PyMPIGroupObject *)values[0]);
    __pyx_v_local_leader = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_local_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3338, __pyx_L3_error)
    __pyx_v_remote_group = ((struct PyMPIGroupObject *)values[2]);
    __pyx_v_remote_leader = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_remote_leader == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3340, __pyx_L3_error)
    __pyx_v_stringtag = values[4];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[5]);
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[6]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_from_groups", 0, 4, 7, __pyx_nargs); __PYX_ERR(31, 3334, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Create_from_groups", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_local_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "local_group", 0))) __PYX_ERR(31, 3337, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_remote_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "remote_group", 0))) __PYX_ERR(31, 3339, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 3342, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 1, "errhandler", 0))) __PYX_ERR(31, 3343, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intercomm_2Create_from_groups(((PyTypeObject*)__pyx_v_cls), __pyx_v_local_group, __pyx_v_local_leader, __pyx_v_remote_group, __pyx_v_remote_leader, __pyx_v_stringtag, __pyx_v_info, __pyx_v_errhandler);

  /* "src/mpi4py/MPI.src/Comm.pyx":3334
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_2Create_from_groups(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, struct PyMPIGroupObject *__pyx_v_local_group, int __pyx_v_local_leader, struct PyMPIGroupObject *__pyx_v_remote_group, int __pyx_v_remote_leader, PyObject *__pyx_v_stringtag, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  char *__pyx_v_cstringtag;
  MPI_Errhandler __pyx_v_cerrhdl;
  struct PyMPIIntercommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Errhandler __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_from_groups", 0);
  __Pyx_INCREF(__pyx_v_stringtag);

  /* "src/mpi4py/MPI.src/Comm.pyx":3348
 *         Create communicator from group.
 *         """
 *         cdef char *cstringtag = NULL             # <<<<<<<<<<<<<<
 *         stringtag = asmpistr(stringtag, &cstringtag)
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 */
  __pyx_v_cstringtag = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3349
 *         """
 *         cdef char *cstringtag = NULL
 *         stringtag = asmpistr(stringtag, &cstringtag)             # <<<<<<<<<<<<<<
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_stringtag, (&__pyx_v_cstringtag)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_stringtag, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3350
 *         cdef char *cstringtag = NULL
 *         stringtag = asmpistr(stringtag, &cstringtag)
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)             # <<<<<<<<<<<<<<
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create_from_groups(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Errhandler(((PyObject *)__pyx_v_errhandler)); if (unlikely(__pyx_t_2 == ((MPI_Errhandler)MPI_ERRHANDLER_NULL) && PyErr_Occurred())) __PYX_ERR(31, 3350, __pyx_L1_error)
  __pyx_v_cerrhdl = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":3351
 *         stringtag = asmpistr(stringtag, &cstringtag)
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Intercomm_create_from_groups(
 *             local_group.ob_mpi, local_leader,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intercomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIIntercommObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3352
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create_from_groups(             # <<<<<<<<<<<<<<
 *             local_group.ob_mpi, local_leader,
 *             remote_group.ob_mpi, remote_leader,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":3355
 *             local_group.ob_mpi, local_leader,
 *             remote_group.ob_mpi, remote_leader,
 *             cstringtag, info.ob_mpi, cerrhdl, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Intercomm_create_from_groups(__pyx_v_local_group->ob_mpi, __pyx_v_local_leader, __pyx_v_remote_group->ob_mpi, __pyx_v_remote_leader, __pyx_v_cstringtag, __pyx_v_info->ob_mpi, __pyx_v_cerrhdl, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(31, 3352, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":3352
 *         cdef MPI_Errhandler cerrhdl = arg_Errhandler(errhandler)
 *         cdef Intercomm comm = <Intercomm>New(Intercomm)
 *         with nogil: CHKERR( MPI_Intercomm_create_from_groups(             # <<<<<<<<<<<<<<
 *             local_group.ob_mpi, local_leader,
 *             remote_group.ob_mpi, remote_leader,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3356
 *             remote_group.ob_mpi, remote_leader,
 *             cstringtag, info.ob_mpi, cerrhdl, &comm.ob_mpi) )
 *         return comm             # <<<<<<<<<<<<<<
 * 
 *     # Intercommunicator Accessors
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3334
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Create_from_groups", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XDECREF(__pyx_v_stringtag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3361
 *     # ---------------------------
 * 
 *     def Get_remote_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the remote group associated with the inter-communicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_5Get_remote_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intercomm_4Get_remote_group, "Get_remote_group(self) -> Group\n\n        Access the remote group associated with the inter-communicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_5Get_remote_group = {"Get_remote_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_5Get_remote_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_4Get_remote_group};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_5Get_remote_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_remote_group (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_remote_group", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_remote_group", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intercomm_4Get_remote_group(((struct PyMPIIntercommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_4Get_remote_group(struct PyMPIIntercommObject *__pyx_v_self) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_remote_group", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3365
 *         Access the remote group associated with the inter-communicator.
 *         """
 *         cdef Group group = <Group>New(Group)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Comm_remote_group(
 *             self.ob_mpi, &group.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3366
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_remote_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":3367
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_remote_group(
 *             self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_group(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3366, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":3366
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_Comm_remote_group(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3368
 *         with nogil: CHKERR( MPI_Comm_remote_group(
 *             self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property remote_group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3361
 *     # ---------------------------
 * 
 *     def Get_remote_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the remote group associated with the inter-communicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Get_remote_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3372
 *     property remote_group:
 *         """Remote group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_remote_group()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_12remote_group_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_12remote_group_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intercomm_12remote_group___get__(((struct PyMPIIntercommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_12remote_group___get__(struct PyMPIIntercommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3373
 *         """Remote group."""
 *         def __get__(self) -> Group:
 *             return self.Get_remote_group()             # <<<<<<<<<<<<<<
 * 
 *     def Get_remote_size(self) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_remote_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3372
 *     property remote_group:
 *         """Remote group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_remote_group()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.remote_group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3375
 *             return self.Get_remote_group()
 * 
 *     def Get_remote_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Intercommunicator remote size.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_7Get_remote_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intercomm_6Get_remote_size, "Get_remote_size(self) -> int\n\n        Intercommunicator remote size.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_7Get_remote_size = {"Get_remote_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_7Get_remote_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_6Get_remote_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_7Get_remote_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_remote_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_remote_size", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_remote_size", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intercomm_6Get_remote_size(((struct PyMPIIntercommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_6Get_remote_size(struct PyMPIIntercommObject *__pyx_v_self) {
  int __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_remote_size", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3379
 *         Intercommunicator remote size.
 *         """
 *         cdef int size = -1             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = -1;

  /* "src/mpi4py/MPI.src/Comm.pyx":3380
 *         """
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Comm_remote_size(__pyx_v_self->__pyx_base.ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3380, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3381
 *         cdef int size = -1
 *         CHKERR( MPI_Comm_remote_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property remote_size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3375
 *             return self.Get_remote_group()
 * 
 *     def Get_remote_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Intercommunicator remote size.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Get_remote_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3385
 *     property remote_size:
 *         """Number of remote processes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_remote_size()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_11remote_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_11remote_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intercomm_11remote_size___get__(((struct PyMPIIntercommObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_11remote_size___get__(struct PyMPIIntercommObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3386
 *         """Number of remote processes."""
 *         def __get__(self) -> int:
 *             return self.Get_remote_size()             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_remote_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3385
 *     property remote_size:
 *         """Number of remote processes."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_remote_size()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.remote_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3391
 *     # -------------------------
 * 
 *     def Merge(self, bint high: bool = False) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Merge intercommunicator into an intracommunicator.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_9Merge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_9Intercomm_8Merge, "Merge(self, high: bool = False) -> Intracomm\n\n        Merge intercommunicator into an intracommunicator.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_9Intercomm_9Merge = {"Merge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_9Merge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_8Merge};
static PyObject *__pyx_pw_6mpi4py_3MPI_9Intercomm_9Merge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_high;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Merge (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_high,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_high);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3391, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Merge") < 0)) __PYX_ERR(31, 3391, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_high = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_high == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 3391, __pyx_L3_error)
    } else {
      __pyx_v_high = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Merge", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 3391, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_9Intercomm_8Merge(((struct PyMPIIntercommObject *)__pyx_v_self), __pyx_v_high);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_9Intercomm_8Merge(struct PyMPIIntercommObject *__pyx_v_self, int __pyx_v_high) {
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Merge", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3395
 *         Merge intercommunicator into an intracommunicator.
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_comm = ((struct PyMPIIntracommObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3396
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Comm.pyx":3397
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )             # <<<<<<<<<<<<<<
 *         comm_set_eh(comm.ob_mpi)
 *         return comm
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Intercomm_merge(__pyx_v_self->__pyx_base.ob_mpi, __pyx_v_high, (&__pyx_v_comm->__pyx_base.ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3396, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Comm.pyx":3396
 *         """
 *         cdef Intracomm comm = <Intracomm>New(Intracomm)
 *         with nogil: CHKERR( MPI_Intercomm_merge(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3398
 *         with nogil: CHKERR( MPI_Intercomm_merge(
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)             # <<<<<<<<<<<<<<
 *         return comm
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_comm_set_eh(__pyx_v_comm->__pyx_base.ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3398, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3399
 *             self.ob_mpi, high, &comm.ob_mpi) )
 *         comm_set_eh(comm.ob_mpi)
 *         return comm             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_comm);
  __pyx_r = ((PyObject *)__pyx_v_comm);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3391
 *     # -------------------------
 * 
 *     def Merge(self, bint high: bool = False) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Merge intercommunicator into an intracommunicator.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Intercomm.Merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_comm);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3426
 * 
 * 
 * def Attach_buffer(buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Attach a user-provided buffer for sending in buffered mode.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_35Attach_buffer(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_34Attach_buffer, "Attach_buffer(buf: Buffer | None) -> None\n\n    Attach a user-provided buffer for sending in buffered mode.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_35Attach_buffer = {"Attach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_35Attach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_34Attach_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_35Attach_buffer(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Attach_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3426, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Attach_buffer") < 0)) __PYX_ERR(31, 3426, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach_buffer", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3426, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_34Attach_buffer(__pyx_self, __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_34Attach_buffer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_buf) {
  void *__pyx_v_base;
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Attach_buffer", 0);
  __Pyx_INCREF(__pyx_v_buf);

  /* "src/mpi4py/MPI.src/Comm.pyx":3430
 *     Attach a user-provided buffer for sending in buffered mode.
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count size = 0
 *     buf = attach_buffer(buf, &base, &size)
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3431
 *     """
 *     cdef void *base = NULL
 *     cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *     buf = attach_buffer(buf, &base, &size)
 *     with nogil: CHKERR( MPI_Buffer_attach_c(base, size) )
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3432
 *     cdef void *base = NULL
 *     cdef MPI_Count size = 0
 *     buf = attach_buffer(buf, &base, &size)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Buffer_attach_c(base, size) )
 *     detach_buffer_set(0, buf)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_attach_buffer(__pyx_v_buf, (&__pyx_v_base), (&__pyx_v_size)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_buf, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3433
 *     cdef MPI_Count size = 0
 *     buf = attach_buffer(buf, &base, &size)
 *     with nogil: CHKERR( MPI_Buffer_attach_c(base, size) )             # <<<<<<<<<<<<<<
 *     detach_buffer_set(0, buf)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_attach_c(__pyx_v_base, __pyx_v_size)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 3433, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3434
 *     buf = attach_buffer(buf, &base, &size)
 *     with nogil: CHKERR( MPI_Buffer_attach_c(base, size) )
 *     detach_buffer_set(0, buf)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_detach_buffer_set(0, __pyx_v_buf); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 3434, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3426
 * 
 * 
 * def Attach_buffer(buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Attach a user-provided buffer for sending in buffered mode.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Attach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3437
 * 
 * 
 * def Detach_buffer() -> Buffer | None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_37Detach_buffer(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_36Detach_buffer, "Detach_buffer() -> Buffer | None\n\n    Remove an existing attached buffer.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_37Detach_buffer = {"Detach_buffer", (PyCFunction)__pyx_pw_6mpi4py_3MPI_37Detach_buffer, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_36Detach_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_37Detach_buffer(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Detach_buffer (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_36Detach_buffer(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_36Detach_buffer(CYTHON_UNUSED PyObject *__pyx_self) {
  void *__pyx_v_base;
  MPI_Count __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Detach_buffer", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3441
 *     Remove an existing attached buffer.
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach_c(&base, &size) )
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3442
 *     """
 *     cdef void *base = NULL
 *     cdef MPI_Count size = 0             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Buffer_detach_c(&base, &size) )
 *     return detach_buffer_get(0, base, size)
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3443
 *     cdef void *base = NULL
 *     cdef MPI_Count size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach_c(&base, &size) )             # <<<<<<<<<<<<<<
 *     return detach_buffer_get(0, base, size)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_detach_c((&__pyx_v_base), (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3443, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3444
 *     cdef MPI_Count size = 0
 *     with nogil: CHKERR( MPI_Buffer_detach_c(&base, &size) )
 *     return detach_buffer_get(0, base, size)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_detach_buffer_get(0, __pyx_v_base, __pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3437
 * 
 * 
 * def Detach_buffer() -> Buffer | None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Detach_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3447
 * 
 * 
 * def Flush_buffer() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Block until all buffered messages have been transmitted.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_39Flush_buffer(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_38Flush_buffer, "Flush_buffer() -> None\n\n    Block until all buffered messages have been transmitted.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_39Flush_buffer = {"Flush_buffer", (PyCFunction)__pyx_pw_6mpi4py_3MPI_39Flush_buffer, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_38Flush_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_39Flush_buffer(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Flush_buffer (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_38Flush_buffer(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_38Flush_buffer(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Flush_buffer", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3451
 *     Block until all buffered messages have been transmitted.
 *     """
 *     with nogil: CHKERR( MPI_Buffer_flush() )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_flush()); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3451, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3447
 * 
 * 
 * def Flush_buffer() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Block until all buffered messages have been transmitted.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Flush_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3454
 * 
 * 
 * def Iflush_buffer() -> Request:             # <<<<<<<<<<<<<<
 *     """
 *     Nonblocking flush for buffered messages.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_41Iflush_buffer(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_40Iflush_buffer, "Iflush_buffer() -> Request\n\n    Nonblocking flush for buffered messages.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_41Iflush_buffer = {"Iflush_buffer", (PyCFunction)__pyx_pw_6mpi4py_3MPI_41Iflush_buffer, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_40Iflush_buffer};
static PyObject *__pyx_pw_6mpi4py_3MPI_41Iflush_buffer(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iflush_buffer (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_40Iflush_buffer(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_40Iflush_buffer(CYTHON_UNUSED PyObject *__pyx_self) {
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iflush_buffer", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3458
 *     Nonblocking flush for buffered messages.
 *     """
 *     cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Buffer_iflush(&request.ob_mpi) )
 *     return request  # ~> MPI-4.1
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3459
 *     """
 *     cdef Request request = <Request>New(Request)
 *     with nogil: CHKERR( MPI_Buffer_iflush(&request.ob_mpi) )             # <<<<<<<<<<<<<<
 *     return request  # ~> MPI-4.1
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Buffer_iflush((&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3459, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3460
 *     cdef Request request = <Request>New(Request)
 *     with nogil: CHKERR( MPI_Buffer_iflush(&request.ob_mpi) )
 *     return request  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3454
 * 
 * 
 * def Iflush_buffer() -> Request:             # <<<<<<<<<<<<<<
 *     """
 *     Nonblocking flush for buffered messages.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Iflush_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3469
 * # ---------------
 * 
 * def Open_port(Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return an address used to connect group of processes.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_102__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_info);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_info);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_info))) __PYX_ERR(31, 3469, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(31, 3469, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(31, 3469, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_43Open_port(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_42Open_port, "Open_port(info: Info = INFO_NULL) -> str\n\n    Return an address used to connect group of processes.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_43Open_port = {"Open_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_43Open_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_42Open_port};
static PyObject *__pyx_pw_6mpi4py_3MPI_43Open_port(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Open_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_dynamic_args->__pyx_arg_info);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3469, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Open_port") < 0)) __PYX_ERR(31, 3469, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Open_port", 0, 0, 1, __pyx_nargs); __PYX_ERR(31, 3469, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Open_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 3469, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_42Open_port(__pyx_self, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_42Open_port(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIInfoObject *__pyx_v_info) {
  char __pyx_v_cportname[(MPI_MAX_PORT_NAME + 1)];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Open_port", 1);

  /* "src/mpi4py/MPI.src/Comm.pyx":3474
 *     """
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     cportname[0] = 0  # just in case             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Open_port(info.ob_mpi, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case
 */
  (__pyx_v_cportname[0]) = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3475
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     cportname[0] = 0  # just in case
 *     with nogil: CHKERR( MPI_Open_port(info.ob_mpi, cportname) )             # <<<<<<<<<<<<<<
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case
 *     return mpistr(cportname)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Open_port(__pyx_v_info->ob_mpi, __pyx_v_cportname)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(31, 3475, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3476
 *     cportname[0] = 0  # just in case
 *     with nogil: CHKERR( MPI_Open_port(info.ob_mpi, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case             # <<<<<<<<<<<<<<
 *     return mpistr(cportname)
 * 
 */
  (__pyx_v_cportname[MPI_MAX_PORT_NAME]) = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3477
 *     with nogil: CHKERR( MPI_Open_port(info.ob_mpi, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case
 *     return mpistr(cportname)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cportname); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3469
 * # ---------------
 * 
 * def Open_port(Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return an address used to connect group of processes.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Open_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3480
 * 
 * 
 * def Close_port(port_name: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Close a port.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_45Close_port(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_44Close_port, "Close_port(port_name: str) -> None\n\n    Close a port.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_45Close_port = {"Close_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_45Close_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_44Close_port};
static PyObject *__pyx_pw_6mpi4py_3MPI_45Close_port(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_port_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Close_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_port_name,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_port_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3480, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Close_port") < 0)) __PYX_ERR(31, 3480, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_port_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Close_port", 1, 1, 1, __pyx_nargs); __PYX_ERR(31, 3480, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Close_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_44Close_port(__pyx_self, __pyx_v_port_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_44Close_port(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_port_name) {
  char *__pyx_v_cportname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Close_port", 0);
  __Pyx_INCREF(__pyx_v_port_name);

  /* "src/mpi4py/MPI.src/Comm.pyx":3484
 *     Close a port.
 *     """
 *     cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *     port_name = asmpistr(port_name, &cportname)
 *     with nogil: CHKERR( MPI_Close_port(cportname) )
 */
  __pyx_v_cportname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3485
 *     """
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Close_port(cportname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_port_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3486
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)
 *     with nogil: CHKERR( MPI_Close_port(cportname) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Close_port(__pyx_v_cportname)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(31, 3486, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3480
 * 
 * 
 * def Close_port(port_name: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Close a port.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Close_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3492
 * # ---------------
 * 
 * def Publish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_104__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_info);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_info);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self)->__pyx_arg_info))) __PYX_ERR(31, 3492, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(31, 3492, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(31, 3492, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_47Publish_name(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_46Publish_name, "Publish_name(service_name: str, port_name: str, info: Info = INFO_NULL) -> None\n\n    Publish a service name.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_47Publish_name = {"Publish_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_47Publish_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_46Publish_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_47Publish_name(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_service_name = 0;
  PyObject *__pyx_v_port_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Publish_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_service_name,&__pyx_n_s_port_name,&__pyx_n_s_info,0};
    __pyx_defaults1 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_self);
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_dynamic_args->__pyx_arg_info);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_service_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3492, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_port_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3492, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Publish_name", 0, 2, 3, 1); __PYX_ERR(31, 3492, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3492, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Publish_name") < 0)) __PYX_ERR(31, 3492, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_service_name = values[0];
    __pyx_v_port_name = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Publish_name", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 3492, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Publish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 3495, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_46Publish_name(__pyx_self, __pyx_v_service_name, __pyx_v_port_name, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_46Publish_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_name, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info) {
  char *__pyx_v_csrvcname;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Info __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Publish_name", 0);
  __Pyx_INCREF(__pyx_v_service_name);
  __Pyx_INCREF(__pyx_v_port_name);

  /* "src/mpi4py/MPI.src/Comm.pyx":3500
 *     Publish a service name.
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef char *cportname = NULL
 */
  __pyx_v_csrvcname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3501
 *     """
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname)             # <<<<<<<<<<<<<<
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_service_name, (&__pyx_v_csrvcname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_service_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3502
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *     port_name = asmpistr(port_name, &cportname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 */
  __pyx_v_cportname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3503
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3503, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_port_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3504
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )
 * 
 */
  if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(31, 3504, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_2 == ((MPI_Info)MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(31, 3504, __pyx_L1_error)
  __pyx_v_cinfo = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":3505
 *     port_name = asmpistr(port_name, &cportname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 *     with nogil: CHKERR( MPI_Publish_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Publish_name(__pyx_v_csrvcname, __pyx_v_cinfo, __pyx_v_cportname)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3505, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3492
 * # ---------------
 * 
 * def Publish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Publish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_service_name);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3508
 * 
 * 
 * def Unpublish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_106__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_self)->__pyx_arg_info);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_self)->__pyx_arg_info);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_self)->__pyx_arg_info))) __PYX_ERR(31, 3508, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(31, 3508, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(31, 3508, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_49Unpublish_name(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_48Unpublish_name, "Unpublish_name(service_name: str, port_name: str, info: Info = INFO_NULL) -> None\n\n    Unpublish a service name.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_49Unpublish_name = {"Unpublish_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_49Unpublish_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_48Unpublish_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_49Unpublish_name(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_service_name = 0;
  PyObject *__pyx_v_port_name = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Unpublish_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_service_name,&__pyx_n_s_port_name,&__pyx_n_s_info,0};
    __pyx_defaults2 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_self);
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_dynamic_args->__pyx_arg_info);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_service_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3508, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_port_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3508, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Unpublish_name", 0, 2, 3, 1); __PYX_ERR(31, 3508, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3508, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Unpublish_name") < 0)) __PYX_ERR(31, 3508, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_service_name = values[0];
    __pyx_v_port_name = values[1];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unpublish_name", 0, 2, 3, __pyx_nargs); __PYX_ERR(31, 3508, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Unpublish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(31, 3511, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_48Unpublish_name(__pyx_self, __pyx_v_service_name, __pyx_v_port_name, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_48Unpublish_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_name, PyObject *__pyx_v_port_name, struct PyMPIInfoObject *__pyx_v_info) {
  char *__pyx_v_csrvcname;
  char *__pyx_v_cportname;
  MPI_Info __pyx_v_cinfo;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Info __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Unpublish_name", 0);
  __Pyx_INCREF(__pyx_v_service_name);
  __Pyx_INCREF(__pyx_v_port_name);

  /* "src/mpi4py/MPI.src/Comm.pyx":3516
 *     Unpublish a service name.
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef char *cportname = NULL
 */
  __pyx_v_csrvcname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3517
 *     """
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname)             # <<<<<<<<<<<<<<
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_service_name, (&__pyx_v_csrvcname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_service_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3518
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef char *cportname = NULL             # <<<<<<<<<<<<<<
 *     port_name = asmpistr(port_name, &cportname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 */
  __pyx_v_cportname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3519
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_port_name, (&__pyx_v_cportname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_port_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3520
 *     cdef char *cportname = NULL
 *     port_name = asmpistr(port_name, &cportname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )
 * 
 */
  if (!(likely(__Pyx_TypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(31, 3520, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Info(((PyObject *)__pyx_v_info)); if (unlikely(__pyx_t_2 == ((MPI_Info)MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(31, 3520, __pyx_L1_error)
  __pyx_v_cinfo = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":3521
 *     port_name = asmpistr(port_name, &cportname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 *     with nogil: CHKERR( MPI_Unpublish_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Unpublish_name(__pyx_v_csrvcname, __pyx_v_cinfo, __pyx_v_cportname)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3521, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3508
 * 
 * 
 * def Unpublish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Unpublish_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_service_name);
  __Pyx_XDECREF(__pyx_v_port_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Comm.pyx":3524
 * 
 * 
 * def Lookup_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     info: Info = INFO_NULL,
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_108__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_self)->__pyx_arg_info);
  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_self)->__pyx_arg_info);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_self)->__pyx_arg_info)) __PYX_ERR(31, 3524, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(31, 3524, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(31, 3524, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_51Lookup_name(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_50Lookup_name, "Lookup_name(service_name: str, info: Info = INFO_NULL) -> str\n\n    Lookup a port name given a service name.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_51Lookup_name = {"Lookup_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_51Lookup_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_50Lookup_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_51Lookup_name(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_service_name = 0;
  PyObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Lookup_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_service_name,&__pyx_n_s_info,0};
    __pyx_defaults3 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_self);
    values[1] = __Pyx_Arg_NewRef_FASTCALL(__pyx_dynamic_args->__pyx_arg_info);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_service_name)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3524, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 3524, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Lookup_name") < 0)) __PYX_ERR(31, 3524, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_service_name = values[0];
    __pyx_v_info = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Lookup_name", 0, 1, 2, __pyx_nargs); __PYX_ERR(31, 3524, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Lookup_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_50Lookup_name(__pyx_self, __pyx_v_service_name, __pyx_v_info);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_50Lookup_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_name, PyObject *__pyx_v_info) {
  char *__pyx_v_csrvcname;
  MPI_Info __pyx_v_cinfo;
  char __pyx_v_cportname[(MPI_MAX_PORT_NAME + 1)];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Info __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Lookup_name", 0);
  __Pyx_INCREF(__pyx_v_service_name);

  /* "src/mpi4py/MPI.src/Comm.pyx":3531
 *     Lookup a port name given a service name.
 *     """
 *     cdef char *csrvcname = NULL             # <<<<<<<<<<<<<<
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 */
  __pyx_v_csrvcname = NULL;

  /* "src/mpi4py/MPI.src/Comm.pyx":3532
 *     """
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname)             # <<<<<<<<<<<<<<
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_service_name, (&__pyx_v_csrvcname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_service_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3533
 *     cdef char *csrvcname = NULL
 *     service_name = asmpistr(service_name, &csrvcname)
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)             # <<<<<<<<<<<<<<
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     cportname[0] = 0  # just in case
 */
  if (!(likely(__Pyx_TypeTest(__pyx_v_info, __pyx_ptype_6mpi4py_3MPI_Info)))) __PYX_ERR(31, 3533, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Info(__pyx_v_info); if (unlikely(__pyx_t_2 == ((MPI_Info)MPI_INFO_NULL) && PyErr_Occurred())) __PYX_ERR(31, 3533, __pyx_L1_error)
  __pyx_v_cinfo = __pyx_t_2;

  /* "src/mpi4py/MPI.src/Comm.pyx":3535
 *     cdef MPI_Info cinfo = arg_Info(<Info?>info)
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     cportname[0] = 0  # just in case             # <<<<<<<<<<<<<<
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case
 */
  (__pyx_v_cportname[0]) = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3536
 *     cdef char cportname[MPI_MAX_PORT_NAME+1]
 *     cportname[0] = 0  # just in case
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )             # <<<<<<<<<<<<<<
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case
 *     return mpistr(cportname)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Lookup_name(__pyx_v_csrvcname, __pyx_v_cinfo, __pyx_v_cportname)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(31, 3536, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Comm.pyx":3537
 *     cportname[0] = 0  # just in case
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case             # <<<<<<<<<<<<<<
 *     return mpistr(cportname)
 */
  (__pyx_v_cportname[MPI_MAX_PORT_NAME]) = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3538
 *     with nogil: CHKERR( MPI_Lookup_name(csrvcname, cinfo, cportname) )
 *     cportname[MPI_MAX_PORT_NAME] = 0  # just in case
 *     return mpistr(cportname)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cportname); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3524
 * 
 * 
 * def Lookup_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     info: Info = INFO_NULL,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Lookup_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_service_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":32
 *     """
 * 
 *     def __cinit__(self, Win win: Win | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, win)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_3Win_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_3Win_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIWinObject *__pyx_v_win = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_win,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIWinObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_win);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 32, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(32, 32, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_win = ((struct PyMPIWinObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(32, 32, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_win), __pyx_ptype_6mpi4py_3MPI_Win, 1, "win", 0))) __PYX_ERR(32, 32, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win___cinit__(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_win);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_3Win___cinit__(struct PyMPIWinObject *__pyx_v_self, struct PyMPIWinObject *__pyx_v_win) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":33
 * 
 *     def __cinit__(self, Win win: Win | None = None):
 *         cinit(self, win)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_win); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 33, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":32
 *     """
 * 
 *     def __cinit__(self, Win win: Win | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, win)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":35
 *         cinit(self, win)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_3Win_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_3Win_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_3Win_2__dealloc__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_3Win_2__dealloc__(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":36
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 36, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":35
 *         cinit(self, win)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.Win.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/Win.pyx":38
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Win): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_4__richcmp__(((struct PyMPIWinObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4__richcmp__(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":39
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Win): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_Win); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":40
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, Win): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":38
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, Win): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":42
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_3Win_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_3Win_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_6__bool__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_3Win_6__bool__(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/Win.pyx":43
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":42
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":45
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_8__reduce__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_8__reduce__(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":46
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":45
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":50
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_6handle___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6handle___get__(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":51
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_9__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":50
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":53
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Win:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_10fromhandle, "fromhandle(cls, handle: int) -> Win\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 53, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(32, 53, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 53, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":58
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_Win> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(32, 58, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_Win)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":53
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Win:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":60
 *         return fromhandle(<MPI_Win> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_12free, "free(self) -> None\n\n        Call `Free` if not null.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_12free(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_12free(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":64
 *         Call `Free` if not null.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # Window Creation
 */
  __pyx_t_1 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 64, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":60
 *         return fromhandle(<MPI_Win> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":69
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_15Create(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_14Create, "Create(cls, memory: Buffer | Bottom, disp_unit: int = 1, info: Info = INFO_NULL, comm: Intracomm = COMM_SELF) -> Self\n\n        Create an window object for one-sided communication.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_15Create = {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_15Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_14Create};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_15Create(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_memory = 0;
  MPI_Aint __pyx_v_disp_unit;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_memory,&__pyx_n_s_disp_unit,&__pyx_n_s_info,&__pyx_n_s_comm,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__182);
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__183);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_memory)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 69, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_disp_unit);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 69, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 69, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 69, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create") < 0)) __PYX_ERR(32, 69, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_memory = values[0];
    if (values[1]) {
      __pyx_v_disp_unit = __Pyx_PyInt_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp_unit == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 73, __pyx_L3_error)
    } else {
      __pyx_v_disp_unit = ((MPI_Aint)1);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create", 0, 1, 4, __pyx_nargs); __PYX_ERR(32, 69, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 74, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(32, 75, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_14Create(((PyTypeObject*)__pyx_v_cls), __pyx_v_memory, __pyx_v_disp_unit, __pyx_v_info, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_14Create(PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_memory, MPI_Aint __pyx_v_disp_unit, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm) {
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  struct PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create", 0);
  __Pyx_INCREF(__pyx_v_memory);

  /* "src/mpi4py/MPI.src/Win.pyx":80
 *         Create an window object for one-sided communication.
 *         """
 *         cdef void *base = MPI_BOTTOM             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         if is_BOTTOM(memory):
 */
  __pyx_v_base = MPI_BOTTOM;

  /* "src/mpi4py/MPI.src/Win.pyx":81
 *         """
 *         cdef void *base = MPI_BOTTOM
 *         cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *         if is_BOTTOM(memory):
 *             memory = None
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":82
 *         cdef void *base = MPI_BOTTOM
 *         cdef MPI_Aint size = 0
 *         if is_BOTTOM(memory):             # <<<<<<<<<<<<<<
 *             memory = None
 *         if memory is not None:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_is_BOTTOM(__pyx_v_memory); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(32, 82, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Win.pyx":83
 *         cdef MPI_Aint size = 0
 *         if is_BOTTOM(memory):
 *             memory = None             # <<<<<<<<<<<<<<
 *         if memory is not None:
 *             memory = asbuffer_w(memory, &base, &size)
 */
    __Pyx_INCREF(Py_None);
    __Pyx_DECREF_SET(__pyx_v_memory, Py_None);

    /* "src/mpi4py/MPI.src/Win.pyx":82
 *         cdef void *base = MPI_BOTTOM
 *         cdef MPI_Aint size = 0
 *         if is_BOTTOM(memory):             # <<<<<<<<<<<<<<
 *             memory = None
 *         if memory is not None:
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":84
 *         if is_BOTTOM(memory):
 *             memory = None
 *         if memory is not None:             # <<<<<<<<<<<<<<
 *             memory = asbuffer_w(memory, &base, &size)
 *         cdef Win win = <Win>New(cls)
 */
  __pyx_t_1 = (__pyx_v_memory != Py_None);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Win.pyx":85
 *             memory = None
 *         if memory is not None:
 *             memory = asbuffer_w(memory, &base, &size)             # <<<<<<<<<<<<<<
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_create_c(
 */
    __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_memory, (&__pyx_v_base), (&__pyx_v_size))); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_memory, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Win.pyx":84
 *         if is_BOTTOM(memory):
 *             memory = None
 *         if memory is not None:             # <<<<<<<<<<<<<<
 *             memory = asbuffer_w(memory, &base, &size)
 *         cdef Win win = <Win>New(cls)
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":86
 *         if memory is not None:
 *             memory = asbuffer_w(memory, &base, &size)
 *         cdef Win win = <Win>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_create_c(
 *             base, size, disp_unit,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":87
 *             memory = asbuffer_w(memory, &base, &size)
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_create_c(             # <<<<<<<<<<<<<<
 *             base, size, disp_unit,
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":89
 *         with nogil: CHKERR( MPI_Win_create_c(
 *             base, size, disp_unit,
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )             # <<<<<<<<<<<<<<
 *         win_set_eh(win.ob_mpi)
 *         win.ob_mem = memory
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_create_c(__pyx_v_base, __pyx_v_size, __pyx_v_disp_unit, __pyx_v_info->ob_mpi, __pyx_v_comm->__pyx_base.ob_mpi, (&__pyx_v_win->ob_mpi))); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(32, 87, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":87
 *             memory = asbuffer_w(memory, &base, &size)
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_create_c(             # <<<<<<<<<<<<<<
 *             base, size, disp_unit,
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":90
 *             base, size, disp_unit,
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         win.ob_mem = memory
 *         return win
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_win_set_eh(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(32, 90, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":91
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)
 *         win.ob_mem = memory             # <<<<<<<<<<<<<<
 *         return win
 * 
 */
  __Pyx_INCREF(__pyx_v_memory);
  __Pyx_GIVEREF(__pyx_v_memory);
  __Pyx_GOTREF(__pyx_v_win->ob_mem);
  __Pyx_DECREF(__pyx_v_win->ob_mem);
  __pyx_v_win->ob_mem = __pyx_v_memory;

  /* "src/mpi4py/MPI.src/Win.pyx":92
 *         win_set_eh(win.ob_mpi)
 *         win.ob_mem = memory
 *         return win             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_win);
  __pyx_r = ((PyObject *)__pyx_v_win);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":69
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XDECREF(__pyx_v_memory);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":94
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_17Allocate(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_16Allocate, "Allocate(cls, size: int, disp_unit: int = 1, info: Info = INFO_NULL, comm: Intracomm = COMM_SELF) -> Self\n\n        Create an window object for one-sided communication.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_17Allocate = {"Allocate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_17Allocate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_16Allocate};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_17Allocate(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Aint __pyx_v_size;
  MPI_Aint __pyx_v_disp_unit;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allocate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_size_2,&__pyx_n_s_disp_unit,&__pyx_n_s_info,&__pyx_n_s_comm,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__184);
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__185);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 94, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_disp_unit);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 94, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 94, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 94, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allocate") < 0)) __PYX_ERR(32, 94, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_size = __Pyx_PyInt_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_size == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 97, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_disp_unit = __Pyx_PyInt_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp_unit == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 98, __pyx_L3_error)
    } else {
      __pyx_v_disp_unit = ((MPI_Aint)1);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allocate", 0, 1, 4, __pyx_nargs); __PYX_ERR(32, 94, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Allocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 99, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(32, 100, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_16Allocate(((PyTypeObject*)__pyx_v_cls), __pyx_v_size, __pyx_v_disp_unit, __pyx_v_info, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_16Allocate(PyTypeObject *__pyx_v_cls, MPI_Aint __pyx_v_size, MPI_Aint __pyx_v_disp_unit, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm) {
  void *__pyx_v_base;
  struct PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allocate", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":105
 *         Create an window object for one-sided communication.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_allocate_c(
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":106
 *         """
 *         cdef void *base = NULL
 *         cdef Win win = <Win>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_allocate_c(
 *             size, disp_unit, info.ob_mpi,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":107
 *         cdef void *base = NULL
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_allocate_c(             # <<<<<<<<<<<<<<
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":109
 *         with nogil: CHKERR( MPI_Win_allocate_c(
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )             # <<<<<<<<<<<<<<
 *         win_set_eh(win.ob_mpi)
 *         return win
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_allocate_c(__pyx_v_size, __pyx_v_disp_unit, __pyx_v_info->ob_mpi, __pyx_v_comm->__pyx_base.ob_mpi, (&__pyx_v_base), (&__pyx_v_win->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 107, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":107
 *         cdef void *base = NULL
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_allocate_c(             # <<<<<<<<<<<<<<
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":110
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         return win
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_win_set_eh(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 110, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":111
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)
 *         return win             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_win);
  __pyx_r = ((PyObject *)__pyx_v_win);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":94
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Allocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":113
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate_shared(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_19Allocate_shared(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_18Allocate_shared, "Allocate_shared(cls, size: int, disp_unit: int = 1, info: Info = INFO_NULL, comm: Intracomm = COMM_SELF) -> Self\n\n        Create an window object for one-sided communication.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_19Allocate_shared = {"Allocate_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_19Allocate_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_18Allocate_shared};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_19Allocate_shared(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Aint __pyx_v_size;
  MPI_Aint __pyx_v_disp_unit;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Allocate_shared (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_size_2,&__pyx_n_s_disp_unit,&__pyx_n_s_info,&__pyx_n_s_comm,0};
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__186);
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__187);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 113, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_disp_unit);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 113, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Allocate_shared") < 0)) __PYX_ERR(32, 113, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_size = __Pyx_PyInt_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_size == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 116, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_disp_unit = __Pyx_PyInt_As_MPI_Aint(values[1]); if (unlikely((__pyx_v_disp_unit == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 117, __pyx_L3_error)
    } else {
      __pyx_v_disp_unit = ((MPI_Aint)1);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[2]);
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Allocate_shared", 0, 1, 4, __pyx_nargs); __PYX_ERR(32, 113, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Allocate_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 118, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(32, 119, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_18Allocate_shared(((PyTypeObject*)__pyx_v_cls), __pyx_v_size, __pyx_v_disp_unit, __pyx_v_info, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_18Allocate_shared(PyTypeObject *__pyx_v_cls, MPI_Aint __pyx_v_size, MPI_Aint __pyx_v_disp_unit, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm) {
  void *__pyx_v_base;
  struct PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Allocate_shared", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":124
 *         Create an window object for one-sided communication.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_allocate_shared_c(
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":125
 *         """
 *         cdef void *base = NULL
 *         cdef Win win = <Win>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_allocate_shared_c(
 *             size, disp_unit, info.ob_mpi,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":126
 *         cdef void *base = NULL
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_allocate_shared_c(             # <<<<<<<<<<<<<<
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":128
 *         with nogil: CHKERR( MPI_Win_allocate_shared_c(
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )             # <<<<<<<<<<<<<<
 *         win_set_eh(win.ob_mpi)
 *         return win
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_allocate_shared_c(__pyx_v_size, __pyx_v_disp_unit, __pyx_v_info->ob_mpi, __pyx_v_comm->__pyx_base.ob_mpi, (&__pyx_v_base), (&__pyx_v_win->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 126, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":126
 *         cdef void *base = NULL
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_allocate_shared_c(             # <<<<<<<<<<<<<<
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":129
 *             size, disp_unit, info.ob_mpi,
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         return win
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_win_set_eh(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 129, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":130
 *             comm.ob_mpi, &base, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)
 *         return win             # <<<<<<<<<<<<<<
 * 
 *     def Shared_query(self, int rank: int) -> tuple[buffer, int]:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_win);
  __pyx_r = ((PyObject *)__pyx_v_win);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":113
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate_shared(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Allocate_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":132
 *         return win
 * 
 *     def Shared_query(self, int rank: int) -> tuple[buffer, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Query the process-local address for remote memory segments.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_21Shared_query(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_20Shared_query, "Shared_query(self, rank: int) -> tuple[buffer, int]\n\n        Query the process-local address for remote memory segments.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_21Shared_query = {"Shared_query", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_21Shared_query, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_20Shared_query};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_21Shared_query(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Shared_query (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 132, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Shared_query") < 0)) __PYX_ERR(32, 132, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 132, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Shared_query", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 132, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Shared_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_20Shared_query(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_rank);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_20Shared_query(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank) {
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  MPI_Aint __pyx_v_disp_unit;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Shared_query", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":136
 *         Query the process-local address for remote memory segments.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         cdef MPI_Aint disp_unit = 1
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":137
 *         """
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint disp_unit = 1
 *         with nogil: CHKERR( MPI_Win_shared_query_c(
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":138
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0
 *         cdef MPI_Aint disp_unit = 1             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_shared_query_c(
 *             self.ob_mpi, rank,
 */
  __pyx_v_disp_unit = 1;

  /* "src/mpi4py/MPI.src/Win.pyx":139
 *         cdef MPI_Aint size = 0
 *         cdef MPI_Aint disp_unit = 1
 *         with nogil: CHKERR( MPI_Win_shared_query_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, rank,
 *             &size, &disp_unit, &base) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":141
 *         with nogil: CHKERR( MPI_Win_shared_query_c(
 *             self.ob_mpi, rank,
 *             &size, &disp_unit, &base) )             # <<<<<<<<<<<<<<
 *         return (tobuffer(self, base, size, 0), disp_unit)
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_shared_query_c(__pyx_v_self->ob_mpi, __pyx_v_rank, (&__pyx_v_size), (&__pyx_v_disp_unit), (&__pyx_v_base))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 139, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":139
 *         cdef MPI_Aint size = 0
 *         cdef MPI_Aint disp_unit = 1
 *         with nogil: CHKERR( MPI_Win_shared_query_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, rank,
 *             &size, &disp_unit, &base) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":142
 *             self.ob_mpi, rank,
 *             &size, &disp_unit, &base) )
 *         return (tobuffer(self, base, size, 0), disp_unit)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_tobuffer(((PyObject *)__pyx_v_self), __pyx_v_base, __pyx_v_size, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Aint(__pyx_v_disp_unit); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(32, 142, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(32, 142, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":132
 *         return win
 * 
 *     def Shared_query(self, int rank: int) -> tuple[buffer, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Query the process-local address for remote memory segments.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Shared_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":144
 *         return (tobuffer(self, base, size, 0), disp_unit)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_dynamic(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_23Create_dynamic(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_22Create_dynamic, "Create_dynamic(cls, info: Info = INFO_NULL, comm: Intracomm = COMM_SELF) -> Self\n\n        Create an window object for one-sided communication.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_23Create_dynamic = {"Create_dynamic", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_23Create_dynamic, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_22Create_dynamic};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_23Create_dynamic(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_dynamic (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,&__pyx_n_s_comm,0};
    values[0] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__188);
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__189);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 144, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_dynamic") < 0)) __PYX_ERR(32, 144, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_dynamic", 0, 0, 2, __pyx_nargs); __PYX_ERR(32, 144, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 147, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(32, 148, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_22Create_dynamic(((PyTypeObject*)__pyx_v_cls), __pyx_v_info, __pyx_v_comm);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_22Create_dynamic(PyTypeObject *__pyx_v_cls, struct PyMPIInfoObject *__pyx_v_info, struct PyMPIIntracommObject *__pyx_v_comm) {
  struct PyMPIWinObject *__pyx_v_win = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_dynamic", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":153
 *         Create an window object for one-sided communication.
 *         """
 *         cdef Win win = <Win>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_create_dynamic(
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_win = ((struct PyMPIWinObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":154
 *         """
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_create_dynamic(             # <<<<<<<<<<<<<<
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":155
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_create_dynamic(
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )             # <<<<<<<<<<<<<<
 *         win_set_eh(win.ob_mpi)
 *         win.ob_mem = {}
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_create_dynamic(__pyx_v_info->ob_mpi, __pyx_v_comm->__pyx_base.ob_mpi, (&__pyx_v_win->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 154, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":154
 *         """
 *         cdef Win win = <Win>New(cls)
 *         with nogil: CHKERR( MPI_Win_create_dynamic(             # <<<<<<<<<<<<<<
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":156
 *         with nogil: CHKERR( MPI_Win_create_dynamic(
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)             # <<<<<<<<<<<<<<
 *         win.ob_mem = {}
 *         return win
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_win_set_eh(__pyx_v_win->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 156, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":157
 *             info.ob_mpi, comm.ob_mpi, &win.ob_mpi) )
 *         win_set_eh(win.ob_mpi)
 *         win.ob_mem = {}             # <<<<<<<<<<<<<<
 *         return win
 * 
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_win->ob_mem);
  __Pyx_DECREF(__pyx_v_win->ob_mem);
  __pyx_v_win->ob_mem = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":158
 *         win_set_eh(win.ob_mpi)
 *         win.ob_mem = {}
 *         return win             # <<<<<<<<<<<<<<
 * 
 *     def Attach(self, memory: Buffer) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_win);
  __pyx_r = ((PyObject *)__pyx_v_win);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":144
 *         return (tobuffer(self, base, size, 0), disp_unit)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_dynamic(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_dynamic", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_win);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":160
 *         return win
 * 
 *     def Attach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a local memory region.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_25Attach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_24Attach, "Attach(self, memory: Buffer) -> None\n\n        Attach a local memory region.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_25Attach = {"Attach", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_25Attach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_24Attach};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_25Attach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_memory = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Attach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_memory,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_memory)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 160, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Attach") < 0)) __PYX_ERR(32, 160, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_memory = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Attach", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 160, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Attach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_24Attach(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_memory);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_24Attach(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_memory) {
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Attach", 0);
  __Pyx_INCREF(__pyx_v_memory);

  /* "src/mpi4py/MPI.src/Win.pyx":164
 *         Attach a local memory region.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         memory = asbuffer_w(memory, &base, &size)
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":165
 *         """
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *         memory = asbuffer_w(memory, &base, &size)
 *         with nogil: CHKERR( MPI_Win_attach(self.ob_mpi, base, size) )
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":166
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0
 *         memory = asbuffer_w(memory, &base, &size)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_attach(self.ob_mpi, base, size) )
 *         try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_memory, (&__pyx_v_base), (&__pyx_v_size))); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_memory, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":167
 *         cdef MPI_Aint size = 0
 *         memory = asbuffer_w(memory, &base, &size)
 *         with nogil: CHKERR( MPI_Win_attach(self.ob_mpi, base, size) )             # <<<<<<<<<<<<<<
 *         try:
 *             if self.ob_mem is None: self.ob_mem = {}
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_attach(__pyx_v_self->ob_mpi, __pyx_v_base, __pyx_v_size)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 167, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":168
 *         memory = asbuffer_w(memory, &base, &size)
 *         with nogil: CHKERR( MPI_Win_attach(self.ob_mpi, base, size) )
 *         try:             # <<<<<<<<<<<<<<
 *             if self.ob_mem is None: self.ob_mem = {}
 *             (<dict>self.ob_mem)[<MPI_Aint>base] = memory
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Win.pyx":169
 *         with nogil: CHKERR( MPI_Win_attach(self.ob_mpi, base, size) )
 *         try:
 *             if self.ob_mem is None: self.ob_mem = {}             # <<<<<<<<<<<<<<
 *             (<dict>self.ob_mem)[<MPI_Aint>base] = memory
 *         except:   # ~> uncovered  # noqa
 */
      __pyx_t_6 = (__pyx_v_self->ob_mem == Py_None);
      if (__pyx_t_6) {
        __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 169, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_v_self->ob_mem);
        __Pyx_DECREF(__pyx_v_self->ob_mem);
        __pyx_v_self->ob_mem = __pyx_t_1;
        __pyx_t_1 = 0;
      }

      /* "src/mpi4py/MPI.src/Win.pyx":170
 *         try:
 *             if self.ob_mem is None: self.ob_mem = {}
 *             (<dict>self.ob_mem)[<MPI_Aint>base] = memory             # <<<<<<<<<<<<<<
 *         except:   # ~> uncovered  # noqa
 *             pass  # ~> uncovered
 */
      if (unlikely(__pyx_v_self->ob_mem == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(32, 170, __pyx_L6_error)
      }
      __pyx_t_1 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 170, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely((PyDict_SetItem(((PyObject*)__pyx_v_self->ob_mem), __pyx_t_1, __pyx_v_memory) < 0))) __PYX_ERR(32, 170, __pyx_L6_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/Win.pyx":168
 *         memory = asbuffer_w(memory, &base, &size)
 *         with nogil: CHKERR( MPI_Win_attach(self.ob_mpi, base, size) )
 *         try:             # <<<<<<<<<<<<<<
 *             if self.ob_mem is None: self.ob_mem = {}
 *             (<dict>self.ob_mem)[<MPI_Aint>base] = memory
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/Win.pyx":171
 *             if self.ob_mem is None: self.ob_mem = {}
 *             (<dict>self.ob_mem)[<MPI_Aint>base] = memory
 *         except:   # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 *             pass  # ~> uncovered
 * 
 */
    /*except:*/ {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L7_exception_handled;
    }
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L11_try_end:;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":160
 *         return win
 * 
 *     def Attach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a local memory region.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Attach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_memory);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":174
 *             pass  # ~> uncovered
 * 
 *     def Detach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Detach a local memory region.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_27Detach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_26Detach, "Detach(self, memory: Buffer) -> None\n\n        Detach a local memory region.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_27Detach = {"Detach", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_27Detach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_26Detach};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_27Detach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_memory = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Detach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_memory,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_memory)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 174, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Detach") < 0)) __PYX_ERR(32, 174, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_memory = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Detach", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 174, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Detach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_26Detach(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_memory);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_26Detach(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_memory) {
  void *__pyx_v_base;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Detach", 0);
  __Pyx_INCREF(__pyx_v_memory);

  /* "src/mpi4py/MPI.src/Win.pyx":178
 *         Detach a local memory region.
 *         """
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         memory = asbuffer_w(memory, &base, NULL)
 *         with nogil: CHKERR( MPI_Win_detach(self.ob_mpi, base) )
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":179
 *         """
 *         cdef void *base = NULL
 *         memory = asbuffer_w(memory, &base, NULL)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_detach(self.ob_mpi, base) )
 *         try:
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer_w(__pyx_v_memory, (&__pyx_v_base), NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_memory, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":180
 *         cdef void *base = NULL
 *         memory = asbuffer_w(memory, &base, NULL)
 *         with nogil: CHKERR( MPI_Win_detach(self.ob_mpi, base) )             # <<<<<<<<<<<<<<
 *         try:
 *             if self.ob_mem is None: return
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_detach(__pyx_v_self->ob_mpi, __pyx_v_base)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 180, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":181
 *         memory = asbuffer_w(memory, &base, NULL)
 *         with nogil: CHKERR( MPI_Win_detach(self.ob_mpi, base) )
 *         try:             # <<<<<<<<<<<<<<
 *             if self.ob_mem is None: return
 *             del (<dict>self.ob_mem)[<MPI_Aint>base]
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Win.pyx":182
 *         with nogil: CHKERR( MPI_Win_detach(self.ob_mpi, base) )
 *         try:
 *             if self.ob_mem is None: return             # <<<<<<<<<<<<<<
 *             del (<dict>self.ob_mem)[<MPI_Aint>base]
 *         except:   # ~> uncovered  # noqa
 */
      __pyx_t_6 = (__pyx_v_self->ob_mem == Py_None);
      if (__pyx_t_6) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        goto __pyx_L10_try_return;
      }

      /* "src/mpi4py/MPI.src/Win.pyx":183
 *         try:
 *             if self.ob_mem is None: return
 *             del (<dict>self.ob_mem)[<MPI_Aint>base]             # <<<<<<<<<<<<<<
 *         except:   # ~> uncovered  # noqa
 *             pass  # ~> uncovered
 */
      if (unlikely(__pyx_v_self->ob_mem == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(32, 183, __pyx_L6_error)
      }
      __pyx_t_1 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 183, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely((PyDict_DelItem(((PyObject*)__pyx_v_self->ob_mem), __pyx_t_1) < 0))) __PYX_ERR(32, 183, __pyx_L6_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/mpi4py/MPI.src/Win.pyx":181
 *         memory = asbuffer_w(memory, &base, NULL)
 *         with nogil: CHKERR( MPI_Win_detach(self.ob_mpi, base) )
 *         try:             # <<<<<<<<<<<<<<
 *             if self.ob_mem is None: return
 *             del (<dict>self.ob_mem)[<MPI_Aint>base]
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L11_try_end;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/mpi4py/MPI.src/Win.pyx":184
 *             if self.ob_mem is None: return
 *             del (<dict>self.ob_mem)[<MPI_Aint>base]
 *         except:   # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 *             pass  # ~> uncovered
 * 
 */
    /*except:*/ {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L7_exception_handled;
    }

    /* "src/mpi4py/MPI.src/Win.pyx":181
 *         memory = asbuffer_w(memory, &base, NULL)
 *         with nogil: CHKERR( MPI_Win_detach(self.ob_mpi, base) )
 *         try:             # <<<<<<<<<<<<<<
 *             if self.ob_mem is None: return
 *             del (<dict>self.ob_mem)[<MPI_Aint>base]
 */
    __pyx_L10_try_return:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L0;
    __pyx_L7_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L11_try_end:;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":174
 *             pass  # ~> uncovered
 * 
 *     def Detach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Detach a local memory region.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Detach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_memory);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":187
 *             pass  # ~> uncovered
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_29Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_28Free, "Free(self) -> None\n\n        Free a window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_29Free = {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_29Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_28Free};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_29Free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_28Free(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_28Free(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":191
 *         Free a window.
 *         """
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         self.ob_mem = None
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_free((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 191, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":192
 *         """
 *         with nogil: CHKERR( MPI_Win_free(&self.ob_mpi) )
 *         self.ob_mem = None             # <<<<<<<<<<<<<<
 * 
 *     # Window Info
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->ob_mem);
  __Pyx_DECREF(__pyx_v_self->ob_mem);
  __pyx_v_self->ob_mem = Py_None;

  /* "src/mpi4py/MPI.src/Win.pyx":187
 *             pass  # ~> uncovered
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a window.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":197
 *     # -----------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_31Set_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_30Set_info, "Set_info(self, info: Info) -> None\n\n        Set new values for the hints associated with a window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_31Set_info = {"Set_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_31Set_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_30Set_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_31Set_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 197, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_info") < 0)) __PYX_ERR(32, 197, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 197, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(32, 197, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_30Set_info(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_30Set_info(struct PyMPIWinObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_info", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":201
 *         Set new values for the hints associated with a window.
 *         """
 *         with nogil: CHKERR( MPI_Win_set_info(self.ob_mpi, info.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_info(self) -> Info:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_info(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 201, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":197
 *     # -----------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a window.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":203
 *         with nogil: CHKERR( MPI_Win_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_33Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_32Get_info, "Get_info(self) -> Info\n\n        Return the current hints for a window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_33Get_info = {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_33Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_32Get_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_33Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_info", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_info", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_32Get_info(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_32Get_info(struct PyMPIWinObject *__pyx_v_self) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_info", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":207
 *         Return the current hints for a window.
 *         """
 *         cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_get_info( self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":208
 *         """
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_Win_get_info( self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_info(__pyx_v_self->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 208, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":209
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_Win_get_info( self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     property info:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":203
 *         with nogil: CHKERR( MPI_Win_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a window.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":213
 *     property info:
 *         """Info hints."""
 *         def __get__(self) -> Info:             # <<<<<<<<<<<<<<
 *             return self.Get_info()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_4info_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_4info_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_4info___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4info___get__(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":214
 *         """Info hints."""
 *         def __get__(self) -> Info:
 *             return self.Get_info()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: Info):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":213
 *     property info:
 *         """Info hints."""
 *         def __get__(self) -> Info:             # <<<<<<<<<<<<<<
 *             return self.Get_info()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":216
 *             return self.Get_info()
 * 
 *         def __set__(self, value: Info):             # <<<<<<<<<<<<<<
 *             self.Set_info(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_3Win_4info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_3Win_4info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_4info_2__set__(((struct PyMPIWinObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_3Win_4info_2__set__(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":217
 * 
 *         def __set__(self, value: Info):
 *             self.Set_info(value)             # <<<<<<<<<<<<<<
 * 
 *     # Window Group
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":216
 *             return self.Get_info()
 * 
 *         def __set__(self, value: Info):             # <<<<<<<<<<<<<<
 *             self.Set_info(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.info.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":222
 *     # -------------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that created the window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_35Get_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_34Get_group, "Get_group(self) -> Group\n\n        Access the group of processes that created the window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_35Get_group = {"Get_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_35Get_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_34Get_group};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_35Get_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_group (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_group", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_group", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_34Get_group(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_34Get_group(struct PyMPIWinObject *__pyx_v_self) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_group", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":226
 *         Access the group of processes that created the window.
 *         """
 *         cdef Group group = Group()             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":227
 *         """
 *         cdef Group group = Group()
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_group(__pyx_v_self->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 227, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":228
 *         cdef Group group = Group()
 *         with nogil: CHKERR( MPI_Win_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":222
 *     # -------------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that created the window.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":232
 *     property group:
 *         """Group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5group_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5group_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_5group___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5group___get__(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":233
 *         """Group."""
 *         def __get__(self) -> Group:
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     property group_size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":232
 *     property group:
 *         """Group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":237
 *     property group_size:
 *         """Group size."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_10group_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_10group_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_10group_size___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10group_size___get__(struct PyMPIWinObject *__pyx_v_self) {
  MPI_Group __pyx_v_group;
  int __pyx_v_group_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char const *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":238
 *         """Group size."""
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *             cdef int group_size  = -1
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 */
  __pyx_v_group = MPI_GROUP_NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":239
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 *             try:
 */
  __pyx_v_group_size = -1;

  /* "src/mpi4py/MPI.src/Win.pyx":240
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )             # <<<<<<<<<<<<<<
 *             try:
 *                 CHKERR( MPI_Group_size(group, &group_size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_group(__pyx_v_self->ob_mpi, (&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 240, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":241
 *             cdef int group_size  = -1
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 *             try:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_size(group, &group_size) )
 *             finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Win.pyx":242
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 *             try:
 *                 CHKERR( MPI_Group_size(group, &group_size) )             # <<<<<<<<<<<<<<
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_size(__pyx_v_group, (&__pyx_v_group_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 242, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/Win.pyx":244
 *                 CHKERR( MPI_Group_size(group, &group_size) )
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )             # <<<<<<<<<<<<<<
 *             return group_size
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 244, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __pyx_t_1 = __pyx_lineno; __pyx_t_2 = __pyx_clineno; __pyx_t_3 = __pyx_filename;
      {
        __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(32, 244, __pyx_L7_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_2; __pyx_filename = __pyx_t_3;
      goto __pyx_L1_error;
      __pyx_L7_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":245
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_size             # <<<<<<<<<<<<<<
 * 
 *     property group_rank:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_group_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_r = __pyx_t_11;
  __pyx_t_11 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":237
 *     property group_size:
 *         """Group size."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.Win.group_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":249
 *     property group_rank:
 *         """Group rank."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_10group_rank_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_10group_rank_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_10group_rank___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_10group_rank___get__(struct PyMPIWinObject *__pyx_v_self) {
  MPI_Group __pyx_v_group;
  int __pyx_v_group_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char const *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":250
 *         """Group rank."""
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *             cdef int group_rank  = MPI_PROC_NULL
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 */
  __pyx_v_group = MPI_GROUP_NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":251
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 *             try:
 */
  __pyx_v_group_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":252
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )             # <<<<<<<<<<<<<<
 *             try:
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_group(__pyx_v_self->ob_mpi, (&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 252, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":253
 *             cdef int group_rank  = MPI_PROC_NULL
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 *             try:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )
 *             finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/Win.pyx":254
 *             CHKERR( MPI_Win_get_group(self.ob_mpi, &group) )
 *             try:
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )             # <<<<<<<<<<<<<<
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_rank(__pyx_v_group, (&__pyx_v_group_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 254, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/Win.pyx":256
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )             # <<<<<<<<<<<<<<
 *             return group_rank
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 256, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __pyx_t_1 = __pyx_lineno; __pyx_t_2 = __pyx_clineno; __pyx_t_3 = __pyx_filename;
      {
        __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(32, 256, __pyx_L7_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_2; __pyx_filename = __pyx_t_3;
      goto __pyx_L1_error;
      __pyx_L7_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":257
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_rank             # <<<<<<<<<<<<<<
 * 
 *     # Window Attributes
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_group_rank); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_r = __pyx_t_11;
  __pyx_t_11 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":249
 *     property group_rank:
 *         """Group rank."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.Win.group_rank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":262
 *     # -----------------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_37Get_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_36Get_attr, "Get_attr(self, keyval: int) -> int | Any | None\n\n        Retrieve attribute value by key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_37Get_attr = {"Get_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_37Get_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_36Get_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_37Get_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 262, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_attr") < 0)) __PYX_ERR(32, 262, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 262, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 262, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_36Get_attr(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_36Get_attr(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_keyval) {
  void *__pyx_v_attrval;
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_attr", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":266
 *         Retrieve attribute value by key.
 *         """
 *         cdef void *attrval = NULL             # <<<<<<<<<<<<<<
 *         cdef int flag = 0
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 */
  __pyx_v_attrval = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":267
 *         """
 *         cdef void *attrval = NULL
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if flag == 0: return None
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":268
 *         cdef void *attrval = NULL
 *         cdef int flag = 0
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )             # <<<<<<<<<<<<<<
 *         if flag == 0: return None
 *         if attrval == NULL: return 0
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_self->ob_mpi, __pyx_v_keyval, (&__pyx_v_attrval), (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 268, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":269
 *         cdef int flag = 0
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if flag == 0: return None             # <<<<<<<<<<<<<<
 *         if attrval == NULL: return 0
 *         # MPI-2 predefined attribute keyvals
 */
  __pyx_t_2 = (__pyx_v_flag == 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":270
 *         CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval, &attrval, &flag) )
 *         if flag == 0: return None
 *         if attrval == NULL: return 0             # <<<<<<<<<<<<<<
 *         # MPI-2 predefined attribute keyvals
 *         if keyval == MPI_WIN_BASE:
 */
  __pyx_t_2 = (__pyx_v_attrval == NULL);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_int_0);
    __pyx_r = __pyx_int_0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":272
 *         if attrval == NULL: return 0
 *         # MPI-2 predefined attribute keyvals
 *         if keyval == MPI_WIN_BASE:             # <<<<<<<<<<<<<<
 *             return <MPI_Aint>attrval
 *         elif keyval == MPI_WIN_SIZE:
 */
  __pyx_t_2 = (__pyx_v_keyval == MPI_WIN_BASE);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Win.pyx":273
 *         # MPI-2 predefined attribute keyvals
 *         if keyval == MPI_WIN_BASE:
 *             return <MPI_Aint>attrval             # <<<<<<<<<<<<<<
 *         elif keyval == MPI_WIN_SIZE:
 *             return (<MPI_Aint*>attrval)[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)__pyx_v_attrval)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Win.pyx":272
 *         if attrval == NULL: return 0
 *         # MPI-2 predefined attribute keyvals
 *         if keyval == MPI_WIN_BASE:             # <<<<<<<<<<<<<<
 *             return <MPI_Aint>attrval
 *         elif keyval == MPI_WIN_SIZE:
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":274
 *         if keyval == MPI_WIN_BASE:
 *             return <MPI_Aint>attrval
 *         elif keyval == MPI_WIN_SIZE:             # <<<<<<<<<<<<<<
 *             return (<MPI_Aint*>attrval)[0]
 *         elif keyval == MPI_WIN_DISP_UNIT:
 */
  __pyx_t_2 = (__pyx_v_keyval == MPI_WIN_SIZE);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Win.pyx":275
 *             return <MPI_Aint>attrval
 *         elif keyval == MPI_WIN_SIZE:
 *             return (<MPI_Aint*>attrval)[0]             # <<<<<<<<<<<<<<
 *         elif keyval == MPI_WIN_DISP_UNIT:
 *             return (<int*>attrval)[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_MPI_Aint((((MPI_Aint *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Win.pyx":274
 *         if keyval == MPI_WIN_BASE:
 *             return <MPI_Aint>attrval
 *         elif keyval == MPI_WIN_SIZE:             # <<<<<<<<<<<<<<
 *             return (<MPI_Aint*>attrval)[0]
 *         elif keyval == MPI_WIN_DISP_UNIT:
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":276
 *         elif keyval == MPI_WIN_SIZE:
 *             return (<MPI_Aint*>attrval)[0]
 *         elif keyval == MPI_WIN_DISP_UNIT:             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         # MPI-3 predefined attribute keyvals
 */
  __pyx_t_2 = (__pyx_v_keyval == MPI_WIN_DISP_UNIT);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Win.pyx":277
 *             return (<MPI_Aint*>attrval)[0]
 *         elif keyval == MPI_WIN_DISP_UNIT:
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # MPI-3 predefined attribute keyvals
 *         elif keyval == MPI_WIN_CREATE_FLAVOR:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Win.pyx":276
 *         elif keyval == MPI_WIN_SIZE:
 *             return (<MPI_Aint*>attrval)[0]
 *         elif keyval == MPI_WIN_DISP_UNIT:             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         # MPI-3 predefined attribute keyvals
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":279
 *             return (<int*>attrval)[0]
 *         # MPI-3 predefined attribute keyvals
 *         elif keyval == MPI_WIN_CREATE_FLAVOR:             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         elif keyval == MPI_WIN_MODEL:
 */
  __pyx_t_2 = (__pyx_v_keyval == MPI_WIN_CREATE_FLAVOR);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Win.pyx":280
 *         # MPI-3 predefined attribute keyvals
 *         elif keyval == MPI_WIN_CREATE_FLAVOR:
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         elif keyval == MPI_WIN_MODEL:
 *             return (<int*>attrval)[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Win.pyx":279
 *             return (<int*>attrval)[0]
 *         # MPI-3 predefined attribute keyvals
 *         elif keyval == MPI_WIN_CREATE_FLAVOR:             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         elif keyval == MPI_WIN_MODEL:
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":281
 *         elif keyval == MPI_WIN_CREATE_FLAVOR:
 *             return (<int*>attrval)[0]
 *         elif keyval == MPI_WIN_MODEL:             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         # user-defined attribute keyval
 */
  __pyx_t_2 = (__pyx_v_keyval == MPI_WIN_MODEL);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/Win.pyx":282
 *             return (<int*>attrval)[0]
 *         elif keyval == MPI_WIN_MODEL:
 *             return (<int*>attrval)[0]             # <<<<<<<<<<<<<<
 *         # user-defined attribute keyval
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int((((int *)__pyx_v_attrval)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/Win.pyx":281
 *         elif keyval == MPI_WIN_CREATE_FLAVOR:
 *             return (<int*>attrval)[0]
 *         elif keyval == MPI_WIN_MODEL:             # <<<<<<<<<<<<<<
 *             return (<int*>attrval)[0]
 *         # user-defined attribute keyval
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":284
 *             return (<int*>attrval)[0]
 *         # user-defined attribute keyval
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_get(__pyx_v_self->ob_mpi, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":262
 *     # -----------------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":286
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_39Set_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_38Set_attr, "Set_attr(self, keyval: int, attrval: Any) -> None\n\n        Store attribute value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_39Set_attr = {"Set_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_39Set_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_38Set_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_39Set_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  PyObject *__pyx_v_attrval = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,&__pyx_n_s_attrval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 286, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_attrval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 286, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, 1); __PYX_ERR(32, 286, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_attr") < 0)) __PYX_ERR(32, 286, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 286, __pyx_L3_error)
    __pyx_v_attrval = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_attr", 1, 2, 2, __pyx_nargs); __PYX_ERR(32, 286, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_38Set_attr(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_keyval, __pyx_v_attrval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_38Set_attr(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_keyval, PyObject *__pyx_v_attrval) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_attr", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":290
 *         Store attribute value associated with a key.
 *         """
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)             # <<<<<<<<<<<<<<
 * 
 *     def Delete_attr(self, int keyval: int) -> None:
 */
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_set(__pyx_v_self->ob_mpi, __pyx_v_keyval, __pyx_v_attrval); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 290, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":286
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":292
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_41Delete_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_40Delete_attr, "Delete_attr(self, keyval: int) -> None\n\n        Delete attribute value associated with a key.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_41Delete_attr = {"Delete_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_41Delete_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_40Delete_attr};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_41Delete_attr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Delete_attr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 292, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Delete_attr") < 0)) __PYX_ERR(32, 292, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 292, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete_attr", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 292, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_40Delete_attr(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_40Delete_attr(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_keyval) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Delete_attr", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":296
 *         Delete attribute value associated with a key.
 *         """
 *         PyMPI_attr_del(self.ob_mpi, keyval)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_del(__pyx_v_self->ob_mpi, __pyx_v_keyval); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 296, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":292
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Delete_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":298
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_43Create_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_42Create_keyval, "Create_keyval(cls, copy_fn: Callable[[Win, int, Any], Any] | None = None, delete_fn: Callable[[Win, int, Any], None] | None = None, nopython: bool = False) -> int\n\n        Create a new attribute key for windows.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_43Create_keyval = {"Create_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_43Create_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_42Create_keyval};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_43Create_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_copy_fn = 0;
  PyObject *__pyx_v_delete_fn = 0;
  PyObject *__pyx_v_nopython = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_keyval (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_copy_fn,&__pyx_n_s_delete_fn,&__pyx_n_s_nopython,0};

    /* "src/mpi4py/MPI.src/Win.pyx":301
 *     def Create_keyval(
 *         cls,
 *         copy_fn: Callable[[Win, int, Any], Any] | None = None,             # <<<<<<<<<<<<<<
 *         delete_fn: Callable[[Win, int, Any], None] | None = None,
 *         nopython: bool = False,
 */
    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Win.pyx":302
 *         cls,
 *         copy_fn: Callable[[Win, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Win, int, Any], None] | None = None,             # <<<<<<<<<<<<<<
 *         nopython: bool = False,
 *     ) -> int:
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));

    /* "src/mpi4py/MPI.src/Win.pyx":303
 *         copy_fn: Callable[[Win, int, Any], Any] | None = None,
 *         delete_fn: Callable[[Win, int, Any], None] | None = None,
 *         nopython: bool = False,             # <<<<<<<<<<<<<<
 *     ) -> int:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_False));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_copy_fn);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 298, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_delete_fn);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 298, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nopython);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 298, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_keyval") < 0)) __PYX_ERR(32, 298, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_copy_fn = values[0];
    __pyx_v_delete_fn = values[1];
    __pyx_v_nopython = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_keyval", 0, 0, 3, __pyx_nargs); __PYX_ERR(32, 298, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_42Create_keyval(((PyTypeObject*)__pyx_v_cls), __pyx_v_copy_fn, __pyx_v_delete_fn, __pyx_v_nopython);

  /* "src/mpi4py/MPI.src/Win.pyx":298
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_42Create_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_copy_fn, PyObject *__pyx_v_delete_fn, PyObject *__pyx_v_nopython) {
  int __pyx_v_keyval;
  MPI_Win_copy_attr_function *__pyx_v__copy;
  MPI_Win_delete_attr_function *__pyx_v__del;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *__pyx_v_state = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_keyval", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":308
 *         Create a new attribute key for windows.
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 *         cdef MPI_Win_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Win_delete_attr_function *_del = PyMPI_attr_delete_fn
 */
  __pyx_v_keyval = MPI_KEYVAL_INVALID;

  /* "src/mpi4py/MPI.src/Win.pyx":309
 *         """
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Win_copy_attr_function *_copy = PyMPI_attr_copy_fn             # <<<<<<<<<<<<<<
 *         cdef MPI_Win_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 */
  __pyx_v__copy = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_copy_fn;

  /* "src/mpi4py/MPI.src/Win.pyx":310
 *         cdef int keyval = MPI_KEYVAL_INVALID
 *         cdef MPI_Win_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Win_delete_attr_function *_del = PyMPI_attr_delete_fn             # <<<<<<<<<<<<<<
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, <void *>state) )
 */
  __pyx_v__del = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_delete_fn;

  /* "src/mpi4py/MPI.src/Win.pyx":311
 *         cdef MPI_Win_copy_attr_function *_copy = PyMPI_attr_copy_fn
 *         cdef MPI_Win_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_WIN_NULL, keyval, state)
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_copy_fn);
  __Pyx_GIVEREF(__pyx_v_copy_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_copy_fn)) __PYX_ERR(32, 311, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_delete_fn);
  __Pyx_GIVEREF(__pyx_v_delete_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_delete_fn)) __PYX_ERR(32, 311, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_nopython);
  __Pyx_GIVEREF(__pyx_v_nopython);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_nopython)) __PYX_ERR(32, 311, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI__p_keyval), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_state = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":312
 *         cdef MPI_Win_delete_attr_function *_del = PyMPI_attr_delete_fn
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, <void *>state) )             # <<<<<<<<<<<<<<
 *         PyMPI_attr_state_set(MPI_WIN_NULL, keyval, state)
 *         return keyval
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_create_keyval(__pyx_v__copy, __pyx_v__del, (&__pyx_v_keyval), ((void *)__pyx_v_state))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 312, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":313
 *         cdef _p_keyval state = _p_keyval(copy_fn, delete_fn, nopython)
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_WIN_NULL, keyval, state)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_set(MPI_WIN_NULL, __pyx_v_keyval, __pyx_v_state); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 313, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":314
 *         CHKERR( MPI_Win_create_keyval(_copy, _del, &keyval, <void *>state) )
 *         PyMPI_attr_state_set(MPI_WIN_NULL, keyval, state)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":298
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":316
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_45Free_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_44Free_keyval, "Free_keyval(cls, keyval: int) -> int\n\n        Free an attribute key for windows.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_45Free_keyval = {"Free_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_45Free_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_44Free_keyval};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_45Free_keyval(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_keyval;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free_keyval (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keyval,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_keyval)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 316, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Free_keyval") < 0)) __PYX_ERR(32, 316, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_keyval = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_keyval == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 317, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_keyval", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 316, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_44Free_keyval(((PyTypeObject*)__pyx_v_cls), __pyx_v_keyval);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_44Free_keyval(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, int __pyx_v_keyval) {
  int __pyx_v_keyval_save;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free_keyval", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":321
 *         Free an attribute key for windows.
 *         """
 *         cdef int keyval_save = keyval             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_WIN_NULL, keyval_save)
 */
  __pyx_v_keyval_save = __pyx_v_keyval;

  /* "src/mpi4py/MPI.src/Win.pyx":322
 *         """
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Win_free_keyval(&keyval) )             # <<<<<<<<<<<<<<
 *         PyMPI_attr_state_del(MPI_WIN_NULL, keyval_save)
 *         return keyval
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_free_keyval((&__pyx_v_keyval))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 322, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":323
 *         cdef int keyval_save = keyval
 *         CHKERR( MPI_Win_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_WIN_NULL, keyval_save)             # <<<<<<<<<<<<<<
 *         return keyval
 * 
 */
  __pyx_t_1 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_PyMPI_attr_state_del(MPI_WIN_NULL, __pyx_v_keyval_save); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 323, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":324
 *         CHKERR( MPI_Win_free_keyval(&keyval) )
 *         PyMPI_attr_state_del(MPI_WIN_NULL, keyval_save)
 *         return keyval             # <<<<<<<<<<<<<<
 * 
 *     property attrs:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_keyval); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":316
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Free_keyval", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":328
 *     property attrs:
 *         "Attributes."
 *         def __get__(self) -> tuple[int, int, int]:             # <<<<<<<<<<<<<<
 *             cdef void *base = NULL
 *             cdef MPI_Aint size = 0
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5attrs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5attrs_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_5attrs___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5attrs___get__(struct PyMPIWinObject *__pyx_v_self) {
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  int __pyx_v_disp_unit;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  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;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":329
 *         "Attributes."
 *         def __get__(self) -> tuple[int, int, int]:
 *             cdef void *base = NULL             # <<<<<<<<<<<<<<
 *             cdef MPI_Aint size = 0
 *             cdef int disp_unit = 1
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":330
 *         def __get__(self) -> tuple[int, int, int]:
 *             cdef void *base = NULL
 *             cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *             cdef int disp_unit = 1
 *             win_get_base(self.ob_mpi, &base)
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":331
 *             cdef void *base = NULL
 *             cdef MPI_Aint size = 0
 *             cdef int disp_unit = 1             # <<<<<<<<<<<<<<
 *             win_get_base(self.ob_mpi, &base)
 *             win_get_size(self.ob_mpi, &size)
 */
  __pyx_v_disp_unit = 1;

  /* "src/mpi4py/MPI.src/Win.pyx":332
 *             cdef MPI_Aint size = 0
 *             cdef int disp_unit = 1
 *             win_get_base(self.ob_mpi, &base)             # <<<<<<<<<<<<<<
 *             win_get_size(self.ob_mpi, &size)
 *             win_get_unit(self.ob_mpi, &disp_unit)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_win_get_base(__pyx_v_self->ob_mpi, (&__pyx_v_base)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 332, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":333
 *             cdef int disp_unit = 1
 *             win_get_base(self.ob_mpi, &base)
 *             win_get_size(self.ob_mpi, &size)             # <<<<<<<<<<<<<<
 *             win_get_unit(self.ob_mpi, &disp_unit)
 *             return (<MPI_Aint>base, size, disp_unit)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_win_get_size(__pyx_v_self->ob_mpi, (&__pyx_v_size)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 333, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":334
 *             win_get_base(self.ob_mpi, &base)
 *             win_get_size(self.ob_mpi, &size)
 *             win_get_unit(self.ob_mpi, &disp_unit)             # <<<<<<<<<<<<<<
 *             return (<MPI_Aint>base, size, disp_unit)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_win_get_unit(__pyx_v_self->ob_mpi, (&__pyx_v_disp_unit)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 334, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":335
 *             win_get_size(self.ob_mpi, &size)
 *             win_get_unit(self.ob_mpi, &disp_unit)
 *             return (<MPI_Aint>base, size, disp_unit)             # <<<<<<<<<<<<<<
 * 
 *     property flavor:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)__pyx_v_base)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_MPI_Aint(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_disp_unit); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2)) __PYX_ERR(32, 335, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(32, 335, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(32, 335, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":328
 *     property attrs:
 *         "Attributes."
 *         def __get__(self) -> tuple[int, int, int]:             # <<<<<<<<<<<<<<
 *             cdef void *base = NULL
 *             cdef MPI_Aint size = 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.Win.attrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":339
 *     property flavor:
 *         """Create flavor."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int keyval = MPI_WIN_CREATE_FLAVOR
 *             cdef int *attrval = NULL, flag = 0
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_6flavor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_6flavor_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_6flavor___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_6flavor___get__(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_v_keyval;
  int *__pyx_v_attrval;
  int __pyx_v_flag;
  int __pyx_v_flavor;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":340
 *         """Create flavor."""
 *         def __get__(self) -> int:
 *             cdef int keyval = MPI_WIN_CREATE_FLAVOR             # <<<<<<<<<<<<<<
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int flavor = MPI_WIN_FLAVOR_CREATE
 */
  __pyx_v_keyval = MPI_WIN_CREATE_FLAVOR;

  /* "src/mpi4py/MPI.src/Win.pyx":341
 *         def __get__(self) -> int:
 *             cdef int keyval = MPI_WIN_CREATE_FLAVOR
 *             cdef int *attrval = NULL, flag = 0             # <<<<<<<<<<<<<<
 *             cdef int flavor = MPI_WIN_FLAVOR_CREATE
 *             if keyval != MPI_KEYVAL_INVALID:
 */
  __pyx_v_attrval = NULL;
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":342
 *             cdef int keyval = MPI_WIN_CREATE_FLAVOR
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int flavor = MPI_WIN_FLAVOR_CREATE             # <<<<<<<<<<<<<<
 *             if keyval != MPI_KEYVAL_INVALID:
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 */
  __pyx_v_flavor = MPI_WIN_FLAVOR_CREATE;

  /* "src/mpi4py/MPI.src/Win.pyx":343
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int flavor = MPI_WIN_FLAVOR_CREATE
 *             if keyval != MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 */
  __pyx_t_1 = (__pyx_v_keyval != MPI_KEYVAL_INVALID);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Win.pyx":344
 *             cdef int flavor = MPI_WIN_FLAVOR_CREATE
 *             if keyval != MPI_KEYVAL_INVALID:
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,             # <<<<<<<<<<<<<<
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_self->ob_mpi, __pyx_v_keyval, ((void *)(&__pyx_v_attrval)), (&__pyx_v_flag))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 344, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Win.pyx":346
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:             # <<<<<<<<<<<<<<
 *                     flavor = attrval[0]
 *             return flavor
 */
    __pyx_t_3 = (__pyx_v_flag != 0);
    if (__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_attrval != NULL);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/Win.pyx":347
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:
 *                     flavor = attrval[0]             # <<<<<<<<<<<<<<
 *             return flavor
 * 
 */
      __pyx_v_flavor = (__pyx_v_attrval[0]);

      /* "src/mpi4py/MPI.src/Win.pyx":346
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:             # <<<<<<<<<<<<<<
 *                     flavor = attrval[0]
 *             return flavor
 */
    }

    /* "src/mpi4py/MPI.src/Win.pyx":343
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int flavor = MPI_WIN_FLAVOR_CREATE
 *             if keyval != MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":348
 *                 if flag and attrval != NULL:
 *                     flavor = attrval[0]
 *             return flavor             # <<<<<<<<<<<<<<
 * 
 *     property model:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_flavor); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":339
 *     property flavor:
 *         """Create flavor."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int keyval = MPI_WIN_CREATE_FLAVOR
 *             cdef int *attrval = NULL, flag = 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Win.flavor.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":352
 *     property model:
 *         """Memory model."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int keyval = MPI_WIN_MODEL
 *             cdef int *attrval = NULL, flag = 0
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_5model_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_5model___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_5model___get__(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_v_keyval;
  int *__pyx_v_attrval;
  int __pyx_v_flag;
  int __pyx_v_model;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":353
 *         """Memory model."""
 *         def __get__(self) -> int:
 *             cdef int keyval = MPI_WIN_MODEL             # <<<<<<<<<<<<<<
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int model = MPI_WIN_SEPARATE
 */
  __pyx_v_keyval = MPI_WIN_MODEL;

  /* "src/mpi4py/MPI.src/Win.pyx":354
 *         def __get__(self) -> int:
 *             cdef int keyval = MPI_WIN_MODEL
 *             cdef int *attrval = NULL, flag = 0             # <<<<<<<<<<<<<<
 *             cdef int model = MPI_WIN_SEPARATE
 *             if keyval != MPI_KEYVAL_INVALID:
 */
  __pyx_v_attrval = NULL;
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":355
 *             cdef int keyval = MPI_WIN_MODEL
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int model = MPI_WIN_SEPARATE             # <<<<<<<<<<<<<<
 *             if keyval != MPI_KEYVAL_INVALID:
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 */
  __pyx_v_model = MPI_WIN_SEPARATE;

  /* "src/mpi4py/MPI.src/Win.pyx":356
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int model = MPI_WIN_SEPARATE
 *             if keyval != MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 */
  __pyx_t_1 = (__pyx_v_keyval != MPI_KEYVAL_INVALID);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/Win.pyx":357
 *             cdef int model = MPI_WIN_SEPARATE
 *             if keyval != MPI_KEYVAL_INVALID:
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,             # <<<<<<<<<<<<<<
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:
 */
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_attr(__pyx_v_self->ob_mpi, __pyx_v_keyval, ((void *)(&__pyx_v_attrval)), (&__pyx_v_flag))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 357, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/Win.pyx":359
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:             # <<<<<<<<<<<<<<
 *                     model = attrval[0]
 *             return model
 */
    __pyx_t_3 = (__pyx_v_flag != 0);
    if (__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_attrval != NULL);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/mpi4py/MPI.src/Win.pyx":360
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:
 *                     model = attrval[0]             # <<<<<<<<<<<<<<
 *             return model
 * 
 */
      __pyx_v_model = (__pyx_v_attrval[0]);

      /* "src/mpi4py/MPI.src/Win.pyx":359
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 *                 if flag and attrval != NULL:             # <<<<<<<<<<<<<<
 *                     model = attrval[0]
 *             return model
 */
    }

    /* "src/mpi4py/MPI.src/Win.pyx":356
 *             cdef int *attrval = NULL, flag = 0
 *             cdef int model = MPI_WIN_SEPARATE
 *             if keyval != MPI_KEYVAL_INVALID:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Win_get_attr(self.ob_mpi, keyval,
 *                                          <void*>&attrval, &flag) )
 */
  }

  /* "src/mpi4py/MPI.src/Win.pyx":361
 *                 if flag and attrval != NULL:
 *                     model = attrval[0]
 *             return model             # <<<<<<<<<<<<<<
 * 
 *     def tomemory(self) -> buffer:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_model); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":352
 *     property model:
 *         """Memory model."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef int keyval = MPI_WIN_MODEL
 *             cdef int *attrval = NULL, flag = 0
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Win.model.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":363
 *             return model
 * 
 *     def tomemory(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """
 *         Return window memory buffer.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_47tomemory(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_46tomemory, "tomemory(self) -> buffer\n\n        Return window memory buffer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_47tomemory = {"tomemory", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_47tomemory, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_46tomemory};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_47tomemory(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("tomemory (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("tomemory", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "tomemory", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_46tomemory(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_46tomemory(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tomemory", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":367
 *         Return window memory buffer.
 *         """
 *         return getbuffer(self, 0, 1)             # <<<<<<<<<<<<<<
 * 
 *     # buffer interface (PEP 3118)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_getbuffer(((PyObject *)__pyx_v_self), 0, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":363
 *             return model
 * 
 *     def tomemory(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """
 *         Return window memory buffer.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.tomemory", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":371
 *     # buffer interface (PEP 3118)
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0
 */

/* Python wrapper */
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_3Win_49__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags); /*proto*/
CYTHON_UNUSED static int __pyx_pw_6mpi4py_3MPI_3Win_49__getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getbuffer__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_48__getbuffer__(((struct PyMPIWinObject *)__pyx_v_self), ((Py_buffer *)__pyx_v_view), ((int)__pyx_v_flags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_3Win_48__getbuffer__(struct PyMPIWinObject *__pyx_v_self, Py_buffer *__pyx_v_view, int __pyx_v_flags) {
  void *__pyx_v_base;
  MPI_Aint __pyx_v_size;
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  if (unlikely(__pyx_v_view == NULL)) {
    PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");
    return -1;
  }
  __pyx_v_view->obj = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":372
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         cdef void *base = NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Aint size = 0
 *         win_get_base(self.ob_mpi, &base)
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":373
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0             # <<<<<<<<<<<<<<
 *         win_get_base(self.ob_mpi, &base)
 *         win_get_size(self.ob_mpi, &size)
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":374
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0
 *         win_get_base(self.ob_mpi, &base)             # <<<<<<<<<<<<<<
 *         win_get_size(self.ob_mpi, &size)
 *         PyBuffer_FillInfo(view, self, base, size, 0, flags)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_win_get_base(__pyx_v_self->ob_mpi, (&__pyx_v_base)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 374, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":375
 *         cdef MPI_Aint size = 0
 *         win_get_base(self.ob_mpi, &base)
 *         win_get_size(self.ob_mpi, &size)             # <<<<<<<<<<<<<<
 *         PyBuffer_FillInfo(view, self, base, size, 0, flags)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_win_get_size(__pyx_v_self->ob_mpi, (&__pyx_v_size)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 375, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":376
 *         win_get_base(self.ob_mpi, &base)
 *         win_get_size(self.ob_mpi, &size)
 *         PyBuffer_FillInfo(view, self, base, size, 0, flags)             # <<<<<<<<<<<<<<
 * 
 *     # Communication Operations
 */
  __pyx_t_1 = PyBuffer_FillInfo(__pyx_v_view, ((PyObject *)__pyx_v_self), __pyx_v_base, __pyx_v_size, 0, __pyx_v_flags); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 376, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":371
 *     # buffer interface (PEP 3118)
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):             # <<<<<<<<<<<<<<
 *         cdef void *base = NULL
 *         cdef MPI_Aint size = 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  Py_CLEAR(__pyx_v_view->obj);
  goto __pyx_L2;
  __pyx_L0:;
  __pyx_L2:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":381
 *     # ------------------------
 * 
 *     def Put(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_51Put(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_50Put, "Put(self, origin: BufSpec, target_rank: int, target: TargetSpec | None = None) -> None\n\n        Put data into a memory window on a remote process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_51Put = {"Put", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_51Put, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_50Put};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_51Put(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Put (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_target_rank,&__pyx_n_s_target,0};

    /* "src/mpi4py/MPI.src/Win.pyx":385
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 381, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 381, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Put", 0, 2, 3, 1); __PYX_ERR(32, 381, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 381, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Put") < 0)) __PYX_ERR(32, 381, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 384, __pyx_L3_error)
    __pyx_v_target = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Put", 0, 2, 3, __pyx_nargs); __PYX_ERR(32, 381, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_50Put(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target);

  /* "src/mpi4py/MPI.src/Win.pyx":381
 *     # ------------------------
 * 
 *     def Put(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_50Put(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Put", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":390
 *         Put data into a memory window on a remote process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_put(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Put_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":391
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Put_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 391, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":392
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Put_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":396
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Put_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 392, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":392
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Put_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":381
 *     # ------------------------
 * 
 *     def Put(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Put", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":398
 *             self.ob_mpi) )
 * 
 *     def Get(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_53Get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_52Get, "Get(self, origin: BufSpec, target_rank: int, target: TargetSpec | None = None) -> None\n\n        Get data from a memory window on a remote process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_53Get = {"Get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_53Get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_52Get};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_53Get(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_target_rank,&__pyx_n_s_target,0};

    /* "src/mpi4py/MPI.src/Win.pyx":402
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 398, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 398, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Get", 0, 2, 3, 1); __PYX_ERR(32, 398, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 398, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get") < 0)) __PYX_ERR(32, 398, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 401, __pyx_L3_error)
    __pyx_v_target = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get", 0, 2, 3, __pyx_nargs); __PYX_ERR(32, 398, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_52Get(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target);

  /* "src/mpi4py/MPI.src/Win.pyx":398
 *             self.ob_mpi) )
 * 
 *     def Get(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_52Get(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":407
 *         Get data from a memory window on a remote process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_get(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Get_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":408
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Get_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 408, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":409
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Get_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":413
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Accumulate(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 409, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":409
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Get_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":398
 *             self.ob_mpi) )
 * 
 *     def Get(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":415
 *             self.ob_mpi) )
 * 
 *     def Accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_55Accumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_54Accumulate, "Accumulate(self, origin: BufSpec, target_rank: int, target: TargetSpec | None = None, op: Op = SUM) -> None\n\n        Accumulate data into the target process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_55Accumulate = {"Accumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_55Accumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_54Accumulate};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_55Accumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Accumulate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_target_rank,&__pyx_n_s_target,&__pyx_n_s_op,0};

    /* "src/mpi4py/MPI.src/Win.pyx":419
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__190);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 415, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 415, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Accumulate", 0, 2, 4, 1); __PYX_ERR(32, 415, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 415, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 415, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Accumulate") < 0)) __PYX_ERR(32, 415, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 418, __pyx_L3_error)
    __pyx_v_target = values[2];
    __pyx_v_op = ((struct PyMPIOpObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Accumulate", 0, 2, 4, __pyx_nargs); __PYX_ERR(32, 415, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(32, 420, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_54Accumulate(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target, __pyx_v_op);

  /* "src/mpi4py/MPI.src/Win.pyx":415
 *             self.ob_mpi) )
 * 
 *     def Accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_54Accumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Accumulate", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":425
 *         Accumulate data into the target process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_acc(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Accumulate_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":426
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Accumulate_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 426, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":427
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Accumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":431
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_accumulate(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Accumulate_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 427, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":427
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)
 *         with nogil: CHKERR( MPI_Accumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":415
 *             self.ob_mpi) )
 * 
 *     def Accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":433
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Get_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_57Get_accumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_56Get_accumulate, "Get_accumulate(self, origin: BufSpec, result: BufSpec, target_rank: int, target: TargetSpec | None = None, op: Op = SUM) -> None\n\n        Fetch-and-accumulate data into the target process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_57Get_accumulate = {"Get_accumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_57Get_accumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_56Get_accumulate};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_57Get_accumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_result = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_accumulate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_result,&__pyx_n_s_target_rank,&__pyx_n_s_target,&__pyx_n_s_op,0};

    /* "src/mpi4py/MPI.src/Win.pyx":438
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__191);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 433, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_result)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 433, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Get_accumulate", 0, 3, 5, 1); __PYX_ERR(32, 433, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 433, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Get_accumulate", 0, 3, 5, 2); __PYX_ERR(32, 433, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 433, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 433, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_accumulate") < 0)) __PYX_ERR(32, 433, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_result = values[1];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 437, __pyx_L3_error)
    __pyx_v_target = values[3];
    __pyx_v_op = ((struct PyMPIOpObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_accumulate", 0, 3, 5, __pyx_nargs); __PYX_ERR(32, 433, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(32, 439, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_56Get_accumulate(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target, __pyx_v_op);

  /* "src/mpi4py/MPI.src/Win.pyx":433
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Get_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_56Get_accumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_accumulate", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":444
 *         Fetch-and-accumulate data into the target process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_get_acc(origin, result, target_rank, target)
 *         with nogil: CHKERR( MPI_Get_accumulate_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":445
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get_acc(origin, result, target_rank, target)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Get_accumulate_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get_acc(__pyx_v_msg, __pyx_v_origin, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 445, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":446
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get_acc(origin, result, target_rank, target)
 *         with nogil: CHKERR( MPI_Get_accumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             msg.raddr, msg.rcount, msg.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":451
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Fetch_and_op(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_accumulate_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_msg->raddr, __pyx_v_msg->rcount, __pyx_v_msg->rtype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 446, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":446
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get_acc(origin, result, target_rank, target)
 *         with nogil: CHKERR( MPI_Get_accumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             msg.raddr, msg.rcount, msg.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":433
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Get_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":453
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Fetch_and_op(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_59Fetch_and_op(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_58Fetch_and_op, "Fetch_and_op(self, origin: BufSpec, result: BufSpec, target_rank: int, target_disp: int = 0, op: Op = SUM) -> None\n\n        Perform one-sided read-modify-write.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_59Fetch_and_op = {"Fetch_and_op", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_59Fetch_and_op, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_58Fetch_and_op};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_59Fetch_and_op(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_result = 0;
  int __pyx_v_target_rank;
  MPI_Aint __pyx_v_target_disp;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Fetch_and_op (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_result,&__pyx_n_s_target_rank,&__pyx_n_s_target_disp,&__pyx_n_s_op,0};
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__192);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 453, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_result)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 453, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Fetch_and_op", 0, 3, 5, 1); __PYX_ERR(32, 453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 453, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Fetch_and_op", 0, 3, 5, 2); __PYX_ERR(32, 453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_disp);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 453, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 453, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Fetch_and_op") < 0)) __PYX_ERR(32, 453, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_result = values[1];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 457, __pyx_L3_error)
    if (values[3]) {
      __pyx_v_target_disp = __Pyx_PyInt_As_MPI_Aint(values[3]); if (unlikely((__pyx_v_target_disp == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 458, __pyx_L3_error)
    } else {
      __pyx_v_target_disp = ((MPI_Aint)0);
    }
    __pyx_v_op = ((struct PyMPIOpObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Fetch_and_op", 0, 3, 5, __pyx_nargs); __PYX_ERR(32, 453, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Fetch_and_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(32, 459, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_58Fetch_and_op(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target_disp, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_58Fetch_and_op(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_target_rank, MPI_Aint __pyx_v_target_disp, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Fetch_and_op", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":464
 *         Perform one-sided read-modify-write.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_fetch_op(origin, result, target_rank, target_disp)
 *         with nogil: CHKERR( MPI_Fetch_and_op(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":465
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_fetch_op(origin, result, target_rank, target_disp)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Fetch_and_op(
 *                 msg.oaddr, msg.raddr, msg.ttype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_fetch_op(__pyx_v_msg, __pyx_v_origin, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target_disp); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 465, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":466
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_fetch_op(origin, result, target_rank, target_disp)
 *         with nogil: CHKERR( MPI_Fetch_and_op(             # <<<<<<<<<<<<<<
 *                 msg.oaddr, msg.raddr, msg.ttype,
 *                 target_rank, target_disp,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":469
 *                 msg.oaddr, msg.raddr, msg.ttype,
 *                 target_rank, target_disp,
 *                 op.ob_mpi, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Compare_and_swap(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Fetch_and_op(__pyx_v_msg->oaddr, __pyx_v_msg->raddr, __pyx_v_msg->ttype, __pyx_v_target_rank, __pyx_v_target_disp, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 466, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":466
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_fetch_op(origin, result, target_rank, target_disp)
 *         with nogil: CHKERR( MPI_Fetch_and_op(             # <<<<<<<<<<<<<<
 *                 msg.oaddr, msg.raddr, msg.ttype,
 *                 target_rank, target_disp,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":453
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Fetch_and_op(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Fetch_and_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":471
 *                 op.ob_mpi, self.ob_mpi) )
 * 
 *     def Compare_and_swap(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_61Compare_and_swap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_60Compare_and_swap, "Compare_and_swap(self, origin: BufSpec, compare: BufSpec, result: BufSpec, target_rank: int, target_disp: int = 0) -> None\n\n        Perform one-sided atomic compare-and-swap.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_61Compare_and_swap = {"Compare_and_swap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_61Compare_and_swap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_60Compare_and_swap};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_61Compare_and_swap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_compare = 0;
  PyObject *__pyx_v_result = 0;
  int __pyx_v_target_rank;
  MPI_Aint __pyx_v_target_disp;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Compare_and_swap (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_compare,&__pyx_n_s_result,&__pyx_n_s_target_rank,&__pyx_n_s_target_disp,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 471, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_compare)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 471, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Compare_and_swap", 0, 4, 5, 1); __PYX_ERR(32, 471, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_result)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 471, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Compare_and_swap", 0, 4, 5, 2); __PYX_ERR(32, 471, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 471, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Compare_and_swap", 0, 4, 5, 3); __PYX_ERR(32, 471, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_disp);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 471, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Compare_and_swap") < 0)) __PYX_ERR(32, 471, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_compare = values[1];
    __pyx_v_result = values[2];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 476, __pyx_L3_error)
    if (values[4]) {
      __pyx_v_target_disp = __Pyx_PyInt_As_MPI_Aint(values[4]); if (unlikely((__pyx_v_target_disp == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 477, __pyx_L3_error)
    } else {
      __pyx_v_target_disp = ((MPI_Aint)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Compare_and_swap", 0, 4, 5, __pyx_nargs); __PYX_ERR(32, 471, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Compare_and_swap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_60Compare_and_swap(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_compare, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target_disp);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_60Compare_and_swap(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_compare, PyObject *__pyx_v_result, int __pyx_v_target_rank, MPI_Aint __pyx_v_target_disp) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Compare_and_swap", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":482
 *         Perform one-sided atomic compare-and-swap.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_cmp_swap(origin, compare, result, target_rank, target_disp)
 *         with nogil: CHKERR( MPI_Compare_and_swap(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":483
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_cmp_swap(origin, compare, result, target_rank, target_disp)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Compare_and_swap(
 *                 msg.oaddr, msg.caddr, msg.raddr, msg.ttype,
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_cmp_swap(__pyx_v_msg, __pyx_v_origin, __pyx_v_compare, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target_disp); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 483, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":484
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_cmp_swap(origin, compare, result, target_rank, target_disp)
 *         with nogil: CHKERR( MPI_Compare_and_swap(             # <<<<<<<<<<<<<<
 *                 msg.oaddr, msg.caddr, msg.raddr, msg.ttype,
 *                 target_rank, target_disp, self.ob_mpi) )
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":486
 *         with nogil: CHKERR( MPI_Compare_and_swap(
 *                 msg.oaddr, msg.caddr, msg.raddr, msg.ttype,
 *                 target_rank, target_disp, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Request-based RMA Communication Operations
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Compare_and_swap(__pyx_v_msg->oaddr, __pyx_v_msg->caddr, __pyx_v_msg->raddr, __pyx_v_msg->ttype, __pyx_v_target_rank, __pyx_v_target_disp, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 484, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":484
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_cmp_swap(origin, compare, result, target_rank, target_disp)
 *         with nogil: CHKERR( MPI_Compare_and_swap(             # <<<<<<<<<<<<<<
 *                 msg.oaddr, msg.caddr, msg.raddr, msg.ttype,
 *                 target_rank, target_disp, self.ob_mpi) )
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":471
 *                 op.ob_mpi, self.ob_mpi) )
 * 
 *     def Compare_and_swap(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Compare_and_swap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":491
 *     # ------------------------------------------
 * 
 *     def Rput(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_63Rput(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_62Rput, "Rput(self, origin: BufSpec, target_rank: int, target: TargetSpec | None = None) -> Request\n\n        Put data into a memory window on a remote process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_63Rput = {"Rput", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_63Rput, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_62Rput};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_63Rput(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Rput (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_target_rank,&__pyx_n_s_target,0};

    /* "src/mpi4py/MPI.src/Win.pyx":495
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 491, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 491, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Rput", 0, 2, 3, 1); __PYX_ERR(32, 491, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 491, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Rput") < 0)) __PYX_ERR(32, 491, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 494, __pyx_L3_error)
    __pyx_v_target = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Rput", 0, 2, 3, __pyx_nargs); __PYX_ERR(32, 491, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Rput", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_62Rput(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target);

  /* "src/mpi4py/MPI.src/Win.pyx":491
 *     # ------------------------------------------
 * 
 *     def Rput(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_62Rput(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Rput", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":500
 *         Put data into a memory window on a remote process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_put(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":501
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rput_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 501, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":502
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_put(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rput_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":503
 *         msg.for_put(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rput_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":507
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = msg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Rput_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 503, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":503
 *         msg.for_put(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rput_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":508
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_msg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_msg);

  /* "src/mpi4py/MPI.src/Win.pyx":509
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Rget(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":491
 *     # ------------------------------------------
 * 
 *     def Rput(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Rput", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":511
 *         return request
 * 
 *     def Rget(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_65Rget(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_64Rget, "Rget(self, origin: BufSpec, target_rank: int, target: TargetSpec | None = None) -> Request\n\n        Get data from a memory window on a remote process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_65Rget = {"Rget", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_65Rget, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_64Rget};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_65Rget(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Rget (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_target_rank,&__pyx_n_s_target,0};

    /* "src/mpi4py/MPI.src/Win.pyx":515
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 511, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 511, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Rget", 0, 2, 3, 1); __PYX_ERR(32, 511, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 511, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Rget") < 0)) __PYX_ERR(32, 511, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 514, __pyx_L3_error)
    __pyx_v_target = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Rget", 0, 2, 3, __pyx_nargs); __PYX_ERR(32, 511, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Rget", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_64Rget(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target);

  /* "src/mpi4py/MPI.src/Win.pyx":511
 *         return request
 * 
 *     def Rget(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_64Rget(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Rget", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":520
 *         Get data from a memory window on a remote process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_get(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":521
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rget_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 521, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":522
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rget_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":523
 *         msg.for_get(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rget_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":527
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = msg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Rget_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 523, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":523
 *         msg.for_get(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rget_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":528
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_msg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_msg);

  /* "src/mpi4py/MPI.src/Win.pyx":529
 *             self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Raccumulate(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":511
 *         return request
 * 
 *     def Rget(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Rget", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":531
 *         return request
 * 
 *     def Raccumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_67Raccumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_66Raccumulate, "Raccumulate(self, origin: BufSpec, target_rank: int, target: TargetSpec | None = None, op: Op = SUM) -> Request\n\n        Fetch-and-accumulate data into the target process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_67Raccumulate = {"Raccumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_67Raccumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_66Raccumulate};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_67Raccumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Raccumulate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_target_rank,&__pyx_n_s_target,&__pyx_n_s_op,0};

    /* "src/mpi4py/MPI.src/Win.pyx":535
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__193);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 531, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 531, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Raccumulate", 0, 2, 4, 1); __PYX_ERR(32, 531, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 531, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 531, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Raccumulate") < 0)) __PYX_ERR(32, 531, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 534, __pyx_L3_error)
    __pyx_v_target = values[2];
    __pyx_v_op = ((struct PyMPIOpObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Raccumulate", 0, 2, 4, __pyx_nargs); __PYX_ERR(32, 531, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Raccumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(32, 536, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_66Raccumulate(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target, __pyx_v_op);

  /* "src/mpi4py/MPI.src/Win.pyx":531
 *         return request
 * 
 *     def Raccumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_66Raccumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Raccumulate", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":541
 *         Fetch-and-accumulate data into the target process.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_acc(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":542
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Raccumulate_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc(__pyx_v_msg, __pyx_v_origin, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 542, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":543
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_acc(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Raccumulate_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":544
 *         msg.for_acc(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Raccumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":548
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = msg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Raccumulate_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 544, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":544
 *         msg.for_acc(origin, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Raccumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             target_rank,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":549
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_msg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_msg);

  /* "src/mpi4py/MPI.src/Win.pyx":550
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Rget_accumulate(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":531
 *         return request
 * 
 *     def Raccumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Raccumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":552
 *         return request
 * 
 *     def Rget_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_69Rget_accumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_68Rget_accumulate, "Rget_accumulate(self, origin: BufSpec, result: BufSpec, target_rank: int, target: TargetSpec | None = None, op: Op = SUM) -> Request\n\n        Accumulate data into the target process using remote memory access.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_69Rget_accumulate = {"Rget_accumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_69Rget_accumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_68Rget_accumulate};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_69Rget_accumulate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_origin = 0;
  PyObject *__pyx_v_result = 0;
  int __pyx_v_target_rank;
  PyObject *__pyx_v_target = 0;
  struct PyMPIOpObject *__pyx_v_op = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Rget_accumulate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_origin,&__pyx_n_s_result,&__pyx_n_s_target_rank,&__pyx_n_s_target,&__pyx_n_s_op,0};

    /* "src/mpi4py/MPI.src/Win.pyx":557
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
 */
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__194);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_origin)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 552, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_result)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 552, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Rget_accumulate", 0, 3, 5, 1); __PYX_ERR(32, 552, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 552, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Rget_accumulate", 0, 3, 5, 2); __PYX_ERR(32, 552, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 552, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_op);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 552, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Rget_accumulate") < 0)) __PYX_ERR(32, 552, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_origin = values[0];
    __pyx_v_result = values[1];
    __pyx_v_target_rank = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_target_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 556, __pyx_L3_error)
    __pyx_v_target = values[3];
    __pyx_v_op = ((struct PyMPIOpObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Rget_accumulate", 0, 3, 5, __pyx_nargs); __PYX_ERR(32, 552, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Rget_accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_op), __pyx_ptype_6mpi4py_3MPI_Op, 0, "op", 0))) __PYX_ERR(32, 558, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_68Rget_accumulate(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_origin, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target, __pyx_v_op);

  /* "src/mpi4py/MPI.src/Win.pyx":552
 *         return request
 * 
 *     def Rget_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_68Rget_accumulate(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_origin, PyObject *__pyx_v_result, int __pyx_v_target_rank, PyObject *__pyx_v_target, struct PyMPIOpObject *__pyx_v_op) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *__pyx_v_msg = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Rget_accumulate", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":563
 *         Accumulate data into the target process using remote memory access.
 *         """
 *         cdef _p_msg_rma msg = message_rma()             # <<<<<<<<<<<<<<
 *         msg.for_get_acc(origin, result, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_rma()); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_msg = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":564
 *         """
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get_acc(origin, result, target_rank, target)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rget_accumulate_c(
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get_acc(__pyx_v_msg, __pyx_v_origin, __pyx_v_result, __pyx_v_target_rank, __pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 564, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":565
 *         cdef _p_msg_rma msg = message_rma()
 *         msg.for_get_acc(origin, result, target_rank, target)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Rget_accumulate_c(
 *             msg.oaddr, msg.ocount, msg.otype,
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":566
 *         msg.for_get_acc(origin, result, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rget_accumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             msg.raddr, msg.rcount, msg.rtype,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":571
 *             target_rank,
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = msg
 *         return request
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Rget_accumulate_c(__pyx_v_msg->oaddr, __pyx_v_msg->ocount, __pyx_v_msg->otype, __pyx_v_msg->raddr, __pyx_v_msg->rcount, __pyx_v_msg->rtype, __pyx_v_target_rank, __pyx_v_msg->tdisp, __pyx_v_msg->tcount, __pyx_v_msg->ttype, __pyx_v_op->ob_mpi, __pyx_v_self->ob_mpi, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 566, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":566
 *         msg.for_get_acc(origin, result, target_rank, target)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_Rget_accumulate_c(             # <<<<<<<<<<<<<<
 *             msg.oaddr, msg.ocount, msg.otype,
 *             msg.raddr, msg.rcount, msg.rtype,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":572
 *             msg.tdisp, msg.tcount, msg.ttype,
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_msg);
  __Pyx_GIVEREF((PyObject *)__pyx_v_msg);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_msg);

  /* "src/mpi4py/MPI.src/Win.pyx":573
 *             op.ob_mpi, self.ob_mpi, &request.ob_mpi) )
 *         request.ob_buf = msg
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Synchronization Calls
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":552
 *         return request
 * 
 *     def Rget_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Rget_accumulate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_msg);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":581
 *     # -----
 * 
 *     def Fence(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Perform an MPI fence synchronization on a window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_71Fence(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_70Fence, "Fence(self, assertion: int = 0) -> None\n\n        Perform an MPI fence synchronization on a window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_71Fence = {"Fence", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_71Fence, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_70Fence};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_71Fence(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_assertion;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Fence (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_assertion,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_assertion);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 581, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Fence") < 0)) __PYX_ERR(32, 581, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_assertion = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 581, __pyx_L3_error)
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Fence", 0, 0, 1, __pyx_nargs); __PYX_ERR(32, 581, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Fence", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_70Fence(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_assertion);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_70Fence(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_assertion) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Fence", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":585
 *         Perform an MPI fence synchronization on a window.
 *         """
 *         with nogil: CHKERR( MPI_Win_fence(assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # General Active Target Synchronization
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_fence(__pyx_v_assertion, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 585, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":581
 *     # -----
 * 
 *     def Fence(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Perform an MPI fence synchronization on a window.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Fence", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":590
 *     # -------------------------------------
 * 
 *     def Start(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA access epoch for MPI.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_73Start(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_72Start, "Start(self, group: Group, assertion: int = 0) -> None\n\n        Start an RMA access epoch for MPI.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_73Start = {"Start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_73Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_72Start};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_73Start(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  int __pyx_v_assertion;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Start (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_assertion,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 590, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_assertion);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 590, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Start") < 0)) __PYX_ERR(32, 590, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 590, __pyx_L3_error)
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Start", 0, 1, 2, __pyx_nargs); __PYX_ERR(32, 590, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(32, 590, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_72Start(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_group, __pyx_v_assertion);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_72Start(struct PyMPIWinObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group, int __pyx_v_assertion) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Start", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":594
 *         Start an RMA access epoch for MPI.
 *         """
 *         with nogil: CHKERR( MPI_Win_start(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":595
 *         """
 *         with nogil: CHKERR( MPI_Win_start(
 *             group.ob_mpi, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Complete(self) -> None:
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_start(__pyx_v_group->ob_mpi, __pyx_v_assertion, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 594, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":594
 *         Start an RMA access epoch for MPI.
 *         """
 *         with nogil: CHKERR( MPI_Win_start(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":590
 *     # -------------------------------------
 * 
 *     def Start(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA access epoch for MPI.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":597
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA operation begun after an `Start`.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_75Complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_74Complete, "Complete(self) -> None\n\n        Complete an RMA operation begun after an `Start`.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_75Complete = {"Complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_75Complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_74Complete};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_75Complete(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Complete (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Complete", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Complete", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_74Complete(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_74Complete(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Complete", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":601
 *         Complete an RMA operation begun after an `Start`.
 *         """
 *         with nogil: CHKERR( MPI_Win_complete(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Post(self, Group group: Group, int assertion: int = 0) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_complete(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 601, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":597
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA operation begun after an `Start`.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Complete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":603
 *         with nogil: CHKERR( MPI_Win_complete(self.ob_mpi) )
 * 
 *     def Post(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA exposure epoch.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_77Post(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_76Post, "Post(self, group: Group, assertion: int = 0) -> None\n\n        Start an RMA exposure epoch.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_77Post = {"Post", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_77Post, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_76Post};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_77Post(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  int __pyx_v_assertion;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Post (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_group,&__pyx_n_s_assertion,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_group)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 603, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_assertion);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 603, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Post") < 0)) __PYX_ERR(32, 603, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_group = ((struct PyMPIGroupObject *)values[0]);
    if (values[1]) {
      __pyx_v_assertion = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 603, __pyx_L3_error)
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Post", 0, 1, 2, __pyx_nargs); __PYX_ERR(32, 603, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Post", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_6mpi4py_3MPI_Group, 0, "group", 0))) __PYX_ERR(32, 603, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_76Post(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_group, __pyx_v_assertion);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_76Post(struct PyMPIWinObject *__pyx_v_self, struct PyMPIGroupObject *__pyx_v_group, int __pyx_v_assertion) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Post", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":607
 *         Start an RMA exposure epoch.
 *         """
 *         with nogil: CHKERR( MPI_Win_post(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":608
 *         """
 *         with nogil: CHKERR( MPI_Win_post(
 *             group.ob_mpi, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Wait(self) -> Literal[True]:
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_post(__pyx_v_group->ob_mpi, __pyx_v_assertion, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 607, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":607
 *         Start an RMA exposure epoch.
 *         """
 *         with nogil: CHKERR( MPI_Win_post(             # <<<<<<<<<<<<<<
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":603
 *         with nogil: CHKERR( MPI_Win_complete(self.ob_mpi) )
 * 
 *     def Post(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA exposure epoch.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Post", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":610
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Wait(self) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA exposure epoch begun with `Post`.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_79Wait(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_78Wait, "Wait(self) -> Literal[True]\n\n        Complete an RMA exposure epoch begun with `Post`.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_79Wait = {"Wait", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_79Wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_78Wait};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_79Wait(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Wait (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Wait", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Wait", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_78Wait(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_78Wait(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Wait", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":614
 *         Complete an RMA exposure epoch begun with `Post`.
 *         """
 *         with nogil: CHKERR( MPI_Win_wait(self.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_wait(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 614, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":615
 *         """
 *         with nogil: CHKERR( MPI_Win_wait(self.ob_mpi) )
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     def Test(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":610
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Wait(self) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA exposure epoch begun with `Post`.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Wait", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":617
 *         return True
 * 
 *     def Test(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test whether an RMA exposure epoch has completed.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_81Test(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_80Test, "Test(self) -> bool\n\n        Test whether an RMA exposure epoch has completed.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_81Test = {"Test", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_81Test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_80Test};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_81Test(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Test (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Test", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Test", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_80Test(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_80Test(struct PyMPIWinObject *__pyx_v_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Test", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":621
 *         Test whether an RMA exposure epoch has completed.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":622
 *         """
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_test(__pyx_v_self->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 622, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":623
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_Win_test(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     # Lock
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":617
 *         return True
 * 
 *     def Test(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test whether an RMA exposure epoch has completed.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Test", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":628
 *     # ----
 * 
 *     def Lock(             # <<<<<<<<<<<<<<
 *         self,
 *         int rank: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_83Lock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_82Lock, "Lock(self, rank: int, lock_type: int = LOCK_EXCLUSIVE, assertion: int = 0) -> None\n\n        Begin an RMA access epoch at the target process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_83Lock = {"Lock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_83Lock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_82Lock};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_83Lock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  int __pyx_v_lock_type;
  int __pyx_v_assertion;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Lock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,&__pyx_n_s_lock_type,&__pyx_n_s_assertion,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 628, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lock_type);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 628, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_assertion);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 628, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Lock") < 0)) __PYX_ERR(32, 628, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 630, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_lock_type = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_lock_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 631, __pyx_L3_error)
    } else {
      __pyx_v_lock_type = __pyx_k__195;
    }
    if (values[2]) {
      __pyx_v_assertion = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 632, __pyx_L3_error)
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Lock", 0, 1, 3, __pyx_nargs); __PYX_ERR(32, 628, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_82Lock(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_rank, __pyx_v_lock_type, __pyx_v_assertion);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_82Lock(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank, int __pyx_v_lock_type, int __pyx_v_assertion) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Lock", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":637
 *         Begin an RMA access epoch at the target process.
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(             # <<<<<<<<<<<<<<
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/Win.pyx":638
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(
 *             lock_type, rank, assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Unlock(self, int rank: int) -> None:
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_lock(__pyx_v_lock_type, __pyx_v_rank, __pyx_v_assertion, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 637, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/Win.pyx":637
 *         Begin an RMA access epoch at the target process.
 *         """
 *         with nogil: CHKERR( MPI_Win_lock(             # <<<<<<<<<<<<<<
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":628
 *     # ----
 * 
 *     def Lock(             # <<<<<<<<<<<<<<
 *         self,
 *         int rank: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":640
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 *     def Unlock(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at the target process.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_85Unlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_84Unlock, "Unlock(self, rank: int) -> None\n\n        Complete an RMA access epoch at the target process.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_85Unlock = {"Unlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_85Unlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_84Unlock};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_85Unlock(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Unlock (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 640, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Unlock") < 0)) __PYX_ERR(32, 640, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 640, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Unlock", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 640, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Unlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_84Unlock(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_rank);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_84Unlock(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Unlock", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":644
 *         Complete an RMA access epoch at the target process.
 *         """
 *         with nogil: CHKERR( MPI_Win_unlock(rank, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Lock_all(self, int assertion: int = 0) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_unlock(__pyx_v_rank, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 644, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":640
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 *     def Unlock(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at the target process.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Unlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":646
 *         with nogil: CHKERR( MPI_Win_unlock(rank, self.ob_mpi) )
 * 
 *     def Lock_all(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Begin an RMA access epoch at all processes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_87Lock_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_86Lock_all, "Lock_all(self, assertion: int = 0) -> None\n\n        Begin an RMA access epoch at all processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_87Lock_all = {"Lock_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_87Lock_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_86Lock_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_87Lock_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_assertion;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Lock_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_assertion,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_assertion);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 646, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Lock_all") < 0)) __PYX_ERR(32, 646, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_assertion = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_assertion == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 646, __pyx_L3_error)
    } else {
      __pyx_v_assertion = ((int)0);
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Lock_all", 0, 0, 1, __pyx_nargs); __PYX_ERR(32, 646, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Lock_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_86Lock_all(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_assertion);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_86Lock_all(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_assertion) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Lock_all", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":650
 *         Begin an RMA access epoch at all processes.
 *         """
 *         with nogil: CHKERR( MPI_Win_lock_all(assertion, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Unlock_all(self) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_lock_all(__pyx_v_assertion, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 650, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":646
 *         with nogil: CHKERR( MPI_Win_unlock(rank, self.ob_mpi) )
 * 
 *     def Lock_all(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Begin an RMA access epoch at all processes.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Lock_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":652
 *         with nogil: CHKERR( MPI_Win_lock_all(assertion, self.ob_mpi) )
 * 
 *     def Unlock_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at all processes.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_89Unlock_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_88Unlock_all, "Unlock_all(self) -> None\n\n        Complete an RMA access epoch at all processes.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_89Unlock_all = {"Unlock_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_89Unlock_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_88Unlock_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_89Unlock_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Unlock_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Unlock_all", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Unlock_all", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_88Unlock_all(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_88Unlock_all(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Unlock_all", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":656
 *         Complete an RMA access epoch at all processes.
 *         """
 *         with nogil: CHKERR( MPI_Win_unlock_all(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Flush and Sync
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_unlock_all(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 656, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":652
 *         with nogil: CHKERR( MPI_Win_lock_all(assertion, self.ob_mpi) )
 * 
 *     def Unlock_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at all processes.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Unlock_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":661
 *     # --------------
 * 
 *     def Flush(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at a target.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_91Flush(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_90Flush, "Flush(self, rank: int) -> None\n\n        Complete all outstanding RMA operations at a target.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_91Flush = {"Flush", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_91Flush, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_90Flush};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_91Flush(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Flush (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 661, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Flush") < 0)) __PYX_ERR(32, 661, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 661, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Flush", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 661, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_90Flush(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_rank);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_90Flush(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Flush", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":665
 *         Complete all outstanding RMA operations at a target.
 *         """
 *         with nogil: CHKERR( MPI_Win_flush(rank, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Flush_all(self) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_flush(__pyx_v_rank, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 665, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":661
 *     # --------------
 * 
 *     def Flush(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at a target.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":667
 *         with nogil: CHKERR( MPI_Win_flush(rank, self.ob_mpi) )
 * 
 *     def Flush_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at all targets.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_93Flush_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_92Flush_all, "Flush_all(self) -> None\n\n        Complete all outstanding RMA operations at all targets.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_93Flush_all = {"Flush_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_93Flush_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_92Flush_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_93Flush_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Flush_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Flush_all", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Flush_all", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_92Flush_all(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_92Flush_all(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Flush_all", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":671
 *         Complete all outstanding RMA operations at all targets.
 *         """
 *         with nogil: CHKERR( MPI_Win_flush_all(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Flush_local(self, int rank: int) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_flush_all(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 671, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":667
 *         with nogil: CHKERR( MPI_Win_flush(rank, self.ob_mpi) )
 * 
 *     def Flush_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at all targets.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Flush_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":673
 *         with nogil: CHKERR( MPI_Win_flush_all(self.ob_mpi) )
 * 
 *     def Flush_local(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at a target.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_95Flush_local(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_94Flush_local, "Flush_local(self, rank: int) -> None\n\n        Complete locally all outstanding RMA operations at a target.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_95Flush_local = {"Flush_local", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_95Flush_local, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_94Flush_local};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_95Flush_local(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_rank;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Flush_local (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rank,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rank)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 673, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Flush_local") < 0)) __PYX_ERR(32, 673, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_rank = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_rank == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 673, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Flush_local", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 673, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Flush_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_94Flush_local(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_rank);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_94Flush_local(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_rank) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Flush_local", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":677
 *         Complete locally all outstanding RMA operations at a target.
 *         """
 *         with nogil: CHKERR( MPI_Win_flush_local(rank, self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Flush_local_all(self) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_flush_local(__pyx_v_rank, __pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 677, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":673
 *         with nogil: CHKERR( MPI_Win_flush_all(self.ob_mpi) )
 * 
 *     def Flush_local(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at a target.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Flush_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":679
 *         with nogil: CHKERR( MPI_Win_flush_local(rank, self.ob_mpi) )
 * 
 *     def Flush_local_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at all targets.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_97Flush_local_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_96Flush_local_all, "Flush_local_all(self) -> None\n\n        Complete locally all outstanding RMA operations at all targets.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_97Flush_local_all = {"Flush_local_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_97Flush_local_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_96Flush_local_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_97Flush_local_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Flush_local_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Flush_local_all", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Flush_local_all", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_96Flush_local_all(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_96Flush_local_all(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Flush_local_all", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":683
 *         Complete locally all outstanding RMA operations at all targets.
 *         """
 *         with nogil: CHKERR( MPI_Win_flush_local_all(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Sync(self) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_flush_local_all(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 683, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":679
 *         with nogil: CHKERR( MPI_Win_flush_local(rank, self.ob_mpi) )
 * 
 *     def Flush_local_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at all targets.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Flush_local_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":685
 *         with nogil: CHKERR( MPI_Win_flush_local_all(self.ob_mpi) )
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Synchronize public and private copies of the window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_99Sync(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_98Sync, "Sync(self) -> None\n\n        Synchronize public and private copies of the window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_99Sync = {"Sync", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_99Sync, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_98Sync};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_99Sync(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Sync (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Sync", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Sync", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_98Sync(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_98Sync(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Sync", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":689
 *         Synchronize public and private copies of the window.
 *         """
 *         with nogil: CHKERR( MPI_Win_sync(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Error Handling
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_sync(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 689, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/Win.pyx":685
 *         with nogil: CHKERR( MPI_Win_flush_local_all(self.ob_mpi) )
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Synchronize public and private copies of the window.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Sync", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":694
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_101Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_100Create_errhandler, "Create_errhandler(cls, errhandler_fn: Callable[[Win, int], None]) -> Errhandler\n\n        Create a new error handler for windows.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_101Create_errhandler = {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_101Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_100Create_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_101Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_errhandler_fn = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler_fn,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 694, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_errhandler") < 0)) __PYX_ERR(32, 694, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler_fn = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 694, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_100Create_errhandler(((PyTypeObject*)__pyx_v_cls), __pyx_v_errhandler_fn);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_100Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  MPI_Win_errhandler_function *__pyx_v_fn;
  int __pyx_v_index;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_errhandler", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":702
 *         Create a new error handler for windows.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         cdef MPI_Win_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":703
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_Win_errhandler_function *fn = NULL             # <<<<<<<<<<<<<<
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 */
  __pyx_v_fn = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":704
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_Win_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)             # <<<<<<<<<<<<<<
 *         try:
 *             CHKERR( MPI_Win_create_errhandler(fn, &errhandler.ob_mpi) )
 */
  __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_new(__pyx_v_errhandler_fn, (&__pyx_v_fn)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 704, __pyx_L1_error)
  __pyx_v_index = __pyx_t_3;

  /* "src/mpi4py/MPI.src/Win.pyx":705
 *         cdef MPI_Win_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/Win.pyx":706
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 *             CHKERR( MPI_Win_create_errhandler(fn, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_create_errhandler(__pyx_v_fn, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 706, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/Win.pyx":705
 *         cdef MPI_Win_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/Win.pyx":707
 *         try:
 *             CHKERR( MPI_Win_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.Win.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(32, 707, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/Win.pyx":708
 *             CHKERR( MPI_Win_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             raise                   # ~> uncovered
 *         return errhandler
 */
      __pyx_t_3 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_errhdl_del((&__pyx_v_index), __pyx_v_fn); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 708, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/Win.pyx":709
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_7);
      __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_7 = 0; 
      __PYX_ERR(32, 709, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/Win.pyx":705
 *         cdef MPI_Win_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_Win_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/Win.pyx":710
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Get_errhandler(self) -> Errhandler:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":694
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":712
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_103Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_102Get_errhandler, "Get_errhandler(self) -> Errhandler\n\n        Get the error handler for a window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_103Get_errhandler = {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_103Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_102Get_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_103Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_errhandler", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_errhandler", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_102Get_errhandler(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_102Get_errhandler(struct PyMPIWinObject *__pyx_v_self) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_errhandler", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":716
 *         Get the error handler for a window.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":717
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_errhandler(__pyx_v_self->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(32, 717, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":718
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_Win_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":712
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a window.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":720
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_105Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_104Set_errhandler, "Set_errhandler(self, errhandler: Errhandler) -> None\n\n        Set the error handler for a window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_105Set_errhandler = {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_105Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_104Set_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_105Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 720, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_errhandler") < 0)) __PYX_ERR(32, 720, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 720, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(32, 720, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_104Set_errhandler(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_errhandler);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_104Set_errhandler(struct PyMPIWinObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_errhandler", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":724
 *         Set the error handler for a window.
 *         """
 *         CHKERR( MPI_Win_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errhandler->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 724, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":720
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a window.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":726
 *         CHKERR( MPI_Win_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_107Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_106Call_errhandler, "Call_errhandler(self, errorcode: int) -> None\n\n        Call the error handler installed on a window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_107Call_errhandler = {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_107Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_106Call_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_107Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Call_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 726, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Call_errhandler") < 0)) __PYX_ERR(32, 726, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 726, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 726, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_106Call_errhandler(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_106Call_errhandler(struct PyMPIWinObject *__pyx_v_self, int __pyx_v_errorcode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Call_errhandler", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":730
 *         Call the error handler installed on a window.
 *         """
 *         CHKERR( MPI_Win_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Naming Objects
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_call_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 730, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":726
 *         CHKERR( MPI_Win_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a window.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Win.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":735
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_109Get_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_108Get_name, "Get_name(self) -> str\n\n        Get the print name for this window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_109Get_name = {"Get_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_109Get_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_108Get_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_109Get_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_name", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_name", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_108Get_name(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_108Get_name(struct PyMPIWinObject *__pyx_v_self) {
  char __pyx_v_name[(MPI_MAX_OBJECT_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_name", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":740
 *         """
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":741
 *         cdef char name[MPI_MAX_OBJECT_NAME+1]
 *         cdef int nlen = 0
 *         CHKERR( MPI_Win_get_name(self.ob_mpi, name, &nlen) )             # <<<<<<<<<<<<<<
 *         return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_get_name(__pyx_v_self->ob_mpi, __pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(32, 741, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":742
 *         cdef int nlen = 0
 *         CHKERR( MPI_Win_get_name(self.ob_mpi, name, &nlen) )
 *         return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 *     def Set_name(self, name: str) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":735
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this window.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":744
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this window.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_111Set_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_110Set_name, "Set_name(self, name: str) -> None\n\n        Set the print name for this window.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_111Set_name = {"Set_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_111Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_110Set_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_111Set_name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_name (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 744, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_name") < 0)) __PYX_ERR(32, 744, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_name", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 744, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_110Set_name(((struct PyMPIWinObject *)__pyx_v_self), __pyx_v_name);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_110Set_name(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_cname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_name", 0);
  __Pyx_INCREF(__pyx_v_name);

  /* "src/mpi4py/MPI.src/Win.pyx":748
 *         Set the print name for this window.
 *         """
 *         cdef char *cname = NULL             # <<<<<<<<<<<<<<
 *         name = asmpistr(name, &cname)
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )
 */
  __pyx_v_cname = NULL;

  /* "src/mpi4py/MPI.src/Win.pyx":749
 *         """
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_name, (&__pyx_v_cname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":750
 *         cdef char *cname = NULL
 *         name = asmpistr(name, &cname)
 *         CHKERR( MPI_Win_set_name(self.ob_mpi, cname) )             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Win_set_name(__pyx_v_self->ob_mpi, __pyx_v_cname)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(32, 750, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":744
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this window.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.Set_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":754
 *     property name:
 *         """Print name."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_4name___get__(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_4name___get__(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":755
 *         """Print name."""
 *         def __get__(self) -> str:
 *             return self.Get_name()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: str):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":754
 *     property name:
 *         """Print name."""
 *         def __get__(self) -> str:             # <<<<<<<<<<<<<<
 *             return self.Get_name()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":757
 *             return self.Get_name()
 * 
 *         def __set__(self, value: str):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_3Win_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_3Win_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_4name_2__set__(((struct PyMPIWinObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_3Win_4name_2__set__(struct PyMPIWinObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":758
 * 
 *         def __set__(self, value: str):
 *             self.Set_name(value)             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 758, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":757
 *             return self.Get_name()
 * 
 *         def __set__(self, value: str):             # <<<<<<<<<<<<<<
 *             self.Set_name(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.Win.name.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":763
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_113py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_112py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_113py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_113py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_112py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_113py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_112py2f(((struct PyMPIWinObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_112py2f(struct PyMPIWinObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":766
 *         """
 *         """
 *         return MPI_Win_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_Win_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":763
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Win.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/Win.pyx":768
 *         return MPI_Win_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Win:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_115f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_3Win_114f2py, "f2py(cls, arg: int) -> Win\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_3Win_115f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_115f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_114f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_3Win_115f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 768, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(32, 768, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(32, 768, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Win.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_3Win_114f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_3Win_114f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/Win.pyx":772
 *         """
 *         """
 *         return fromhandle(MPI_Win_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(32, 772, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_9__pyx_f_6mpi4py_3MPI_fromhandle(MPI_Win_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/Win.pyx":768
 *         return MPI_Win_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Win:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Win.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":56
 *     """
 * 
 *     def __cinit__(self, File file: File | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, file)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4File_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4File_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct PyMPIFileObject *__pyx_v_file = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file,0};
    values[0] = __Pyx_Arg_NewRef_VARARGS((PyObject *)((struct PyMPIFileObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file);
          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 56, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__cinit__") < 0)) __PYX_ERR(33, 56, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_file = ((struct PyMPIFileObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(33, 56, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_file), __pyx_ptype_6mpi4py_3MPI_File, 1, "file", 0))) __PYX_ERR(33, 56, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File___cinit__(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_file);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_VARARGS(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4File___cinit__(struct PyMPIFileObject *__pyx_v_self, struct PyMPIFileObject *__pyx_v_file) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/File.pyx":57
 * 
 *     def __cinit__(self, File file: File | None = None):
 *         cinit(self, file)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_cinit(__pyx_v_self, __pyx_v_file); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 57, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":56
 *     """
 * 
 *     def __cinit__(self, File file: File | None = None):             # <<<<<<<<<<<<<<
 *         cinit(self, file)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":59
 *         cinit(self, file)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

/* Python wrapper */
static void __pyx_pw_6mpi4py_3MPI_4File_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_6mpi4py_3MPI_4File_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_6mpi4py_3MPI_4File_2__dealloc__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_6mpi4py_3MPI_4File_2__dealloc__(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/File.pyx":60
 * 
 *     def __dealloc__(self):
 *         dealloc(self)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
 */
  __pyx_t_1 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_dealloc(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 60, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":59
 *         cinit(self, file)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         dealloc(self)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("mpi4py.MPI.File.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
}

/* "src/mpi4py/MPI.src/File.pyx":62
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, File): return NotImplemented
 *         return richcmp(self, other, op)
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_4__richcmp__(((struct PyMPIFileObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4__richcmp__(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":63
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, File): return NotImplemented             # <<<<<<<<<<<<<<
 *         return richcmp(self, other, op)
 * 
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6mpi4py_3MPI_File); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/File.pyx":64
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, File): return NotImplemented
 *         return richcmp(self, other, op)             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self) -> bool:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_richcmp(__pyx_v_self, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":62
 *         dealloc(self)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, File): return NotImplemented
 *         return richcmp(self, other, op)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":66
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4File_7__bool__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4File_7__bool__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_6__bool__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4File_6__bool__(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_r;

  /* "src/mpi4py/MPI.src/File.pyx":67
 * 
 *     def __bool__(self) -> bool:
 *         return nonnull(self)             # <<<<<<<<<<<<<<
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 */
  __pyx_r = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_nonnull(__pyx_v_self);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":66
 *         return richcmp(self, other, op)
 * 
 *     def __bool__(self) -> bool:             # <<<<<<<<<<<<<<
 *         return nonnull(self)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":69
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_8__reduce__, "__reduce__(self) -> str | tuple[Any, ...]");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_9__reduce__ = {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_8__reduce__};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_9__reduce__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce__", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_8__reduce__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_8__reduce__(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":70
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:
 *         return reduce_default(self)             # <<<<<<<<<<<<<<
 * 
 *     property handle:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_reduce_default(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":69
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":74
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_6handle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_6handle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_6handle___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_6handle___get__(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":75
 *         """MPI handle."""
 *         def __get__(self) -> int:
 *             return tohandle(self)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_fuse_10__pyx_f_6mpi4py_3MPI_tohandle(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":74
 *     property handle:
 *         """MPI handle."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return tohandle(self)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":77
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> File:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_10fromhandle, "fromhandle(cls, handle: int) -> File\n\n        Create object from MPI handle.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_11fromhandle = {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_10fromhandle};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_11fromhandle(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_handle = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fromhandle (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_handle,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handle)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 77, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fromhandle") < 0)) __PYX_ERR(33, 77, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_handle = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fromhandle", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 77, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_10fromhandle(((PyTypeObject*)__pyx_v_cls), __pyx_v_handle);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10fromhandle(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_handle) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_uintptr_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fromhandle", 1);

  /* "src/mpi4py/MPI.src/File.pyx":82
 *         Create object from MPI handle.
 *         """
 *         return fromhandle(<MPI_File> <Py_uintptr_t> handle)             # <<<<<<<<<<<<<<
 * 
 *     def free(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_handle); if (unlikely((__pyx_t_1 == ((Py_uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(33, 82, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_fromhandle(((MPI_File)((Py_uintptr_t)__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":77
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> File:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.fromhandle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":84
 *         return fromhandle(<MPI_File> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Close` if not null.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_12free, "free(self) -> None\n\n        Call `Close` if not null.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_13free = {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_12free};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_13free(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("free (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("free", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "free", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_12free(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_12free(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("free", 1);

  /* "src/mpi4py/MPI.src/File.pyx":88
 *         Call `Close` if not null.
 *         """
 *         safefree(self)             # <<<<<<<<<<<<<<
 * 
 *     # File Manipulation
 */
  __pyx_t_1 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_safefree(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 88, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":84
 *         return fromhandle(<MPI_File> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Close` if not null.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":93
 *     # -----------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Open(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_15Open(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_14Open, "Open(cls, comm: Intracomm, filename: PathLike[AnyStr] | str | bytes, amode: int = MODE_RDONLY, info: Info = INFO_NULL) -> Self\n\n        Open a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_15Open = {"Open", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_15Open, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_14Open};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_15Open(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIIntracommObject *__pyx_v_comm = 0;
  PyObject *__pyx_v_filename = 0;
  int __pyx_v_amode;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Open (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_comm,&__pyx_n_s_filename,&__pyx_n_s_amode,&__pyx_n_s_info,0};
    values[3] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__196);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_comm)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 93, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 93, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Open", 0, 2, 4, 1); __PYX_ERR(33, 93, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_amode);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 93, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 93, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Open") < 0)) __PYX_ERR(33, 93, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_comm = ((struct PyMPIIntracommObject *)values[0]);
    __pyx_v_filename = values[1];
    if (values[2]) {
      __pyx_v_amode = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_amode == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 98, __pyx_L3_error)
    } else {
      __pyx_v_amode = __pyx_k__197;
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Open", 0, 2, 4, __pyx_nargs); __PYX_ERR(33, 93, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_comm), __pyx_ptype_6mpi4py_3MPI_Intracomm, 0, "comm", 0))) __PYX_ERR(33, 96, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 99, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_14Open(((PyTypeObject*)__pyx_v_cls), __pyx_v_comm, __pyx_v_filename, __pyx_v_amode, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_14Open(PyTypeObject *__pyx_v_cls, struct PyMPIIntracommObject *__pyx_v_comm, PyObject *__pyx_v_filename, int __pyx_v_amode, struct PyMPIInfoObject *__pyx_v_info) {
  char *__pyx_v_cfilename;
  struct PyMPIFileObject *__pyx_v_file = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Open", 0);
  __Pyx_INCREF(__pyx_v_filename);

  /* "src/mpi4py/MPI.src/File.pyx":104
 *         Open a file.
 *         """
 *         cdef char *cfilename = NULL             # <<<<<<<<<<<<<<
 *         filename = asmpifspath(filename, &cfilename)
 *         cdef File file = <File>New(cls)
 */
  __pyx_v_cfilename = NULL;

  /* "src/mpi4py/MPI.src/File.pyx":105
 *         """
 *         cdef char *cfilename = NULL
 *         filename = asmpifspath(filename, &cfilename)             # <<<<<<<<<<<<<<
 *         cdef File file = <File>New(cls)
 *         with nogil: CHKERR( MPI_File_open(
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpifspath(__pyx_v_filename, (&__pyx_v_cfilename)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":106
 *         cdef char *cfilename = NULL
 *         filename = asmpifspath(filename, &cfilename)
 *         cdef File file = <File>New(cls)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_open(
 *             comm.ob_mpi, cfilename, amode, info.ob_mpi, &file.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_v_cls); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_file = ((struct PyMPIFileObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":107
 *         filename = asmpifspath(filename, &cfilename)
 *         cdef File file = <File>New(cls)
 *         with nogil: CHKERR( MPI_File_open(             # <<<<<<<<<<<<<<
 *             comm.ob_mpi, cfilename, amode, info.ob_mpi, &file.ob_mpi) )
 *         file_set_eh(file.ob_mpi)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":108
 *         cdef File file = <File>New(cls)
 *         with nogil: CHKERR( MPI_File_open(
 *             comm.ob_mpi, cfilename, amode, info.ob_mpi, &file.ob_mpi) )             # <<<<<<<<<<<<<<
 *         file_set_eh(file.ob_mpi)
 *         return file
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_open(__pyx_v_comm->__pyx_base.ob_mpi, __pyx_v_cfilename, __pyx_v_amode, __pyx_v_info->ob_mpi, (&__pyx_v_file->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 107, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":107
 *         filename = asmpifspath(filename, &cfilename)
 *         cdef File file = <File>New(cls)
 *         with nogil: CHKERR( MPI_File_open(             # <<<<<<<<<<<<<<
 *             comm.ob_mpi, cfilename, amode, info.ob_mpi, &file.ob_mpi) )
 *         file_set_eh(file.ob_mpi)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":109
 *         with nogil: CHKERR( MPI_File_open(
 *             comm.ob_mpi, cfilename, amode, info.ob_mpi, &file.ob_mpi) )
 *         file_set_eh(file.ob_mpi)             # <<<<<<<<<<<<<<
 *         return file
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_file_set_eh(__pyx_v_file->ob_mpi); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 109, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":110
 *             comm.ob_mpi, cfilename, amode, info.ob_mpi, &file.ob_mpi) )
 *         file_set_eh(file.ob_mpi)
 *         return file             # <<<<<<<<<<<<<<
 * 
 *     def Close(self) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_file);
  __pyx_r = ((PyObject *)__pyx_v_file);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":93
 *     # -----------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Open(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Open", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_file);
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":112
 *         return file
 * 
 *     def Close(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Close a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_17Close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_16Close, "Close(self) -> None\n\n        Close a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_17Close = {"Close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_17Close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_16Close};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_17Close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Close", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Close", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_16Close(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_16Close(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Close", 1);

  /* "src/mpi4py/MPI.src/File.pyx":116
 *         Close a file.
 *         """
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_close((&__pyx_v_self->ob_mpi))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 116, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":112
 *         return file
 * 
 *     def Close(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Close a file.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":118
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_19Delete(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_18Delete, "Delete(cls, filename: PathLike[AnyStr] | str | bytes, info: Info = INFO_NULL) -> None\n\n        Delete a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_19Delete = {"Delete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_19Delete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_18Delete};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_19Delete(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_filename = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Delete (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_info,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__198);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filename)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 118, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 118, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Delete") < 0)) __PYX_ERR(33, 118, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_filename = values[0];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Delete", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 118, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 122, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_18Delete(((PyTypeObject*)__pyx_v_cls), __pyx_v_filename, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_18Delete(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_filename, struct PyMPIInfoObject *__pyx_v_info) {
  char *__pyx_v_cfilename;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Delete", 0);
  __Pyx_INCREF(__pyx_v_filename);

  /* "src/mpi4py/MPI.src/File.pyx":127
 *         Delete a file.
 *         """
 *         cdef char *cfilename = NULL             # <<<<<<<<<<<<<<
 *         filename = asmpifspath(filename, &cfilename)
 *         with nogil: CHKERR( MPI_File_delete(cfilename, info.ob_mpi) )
 */
  __pyx_v_cfilename = NULL;

  /* "src/mpi4py/MPI.src/File.pyx":128
 *         """
 *         cdef char *cfilename = NULL
 *         filename = asmpifspath(filename, &cfilename)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_delete(cfilename, info.ob_mpi) )
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpifspath(__pyx_v_filename, (&__pyx_v_cfilename)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":129
 *         cdef char *cfilename = NULL
 *         filename = asmpifspath(filename, &cfilename)
 *         with nogil: CHKERR( MPI_File_delete(cfilename, info.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Set_size(self, Offset size: int) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_delete(__pyx_v_cfilename, __pyx_v_info->ob_mpi)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 129, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":118
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(
 *         cls,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":131
 *         with nogil: CHKERR( MPI_File_delete(cfilename, info.ob_mpi) )
 * 
 *     def Set_size(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the file size.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_21Set_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_20Set_size, "Set_size(self, size: int) -> None\n\n        Set the file size.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_21Set_size = {"Set_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_21Set_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_20Set_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_21Set_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_size;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_size_2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 131, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_size") < 0)) __PYX_ERR(33, 131, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_size = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_size == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 131, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_size", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 131, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_20Set_size(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_size);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_20Set_size(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_size) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_size", 1);

  /* "src/mpi4py/MPI.src/File.pyx":135
 *         Set the file size.
 *         """
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )             # <<<<<<<<<<<<<<
 * 
 *     def Preallocate(self, Offset size: int) -> None:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_size(__pyx_v_self->ob_mpi, __pyx_v_size)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 135, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":131
 *         with nogil: CHKERR( MPI_File_delete(cfilename, info.ob_mpi) )
 * 
 *     def Set_size(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the file size.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":137
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )
 * 
 *     def Preallocate(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Preallocate storage space for a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_23Preallocate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_22Preallocate, "Preallocate(self, size: int) -> None\n\n        Preallocate storage space for a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_23Preallocate = {"Preallocate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_23Preallocate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_22Preallocate};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_23Preallocate(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_size;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Preallocate (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_size_2,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 137, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Preallocate") < 0)) __PYX_ERR(33, 137, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_size = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_size == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 137, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Preallocate", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 137, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Preallocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_22Preallocate(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_size);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_22Preallocate(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_size) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Preallocate", 1);

  /* "src/mpi4py/MPI.src/File.pyx":141
 *         Preallocate storage space for a file.
 *         """
 *         with nogil: CHKERR( MPI_File_preallocate(self.ob_mpi, size) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_size(self) -> int:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_preallocate(__pyx_v_self->ob_mpi, __pyx_v_size)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 141, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":137
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )
 * 
 *     def Preallocate(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Preallocate storage space for a file.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Preallocate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":143
 *         with nogil: CHKERR( MPI_File_preallocate(self.ob_mpi, size) )
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file size.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_25Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_24Get_size, "Get_size(self) -> int\n\n        Return the file size.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_25Get_size = {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_25Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_24Get_size};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_25Get_size(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_size (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_size", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_size", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_24Get_size(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_24Get_size(struct PyMPIFileObject *__pyx_v_self) {
  MPI_Offset __pyx_v_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_size", 1);

  /* "src/mpi4py/MPI.src/File.pyx":147
 *         Return the file size.
 *         """
 *         cdef MPI_Offset size = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )
 *         return size
 */
  __pyx_v_size = 0;

  /* "src/mpi4py/MPI.src/File.pyx":148
 *         """
 *         cdef MPI_Offset size = 0
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )             # <<<<<<<<<<<<<<
 *         return size
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_size(__pyx_v_self->ob_mpi, (&__pyx_v_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 148, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":149
 *         cdef MPI_Offset size = 0
 *         with nogil: CHKERR( MPI_File_get_size(self.ob_mpi, &size) )
 *         return size             # <<<<<<<<<<<<<<
 * 
 *     property size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Offset(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":143
 *         with nogil: CHKERR( MPI_File_preallocate(self.ob_mpi, size) )
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file size.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":153
 *     property size:
 *         """Size (in bytes)."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_4size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_4size___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4size___get__(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":154
 *         """Size (in bytes)."""
 *         def __get__(self) -> int:
 *             return self.Get_size()             # <<<<<<<<<<<<<<
 * 
 *     def Get_amode(self) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":153
 *     property size:
 *         """Size (in bytes)."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_size()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":156
 *             return self.Get_size()
 * 
 *     def Get_amode(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file access mode.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_27Get_amode(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_26Get_amode, "Get_amode(self) -> int\n\n        Return the file access mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_27Get_amode = {"Get_amode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_27Get_amode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_26Get_amode};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_27Get_amode(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_amode (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_amode", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_amode", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_26Get_amode(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_26Get_amode(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_v_amode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_amode", 1);

  /* "src/mpi4py/MPI.src/File.pyx":160
 *         Return the file access mode.
 *         """
 *         cdef int amode = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )
 *         return amode
 */
  __pyx_v_amode = 0;

  /* "src/mpi4py/MPI.src/File.pyx":161
 *         """
 *         cdef int amode = 0
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )             # <<<<<<<<<<<<<<
 *         return amode
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_amode(__pyx_v_self->ob_mpi, (&__pyx_v_amode))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 161, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":162
 *         cdef int amode = 0
 *         with nogil: CHKERR( MPI_File_get_amode(self.ob_mpi, &amode) )
 *         return amode             # <<<<<<<<<<<<<<
 * 
 *     property amode:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_amode); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":156
 *             return self.Get_size()
 * 
 *     def Get_amode(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file access mode.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_amode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":166
 *     property amode:
 *         """Access mode."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_amode()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_5amode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_5amode_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_5amode___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5amode___get__(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":167
 *         """Access mode."""
 *         def __get__(self) -> int:
 *             return self.Get_amode()             # <<<<<<<<<<<<<<
 * 
 *     # File Group
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_amode); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":166
 *     property amode:
 *         """Access mode."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             return self.Get_amode()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.amode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":172
 *     # ----------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that opened the file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_29Get_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_28Get_group, "Get_group(self) -> Group\n\n        Access the group of processes that opened the file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_29Get_group = {"Get_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_29Get_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_28Get_group};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_29Get_group(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_group (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_group", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_group", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_28Get_group(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_28Get_group(struct PyMPIFileObject *__pyx_v_self) {
  struct PyMPIGroupObject *__pyx_v_group = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_group", 1);

  /* "src/mpi4py/MPI.src/File.pyx":176
 *         Access the group of processes that opened the file.
 *         """
 *         cdef Group group = <Group>New(Group)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_group = ((struct PyMPIGroupObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":177
 *         """
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return group
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_group(__pyx_v_self->ob_mpi, (&__pyx_v_group->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 177, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":178
 *         cdef Group group = <Group>New(Group)
 *         with nogil: CHKERR( MPI_File_get_group(self.ob_mpi, &group.ob_mpi) )
 *         return group             # <<<<<<<<<<<<<<
 * 
 *     property group:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_group);
  __pyx_r = ((PyObject *)__pyx_v_group);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":172
 *     # ----------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that opened the file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_group);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":182
 *     property group:
 *         """Group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_5group_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_5group_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_5group___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_5group___get__(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":183
 *         """Group."""
 *         def __get__(self) -> Group:
 *             return self.Get_group()             # <<<<<<<<<<<<<<
 * 
 *     property group_size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_group); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":182
 *     property group:
 *         """Group."""
 *         def __get__(self) -> Group:             # <<<<<<<<<<<<<<
 *             return self.Get_group()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.group.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":187
 *     property group_size:
 *         """Group size."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_10group_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_10group_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_10group_size___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10group_size___get__(struct PyMPIFileObject *__pyx_v_self) {
  MPI_Group __pyx_v_group;
  int __pyx_v_group_size;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char const *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":188
 *         """Group size."""
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *             cdef int group_size  = -1
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 */
  __pyx_v_group = MPI_GROUP_NULL;

  /* "src/mpi4py/MPI.src/File.pyx":189
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 *             try:
 */
  __pyx_v_group_size = -1;

  /* "src/mpi4py/MPI.src/File.pyx":190
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )             # <<<<<<<<<<<<<<
 *             try:
 *                 CHKERR( MPI_Group_size(group, &group_size) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_group(__pyx_v_self->ob_mpi, (&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 190, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":191
 *             cdef int group_size  = -1
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 *             try:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_size(group, &group_size) )
 *             finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/File.pyx":192
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 *             try:
 *                 CHKERR( MPI_Group_size(group, &group_size) )             # <<<<<<<<<<<<<<
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_size(__pyx_v_group, (&__pyx_v_group_size))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 192, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/File.pyx":194
 *                 CHKERR( MPI_Group_size(group, &group_size) )
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )             # <<<<<<<<<<<<<<
 *             return group_size
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 194, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __pyx_t_1 = __pyx_lineno; __pyx_t_2 = __pyx_clineno; __pyx_t_3 = __pyx_filename;
      {
        __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(33, 194, __pyx_L7_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_2; __pyx_filename = __pyx_t_3;
      goto __pyx_L1_error;
      __pyx_L7_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/File.pyx":195
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_size             # <<<<<<<<<<<<<<
 * 
 *     property group_rank:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_group_size); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_r = __pyx_t_11;
  __pyx_t_11 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":187
 *     property group_size:
 *         """Group size."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_size  = -1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.File.group_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":199
 *     property group_rank:
 *         """Group rank."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_10group_rank_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_10group_rank_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_10group_rank___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_10group_rank___get__(struct PyMPIFileObject *__pyx_v_self) {
  MPI_Group __pyx_v_group;
  int __pyx_v_group_rank;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char const *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":200
 *         """Group rank."""
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL             # <<<<<<<<<<<<<<
 *             cdef int group_rank  = MPI_PROC_NULL
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 */
  __pyx_v_group = MPI_GROUP_NULL;

  /* "src/mpi4py/MPI.src/File.pyx":201
 *         def __get__(self) -> int:
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 *             try:
 */
  __pyx_v_group_rank = MPI_PROC_NULL;

  /* "src/mpi4py/MPI.src/File.pyx":202
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )             # <<<<<<<<<<<<<<
 *             try:
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_group(__pyx_v_self->ob_mpi, (&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 202, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":203
 *             cdef int group_rank  = MPI_PROC_NULL
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 *             try:             # <<<<<<<<<<<<<<
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )
 *             finally:
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/File.pyx":204
 *             CHKERR( MPI_File_get_group(self.ob_mpi, &group) )
 *             try:
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )             # <<<<<<<<<<<<<<
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_rank(__pyx_v_group, (&__pyx_v_group_rank))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 204, __pyx_L4_error)
  }

  /* "src/mpi4py/MPI.src/File.pyx":206
 *                 CHKERR( MPI_Group_rank(group, &group_rank) )
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )             # <<<<<<<<<<<<<<
 *             return group_rank
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 206, __pyx_L1_error)
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __pyx_t_1 = __pyx_lineno; __pyx_t_2 = __pyx_clineno; __pyx_t_3 = __pyx_filename;
      {
        __pyx_t_10 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Group_free((&__pyx_v_group))); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(33, 206, __pyx_L7_error)
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
      __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      __pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_2; __pyx_filename = __pyx_t_3;
      goto __pyx_L1_error;
      __pyx_L7_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/mpi4py/MPI.src/File.pyx":207
 *             finally:
 *                 CHKERR( MPI_Group_free(&group) )
 *             return group_rank             # <<<<<<<<<<<<<<
 * 
 *     # File Info
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = __Pyx_PyInt_From_int(__pyx_v_group_rank); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_r = __pyx_t_11;
  __pyx_t_11 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":199
 *     property group_rank:
 *         """Group rank."""
 *         def __get__(self) -> int:             # <<<<<<<<<<<<<<
 *             cdef MPI_Group group = MPI_GROUP_NULL
 *             cdef int group_rank  = MPI_PROC_NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.File.group_rank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":212
 *     # ---------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_31Set_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_30Set_info, "Set_info(self, info: Info) -> None\n\n        Set new values for the hints associated with a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_31Set_info = {"Set_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_31Set_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_30Set_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_31Set_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 212, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_info") < 0)) __PYX_ERR(33, 212, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_info = ((struct PyMPIInfoObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_info", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 212, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 212, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_30Set_info(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_30Set_info(struct PyMPIFileObject *__pyx_v_self, struct PyMPIInfoObject *__pyx_v_info) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_info", 1);

  /* "src/mpi4py/MPI.src/File.pyx":216
 *         Set new values for the hints associated with a file.
 *         """
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_info(self) -> Info:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_info(__pyx_v_self->ob_mpi, __pyx_v_info->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 216, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":212
 *     # ---------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a file.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":218
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_33Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_32Get_info, "Get_info(self) -> Info\n\n        Return the current hints for a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_33Get_info = {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_33Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_32Get_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_33Get_info(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_info (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_info", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_info", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_32Get_info(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_32Get_info(struct PyMPIFileObject *__pyx_v_self) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_info", 1);

  /* "src/mpi4py/MPI.src/File.pyx":222
 *         Return the current hints for a file.
 *         """
 *         cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )
 *         return info
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":223
 *         """
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return info
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_info(__pyx_v_self->ob_mpi, (&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 223, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":224
 *         cdef Info info = <Info>New(Info)
 *         with nogil: CHKERR( MPI_File_get_info(self.ob_mpi, &info.ob_mpi) )
 *         return info             # <<<<<<<<<<<<<<
 * 
 *     property info:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":218
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":228
 *     property info:
 *         """Info hints."""
 *         def __get__(self) -> Info:             # <<<<<<<<<<<<<<
 *             return self.Get_info()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_4info_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_4info_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_4info___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_4info___get__(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":229
 *         """Info hints."""
 *         def __get__(self) -> Info:
 *             return self.Get_info()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: Info):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":228
 *     property info:
 *         """Info hints."""
 *         def __get__(self) -> Info:             # <<<<<<<<<<<<<<
 *             return self.Get_info()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":231
 *             return self.Get_info()
 * 
 *         def __set__(self, value: Info):             # <<<<<<<<<<<<<<
 *             self.Set_info(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4File_4info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4File_4info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_4info_2__set__(((struct PyMPIFileObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4File_4info_2__set__(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":232
 * 
 *         def __set__(self, value: Info):
 *             self.Set_info(value)             # <<<<<<<<<<<<<<
 * 
 *     # File Views
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":231
 *             return self.Get_info()
 * 
 *         def __set__(self, value: Info):             # <<<<<<<<<<<<<<
 *             self.Set_info(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.info.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":237
 *     # ----------
 * 
 *     def Set_view(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset disp: int = 0,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_35Set_view(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_34Set_view, "Set_view(self, disp: int = 0, etype: Datatype = BYTE, filetype: Datatype | None = None, datarep: str = 'native', info: Info = INFO_NULL) -> None\n\n        Set the file view.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_35Set_view = {"Set_view", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_35Set_view, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_34Set_view};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_35Set_view(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_disp;
  struct PyMPIDatatypeObject *__pyx_v_etype = 0;
  struct PyMPIDatatypeObject *__pyx_v_filetype = 0;
  PyObject *__pyx_v_datarep = 0;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_view (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_disp,&__pyx_n_s_etype,&__pyx_n_s_filetype,&__pyx_n_s_datarep,&__pyx_n_s_info,0};
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__199);

    /* "src/mpi4py/MPI.src/File.pyx":241
 *         Offset disp: int = 0,
 *         Datatype etype: Datatype = BYTE,
 *         Datatype filetype: Datatype | None = None,             # <<<<<<<<<<<<<<
 *         datarep: str = "native",
 *         Info info: Info = INFO_NULL,
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIDatatypeObject *)Py_None));
    values[3] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)__pyx_n_s_native));
    values[4] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_k__200);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_disp);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 237, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_etype);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 237, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filetype);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 237, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datarep);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 237, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[4] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 237, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_view") < 0)) __PYX_ERR(33, 237, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_disp = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_disp == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 239, __pyx_L3_error)
    } else {
      __pyx_v_disp = ((MPI_Offset)0);
    }
    __pyx_v_etype = ((struct PyMPIDatatypeObject *)values[1]);
    __pyx_v_filetype = ((struct PyMPIDatatypeObject *)values[2]);
    __pyx_v_datarep = values[3];
    __pyx_v_info = ((struct PyMPIInfoObject *)values[4]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_view", 0, 0, 5, __pyx_nargs); __PYX_ERR(33, 237, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_view", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_etype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "etype", 0))) __PYX_ERR(33, 240, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_filetype), __pyx_ptype_6mpi4py_3MPI_Datatype, 1, "filetype", 0))) __PYX_ERR(33, 241, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(33, 243, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_34Set_view(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_disp, __pyx_v_etype, __pyx_v_filetype, __pyx_v_datarep, __pyx_v_info);

  /* "src/mpi4py/MPI.src/File.pyx":237
 *     # ----------
 * 
 *     def Set_view(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset disp: int = 0,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_34Set_view(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_disp, struct PyMPIDatatypeObject *__pyx_v_etype, struct PyMPIDatatypeObject *__pyx_v_filetype, PyObject *__pyx_v_datarep, struct PyMPIInfoObject *__pyx_v_info) {
  char *__pyx_v_cdatarep;
  MPI_Datatype __pyx_v_cetype;
  MPI_Datatype __pyx_v_cftype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  MPI_Datatype __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_view", 0);
  __Pyx_INCREF(__pyx_v_datarep);

  /* "src/mpi4py/MPI.src/File.pyx":248
 *         Set the file view.
 *         """
 *         cdef char *cdatarep = b"native"             # <<<<<<<<<<<<<<
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Datatype cetype = etype.ob_mpi
 */
  __pyx_v_cdatarep = ((char *)"native");

  /* "src/mpi4py/MPI.src/File.pyx":249
 *         """
 *         cdef char *cdatarep = b"native"
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep)             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype cetype = etype.ob_mpi
 *         cdef MPI_Datatype cftype = cetype
 */
  __pyx_t_1 = (__pyx_v_datarep != Py_None);
  if (__pyx_t_1) {
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_datarep, __pyx_t_2);
    __pyx_t_2 = 0;
  }

  /* "src/mpi4py/MPI.src/File.pyx":250
 *         cdef char *cdatarep = b"native"
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Datatype cetype = etype.ob_mpi             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype cftype = cetype
 *         if filetype is not None: cftype = filetype.ob_mpi
 */
  __pyx_t_3 = __pyx_v_etype->ob_mpi;
  __pyx_v_cetype = __pyx_t_3;

  /* "src/mpi4py/MPI.src/File.pyx":251
 *         if datarep is not None: datarep = asmpistr(datarep, &cdatarep)
 *         cdef MPI_Datatype cetype = etype.ob_mpi
 *         cdef MPI_Datatype cftype = cetype             # <<<<<<<<<<<<<<
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         with nogil: CHKERR( MPI_File_set_view(
 */
  __pyx_v_cftype = __pyx_v_cetype;

  /* "src/mpi4py/MPI.src/File.pyx":252
 *         cdef MPI_Datatype cetype = etype.ob_mpi
 *         cdef MPI_Datatype cftype = cetype
 *         if filetype is not None: cftype = filetype.ob_mpi             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_set_view(
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )
 */
  __pyx_t_1 = (((PyObject *)__pyx_v_filetype) != Py_None);
  if (__pyx_t_1) {
    __pyx_t_3 = __pyx_v_filetype->ob_mpi;
    __pyx_v_cftype = __pyx_t_3;
  }

  /* "src/mpi4py/MPI.src/File.pyx":253
 *         cdef MPI_Datatype cftype = cetype
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         with nogil: CHKERR( MPI_File_set_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":254
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         with nogil: CHKERR( MPI_File_set_view(
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_view(self) -> tuple[int, Datatype, Datatype, str]:
 */
        __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_view(__pyx_v_self->ob_mpi, __pyx_v_disp, __pyx_v_cetype, __pyx_v_cftype, __pyx_v_cdatarep, __pyx_v_info->ob_mpi)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 253, __pyx_L6_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":253
 *         cdef MPI_Datatype cftype = cetype
 *         if filetype is not None: cftype = filetype.ob_mpi
 *         with nogil: CHKERR( MPI_File_set_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L6_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L7:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":237
 *     # ----------
 * 
 *     def Set_view(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset disp: int = 0,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_view", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":256
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )
 * 
 *     def Get_view(self) -> tuple[int, Datatype, Datatype, str]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file view.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_37Get_view(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_36Get_view, "Get_view(self) -> tuple[int, Datatype, Datatype, str]\n\n        Return the file view.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_37Get_view = {"Get_view", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_37Get_view, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_36Get_view};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_37Get_view(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_view (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_view", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_view", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_36Get_view(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_36Get_view(struct PyMPIFileObject *__pyx_v_self) {
  MPI_Offset __pyx_v_disp;
  MPI_Datatype __pyx_v_cetype;
  MPI_Datatype __pyx_v_cftype;
  char __pyx_v_cdatarep[(MPI_MAX_DATAREP_STRING + 1)];
  struct PyMPIDatatypeObject *__pyx_v_etype = 0;
  struct PyMPIDatatypeObject *__pyx_v_ftype = 0;
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_view", 1);

  /* "src/mpi4py/MPI.src/File.pyx":260
 *         Return the file view.
 *         """
 *         cdef MPI_Offset disp = 0             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype cetype = MPI_DATATYPE_NULL
 *         cdef MPI_Datatype cftype = MPI_DATATYPE_NULL
 */
  __pyx_v_disp = 0;

  /* "src/mpi4py/MPI.src/File.pyx":261
 *         """
 *         cdef MPI_Offset disp = 0
 *         cdef MPI_Datatype cetype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         cdef MPI_Datatype cftype = MPI_DATATYPE_NULL
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 */
  __pyx_v_cetype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/File.pyx":262
 *         cdef MPI_Offset disp = 0
 *         cdef MPI_Datatype cetype = MPI_DATATYPE_NULL
 *         cdef MPI_Datatype cftype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         cdatarep[0] = 0  # just in case
 */
  __pyx_v_cftype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/File.pyx":264
 *         cdef MPI_Datatype cftype = MPI_DATATYPE_NULL
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         cdatarep[0] = 0  # just in case             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_view(
 *             self.ob_mpi, &disp, &cetype, &cftype, cdatarep) )
 */
  (__pyx_v_cdatarep[0]) = 0;

  /* "src/mpi4py/MPI.src/File.pyx":265
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         cdatarep[0] = 0  # just in case
 *         with nogil: CHKERR( MPI_File_get_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &disp, &cetype, &cftype, cdatarep) )
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0  # just in case
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":266
 *         cdatarep[0] = 0  # just in case
 *         with nogil: CHKERR( MPI_File_get_view(
 *             self.ob_mpi, &disp, &cetype, &cftype, cdatarep) )             # <<<<<<<<<<<<<<
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0  # just in case
 *         cdef Datatype etype = ref_Datatype(cetype)
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_view(__pyx_v_self->ob_mpi, (&__pyx_v_disp), (&__pyx_v_cetype), (&__pyx_v_cftype), __pyx_v_cdatarep)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 265, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":265
 *         cdef char cdatarep[MPI_MAX_DATAREP_STRING+1]
 *         cdatarep[0] = 0  # just in case
 *         with nogil: CHKERR( MPI_File_get_view(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &disp, &cetype, &cftype, cdatarep) )
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0  # just in case
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":267
 *         with nogil: CHKERR( MPI_File_get_view(
 *             self.ob_mpi, &disp, &cetype, &cftype, cdatarep) )
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0  # just in case             # <<<<<<<<<<<<<<
 *         cdef Datatype etype = ref_Datatype(cetype)
 *         cdef Datatype ftype = ref_Datatype(cftype)
 */
  (__pyx_v_cdatarep[MPI_MAX_DATAREP_STRING]) = 0;

  /* "src/mpi4py/MPI.src/File.pyx":268
 *             self.ob_mpi, &disp, &cetype, &cftype, cdatarep) )
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0  # just in case
 *         cdef Datatype etype = ref_Datatype(cetype)             # <<<<<<<<<<<<<<
 *         cdef Datatype ftype = ref_Datatype(cftype)
 *         cdef object datarep = mpistr(cdatarep)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_ref_Datatype(__pyx_v_cetype)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_etype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":269
 *         cdatarep[MPI_MAX_DATAREP_STRING] = 0  # just in case
 *         cdef Datatype etype = ref_Datatype(cetype)
 *         cdef Datatype ftype = ref_Datatype(cftype)             # <<<<<<<<<<<<<<
 *         cdef object datarep = mpistr(cdatarep)
 *         return (disp, etype, ftype, datarep)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_ref_Datatype(__pyx_v_cftype)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ftype = ((struct PyMPIDatatypeObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":270
 *         cdef Datatype etype = ref_Datatype(cetype)
 *         cdef Datatype ftype = ref_Datatype(cftype)
 *         cdef object datarep = mpistr(cdatarep)             # <<<<<<<<<<<<<<
 *         return (disp, etype, ftype, datarep)
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_cdatarep); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_datarep = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":271
 *         cdef Datatype ftype = ref_Datatype(cftype)
 *         cdef object datarep = mpistr(cdatarep)
 *         return (disp, etype, ftype, datarep)             # <<<<<<<<<<<<<<
 * 
 *     # Data Access
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Offset(__pyx_v_disp); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2)) __PYX_ERR(33, 271, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_etype);
  __Pyx_GIVEREF((PyObject *)__pyx_v_etype);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_etype))) __PYX_ERR(33, 271, __pyx_L1_error);
  __Pyx_INCREF((PyObject *)__pyx_v_ftype);
  __Pyx_GIVEREF((PyObject *)__pyx_v_ftype);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_ftype))) __PYX_ERR(33, 271, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_datarep);
  __Pyx_GIVEREF(__pyx_v_datarep);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_datarep)) __PYX_ERR(33, 271, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":256
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )
 * 
 *     def Get_view(self) -> tuple[int, Datatype, Datatype, str]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file view.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_view", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_etype);
  __Pyx_XDECREF((PyObject *)__pyx_v_ftype);
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":279
 *     # ---------------------------------
 * 
 *     def Read_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_39Read_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_38Read_at, "Read_at(self, offset: int, buf: BufSpec, status: Status | None = None) -> None\n\n        Read using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_39Read_at = {"Read_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_39Read_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_38Read_at};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_39Read_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_at (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":283
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 279, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 279, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Read_at", 0, 2, 3, 1); __PYX_ERR(33, 279, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 279, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_at") < 0)) __PYX_ERR(33, 279, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 281, __pyx_L3_error)
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at", 0, 2, 3, __pyx_nargs); __PYX_ERR(33, 279, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 283, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_38Read_at(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":279
 *     # ---------------------------------
 * 
 *     def Read_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_38Read_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_at", 1);

  /* "src/mpi4py/MPI.src/File.pyx":288
 *         Read using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":289
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 289, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":290
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":291
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_at_all(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 290, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":290
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":279
 *     # ---------------------------------
 * 
 *     def Read_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":293
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_41Read_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_40Read_at_all, "Read_at_all(self, offset: int, buf: BufSpec, status: Status | None = None) -> None\n\n        Collective read using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_41Read_at_all = {"Read_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_41Read_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_40Read_at_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_41Read_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_at_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":297
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 293, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 293, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Read_at_all", 0, 2, 3, 1); __PYX_ERR(33, 293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 293, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_at_all") < 0)) __PYX_ERR(33, 293, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 295, __pyx_L3_error)
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at_all", 0, 2, 3, __pyx_nargs); __PYX_ERR(33, 293, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 297, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_40Read_at_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":293
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_40Read_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_at_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":302
 *         Collective read using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":303
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 303, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":304
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":305
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 304, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":304
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":293
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":307
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_43Write_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_42Write_at, "Write_at(self, offset: int, buf: BufSpec, status: Status | None = None) -> None\n\n        Write using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_43Write_at = {"Write_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_43Write_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_42Write_at};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_43Write_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_at (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":311
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 307, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 307, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Write_at", 0, 2, 3, 1); __PYX_ERR(33, 307, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 307, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_at") < 0)) __PYX_ERR(33, 307, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 309, __pyx_L3_error)
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at", 0, 2, 3, __pyx_nargs); __PYX_ERR(33, 307, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 311, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_42Write_at(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":307
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_42Write_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_at", 1);

  /* "src/mpi4py/MPI.src/File.pyx":316
 *         Write using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":317
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 317, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":318
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":319
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 318, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":318
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":307
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":321
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_45Write_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_44Write_at_all, "Write_at_all(self, offset: int, buf: BufSpec, status: Status | None = None) -> None\n\n        Collective write using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_45Write_at_all = {"Write_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_45Write_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_44Write_at_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_45Write_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_at_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":325
 *         Offset offset: int,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[2] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 321, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 321, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Write_at_all", 0, 2, 3, 1); __PYX_ERR(33, 321, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 321, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_at_all") < 0)) __PYX_ERR(33, 321, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 323, __pyx_L3_error)
    __pyx_v_buf = values[1];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at_all", 0, 2, 3, __pyx_nargs); __PYX_ERR(33, 321, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 325, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_44Write_at_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":321
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_44Write_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_at_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":330
 *         Collective write using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":331
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 331, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":332
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":333
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread_at(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 332, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":332
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":321
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":335
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_47Iread_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_46Iread_at, "Iread_at(self, offset: int, buf: BufSpec) -> Request\n\n        Nonblocking read using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_47Iread_at = {"Iread_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_47Iread_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_46Iread_at};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_47Iread_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iread_at (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 335, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 335, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iread_at", 1, 2, 2, 1); __PYX_ERR(33, 335, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iread_at") < 0)) __PYX_ERR(33, 335, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 337, __pyx_L3_error)
    __pyx_v_buf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_at", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 335, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_46Iread_at(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_46Iread_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iread_at", 1);

  /* "src/mpi4py/MPI.src/File.pyx":343
 *         Nonblocking read using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":344
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":345
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":346
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_at_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 345, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":345
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":347
 *         with nogil: CHKERR( MPI_File_iread_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":348
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iread_at_all(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":335
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":350
 *         return request
 * 
 *     def Iread_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_49Iread_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_48Iread_at_all, "Iread_at_all(self, offset: int, buf: BufSpec) -> Request\n\n        Nonblocking collective read using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_49Iread_at_all = {"Iread_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_49Iread_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_48Iread_at_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_49Iread_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iread_at_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 350, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 350, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iread_at_all", 1, 2, 2, 1); __PYX_ERR(33, 350, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iread_at_all") < 0)) __PYX_ERR(33, 350, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 352, __pyx_L3_error)
    __pyx_v_buf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_at_all", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 350, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_48Iread_at_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_48Iread_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iread_at_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":358
 *         Nonblocking collective read using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":359
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":360
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":361
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_at_all_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 360, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":360
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":362
 *         with nogil: CHKERR( MPI_File_iread_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":363
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite_at(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":350
 *         return request
 * 
 *     def Iread_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":365
 *         return request
 * 
 *     def Iwrite_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_51Iwrite_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_50Iwrite_at, "Iwrite_at(self, offset: int, buf: BufSpec) -> Request\n\n        Nonblocking write using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_51Iwrite_at = {"Iwrite_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_51Iwrite_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_50Iwrite_at};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_51Iwrite_at(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iwrite_at (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 365, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 365, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iwrite_at", 1, 2, 2, 1); __PYX_ERR(33, 365, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iwrite_at") < 0)) __PYX_ERR(33, 365, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 367, __pyx_L3_error)
    __pyx_v_buf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_at", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 365, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_50Iwrite_at(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_50Iwrite_at(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iwrite_at", 1);

  /* "src/mpi4py/MPI.src/File.pyx":373
 *         Nonblocking write using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":374
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":375
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":376
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_at_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 375, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":375
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":377
 *         with nogil: CHKERR( MPI_File_iwrite_at_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":378
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite_at_all(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":365
 *         return request
 * 
 *     def Iwrite_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":380
 *         return request
 * 
 *     def Iwrite_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_53Iwrite_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_52Iwrite_at_all, "Iwrite_at_all(self, offset: int, buf: BufSpec) -> Request\n\n        Nonblocking collective write using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_53Iwrite_at_all = {"Iwrite_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_53Iwrite_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_52Iwrite_at_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_53Iwrite_at_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iwrite_at_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 380, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 380, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Iwrite_at_all", 1, 2, 2, 1); __PYX_ERR(33, 380, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iwrite_at_all") < 0)) __PYX_ERR(33, 380, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 382, __pyx_L3_error)
    __pyx_v_buf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_at_all", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 380, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_52Iwrite_at_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_52Iwrite_at_all(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iwrite_at_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":388
 *         Nonblocking collective write using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":389
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":390
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":391
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_at_all_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 390, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":390
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_at_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":392
 *         with nogil: CHKERR( MPI_File_iwrite_at_all_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":393
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     # Data Access with Individual File Pointers
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":380
 *         return request
 * 
 *     def Iwrite_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_at_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":398
 *     # -----------------------------------------
 * 
 *     def Read(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_55Read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_54Read, "Read(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Read using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_55Read = {"Read", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_55Read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_54Read};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_55Read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":401
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 398, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 398, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read") < 0)) __PYX_ERR(33, 398, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 398, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 401, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_54Read(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":398
 *     # -----------------------------------------
 * 
 *     def Read(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_54Read(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read", 1);

  /* "src/mpi4py/MPI.src/File.pyx":406
 *         Read using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":407
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 407, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":408
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":409
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_all(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 408, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":408
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":398
 *     # -----------------------------------------
 * 
 *     def Read(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":411
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_57Read_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_56Read_all, "Read_all(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Collective read using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_57Read_all = {"Read_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_57Read_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_56Read_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_57Read_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":414
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 411, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 411, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_all") < 0)) __PYX_ERR(33, 411, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_all", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 411, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 414, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_56Read_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":411
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_56Read_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":419
 *         Collective read using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":420
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 420, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":421
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":422
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 421, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":421
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":411
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":424
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_59Write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_58Write, "Write(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Write using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_59Write = {"Write", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_59Write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_58Write};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_59Write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":427
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 424, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 424, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write") < 0)) __PYX_ERR(33, 424, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 424, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 427, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_58Write(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":424
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_58Write(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write", 1);

  /* "src/mpi4py/MPI.src/File.pyx":432
 *         Write using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":433
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 433, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":434
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":435
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 434, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":434
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":424
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":437
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_61Write_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_60Write_all, "Write_all(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Collective write using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_61Write_all = {"Write_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_61Write_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_60Write_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_61Write_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":440
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 437, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 437, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_all") < 0)) __PYX_ERR(33, 437, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_all", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 437, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 440, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_60Write_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":437
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_60Write_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":445
 *         Collective write using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":446
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 446, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":447
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":448
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 447, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":447
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":437
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":450
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_63Iread(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_62Iread, "Iread(self, buf: BufSpec) -> Request\n\n        Nonblocking read using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_63Iread = {"Iread", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_63Iread, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_62Iread};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_63Iread(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iread (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 450, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iread") < 0)) __PYX_ERR(33, 450, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 450, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_62Iread(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_62Iread(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iread", 1);

  /* "src/mpi4py/MPI.src/File.pyx":457
 *         Nonblocking read using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":458
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":459
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":460
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 459, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":459
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":461
 *         with nogil: CHKERR( MPI_File_iread_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":462
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iread_all(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":450
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":464
 *         return request
 * 
 *     def Iread_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_65Iread_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_64Iread_all, "Iread_all(self, buf: BufSpec) -> Request\n\n        Nonblocking collective read using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_65Iread_all = {"Iread_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_65Iread_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_64Iread_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_65Iread_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iread_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 464, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iread_all") < 0)) __PYX_ERR(33, 464, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_all", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 464, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_64Iread_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_64Iread_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iread_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":471
 *         Nonblocking collective read using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":472
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":473
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":474
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_all_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 473, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":473
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":475
 *         with nogil: CHKERR( MPI_File_iread_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":476
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":464
 *         return request
 * 
 *     def Iread_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":478
 *         return request
 * 
 *     def Iwrite(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_67Iwrite(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_66Iwrite, "Iwrite(self, buf: BufSpec) -> Request\n\n        Nonblocking write using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_67Iwrite = {"Iwrite", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_67Iwrite, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_66Iwrite};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_67Iwrite(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iwrite (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 478, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iwrite") < 0)) __PYX_ERR(33, 478, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 478, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_66Iwrite(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_66Iwrite(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iwrite", 1);

  /* "src/mpi4py/MPI.src/File.pyx":485
 *         Nonblocking write using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":486
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":487
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":488
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 487, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":487
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":489
 *         with nogil: CHKERR( MPI_File_iwrite_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":490
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite_all(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":478
 *         return request
 * 
 *     def Iwrite(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":492
 *         return request
 * 
 *     def Iwrite_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_69Iwrite_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_68Iwrite_all, "Iwrite_all(self, buf: BufSpec) -> Request\n\n        Nonblocking collective write using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_69Iwrite_all = {"Iwrite_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_69Iwrite_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_68Iwrite_all};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_69Iwrite_all(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iwrite_all (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 492, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iwrite_all") < 0)) __PYX_ERR(33, 492, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_all", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 492, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_68Iwrite_all(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_68Iwrite_all(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iwrite_all", 1);

  /* "src/mpi4py/MPI.src/File.pyx":499
 *         Nonblocking collective write using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_all_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 499, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":500
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":501
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":502
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_all_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 501, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":501
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_all_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":503
 *         with nogil: CHKERR( MPI_File_iwrite_all_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":504
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Seek(self, Offset offset: int, int whence: int = SEEK_SET) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":492
 *         return request
 * 
 *     def Iwrite_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":506
 *         return request
 * 
 *     def Seek(self, Offset offset: int, int whence: int = SEEK_SET) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_71Seek(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_70Seek, "Seek(self, offset: int, whence: int = SEEK_SET) -> None\n\n        Update the individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_71Seek = {"Seek", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_71Seek, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_70Seek};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_71Seek(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  int __pyx_v_whence;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Seek (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_whence,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 506, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_whence);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 506, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Seek") < 0)) __PYX_ERR(33, 506, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 506, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_whence = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 506, __pyx_L3_error)
    } else {
      __pyx_v_whence = __pyx_k__201;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Seek", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 506, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_70Seek(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_whence);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_70Seek(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, int __pyx_v_whence) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Seek", 1);

  /* "src/mpi4py/MPI.src/File.pyx":510
 *         Update the individual file pointer.
 *         """
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_position(self) -> int:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_seek(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_whence)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 510, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":506
 *         return request
 * 
 *     def Seek(self, Offset offset: int, int whence: int = SEEK_SET) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":512
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )
 * 
 *     def Get_position(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the individual file pointer.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_73Get_position(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_72Get_position, "Get_position(self) -> int\n\n        Return the current position of the individual file pointer.\n\n        .. note:: Position is measured in etype units\n           relative to the current file view.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_73Get_position = {"Get_position", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_73Get_position, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_72Get_position};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_73Get_position(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_position (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_position", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_position", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_72Get_position(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_72Get_position(struct PyMPIFileObject *__pyx_v_self) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_position", 1);

  /* "src/mpi4py/MPI.src/File.pyx":519
 *            relative to the current file view.
 *         """
 *         cdef MPI_Offset offset = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )
 *         return offset
 */
  __pyx_v_offset = 0;

  /* "src/mpi4py/MPI.src/File.pyx":520
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )             # <<<<<<<<<<<<<<
 *         return offset
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_position(__pyx_v_self->ob_mpi, (&__pyx_v_offset))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 520, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":521
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position(self.ob_mpi, &offset) )
 *         return offset             # <<<<<<<<<<<<<<
 * 
 *     def Get_byte_offset(self, Offset offset: int) -> int:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Offset(__pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":512
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )
 * 
 *     def Get_position(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the individual file pointer.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_position", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":523
 *         return offset
 * 
 *     def Get_byte_offset(self, Offset offset: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the absolute byte position in the file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_75Get_byte_offset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_74Get_byte_offset, "Get_byte_offset(self, offset: int) -> int\n\n        Return the absolute byte position in the file.\n\n        .. note:: Input *offset* is measured in etype units\n           relative to the current file view.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_75Get_byte_offset = {"Get_byte_offset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_75Get_byte_offset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_74Get_byte_offset};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_75Get_byte_offset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_byte_offset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 523, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_byte_offset") < 0)) __PYX_ERR(33, 523, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 523, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_byte_offset", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 523, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_byte_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_74Get_byte_offset(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_74Get_byte_offset(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset) {
  MPI_Offset __pyx_v_disp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_byte_offset", 1);

  /* "src/mpi4py/MPI.src/File.pyx":530
 *            relative to the current file view.
 *         """
 *         cdef MPI_Offset disp = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_byte_offset(
 *             self.ob_mpi, offset, &disp) )
 */
  __pyx_v_disp = 0;

  /* "src/mpi4py/MPI.src/File.pyx":531
 *         """
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, &disp) )
 *         return disp
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":532
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(
 *             self.ob_mpi, offset, &disp) )             # <<<<<<<<<<<<<<
 *         return disp
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_byte_offset(__pyx_v_self->ob_mpi, __pyx_v_offset, (&__pyx_v_disp))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 531, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":531
 *         """
 *         cdef MPI_Offset disp = 0
 *         with nogil: CHKERR( MPI_File_get_byte_offset(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, &disp) )
 *         return disp
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":533
 *         with nogil: CHKERR( MPI_File_get_byte_offset(
 *             self.ob_mpi, offset, &disp) )
 *         return disp             # <<<<<<<<<<<<<<
 * 
 *     # Data Access with Shared File Pointers
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Offset(__pyx_v_disp); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":523
 *         return offset
 * 
 *     def Get_byte_offset(self, Offset offset: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the absolute byte position in the file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_byte_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":538
 *     # -------------------------------------
 * 
 *     def Read_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_77Read_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_76Read_shared, "Read_shared(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Read using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_77Read_shared = {"Read_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_77Read_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_76Read_shared};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_77Read_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_shared (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":541
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 538, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 538, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_shared") < 0)) __PYX_ERR(33, 538, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_shared", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 538, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 541, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_76Read_shared(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":538
 *     # -------------------------------------
 * 
 *     def Read_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_76Read_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_shared", 1);

  /* "src/mpi4py/MPI.src/File.pyx":546
 *         Read using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":547
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 547, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":548
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":549
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_shared(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_shared_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 548, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":548
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":538
 *     # -------------------------------------
 * 
 *     def Read_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":551
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_79Write_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_78Write_shared, "Write_shared(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Write using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_79Write_shared = {"Write_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_79Write_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_78Write_shared};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_79Write_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_shared (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":554
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 551, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 551, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_shared") < 0)) __PYX_ERR(33, 551, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_shared", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 551, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 554, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_78Write_shared(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":551
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_78Write_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_shared", 1);

  /* "src/mpi4py/MPI.src/File.pyx":559
 *         Write using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":560
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 560, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":561
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":562
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Iread_shared(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_shared_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 561, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":561
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":551
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":564
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_81Iread_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_80Iread_shared, "Iread_shared(self, buf: BufSpec) -> Request\n\n        Nonblocking read using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_81Iread_shared = {"Iread_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_81Iread_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_80Iread_shared};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_81Iread_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iread_shared (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 564, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iread_shared") < 0)) __PYX_ERR(33, 564, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iread_shared", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 564, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_80Iread_shared(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_80Iread_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iread_shared", 1);

  /* "src/mpi4py/MPI.src/File.pyx":571
 *         Nonblocking read using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":572
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iread_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":573
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":574
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iread_shared_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 573, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":573
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iread_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":575
 *         with nogil: CHKERR( MPI_File_iread_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":576
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Iwrite_shared(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":564
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iread_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":578
 *         return request
 * 
 *     def Iwrite_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_83Iwrite_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_82Iwrite_shared, "Iwrite_shared(self, buf: BufSpec) -> Request\n\n        Nonblocking write using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_83Iwrite_shared = {"Iwrite_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_83Iwrite_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_82Iwrite_shared};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_83Iwrite_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Iwrite_shared (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 578, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Iwrite_shared") < 0)) __PYX_ERR(33, 578, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Iwrite_shared", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 578, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_82Iwrite_shared(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_82Iwrite_shared(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  struct PyMPIRequestObject *__pyx_v_request = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Iwrite_shared", 1);

  /* "src/mpi4py/MPI.src/File.pyx":585
 *         Nonblocking write using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":586
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_iwrite_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_request = ((struct PyMPIRequestObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":587
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":588
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )             # <<<<<<<<<<<<<<
 *         request.ob_buf = m
 *         return request
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_iwrite_shared_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, (&__pyx_v_request->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 587, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":587
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef Request request = <Request>New(Request)
 *         with nogil: CHKERR( MPI_File_iwrite_shared_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":589
 *         with nogil: CHKERR( MPI_File_iwrite_shared_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m             # <<<<<<<<<<<<<<
 *         return request
 * 
 */
  __Pyx_INCREF((PyObject *)__pyx_v_m);
  __Pyx_GIVEREF((PyObject *)__pyx_v_m);
  __Pyx_GOTREF(__pyx_v_request->ob_buf);
  __Pyx_DECREF(__pyx_v_request->ob_buf);
  __pyx_v_request->ob_buf = ((PyObject *)__pyx_v_m);

  /* "src/mpi4py/MPI.src/File.pyx":590
 *             self.ob_mpi, m.buf, m.count, m.dtype, &request.ob_mpi) )
 *         request.ob_buf = m
 *         return request             # <<<<<<<<<<<<<<
 * 
 *     def Read_ordered(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_request);
  __pyx_r = ((PyObject *)__pyx_v_request);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":578
 *         return request
 * 
 *     def Iwrite_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Iwrite_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XDECREF((PyObject *)__pyx_v_request);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":592
 *         return request
 * 
 *     def Read_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_85Read_ordered(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_84Read_ordered, "Read_ordered(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Collective read using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_85Read_ordered = {"Read_ordered", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_85Read_ordered, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_84Read_ordered};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_85Read_ordered(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_ordered (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":595
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 592, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 592, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_ordered") < 0)) __PYX_ERR(33, 592, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_ordered", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 592, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 595, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_84Read_ordered(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":592
 *         return request
 * 
 *     def Read_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_84Read_ordered(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_ordered", 1);

  /* "src/mpi4py/MPI.src/File.pyx":600
 *         Collective read using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":601
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_ordered_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 601, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":602
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":603
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 602, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":602
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":592
 *         return request
 * 
 *     def Read_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":605
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_87Write_ordered(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_86Write_ordered, "Write_ordered(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Collective write using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_87Write_ordered = {"Write_ordered", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_87Write_ordered, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_86Write_ordered};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_87Write_ordered(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_ordered (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":608
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 605, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 605, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_ordered") < 0)) __PYX_ERR(33, 605, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_ordered", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 605, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 608, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_86Write_ordered(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":605
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_86Write_ordered(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_ordered", 1);

  /* "src/mpi4py/MPI.src/File.pyx":613
 *         Collective write using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_c(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":614
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_ordered_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 614, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":615
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":616
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Seek_shared(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 615, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":615
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":605
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":618
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_89Seek_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_88Seek_shared, "Seek_shared(self, offset: int, whence: int = SEEK_SET) -> None\n\n        Update the shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_89Seek_shared = {"Seek_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_89Seek_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_88Seek_shared};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_89Seek_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  int __pyx_v_whence;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Seek_shared (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_whence,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 618, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_whence);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 618, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Seek_shared") < 0)) __PYX_ERR(33, 618, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 620, __pyx_L3_error)
    if (values[1]) {
      __pyx_v_whence = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_whence == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 621, __pyx_L3_error)
    } else {
      __pyx_v_whence = __pyx_k__202;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Seek_shared", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 618, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_88Seek_shared(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_whence);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_88Seek_shared(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, int __pyx_v_whence) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Seek_shared", 1);

  /* "src/mpi4py/MPI.src/File.pyx":626
 *         Update the shared file pointer.
 *         """
 *         with nogil: CHKERR( MPI_File_seek_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, whence) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":627
 *         """
 *         with nogil: CHKERR( MPI_File_seek_shared(
 *             self.ob_mpi, offset, whence) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_position_shared(self) -> int:
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_seek_shared(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_whence)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 626, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":626
 *         Update the shared file pointer.
 *         """
 *         with nogil: CHKERR( MPI_File_seek_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, whence) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":618
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Seek_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":629
 *             self.ob_mpi, offset, whence) )
 * 
 *     def Get_position_shared(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the shared file pointer.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_91Get_position_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_90Get_position_shared, "Get_position_shared(self) -> int\n\n        Return the current position of the shared file pointer.\n\n        .. note:: Position is measured in etype units\n           relative to the current view.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_91Get_position_shared = {"Get_position_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_91Get_position_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_90Get_position_shared};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_91Get_position_shared(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_position_shared (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_position_shared", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_position_shared", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_90Get_position_shared(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_90Get_position_shared(struct PyMPIFileObject *__pyx_v_self) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_position_shared", 1);

  /* "src/mpi4py/MPI.src/File.pyx":636
 *            relative to the current view.
 *         """
 *         cdef MPI_Offset offset = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_position_shared(
 *             self.ob_mpi, &offset) )
 */
  __pyx_v_offset = 0;

  /* "src/mpi4py/MPI.src/File.pyx":637
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &offset) )
 *         return offset
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":638
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(
 *             self.ob_mpi, &offset) )             # <<<<<<<<<<<<<<
 *         return offset
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_position_shared(__pyx_v_self->ob_mpi, (&__pyx_v_offset))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 637, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":637
 *         """
 *         cdef MPI_Offset offset = 0
 *         with nogil: CHKERR( MPI_File_get_position_shared(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, &offset) )
 *         return offset
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":639
 *         with nogil: CHKERR( MPI_File_get_position_shared(
 *             self.ob_mpi, &offset) )
 *         return offset             # <<<<<<<<<<<<<<
 * 
 *     # Split Collective Data Access Routines
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Offset(__pyx_v_offset); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 639, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":629
 *             self.ob_mpi, offset, whence) )
 * 
 *     def Get_position_shared(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the shared file pointer.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_position_shared", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":646
 *     # explicit offset
 * 
 *     def Read_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_93Read_at_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_92Read_at_all_begin, "Read_at_all_begin(self, offset: int, buf: BufSpec) -> None\n\n        Start a split collective read using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_93Read_at_all_begin = {"Read_at_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_93Read_at_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_92Read_at_all_begin};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_93Read_at_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_at_all_begin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 646, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 646, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Read_at_all_begin", 1, 2, 2, 1); __PYX_ERR(33, 646, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_at_all_begin") < 0)) __PYX_ERR(33, 646, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 648, __pyx_L3_error)
    __pyx_v_buf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at_all_begin", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 646, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_92Read_at_all_begin(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_92Read_at_all_begin(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_at_all_begin", 1);

  /* "src/mpi4py/MPI.src/File.pyx":654
 *         Start a split collective read using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at_all_begin_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":655
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_at_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":656
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_at_all_begin_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_at_all_end(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all_begin_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 655, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":655
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_at_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":646
 *     # explicit offset
 * 
 *     def Read_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":658
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Read_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_95Read_at_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_94Read_at_all_end, "Read_at_all_end(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Complete a split collective read using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_95Read_at_all_end = {"Read_at_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_95Read_at_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_94Read_at_all_end};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_95Read_at_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_at_all_end (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":661
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 658, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 658, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_at_all_end") < 0)) __PYX_ERR(33, 658, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_at_all_end", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 658, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 661, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_94Read_at_all_end(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":658
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Read_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_94Read_at_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_at_all_end", 1);

  /* "src/mpi4py/MPI.src/File.pyx":666
 *         Complete a split collective read using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":667
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 667, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":668
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":669
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all_begin(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_at_all_end(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 668, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":668
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":658
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Read_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":671
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_97Write_at_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_96Write_at_all_begin, "Write_at_all_begin(self, offset: int, buf: BufSpec) -> None\n\n        Start a split collective write using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_97Write_at_all_begin = {"Write_at_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_97Write_at_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_96Write_at_all_begin};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_97Write_at_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Offset __pyx_v_offset;
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_at_all_begin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_offset,&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_offset)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 671, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 671, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Write_at_all_begin", 1, 2, 2, 1); __PYX_ERR(33, 671, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_at_all_begin") < 0)) __PYX_ERR(33, 671, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_offset = __Pyx_PyInt_As_MPI_Offset(values[0]); if (unlikely((__pyx_v_offset == ((MPI_Offset)-1)) && PyErr_Occurred())) __PYX_ERR(33, 673, __pyx_L3_error)
    __pyx_v_buf = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at_all_begin", 1, 2, 2, __pyx_nargs); __PYX_ERR(33, 671, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_96Write_at_all_begin(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_offset, __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_96Write_at_all_begin(struct PyMPIFileObject *__pyx_v_self, MPI_Offset __pyx_v_offset, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_at_all_begin", 1);

  /* "src/mpi4py/MPI.src/File.pyx":679
 *         Start a split collective write using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at_all_begin_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":680
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_at_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":681
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_at_all_begin_c(
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_at_all_end(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all_begin_c(__pyx_v_self->ob_mpi, __pyx_v_offset, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 680, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":680
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_at_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":671
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":683
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Write_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_99Write_at_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_98Write_at_all_end, "Write_at_all_end(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Complete a split collective write using explicit offset.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_99Write_at_all_end = {"Write_at_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_99Write_at_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_98Write_at_all_end};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_99Write_at_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_at_all_end (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":686
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 683, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 683, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_at_all_end") < 0)) __PYX_ERR(33, 683, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_at_all_end", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 683, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 686, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_98Write_at_all_end(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":683
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Write_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_98Write_at_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_at_all_end", 1);

  /* "src/mpi4py/MPI.src/File.pyx":691
 *         Complete a split collective write using explicit offset.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":692
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 692, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":693
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":694
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # individual file pointer
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_at_all_end(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 693, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":693
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_at_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":683
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Write_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_at_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":698
 *     # individual file pointer
 * 
 *     def Read_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_101Read_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_100Read_all_begin, "Read_all_begin(self, buf: BufSpec) -> None\n\n        Start a split collective read using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_101Read_all_begin = {"Read_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_101Read_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_100Read_all_begin};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_101Read_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_all_begin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 698, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_all_begin") < 0)) __PYX_ERR(33, 698, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_all_begin", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 698, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_100Read_all_begin(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_100Read_all_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_all_begin", 1);

  /* "src/mpi4py/MPI.src/File.pyx":705
 *         Start a split collective read using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_all_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":706
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":707
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_all_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_all_end(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all_begin_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 706, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":706
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":698
 *     # individual file pointer
 * 
 *     def Read_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":709
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_103Read_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_102Read_all_end, "Read_all_end(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Complete a split collective read using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_103Read_all_end = {"Read_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_103Read_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_102Read_all_end};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_103Read_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_all_end (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":712
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 709, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 709, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_all_end") < 0)) __PYX_ERR(33, 709, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_all_end", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 709, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 712, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_102Read_all_end(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":709
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_102Read_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_all_end", 1);

  /* "src/mpi4py/MPI.src/File.pyx":717
 *         Complete a split collective read using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":718
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 718, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":719
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":720
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all_begin(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_all_end(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 719, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":719
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":709
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":722
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_105Write_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_104Write_all_begin, "Write_all_begin(self, buf: BufSpec) -> None\n\n        Start a split collective write using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_105Write_all_begin = {"Write_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_105Write_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_104Write_all_begin};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_105Write_all_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_all_begin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 722, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_all_begin") < 0)) __PYX_ERR(33, 722, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_all_begin", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 722, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_104Write_all_begin(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_104Write_all_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_all_begin", 1);

  /* "src/mpi4py/MPI.src/File.pyx":729
 *         Start a split collective write using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_all_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":730
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":731
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_all_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_all_end(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all_begin_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 730, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":730
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_all_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":722
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":733
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_107Write_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_106Write_all_end, "Write_all_end(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Complete a split collective write using individual file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_107Write_all_end = {"Write_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_107Write_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_106Write_all_end};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_107Write_all_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_all_end (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":736
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 733, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 733, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_all_end") < 0)) __PYX_ERR(33, 733, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_all_end", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 733, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 736, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_106Write_all_end(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":733
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_106Write_all_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_all_end", 1);

  /* "src/mpi4py/MPI.src/File.pyx":741
 *         Complete a split collective write using individual file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":742
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_all_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 742, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":743
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":744
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # shared file pointer
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_all_end(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 743, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":743
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_all_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":733
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_all_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":748
 *     # shared file pointer
 * 
 *     def Read_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_109Read_ordered_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_108Read_ordered_begin, "Read_ordered_begin(self, buf: BufSpec) -> None\n\n        Start a split collective read using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_109Read_ordered_begin = {"Read_ordered_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_109Read_ordered_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_108Read_ordered_begin};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_109Read_ordered_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_ordered_begin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 748, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_ordered_begin") < 0)) __PYX_ERR(33, 748, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_ordered_begin", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 748, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_108Read_ordered_begin(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_108Read_ordered_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_ordered_begin", 1);

  /* "src/mpi4py/MPI.src/File.pyx":755
 *         Start a split collective read using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_ordered_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":756
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_ordered_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":757
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_ordered_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Read_ordered_end(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered_begin_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 756, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":756
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         with nogil: CHKERR( MPI_File_read_ordered_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":748
 *     # shared file pointer
 * 
 *     def Read_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":759
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_111Read_ordered_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_110Read_ordered_end, "Read_ordered_end(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Complete a split collective read using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_111Read_ordered_end = {"Read_ordered_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_111Read_ordered_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_110Read_ordered_end};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_111Read_ordered_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Read_ordered_end (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":762
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 759, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 759, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Read_ordered_end") < 0)) __PYX_ERR(33, 759, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Read_ordered_end", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 759, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 762, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_110Read_ordered_end(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":759
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_110Read_ordered_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Read_ordered_end", 1);

  /* "src/mpi4py/MPI.src/File.pyx":767
 *         Complete a split collective read using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_read(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":768
 *         """
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_read_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 768, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":769
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":770
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered_begin(
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_read_ordered_end(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 769, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":769
 *         cdef _p_msg_io m = message_io_read(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_read_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":759
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Read_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":772
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_113Write_ordered_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_112Write_ordered_begin, "Write_ordered_begin(self, buf: BufSpec) -> None\n\n        Start a split collective write using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_113Write_ordered_begin = {"Write_ordered_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_113Write_ordered_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_112Write_ordered_begin};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_113Write_ordered_begin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_ordered_begin (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 772, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_ordered_begin") < 0)) __PYX_ERR(33, 772, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_buf = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_ordered_begin", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 772, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_112Write_ordered_begin(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_112Write_ordered_begin(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_ordered_begin", 1);

  /* "src/mpi4py/MPI.src/File.pyx":779
 *         Start a split collective write using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_ordered_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":780
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_ordered_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":781
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_ordered_begin_c(
 *             self.ob_mpi, m.buf, m.count, m.dtype) )             # <<<<<<<<<<<<<<
 * 
 *     def Write_ordered_end(
 */
        __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered_begin_c(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_m->count, __pyx_v_m->dtype)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(33, 780, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":780
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         with nogil: CHKERR( MPI_File_write_ordered_begin_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":772
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_begin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":783
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_115Write_ordered_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_114Write_ordered_end, "Write_ordered_end(self, buf: BufSpec, status: Status | None = None) -> None\n\n        Complete a split collective write using shared file pointer.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_115Write_ordered_end = {"Write_ordered_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_115Write_ordered_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_114Write_ordered_end};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_115Write_ordered_end(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_buf = 0;
  struct PyMPIStatusObject *__pyx_v_status = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Write_ordered_end (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_buf,&__pyx_n_s_status,0};

    /* "src/mpi4py/MPI.src/File.pyx":786
 *         self,
 *         buf: BufSpec,
 *         Status status: Status | None = None,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct PyMPIStatusObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_buf)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 783, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_status);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 783, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Write_ordered_end") < 0)) __PYX_ERR(33, 783, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_buf = values[0];
    __pyx_v_status = ((struct PyMPIStatusObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Write_ordered_end", 0, 1, 2, __pyx_nargs); __PYX_ERR(33, 783, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), __pyx_ptype_6mpi4py_3MPI_Status, 1, "status", 0))) __PYX_ERR(33, 786, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_114Write_ordered_end(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_buf, __pyx_v_status);

  /* "src/mpi4py/MPI.src/File.pyx":783
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_114Write_ordered_end(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_buf, struct PyMPIStatusObject *__pyx_v_status) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *__pyx_v_m = 0;
  MPI_Status *__pyx_v_statusp;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Status *__pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Write_ordered_end", 1);

  /* "src/mpi4py/MPI.src/File.pyx":791
 *         Complete a split collective write using shared file pointer.
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)             # <<<<<<<<<<<<<<
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_message_io_write(__pyx_v_buf)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_m = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":792
 *         """
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_write_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_arg_Status(((PyObject *)__pyx_v_status)); if (unlikely(__pyx_t_2 == ((MPI_Status *)NULL) && PyErr_Occurred())) __PYX_ERR(33, 792, __pyx_L1_error)
  __pyx_v_statusp = __pyx_t_2;

  /* "src/mpi4py/MPI.src/File.pyx":793
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":794
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(
 *             self.ob_mpi, m.buf, statusp) )             # <<<<<<<<<<<<<<
 * 
 *     # File Interoperability
 */
        __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_write_ordered_end(__pyx_v_self->ob_mpi, __pyx_v_m->buf, __pyx_v_statusp)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 793, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":793
 *         cdef _p_msg_io m = message_io_write(buf)
 *         cdef MPI_Status *statusp = arg_Status(status)
 *         with nogil: CHKERR( MPI_File_write_ordered_end(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, m.buf, statusp) )
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":783
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.Write_ordered_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":799
 *     # ---------------------
 * 
 *     def Get_type_extent(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the extent of datatype in the file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_117Get_type_extent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_116Get_type_extent, "Get_type_extent(self, datatype: Datatype) -> int\n\n        Return the extent of datatype in the file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_117Get_type_extent = {"Get_type_extent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_117Get_type_extent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_116Get_type_extent};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_117Get_type_extent(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_type_extent (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 799, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Get_type_extent") < 0)) __PYX_ERR(33, 799, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Get_type_extent", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 799, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_type_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(33, 799, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_116Get_type_extent(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_116Get_type_extent(struct PyMPIFileObject *__pyx_v_self, struct PyMPIDatatypeObject *__pyx_v_datatype) {
  MPI_Count __pyx_v_extent;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_type_extent", 1);

  /* "src/mpi4py/MPI.src/File.pyx":803
 *         Return the extent of datatype in the file.
 *         """
 *         cdef MPI_Count extent = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_type_extent_c(
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 */
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/File.pyx":804
 *         """
 *         cdef MPI_Count extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 *         return extent
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/mpi4py/MPI.src/File.pyx":805
 *         cdef MPI_Count extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent_c(
 *             self.ob_mpi, datatype.ob_mpi, &extent) )             # <<<<<<<<<<<<<<
 *         return extent
 * 
 */
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_type_extent_c(__pyx_v_self->ob_mpi, __pyx_v_datatype->ob_mpi, (&__pyx_v_extent))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 804, __pyx_L4_error)
      }

      /* "src/mpi4py/MPI.src/File.pyx":804
 *         """
 *         cdef MPI_Count extent = 0
 *         with nogil: CHKERR( MPI_File_get_type_extent_c(             # <<<<<<<<<<<<<<
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 *         return extent
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":806
 *         with nogil: CHKERR( MPI_File_get_type_extent_c(
 *             self.ob_mpi, datatype.ob_mpi, &extent) )
 *         return extent             # <<<<<<<<<<<<<<
 * 
 *     # Consistency and Semantics
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_MPI_Count(__pyx_v_extent); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":799
 *     # ---------------------
 * 
 *     def Get_type_extent(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the extent of datatype in the file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_type_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":811
 *     # -------------------------
 * 
 *     def Set_atomicity(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the atomicity mode.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_119Set_atomicity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_118Set_atomicity, "Set_atomicity(self, flag: bool) -> None\n\n        Set the atomicity mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_119Set_atomicity = {"Set_atomicity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_119Set_atomicity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_118Set_atomicity};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_119Set_atomicity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_flag;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_atomicity (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flag,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flag)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 811, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_atomicity") < 0)) __PYX_ERR(33, 811, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_flag = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 811, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_atomicity", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 811, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_atomicity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_118Set_atomicity(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_flag);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_118Set_atomicity(struct PyMPIFileObject *__pyx_v_self, int __pyx_v_flag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_atomicity", 1);

  /* "src/mpi4py/MPI.src/File.pyx":815
 *         Set the atomicity mode.
 *         """
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )             # <<<<<<<<<<<<<<
 * 
 *     def Get_atomicity(self) -> bool:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_atomicity(__pyx_v_self->ob_mpi, __pyx_v_flag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 815, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":811
 *     # -------------------------
 * 
 *     def Set_atomicity(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the atomicity mode.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_atomicity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":817
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )
 * 
 *     def Get_atomicity(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return the atomicity mode.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_121Get_atomicity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_120Get_atomicity, "Get_atomicity(self) -> bool\n\n        Return the atomicity mode.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_121Get_atomicity = {"Get_atomicity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_121Get_atomicity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_120Get_atomicity};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_121Get_atomicity(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_atomicity (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_atomicity", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_atomicity", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_120Get_atomicity(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_120Get_atomicity(struct PyMPIFileObject *__pyx_v_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_atomicity", 1);

  /* "src/mpi4py/MPI.src/File.pyx":821
 *         Return the atomicity mode.
 *         """
 *         cdef int flag = 0             # <<<<<<<<<<<<<<
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )
 *         return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/File.pyx":822
 *         """
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )             # <<<<<<<<<<<<<<
 *         return <bint>flag
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_atomicity(__pyx_v_self->ob_mpi, (&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 822, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":823
 *         cdef int flag = 0
 *         with nogil: CHKERR( MPI_File_get_atomicity(self.ob_mpi, &flag) )
 *         return <bint>flag             # <<<<<<<<<<<<<<
 * 
 *     property atomicity:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":817
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )
 * 
 *     def Get_atomicity(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return the atomicity mode.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_atomicity", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":827
 *     property atomicity:
 *         """Atomicity mode."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Get_atomicity()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_9atomicity_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_9atomicity_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_9atomicity___get__(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_9atomicity___get__(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":828
 *         """Atomicity mode."""
 *         def __get__(self) -> bool:
 *             return self.Get_atomicity()             # <<<<<<<<<<<<<<
 * 
 *         def __set__(self, value: bool):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Get_atomicity); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 828, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":827
 *     property atomicity:
 *         """Atomicity mode."""
 *         def __get__(self) -> bool:             # <<<<<<<<<<<<<<
 *             return self.Get_atomicity()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.atomicity.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":830
 *             return self.Get_atomicity()
 * 
 *         def __set__(self, value: bool):             # <<<<<<<<<<<<<<
 *             self.Set_atomicity(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_6mpi4py_3MPI_4File_9atomicity_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_6mpi4py_3MPI_4File_9atomicity_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_9atomicity_2__set__(((struct PyMPIFileObject *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_6mpi4py_3MPI_4File_9atomicity_2__set__(struct PyMPIFileObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  unsigned int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 1);

  /* "src/mpi4py/MPI.src/File.pyx":831
 * 
 *         def __set__(self, value: bool):
 *             self.Set_atomicity(value)             # <<<<<<<<<<<<<<
 * 
 *     def Sync(self) -> None:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Set_atomicity); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_value};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 831, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":830
 *             return self.Get_atomicity()
 * 
 *         def __set__(self, value: bool):             # <<<<<<<<<<<<<<
 *             self.Set_atomicity(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.File.atomicity.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":833
 *             self.Set_atomicity(value)
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Causes all previous writes to be transferred to the storage device.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_123Sync(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_122Sync, "Sync(self) -> None\n\n        Causes all previous writes to be transferred to the storage device.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_123Sync = {"Sync", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_123Sync, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_122Sync};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_123Sync(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Sync (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Sync", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Sync", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_122Sync(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_122Sync(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Sync", 1);

  /* "src/mpi4py/MPI.src/File.pyx":837
 *         Causes all previous writes to be transferred to the storage device.
 *         """
 *         with nogil: CHKERR( MPI_File_sync(self.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     # Error Handling
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      _save = NULL;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {
        __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_sync(__pyx_v_self->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 837, __pyx_L4_error)
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }
  }

  /* "src/mpi4py/MPI.src/File.pyx":833
 *             self.Set_atomicity(value)
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Causes all previous writes to be transferred to the storage device.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Sync", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":842
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_125Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_124Create_errhandler, "Create_errhandler(cls, errhandler_fn: Callable[[File, int], None]) -> Errhandler\n\n        Create a new error handler for files.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_125Create_errhandler = {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_125Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_124Create_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_125Create_errhandler(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_errhandler_fn = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Create_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler_fn,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 842, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Create_errhandler") < 0)) __PYX_ERR(33, 842, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler_fn = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Create_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 842, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_124Create_errhandler(((PyTypeObject*)__pyx_v_cls), __pyx_v_errhandler_fn);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_124Create_errhandler(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_errhandler_fn) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  MPI_File_errhandler_function *__pyx_v_fn;
  int __pyx_v_index;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Create_errhandler", 1);

  /* "src/mpi4py/MPI.src/File.pyx":850
 *         Create a new error handler for files.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         cdef MPI_File_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":851
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_File_errhandler_function *fn = NULL             # <<<<<<<<<<<<<<
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 */
  __pyx_v_fn = NULL;

  /* "src/mpi4py/MPI.src/File.pyx":852
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         cdef MPI_File_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)             # <<<<<<<<<<<<<<
 *         try:
 *             CHKERR( MPI_File_create_errhandler(fn, &errhandler.ob_mpi) )
 */
  __pyx_t_3 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_new(__pyx_v_errhandler_fn, (&__pyx_v_fn)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 852, __pyx_L1_error)
  __pyx_v_index = __pyx_t_3;

  /* "src/mpi4py/MPI.src/File.pyx":853
 *         cdef MPI_File_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_File_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "src/mpi4py/MPI.src/File.pyx":854
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:
 *             CHKERR( MPI_File_create_errhandler(fn, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 */
      __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_create_errhandler(__pyx_v_fn, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 854, __pyx_L3_error)

      /* "src/mpi4py/MPI.src/File.pyx":853
 *         cdef MPI_File_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_File_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    }
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/File.pyx":855
 *         try:
 *             CHKERR( MPI_File_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa             # <<<<<<<<<<<<<<
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 */
    /*except:*/ {
      __Pyx_AddTraceback("mpi4py.MPI.File.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_7) < 0) __PYX_ERR(33, 855, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "src/mpi4py/MPI.src/File.pyx":856
 *             CHKERR( MPI_File_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             raise                   # ~> uncovered
 *         return errhandler
 */
      __pyx_t_3 = __pyx_fuse_3__pyx_f_6mpi4py_3MPI_errhdl_del((&__pyx_v_index), __pyx_v_fn); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 856, __pyx_L5_except_error)

      /* "src/mpi4py/MPI.src/File.pyx":857
 *         except:                     # ~> uncovered  # noqa
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_7);
      __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_7 = 0; 
      __PYX_ERR(33, 857, __pyx_L5_except_error)
    }

    /* "src/mpi4py/MPI.src/File.pyx":853
 *         cdef MPI_File_errhandler_function *fn = NULL
 *         cdef int index = errhdl_new(errhandler_fn, &fn)
 *         try:             # <<<<<<<<<<<<<<
 *             CHKERR( MPI_File_create_errhandler(fn, &errhandler.ob_mpi) )
 *         except:                     # ~> uncovered  # noqa
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "src/mpi4py/MPI.src/File.pyx":858
 *             errhdl_del(&index, fn)  # ~> uncovered
 *             raise                   # ~> uncovered
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Get_errhandler(self) -> Errhandler:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":842
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("mpi4py.MPI.File.Create_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":860
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_127Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_126Get_errhandler, "Get_errhandler(self) -> Errhandler\n\n        Get the error handler for a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_127Get_errhandler = {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_127Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_126Get_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_127Get_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("Get_errhandler", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "Get_errhandler", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_126Get_errhandler(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_126Get_errhandler(struct PyMPIFileObject *__pyx_v_self) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_errhandler", 1);

  /* "src/mpi4py/MPI.src/File.pyx":864
 *         Get the error handler for a file.
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)             # <<<<<<<<<<<<<<
 *         CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":865
 *         """
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 *         return errhandler
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_get_errhandler(__pyx_v_self->ob_mpi, (&__pyx_v_errhandler->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 865, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":866
 *         cdef Errhandler errhandler = <Errhandler>New(Errhandler)
 *         CHKERR( MPI_File_get_errhandler(self.ob_mpi, &errhandler.ob_mpi) )
 *         return errhandler             # <<<<<<<<<<<<<<
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_errhandler);
  __pyx_r = ((PyObject *)__pyx_v_errhandler);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":860
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.Get_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_errhandler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":868
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_129Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_128Set_errhandler, "Set_errhandler(self, errhandler: Errhandler) -> None\n\n        Set the error handler for a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_129Set_errhandler = {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_129Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_128Set_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_129Set_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIErrhandlerObject *__pyx_v_errhandler = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Set_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errhandler,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errhandler)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 868, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Set_errhandler") < 0)) __PYX_ERR(33, 868, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errhandler = ((struct PyMPIErrhandlerObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Set_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 868, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_errhandler), __pyx_ptype_6mpi4py_3MPI_Errhandler, 0, "errhandler", 0))) __PYX_ERR(33, 868, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_128Set_errhandler(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_errhandler);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_128Set_errhandler(struct PyMPIFileObject *__pyx_v_self, struct PyMPIErrhandlerObject *__pyx_v_errhandler) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Set_errhandler", 1);

  /* "src/mpi4py/MPI.src/File.pyx":872
 *         Set the error handler for a file.
 *         """
 *         CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )             # <<<<<<<<<<<<<<
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_set_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errhandler->ob_mpi)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 872, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":868
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a file.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Set_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":874
 *         CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_131Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_130Call_errhandler, "Call_errhandler(self, errorcode: int) -> None\n\n        Call the error handler installed on a file.\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_131Call_errhandler = {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_131Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_130Call_errhandler};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_131Call_errhandler(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_errorcode;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Call_errhandler (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_errorcode,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_errorcode)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 874, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Call_errhandler") < 0)) __PYX_ERR(33, 874, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_errorcode = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_errorcode == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 874, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Call_errhandler", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 874, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_130Call_errhandler(((struct PyMPIFileObject *)__pyx_v_self), __pyx_v_errorcode);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_130Call_errhandler(struct PyMPIFileObject *__pyx_v_self, int __pyx_v_errorcode) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Call_errhandler", 1);

  /* "src/mpi4py/MPI.src/File.pyx":878
 *         Call the error handler installed on a file.
 *         """
 *         CHKERR( MPI_File_call_errhandler(self.ob_mpi, errorcode) )             # <<<<<<<<<<<<<<
 * 
 *     # Fortran Handle
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_File_call_errhandler(__pyx_v_self->ob_mpi, __pyx_v_errorcode)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(33, 878, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":874
 *         CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a file.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.File.Call_errhandler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":883
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_133py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_132py2f, "py2f(self) -> int\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_133py2f = {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_133py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_132py2f};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_133py2f(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("py2f (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("py2f", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "py2f", 0))) return NULL;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_132py2f(((struct PyMPIFileObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_132py2f(struct PyMPIFileObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("py2f", 1);

  /* "src/mpi4py/MPI.src/File.pyx":886
 *         """
 *         """
 *         return MPI_File_c2f(self.ob_mpi)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_MPI_Fint(MPI_File_c2f(__pyx_v_self->ob_mpi)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":883
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.File.py2f", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":888
 *         return MPI_File_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> File:
 *         """
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_135f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_4File_134f2py, "f2py(cls, arg: int) -> File\n\n        ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_4File_135f2py = {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_135f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_134f2py};
static PyObject *__pyx_pw_6mpi4py_3MPI_4File_135f2py(PyObject *__pyx_v_cls, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("f2py (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 888, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "f2py") < 0)) __PYX_ERR(33, 888, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("f2py", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 888, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.File.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_4File_134f2py(((PyTypeObject*)__pyx_v_cls), __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_4File_134f2py(CYTHON_UNUSED PyTypeObject *__pyx_v_cls, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  MPI_Fint __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("f2py", 1);

  /* "src/mpi4py/MPI.src/File.pyx":892
 *         """
 *         """
 *         return fromhandle(MPI_File_f2c(arg))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_MPI_Fint(__pyx_v_arg); if (unlikely((__pyx_t_1 == ((MPI_Fint)-1)) && PyErr_Occurred())) __PYX_ERR(33, 892, __pyx_L1_error)
  __pyx_t_2 = __pyx_fuse_10__pyx_f_6mpi4py_3MPI_fromhandle(MPI_File_f2c(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/File.pyx":888
 *         return MPI_File_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> File:
 *         """
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.File.f2py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/File.pyx":907
 * # ---------------------------------
 * 
 * def Register_datarep(             # <<<<<<<<<<<<<<
 *     datarep: str,
 *     read_fn: Callable[[Buffer, Datatype, int, Buffer, int], None],
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_53Register_datarep(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_52Register_datarep, "Register_datarep(datarep: str, read_fn: Callable[[Buffer, Datatype, int, Buffer, int], None], write_fn: Callable[[Buffer, Datatype, int, Buffer, int], None], extent_fn: Callable[[Datatype], int]) -> None\n\n    Register user-defined data representations.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_53Register_datarep = {"Register_datarep", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_53Register_datarep, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_52Register_datarep};
static PyObject *__pyx_pw_6mpi4py_3MPI_53Register_datarep(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_datarep = 0;
  PyObject *__pyx_v_read_fn = 0;
  PyObject *__pyx_v_write_fn = 0;
  PyObject *__pyx_v_extent_fn = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Register_datarep (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datarep,&__pyx_n_s_read_fn,&__pyx_n_s_write_fn,&__pyx_n_s_extent_fn,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datarep)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 907, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_read_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 907, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Register_datarep", 1, 4, 4, 1); __PYX_ERR(33, 907, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_write_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 907, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Register_datarep", 1, 4, 4, 2); __PYX_ERR(33, 907, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_extent_fn)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 907, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("Register_datarep", 1, 4, 4, 3); __PYX_ERR(33, 907, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Register_datarep") < 0)) __PYX_ERR(33, 907, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_datarep = values[0];
    __pyx_v_read_fn = values[1];
    __pyx_v_write_fn = values[2];
    __pyx_v_extent_fn = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Register_datarep", 1, 4, 4, __pyx_nargs); __PYX_ERR(33, 907, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Register_datarep", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_52Register_datarep(__pyx_self, __pyx_v_datarep, __pyx_v_read_fn, __pyx_v_write_fn, __pyx_v_extent_fn);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_52Register_datarep(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_datarep, PyObject *__pyx_v_read_fn, PyObject *__pyx_v_write_fn, PyObject *__pyx_v_extent_fn) {
  char *__pyx_v_cdatarep;
  PyObject *__pyx_v_state = 0;
  MPI_Datarep_conversion_function_c *__pyx_v_rd;
  MPI_Datarep_conversion_function_c *__pyx_v_wr;
  MPI_Datarep_extent_function *__pyx_v_ex;
  void *__pyx_v_xs;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  unsigned int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Register_datarep", 0);
  __Pyx_INCREF(__pyx_v_datarep);

  /* "src/mpi4py/MPI.src/File.pyx":916
 *     Register user-defined data representations.
 *     """
 *     cdef char *cdatarep = NULL             # <<<<<<<<<<<<<<
 *     datarep = asmpistr(datarep, &cdatarep)
 *     cdef object state = _p_datarep(read_fn, write_fn, extent_fn)
 */
  __pyx_v_cdatarep = NULL;

  /* "src/mpi4py/MPI.src/File.pyx":917
 *     """
 *     cdef char *cdatarep = NULL
 *     datarep = asmpistr(datarep, &cdatarep)             # <<<<<<<<<<<<<<
 *     cdef object state = _p_datarep(read_fn, write_fn, extent_fn)
 *     cdef MPI_Datarep_conversion_function_c *rd = MPI_CONVERSION_FN_NULL_C
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_asmpistr(__pyx_v_datarep, (&__pyx_v_cdatarep)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_datarep, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":918
 *     cdef char *cdatarep = NULL
 *     datarep = asmpistr(datarep, &cdatarep)
 *     cdef object state = _p_datarep(read_fn, write_fn, extent_fn)             # <<<<<<<<<<<<<<
 *     cdef MPI_Datarep_conversion_function_c *rd = MPI_CONVERSION_FN_NULL_C
 *     cdef MPI_Datarep_conversion_function_c *wr = MPI_CONVERSION_FN_NULL_C
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_read_fn);
  __Pyx_GIVEREF(__pyx_v_read_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_read_fn)) __PYX_ERR(33, 918, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_write_fn);
  __Pyx_GIVEREF(__pyx_v_write_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_write_fn)) __PYX_ERR(33, 918, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_extent_fn);
  __Pyx_GIVEREF(__pyx_v_extent_fn);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_extent_fn)) __PYX_ERR(33, 918, __pyx_L1_error);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6mpi4py_3MPI__p_datarep), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_state = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":919
 *     datarep = asmpistr(datarep, &cdatarep)
 *     cdef object state = _p_datarep(read_fn, write_fn, extent_fn)
 *     cdef MPI_Datarep_conversion_function_c *rd = MPI_CONVERSION_FN_NULL_C             # <<<<<<<<<<<<<<
 *     cdef MPI_Datarep_conversion_function_c *wr = MPI_CONVERSION_FN_NULL_C
 *     cdef MPI_Datarep_extent_function       *ex = datarep_extent_fn
 */
  __pyx_v_rd = MPI_CONVERSION_FN_NULL_C;

  /* "src/mpi4py/MPI.src/File.pyx":920
 *     cdef object state = _p_datarep(read_fn, write_fn, extent_fn)
 *     cdef MPI_Datarep_conversion_function_c *rd = MPI_CONVERSION_FN_NULL_C
 *     cdef MPI_Datarep_conversion_function_c *wr = MPI_CONVERSION_FN_NULL_C             # <<<<<<<<<<<<<<
 *     cdef MPI_Datarep_extent_function       *ex = datarep_extent_fn
 *     cdef void *xs = <void*> state
 */
  __pyx_v_wr = MPI_CONVERSION_FN_NULL_C;

  /* "src/mpi4py/MPI.src/File.pyx":921
 *     cdef MPI_Datarep_conversion_function_c *rd = MPI_CONVERSION_FN_NULL_C
 *     cdef MPI_Datarep_conversion_function_c *wr = MPI_CONVERSION_FN_NULL_C
 *     cdef MPI_Datarep_extent_function       *ex = datarep_extent_fn             # <<<<<<<<<<<<<<
 *     cdef void *xs = <void*> state
 *     if read_fn  is not None: rd = datarep_read_fn
 */
  __pyx_v_ex = __pyx_f_6mpi4py_3MPI_datarep_extent_fn;

  /* "src/mpi4py/MPI.src/File.pyx":922
 *     cdef MPI_Datarep_conversion_function_c *wr = MPI_CONVERSION_FN_NULL_C
 *     cdef MPI_Datarep_extent_function       *ex = datarep_extent_fn
 *     cdef void *xs = <void*> state             # <<<<<<<<<<<<<<
 *     if read_fn  is not None: rd = datarep_read_fn
 *     if write_fn is not None: wr = datarep_write_fn
 */
  __pyx_v_xs = ((void *)__pyx_v_state);

  /* "src/mpi4py/MPI.src/File.pyx":923
 *     cdef MPI_Datarep_extent_function       *ex = datarep_extent_fn
 *     cdef void *xs = <void*> state
 *     if read_fn  is not None: rd = datarep_read_fn             # <<<<<<<<<<<<<<
 *     if write_fn is not None: wr = datarep_write_fn
 *     CHKERR ( MPI_Register_datarep_c(cdatarep, rd, wr, ex, xs) )
 */
  __pyx_t_3 = (__pyx_v_read_fn != Py_None);
  if (__pyx_t_3) {
    __pyx_v_rd = __pyx_f_6mpi4py_3MPI_datarep_read_fn;
  }

  /* "src/mpi4py/MPI.src/File.pyx":924
 *     cdef void *xs = <void*> state
 *     if read_fn  is not None: rd = datarep_read_fn
 *     if write_fn is not None: wr = datarep_write_fn             # <<<<<<<<<<<<<<
 *     CHKERR ( MPI_Register_datarep_c(cdatarep, rd, wr, ex, xs) )
 *     with datarep_lock: datarep_registry[datarep] = state
 */
  __pyx_t_3 = (__pyx_v_write_fn != Py_None);
  if (__pyx_t_3) {
    __pyx_v_wr = __pyx_f_6mpi4py_3MPI_datarep_write_fn;
  }

  /* "src/mpi4py/MPI.src/File.pyx":925
 *     if read_fn  is not None: rd = datarep_read_fn
 *     if write_fn is not None: wr = datarep_write_fn
 *     CHKERR ( MPI_Register_datarep_c(cdatarep, rd, wr, ex, xs) )             # <<<<<<<<<<<<<<
 *     with datarep_lock: datarep_registry[datarep] = state
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Register_datarep_c(__pyx_v_cdatarep, __pyx_v_rd, __pyx_v_wr, __pyx_v_ex, __pyx_v_xs)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(33, 925, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":926
 *     if write_fn is not None: wr = datarep_write_fn
 *     CHKERR ( MPI_Register_datarep_c(cdatarep, rd, wr, ex, xs) )
 *     with datarep_lock: datarep_registry[datarep] = state             # <<<<<<<<<<<<<<
 */
  /*with:*/ {
    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_datarep_lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 926, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_6mpi4py_3MPI_datarep_lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 926, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_7 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 926, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        /*try:*/ {
          if (unlikely(__pyx_v_6mpi4py_3MPI_datarep_registry == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(33, 926, __pyx_L9_error)
          }
          if (unlikely((PyDict_SetItem(__pyx_v_6mpi4py_3MPI_datarep_registry, __pyx_v_datarep, __pyx_v_state) < 0))) __PYX_ERR(33, 926, __pyx_L9_error)
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L14_try_end;
        __pyx_L9_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("mpi4py.MPI.Register_datarep", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(33, 926, __pyx_L11_except_error)
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_1);
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 926, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(33, 926, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_3 < 0) __PYX_ERR(33, 926, __pyx_L11_except_error)
          __pyx_t_13 = (!__pyx_t_3);
          if (unlikely(__pyx_t_13)) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_6);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_6);
            __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_6 = 0; 
            __PYX_ERR(33, 926, __pyx_L11_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L10_exception_handled;
        }
        __pyx_L11_except_error:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        goto __pyx_L1_error;
        __pyx_L10_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_L14_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_5) {
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__44, NULL);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(33, 926, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
        goto __pyx_L8;
      }
      __pyx_L8:;
    }
    goto __pyx_L18;
    __pyx_L5_error:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L1_error;
    __pyx_L18:;
  }

  /* "src/mpi4py/MPI.src/File.pyx":907
 * # ---------------------------------
 * 
 * def Register_datarep(             # <<<<<<<<<<<<<<
 *     datarep: str,
 *     read_fn: Callable[[Buffer, Datatype, int, Buffer, int], None],
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("mpi4py.MPI.Register_datarep", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v_datarep);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":99
 * # -----------------
 * 
 * def Alloc_mem(Aint size: int, Info info: Info = INFO_NULL) -> buffer:             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and remote memory access.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_110__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults4, __pyx_self)->__pyx_arg_info);
  __Pyx_GIVEREF((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults4, __pyx_self)->__pyx_arg_info);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__Pyx_CyFunction_Defaults(__pyx_defaults4, __pyx_self)->__pyx_arg_info))) __PYX_ERR(34, 99, __pyx_L1_error);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(34, 99, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(34, 99, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_55Alloc_mem(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_54Alloc_mem, "Alloc_mem(size: int, info: Info = INFO_NULL) -> buffer\n\n    Allocate memory for message passing and remote memory access.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_55Alloc_mem = {"Alloc_mem", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_55Alloc_mem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_54Alloc_mem};
static PyObject *__pyx_pw_6mpi4py_3MPI_55Alloc_mem(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  MPI_Aint __pyx_v_size;
  struct PyMPIInfoObject *__pyx_v_info = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Alloc_mem (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_size_2,&__pyx_n_s_info,0};
    __pyx_defaults4 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults4, __pyx_self);
    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)__pyx_dynamic_args->__pyx_arg_info);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_size_2)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 99, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_info);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 99, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Alloc_mem") < 0)) __PYX_ERR(34, 99, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_size = __Pyx_PyInt_As_MPI_Aint(values[0]); if (unlikely((__pyx_v_size == ((MPI_Aint)-1)) && PyErr_Occurred())) __PYX_ERR(34, 99, __pyx_L3_error)
    __pyx_v_info = ((struct PyMPIInfoObject *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Alloc_mem", 0, 1, 2, __pyx_nargs); __PYX_ERR(34, 99, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Alloc_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_6mpi4py_3MPI_Info, 0, "info", 0))) __PYX_ERR(34, 99, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_54Alloc_mem(__pyx_self, __pyx_v_size, __pyx_v_info);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_54Alloc_mem(CYTHON_UNUSED PyObject *__pyx_self, MPI_Aint __pyx_v_size, struct PyMPIInfoObject *__pyx_v_info) {
  void *__pyx_v_base;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Alloc_mem", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":103
 *     Allocate memory for message passing and remote memory access.
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Alloc_mem(size, info.ob_mpi, &base) )
 *     return mpibuf(base, size)
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/MPI.pyx":104
 *     """
 *     cdef void *base = NULL
 *     CHKERR( MPI_Alloc_mem(size, info.ob_mpi, &base) )             # <<<<<<<<<<<<<<
 *     return mpibuf(base, size)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Alloc_mem(__pyx_v_size, __pyx_v_info->ob_mpi, (&__pyx_v_base))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 104, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":105
 *     cdef void *base = NULL
 *     CHKERR( MPI_Alloc_mem(size, info.ob_mpi, &base) )
 *     return mpibuf(base, size)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_6mpi4py_3MPI_mpibuf(__pyx_v_base, __pyx_v_size)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":99
 * # -----------------
 * 
 * def Alloc_mem(Aint size: int, Info info: Info = INFO_NULL) -> buffer:             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and remote memory access.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Alloc_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":108
 * 
 * 
 * def Free_mem(mem: buffer) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem`.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_57Free_mem(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_56Free_mem, "Free_mem(mem: buffer) -> None\n\n    Free memory allocated with `Alloc_mem`.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_57Free_mem = {"Free_mem", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_57Free_mem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_56Free_mem};
static PyObject *__pyx_pw_6mpi4py_3MPI_57Free_mem(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_mem = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Free_mem (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_mem,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_mem)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 108, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Free_mem") < 0)) __PYX_ERR(34, 108, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_mem = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Free_mem", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 108, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Free_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_56Free_mem(__pyx_self, __pyx_v_mem);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_56Free_mem(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_mem) {
  void *__pyx_v_base;
  struct __pyx_obj_6mpi4py_3MPI_buffer *__pyx_v_buf = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  unsigned int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Free_mem", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":112
 *     Free memory allocated with `Alloc_mem`.
 *     """
 *     cdef void *base = NULL             # <<<<<<<<<<<<<<
 *     cdef buffer buf = asbuffer(mem, &base, NULL, 1)
 *     CHKERR( MPI_Free_mem(base) )
 */
  __pyx_v_base = NULL;

  /* "src/mpi4py/MPI.src/MPI.pyx":113
 *     """
 *     cdef void *base = NULL
 *     cdef buffer buf = asbuffer(mem, &base, NULL, 1)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Free_mem(base) )
 *     buf.release()
 */
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_asbuffer(__pyx_v_mem, (&__pyx_v_base), NULL, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":114
 *     cdef void *base = NULL
 *     cdef buffer buf = asbuffer(mem, &base, NULL, 1)
 *     CHKERR( MPI_Free_mem(base) )             # <<<<<<<<<<<<<<
 *     buf.release()
 * 
 */
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Free_mem(__pyx_v_base)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(34, 114, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":115
 *     cdef buffer buf = asbuffer(mem, &base, NULL, 1)
 *     CHKERR( MPI_Free_mem(base) )
 *     buf.release()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_buf), __pyx_n_s_release); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  #if CYTHON_UNPACK_METHODS
  if (likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":108
 * 
 * 
 * def Free_mem(mem: buffer) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem`.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Free_mem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":121
 * # -----------------------
 * 
 * def Init() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_59Init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_58Init, "Init() -> None\n\n    Initialize the MPI execution environment.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_59Init = {"Init", (PyCFunction)__pyx_pw_6mpi4py_3MPI_59Init, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_58Init};
static PyObject *__pyx_pw_6mpi4py_3MPI_59Init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Init (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_58Init(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_58Init(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Init", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":125
 *     Initialize the MPI execution environment.
 *     """
 *     CHKERR( MPI_Init(NULL, NULL) )             # <<<<<<<<<<<<<<
 *     initialize()
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Init(NULL, NULL)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 125, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":126
 *     """
 *     CHKERR( MPI_Init(NULL, NULL) )
 *     initialize()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_initialize(); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 126, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":121
 * # -----------------------
 * 
 * def Init() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":129
 * 
 * 
 * def Finalize() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_61Finalize(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_60Finalize, "Finalize() -> None\n\n    Terminate the MPI execution environment.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_61Finalize = {"Finalize", (PyCFunction)__pyx_pw_6mpi4py_3MPI_61Finalize, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_60Finalize};
static PyObject *__pyx_pw_6mpi4py_3MPI_61Finalize(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Finalize (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_60Finalize(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_60Finalize(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Finalize", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":133
 *     Terminate the MPI execution environment.
 *     """
 *     finalize()             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Finalize() )
 * 
 */
  __pyx_f_6mpi4py_3MPI_finalize();

  /* "src/mpi4py/MPI.src/MPI.pyx":134
 *     """
 *     finalize()
 *     CHKERR( MPI_Finalize() )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Finalize()); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 134, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":129
 * 
 * 
 * def Finalize() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Finalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":153
 * 
 * 
 * def Init_thread(int required: int = THREAD_MULTIPLE) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */

static PyObject *__pyx_pf_6mpi4py_3MPI_112__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__defaults__", 1);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__Pyx_CyFunction_Defaults(__pyx_defaults5, __pyx_self)->__pyx_arg_required); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(34, 153, __pyx_L1_error);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(34, 153, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None)) __PYX_ERR(34, 153, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_63Init_thread(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_62Init_thread, "Init_thread(required: int = THREAD_MULTIPLE) -> int\n\n    Initialize the MPI execution environment.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_63Init_thread = {"Init_thread", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_63Init_thread, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_62Init_thread};
static PyObject *__pyx_pw_6mpi4py_3MPI_63Init_thread(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_required;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Init_thread (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_required,0};
    __pyx_defaults5 *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults5, __pyx_self);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_required);
          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 153, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Init_thread") < 0)) __PYX_ERR(34, 153, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_required = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_required == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 153, __pyx_L3_error)
    } else {
      __pyx_v_required = __pyx_dynamic_args->__pyx_arg_required;
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Init_thread", 0, 0, 1, __pyx_nargs); __PYX_ERR(34, 153, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Init_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_62Init_thread(__pyx_self, __pyx_v_required);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_62Init_thread(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_required) {
  int __pyx_v_provided;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Init_thread", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":157
 *     Initialize the MPI execution environment.
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     initialize()
 */
  __pyx_v_provided = MPI_THREAD_SINGLE;

  /* "src/mpi4py/MPI.src/MPI.pyx":158
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )             # <<<<<<<<<<<<<<
 *     initialize()
 *     return provided
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Init_thread(NULL, NULL, __pyx_v_required, (&__pyx_v_provided))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 158, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":159
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     initialize()             # <<<<<<<<<<<<<<
 *     return provided
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_initialize(); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 159, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":160
 *     CHKERR( MPI_Init_thread(NULL, NULL, required, &provided) )
 *     initialize()
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_provided); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":153
 * 
 * 
 * def Init_thread(int required: int = THREAD_MULTIPLE) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Init_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":163
 * 
 * 
 * def Query_thread() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support provided by the MPI library.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_65Query_thread(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_64Query_thread, "Query_thread() -> int\n\n    Return the level of thread support provided by the MPI library.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_65Query_thread = {"Query_thread", (PyCFunction)__pyx_pw_6mpi4py_3MPI_65Query_thread, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_64Query_thread};
static PyObject *__pyx_pw_6mpi4py_3MPI_65Query_thread(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Query_thread (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_64Query_thread(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_64Query_thread(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_provided;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Query_thread", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":167
 *     Return the level of thread support provided by the MPI library.
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Query_thread(&provided) )
 *     return provided
 */
  __pyx_v_provided = MPI_THREAD_SINGLE;

  /* "src/mpi4py/MPI.src/MPI.pyx":168
 *     """
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Query_thread(&provided) )             # <<<<<<<<<<<<<<
 *     return provided
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Query_thread((&__pyx_v_provided))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 168, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":169
 *     cdef int provided = MPI_THREAD_SINGLE
 *     CHKERR( MPI_Query_thread(&provided) )
 *     return provided             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_provided); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":163
 * 
 * 
 * def Query_thread() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support provided by the MPI library.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Query_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":172
 * 
 * 
 * def Is_thread_main() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called `Init` or `Init_thread`.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_67Is_thread_main(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_66Is_thread_main, "Is_thread_main() -> bool\n\n    Indicate whether this thread called `Init` or `Init_thread`.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_67Is_thread_main = {"Is_thread_main", (PyCFunction)__pyx_pw_6mpi4py_3MPI_67Is_thread_main, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_66Is_thread_main};
static PyObject *__pyx_pw_6mpi4py_3MPI_67Is_thread_main(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_thread_main (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_66Is_thread_main(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_66Is_thread_main(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_thread_main", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":176
 *     Indicate whether this thread called `Init` or `Init_thread`.
 *     """
 *     cdef int flag = 1             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Is_thread_main(&flag) )
 *     return <bint>flag
 */
  __pyx_v_flag = 1;

  /* "src/mpi4py/MPI.src/MPI.pyx":177
 *     """
 *     cdef int flag = 1
 *     CHKERR( MPI_Is_thread_main(&flag) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Is_thread_main((&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 177, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":178
 *     cdef int flag = 1
 *     CHKERR( MPI_Is_thread_main(&flag) )
 *     return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":172
 * 
 * 
 * def Is_thread_main() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called `Init` or `Init_thread`.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Is_thread_main", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":181
 * 
 * 
 * def Is_initialized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Init` has been called.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_69Is_initialized(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_68Is_initialized, "Is_initialized() -> bool\n\n    Indicate whether `Init` has been called.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_69Is_initialized = {"Is_initialized", (PyCFunction)__pyx_pw_6mpi4py_3MPI_69Is_initialized, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_68Is_initialized};
static PyObject *__pyx_pw_6mpi4py_3MPI_69Is_initialized(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_initialized (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_68Is_initialized(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_68Is_initialized(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_initialized", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":185
 *     Indicate whether `Init` has been called.
 *     """
 *     cdef int flag = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Initialized(&flag) )
 *     return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":186
 *     """
 *     cdef int flag = 0
 *     CHKERR( MPI_Initialized(&flag) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Initialized((&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 186, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":187
 *     cdef int flag = 0
 *     CHKERR( MPI_Initialized(&flag) )
 *     return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":181
 * 
 * 
 * def Is_initialized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Init` has been called.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Is_initialized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":190
 * 
 * 
 * def Is_finalized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Finalize` has completed.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_71Is_finalized(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_70Is_finalized, "Is_finalized() -> bool\n\n    Indicate whether `Finalize` has completed.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_71Is_finalized = {"Is_finalized", (PyCFunction)__pyx_pw_6mpi4py_3MPI_71Is_finalized, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_70Is_finalized};
static PyObject *__pyx_pw_6mpi4py_3MPI_71Is_finalized(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Is_finalized (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_70Is_finalized(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_70Is_finalized(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_flag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Is_finalized", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":194
 *     Indicate whether `Finalize` has completed.
 *     """
 *     cdef int flag = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Finalized(&flag) )
 *     return <bint>flag
 */
  __pyx_v_flag = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":195
 *     """
 *     cdef int flag = 0
 *     CHKERR( MPI_Finalized(&flag) )             # <<<<<<<<<<<<<<
 *     return <bint>flag
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Finalized((&__pyx_v_flag))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 195, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":196
 *     cdef int flag = 0
 *     CHKERR( MPI_Finalized(&flag) )
 *     return <bint>flag             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_flag != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":190
 * 
 * 
 * def Is_finalized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Finalize` has completed.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Is_finalized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":209
 * 
 * 
 * def Get_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_73Get_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_72Get_version, "Get_version() -> tuple[int, int]\n\n    Obtain the version number of the MPI standard.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_73Get_version = {"Get_version", (PyCFunction)__pyx_pw_6mpi4py_3MPI_73Get_version, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_72Get_version};
static PyObject *__pyx_pw_6mpi4py_3MPI_73Get_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_version (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_72Get_version(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_72Get_version(CYTHON_UNUSED PyObject *__pyx_self) {
  int __pyx_v_version;
  int __pyx_v_subversion;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_version", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":213
 *     Obtain the version number of the MPI standard.
 *     """
 *     cdef int version = 1             # <<<<<<<<<<<<<<
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 */
  __pyx_v_version = 1;

  /* "src/mpi4py/MPI.src/MPI.pyx":214
 *     """
 *     cdef int version = 1
 *     cdef int subversion = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 *     return (version, subversion)
 */
  __pyx_v_subversion = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":215
 *     cdef int version = 1
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )             # <<<<<<<<<<<<<<
 *     return (version, subversion)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_version((&__pyx_v_version), (&__pyx_v_subversion))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 215, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":216
 *     cdef int subversion = 0
 *     CHKERR( MPI_Get_version(&version, &subversion) )
 *     return (version, subversion)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_subversion); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(34, 216, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(34, 216, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":209
 * 
 * 
 * def Get_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("mpi4py.MPI.Get_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":219
 * 
 * 
 * def Get_library_version() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version string of the MPI library.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_75Get_library_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_74Get_library_version, "Get_library_version() -> str\n\n    Obtain the version string of the MPI library.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_75Get_library_version = {"Get_library_version", (PyCFunction)__pyx_pw_6mpi4py_3MPI_75Get_library_version, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_74Get_library_version};
static PyObject *__pyx_pw_6mpi4py_3MPI_75Get_library_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_library_version (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_74Get_library_version(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_74Get_library_version(CYTHON_UNUSED PyObject *__pyx_self) {
  char __pyx_v_name[(MPI_MAX_LIBRARY_VERSION_STRING + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_library_version", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":224
 *     """
 *     cdef char name[MPI_MAX_LIBRARY_VERSION_STRING+1]
 *     cdef int nlen = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_library_version(name, &nlen) )
 *     return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":225
 *     cdef char name[MPI_MAX_LIBRARY_VERSION_STRING+1]
 *     cdef int nlen = 0
 *     CHKERR( MPI_Get_library_version(name, &nlen) )             # <<<<<<<<<<<<<<
 *     return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_library_version(__pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 225, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":226
 *     cdef int nlen = 0
 *     CHKERR( MPI_Get_library_version(name, &nlen) )
 *     return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":219
 * 
 * 
 * def Get_library_version() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version string of the MPI library.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_library_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":232
 * # ----------------------
 * 
 * def Get_processor_name() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_77Get_processor_name(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_76Get_processor_name, "Get_processor_name() -> str\n\n    Obtain the name of the calling processor.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_77Get_processor_name = {"Get_processor_name", (PyCFunction)__pyx_pw_6mpi4py_3MPI_77Get_processor_name, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_76Get_processor_name};
static PyObject *__pyx_pw_6mpi4py_3MPI_77Get_processor_name(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_processor_name (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_76Get_processor_name(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_76Get_processor_name(CYTHON_UNUSED PyObject *__pyx_self) {
  char __pyx_v_name[(MPI_MAX_PROCESSOR_NAME + 1)];
  int __pyx_v_nlen;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_processor_name", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":237
 *     """
 *     cdef char name[MPI_MAX_PROCESSOR_NAME+1]
 *     cdef int nlen = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_processor_name(name, &nlen) )
 *     return tompistr(name, nlen)
 */
  __pyx_v_nlen = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":238
 *     cdef char name[MPI_MAX_PROCESSOR_NAME+1]
 *     cdef int nlen = 0
 *     CHKERR( MPI_Get_processor_name(name, &nlen) )             # <<<<<<<<<<<<<<
 *     return tompistr(name, nlen)
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_processor_name(__pyx_v_name, (&__pyx_v_nlen))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 238, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":239
 *     cdef int nlen = 0
 *     CHKERR( MPI_Get_processor_name(name, &nlen) )
 *     return tompistr(name, nlen)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_tompistr(__pyx_v_name, __pyx_v_nlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":232
 * # ----------------------
 * 
 * def Get_processor_name() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_processor_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":242
 * 
 * 
 * def Get_hw_resource_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the hardware platform of the calling processor.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_79Get_hw_resource_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_78Get_hw_resource_info, "Get_hw_resource_info() -> Info\n\n    Obtain information about the hardware platform of the calling processor.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_79Get_hw_resource_info = {"Get_hw_resource_info", (PyCFunction)__pyx_pw_6mpi4py_3MPI_79Get_hw_resource_info, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_78Get_hw_resource_info};
static PyObject *__pyx_pw_6mpi4py_3MPI_79Get_hw_resource_info(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Get_hw_resource_info (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_78Get_hw_resource_info(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_78Get_hw_resource_info(CYTHON_UNUSED PyObject *__pyx_self) {
  struct PyMPIInfoObject *__pyx_v_info = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Get_hw_resource_info", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":246
 *     Obtain information about the hardware platform of the calling processor.
 *     """
 *     cdef Info info = <Info>New(Info)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Get_hw_resource_info(&info.ob_mpi) )
 *     return info  # ~> MPI-4.1
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_New(__pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_info = ((struct PyMPIInfoObject *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":247
 *     """
 *     cdef Info info = <Info>New(Info)
 *     CHKERR( MPI_Get_hw_resource_info(&info.ob_mpi) )             # <<<<<<<<<<<<<<
 *     return info  # ~> MPI-4.1
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Get_hw_resource_info((&__pyx_v_info->ob_mpi))); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(34, 247, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":248
 *     cdef Info info = <Info>New(Info)
 *     CHKERR( MPI_Get_hw_resource_info(&info.ob_mpi) )
 *     return info  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_info);
  __pyx_r = ((PyObject *)__pyx_v_info);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":242
 * 
 * 
 * def Get_hw_resource_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the hardware platform of the calling processor.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.Get_hw_resource_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_info);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":254
 * # --------------------------
 * 
 * def Wtime() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_81Wtime(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_80Wtime, "Wtime() -> float\n\n    Return an elapsed time on the calling processor.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_81Wtime = {"Wtime", (PyCFunction)__pyx_pw_6mpi4py_3MPI_81Wtime, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_80Wtime};
static PyObject *__pyx_pw_6mpi4py_3MPI_81Wtime(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Wtime (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_80Wtime(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_80Wtime(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Wtime", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":258
 *     Return an elapsed time on the calling processor.
 *     """
 *     return MPI_Wtime()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(MPI_Wtime()); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":254
 * # --------------------------
 * 
 * def Wtime() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Wtime", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":261
 * 
 * 
 * def Wtick() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of `Wtime`.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_83Wtick(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_82Wtick, "Wtick() -> float\n\n    Return the resolution of `Wtime`.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_83Wtick = {"Wtick", (PyCFunction)__pyx_pw_6mpi4py_3MPI_83Wtick, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_82Wtick};
static PyObject *__pyx_pw_6mpi4py_3MPI_83Wtick(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Wtick (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_82Wtick(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_82Wtick(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Wtick", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":265
 *     Return the resolution of `Wtime`.
 *     """
 *     return MPI_Wtick()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(MPI_Wtick()); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":261
 * 
 * 
 * def Wtick() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of `Wtime`.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI.Wtick", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":271
 * # --------------------
 * 
 * def Pcontrol(int level: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_85Pcontrol(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_84Pcontrol, "Pcontrol(level: int) -> None\n\n    Control profiling.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_85Pcontrol = {"Pcontrol", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_85Pcontrol, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_84Pcontrol};
static PyObject *__pyx_pw_6mpi4py_3MPI_85Pcontrol(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_level;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("Pcontrol (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_level,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_level)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 271, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "Pcontrol") < 0)) __PYX_ERR(34, 271, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_level = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 271, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("Pcontrol", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 271, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI.Pcontrol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_84Pcontrol(__pyx_self, __pyx_v_level);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_84Pcontrol(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_level) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("Pcontrol", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":275
 *     Control profiling.
 *     """
 *     if level < 0 or level > 2: CHKERR( MPI_ERR_ARG )             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Pcontrol(level) )
 * 
 */
  __pyx_t_2 = (__pyx_v_level < 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_level > 2);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_ERR_ARG); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(34, 275, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":276
 *     """
 *     if level < 0 or level > 2: CHKERR( MPI_ERR_ARG )
 *     CHKERR( MPI_Pcontrol(level) )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Pcontrol(__pyx_v_level)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(34, 276, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":271
 * # --------------------
 * 
 * def Pcontrol(int level: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI.Pcontrol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typemap.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int AddTypeMap(dict TD, const char tc[], Datatype dt) except -1:             # <<<<<<<<<<<<<<
 *     if dt.ob_mpi != MPI_DATATYPE_NULL:
 *         TD[pystr(tc)] = dt
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_AddTypeMap(PyObject *__pyx_v_TD, char const *__pyx_v_tc, struct PyMPIDatatypeObject *__pyx_v_dt) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("AddTypeMap", 1);

  /* "src/mpi4py/MPI.src/typemap.pxi":4
 * 
 * cdef inline int AddTypeMap(dict TD, const char tc[], Datatype dt) except -1:
 *     if dt.ob_mpi != MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *         TD[pystr(tc)] = dt
 *         return 1
 */
  __pyx_t_1 = (__pyx_v_dt->ob_mpi != MPI_DATATYPE_NULL);
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typemap.pxi":5
 * cdef inline int AddTypeMap(dict TD, const char tc[], Datatype dt) except -1:
 *     if dt.ob_mpi != MPI_DATATYPE_NULL:
 *         TD[pystr(tc)] = dt             # <<<<<<<<<<<<<<
 *         return 1
 *     return 0
 */
    if (unlikely(__pyx_v_TD == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(35, 5, __pyx_L1_error)
    }
    __pyx_t_2 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_tc); if (unlikely(!__pyx_t_2)) __PYX_ERR(35, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely((PyDict_SetItem(__pyx_v_TD, __pyx_t_2, ((PyObject *)__pyx_v_dt)) < 0))) __PYX_ERR(35, 5, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":6
 *     if dt.ob_mpi != MPI_DATATYPE_NULL:
 *         TD[pystr(tc)] = dt
 *         return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
    __pyx_r = 1;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typemap.pxi":4
 * 
 * cdef inline int AddTypeMap(dict TD, const char tc[], Datatype dt) except -1:
 *     if dt.ob_mpi != MPI_DATATYPE_NULL:             # <<<<<<<<<<<<<<
 *         TD[pystr(tc)] = dt
 *         return 1
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":7
 *         TD[pystr(tc)] = dt
 *         return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typemap.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int AddTypeMap(dict TD, const char tc[], Datatype dt) except -1:             # <<<<<<<<<<<<<<
 *     if dt.ob_mpi != MPI_DATATYPE_NULL:
 *         TD[pystr(tc)] = dt
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI.AddTypeMap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * def _typecode(Datatype datatype: Datatype) -> str | None:             # <<<<<<<<<<<<<<
 *     """
 *     Map MPI datatype to character code or type string.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_87_typecode(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_86_typecode, "_typecode(datatype: Datatype) -> str | None\n\n    Map MPI datatype to character code or type string.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_87_typecode = {"_typecode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_87_typecode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_86_typecode};
static PyObject *__pyx_pw_6mpi4py_3MPI_87_typecode(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_typecode (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(36, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_typecode") < 0)) __PYX_ERR(36, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_typecode", 1, 1, 1, __pyx_nargs); __PYX_ERR(36, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._typecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(36, 3, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_86_typecode(__pyx_self, __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_86_typecode(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype) {
  char const *__pyx_v_tc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_typecode", 1);

  /* "src/mpi4py/MPI.src/typestr.pxi":7
 *     Map MPI datatype to character code or type string.
 *     """
 *     cdef const char *tc = DatatypeCode(datatype.ob_mpi)             # <<<<<<<<<<<<<<
 *     return pystr(tc) if tc != NULL else None
 * 
 */
  __pyx_v_tc = __pyx_f_6mpi4py_3MPI_DatatypeCode(__pyx_v_datatype->ob_mpi);

  /* "src/mpi4py/MPI.src/typestr.pxi":8
 *     """
 *     cdef const char *tc = DatatypeCode(datatype.ob_mpi)
 *     return pystr(tc) if tc != NULL else None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = (__pyx_v_tc != NULL);
  if (__pyx_t_2) {
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_pystr(__pyx_v_tc); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * def _typecode(Datatype datatype: Datatype) -> str | None:             # <<<<<<<<<<<<<<
 *     """
 *     Map MPI datatype to character code or type string.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._typecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":11
 * 
 * 
 * def _typealign(Datatype datatype: Datatype) -> int | None:             # <<<<<<<<<<<<<<
 *     """
 *     Return MPI datatype alignment.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_89_typealign(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_88_typealign, "_typealign(datatype: Datatype) -> int | None\n\n    Return MPI datatype alignment.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_89_typealign = {"_typealign", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_89_typealign, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_88_typealign};
static PyObject *__pyx_pw_6mpi4py_3MPI_89_typealign(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_typealign (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(36, 11, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_typealign") < 0)) __PYX_ERR(36, 11, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_typealign", 1, 1, 1, __pyx_nargs); __PYX_ERR(36, 11, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._typealign", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(36, 11, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_88_typealign(__pyx_self, __pyx_v_datatype);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_88_typealign(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype) {
  size_t __pyx_v_align;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_typealign", 1);

  /* "src/mpi4py/MPI.src/typestr.pxi":15
 *     Return MPI datatype alignment.
 *     """
 *     cdef size_t align = DatatypeAlign(datatype.ob_mpi)             # <<<<<<<<<<<<<<
 *     return align if align > 0 else None
 * 
 */
  __pyx_v_align = __pyx_f_6mpi4py_3MPI_DatatypeAlign(__pyx_v_datatype->ob_mpi);

  /* "src/mpi4py/MPI.src/typestr.pxi":16
 *     """
 *     cdef size_t align = DatatypeAlign(datatype.ob_mpi)
 *     return align if align > 0 else None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = (__pyx_v_align > 0);
  if (__pyx_t_2) {
    __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_align); if (unlikely(!__pyx_t_3)) __PYX_ERR(36, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":11
 * 
 * 
 * def _typealign(Datatype datatype: Datatype) -> int | None:             # <<<<<<<<<<<<<<
 *     """
 *     Return MPI datatype alignment.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._typealign", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":21
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* typechr(const char kind[], size_t size) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typechr(char const *__pyx_v_kind, size_t __pyx_v_size) {
  char __pyx_v_k;
  char const *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":22
 * 
 * cdef inline const char* typechr(const char kind[], size_t size) noexcept nogil:
 *     cdef char k = kind[0]             # <<<<<<<<<<<<<<
 *     if k == c'b':  # boolean
 *         if size == 1: return "?"
 */
  __pyx_v_k = (__pyx_v_kind[0]);

  /* "src/mpi4py/MPI.src/typestr.pxi":23
 * cdef inline const char* typechr(const char kind[], size_t size) noexcept nogil:
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean             # <<<<<<<<<<<<<<
 *         if size == 1: return "?"
 *         if size >= 2: return typechr('i', size)
 */
  __pyx_t_1 = (__pyx_v_k == 'b');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":24
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean
 *         if size == 1: return "?"             # <<<<<<<<<<<<<<
 *         if size >= 2: return typechr('i', size)
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == 1);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"?");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":25
 *     if k == c'b':  # boolean
 *         if size == 1: return "?"
 *         if size >= 2: return typechr('i', size)             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral
 */
    __pyx_t_1 = (__pyx_v_size >= 2);
    if (__pyx_t_1) {
      __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), __pyx_v_size);
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":26
 *         if size == 1: return "?"
 *         if size >= 2: return typechr('i', size)
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'i':  # signed integral
 *         if size == sizeof(char)      : return "b"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":23
 * cdef inline const char* typechr(const char kind[], size_t size) noexcept nogil:
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean             # <<<<<<<<<<<<<<
 *         if size == 1: return "?"
 *         if size >= 2: return typechr('i', size)
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":27
 *         if size >= 2: return typechr('i', size)
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral             # <<<<<<<<<<<<<<
 *         if size == sizeof(char)      : return "b"
 *         if size == sizeof(short)     : return "h"
 */
  __pyx_t_1 = (__pyx_v_k == 'i');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":28
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral
 *         if size == sizeof(char)      : return "b"             # <<<<<<<<<<<<<<
 *         if size == sizeof(short)     : return "h"
 *         if size == sizeof(int)       : return "i"
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(char)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"b");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":29
 *     if k == c'i':  # signed integral
 *         if size == sizeof(char)      : return "b"
 *         if size == sizeof(short)     : return "h"             # <<<<<<<<<<<<<<
 *         if size == sizeof(int)       : return "i"
 *         if size == sizeof(long)      : return "l"
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(short)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"h");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":30
 *         if size == sizeof(char)      : return "b"
 *         if size == sizeof(short)     : return "h"
 *         if size == sizeof(int)       : return "i"             # <<<<<<<<<<<<<<
 *         if size == sizeof(long)      : return "l"
 *         if size == sizeof(long long) : return "q"  # ~> uncovered
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(int)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"i");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":31
 *         if size == sizeof(short)     : return "h"
 *         if size == sizeof(int)       : return "i"
 *         if size == sizeof(long)      : return "l"             # <<<<<<<<<<<<<<
 *         if size == sizeof(long long) : return "q"  # ~> uncovered
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(long)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"l");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":32
 *         if size == sizeof(int)       : return "i"
 *         if size == sizeof(long)      : return "l"
 *         if size == sizeof(long long) : return "q"  # ~> uncovered             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(PY_LONG_LONG)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"q");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":33
 *         if size == sizeof(long)      : return "l"
 *         if size == sizeof(long long) : return "q"  # ~> uncovered
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'u':  # unsigned integral
 *         if size == sizeof(char)      : return "B"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":27
 *         if size >= 2: return typechr('i', size)
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral             # <<<<<<<<<<<<<<
 *         if size == sizeof(char)      : return "b"
 *         if size == sizeof(short)     : return "h"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":34
 *         if size == sizeof(long long) : return "q"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral             # <<<<<<<<<<<<<<
 *         if size == sizeof(char)      : return "B"
 *         if size == sizeof(short)     : return "H"
 */
  __pyx_t_1 = (__pyx_v_k == 'u');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":35
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral
 *         if size == sizeof(char)      : return "B"             # <<<<<<<<<<<<<<
 *         if size == sizeof(short)     : return "H"
 *         if size == sizeof(int)       : return "I"
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(char)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"B");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":36
 *     if k == c'u':  # unsigned integral
 *         if size == sizeof(char)      : return "B"
 *         if size == sizeof(short)     : return "H"             # <<<<<<<<<<<<<<
 *         if size == sizeof(int)       : return "I"
 *         if size == sizeof(long)      : return "L"
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(short)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"H");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":37
 *         if size == sizeof(char)      : return "B"
 *         if size == sizeof(short)     : return "H"
 *         if size == sizeof(int)       : return "I"             # <<<<<<<<<<<<<<
 *         if size == sizeof(long)      : return "L"
 *         if size == sizeof(long long) : return "Q"  # ~> uncovered
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(int)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"I");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":38
 *         if size == sizeof(short)     : return "H"
 *         if size == sizeof(int)       : return "I"
 *         if size == sizeof(long)      : return "L"             # <<<<<<<<<<<<<<
 *         if size == sizeof(long long) : return "Q"  # ~> uncovered
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(long)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"L");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":39
 *         if size == sizeof(int)       : return "I"
 *         if size == sizeof(long)      : return "L"
 *         if size == sizeof(long long) : return "Q"  # ~> uncovered             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(PY_LONG_LONG)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"Q");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":40
 *         if size == sizeof(long)      : return "L"
 *         if size == sizeof(long long) : return "Q"  # ~> uncovered
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'f':  # real floating
 *         if size == sizeof(float)//2    : return "e"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":34
 *         if size == sizeof(long long) : return "q"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral             # <<<<<<<<<<<<<<
 *         if size == sizeof(char)      : return "B"
 *         if size == sizeof(short)     : return "H"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":41
 *         if size == sizeof(long long) : return "Q"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating             # <<<<<<<<<<<<<<
 *         if size == sizeof(float)//2    : return "e"
 *         if size == sizeof(float)       : return "f"
 */
  __pyx_t_1 = (__pyx_v_k == 'f');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":42
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating
 *         if size == sizeof(float)//2    : return "e"             # <<<<<<<<<<<<<<
 *         if size == sizeof(float)       : return "f"
 *         if size == sizeof(double)      : return "d"
 */
    __pyx_t_1 = (__pyx_v_size == ((sizeof(float)) / 2));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"e");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":43
 *     if k == c'f':  # real floating
 *         if size == sizeof(float)//2    : return "e"
 *         if size == sizeof(float)       : return "f"             # <<<<<<<<<<<<<<
 *         if size == sizeof(double)      : return "d"
 *         if size == sizeof(long double) : return "g"
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(float)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"f");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":44
 *         if size == sizeof(float)//2    : return "e"
 *         if size == sizeof(float)       : return "f"
 *         if size == sizeof(double)      : return "d"             # <<<<<<<<<<<<<<
 *         if size == sizeof(long double) : return "g"
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(double)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"d");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":45
 *         if size == sizeof(float)       : return "f"
 *         if size == sizeof(double)      : return "d"
 *         if size == sizeof(long double) : return "g"             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating
 */
    __pyx_t_1 = (__pyx_v_size == (sizeof(long double)));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"g");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":46
 *         if size == sizeof(double)      : return "d"
 *         if size == sizeof(long double) : return "g"
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'c':  # complex floating
 *         if size == 2*sizeof(float)//2    : return "E"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":41
 *         if size == sizeof(long long) : return "Q"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating             # <<<<<<<<<<<<<<
 *         if size == sizeof(float)//2    : return "e"
 *         if size == sizeof(float)       : return "f"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":47
 *         if size == sizeof(long double) : return "g"
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating             # <<<<<<<<<<<<<<
 *         if size == 2*sizeof(float)//2    : return "E"
 *         if size == 2*sizeof(float)       : return "F"
 */
  __pyx_t_1 = (__pyx_v_k == 'c');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":48
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating
 *         if size == 2*sizeof(float)//2    : return "E"             # <<<<<<<<<<<<<<
 *         if size == 2*sizeof(float)       : return "F"
 *         if size == 2*sizeof(double)      : return "D"
 */
    __pyx_t_1 = (__pyx_v_size == ((2 * (sizeof(float))) / 2));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"E");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":49
 *     if k == c'c':  # complex floating
 *         if size == 2*sizeof(float)//2    : return "E"
 *         if size == 2*sizeof(float)       : return "F"             # <<<<<<<<<<<<<<
 *         if size == 2*sizeof(double)      : return "D"
 *         if size == 2*sizeof(long double) : return "G"
 */
    __pyx_t_1 = (__pyx_v_size == (2 * (sizeof(float))));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"F");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":50
 *         if size == 2*sizeof(float)//2    : return "E"
 *         if size == 2*sizeof(float)       : return "F"
 *         if size == 2*sizeof(double)      : return "D"             # <<<<<<<<<<<<<<
 *         if size == 2*sizeof(long double) : return "G"
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == (2 * (sizeof(double))));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"D");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":51
 *         if size == 2*sizeof(float)       : return "F"
 *         if size == 2*sizeof(double)      : return "D"
 *         if size == 2*sizeof(long double) : return "G"             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == (2 * (sizeof(long double))));
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"G");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":52
 *         if size == 2*sizeof(double)      : return "D"
 *         if size == 2*sizeof(long double) : return "G"
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     return NULL  # ~> unreachable
 * 
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":47
 *         if size == sizeof(long double) : return "g"
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating             # <<<<<<<<<<<<<<
 *         if size == 2*sizeof(float)//2    : return "E"
 *         if size == 2*sizeof(float)       : return "F"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":53
 *         if size == 2*sizeof(long double) : return "G"
 *         return NULL  # ~> unreachable
 *     return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* typestr(const char kind[], size_t size) noexcept nogil:
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":21
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* typechr(const char kind[], size_t size) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":55
 *     return NULL  # ~> unreachable
 * 
 * cdef inline const char* typestr(const char kind[], size_t size) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typestr(char const *__pyx_v_kind, size_t __pyx_v_size) {
  char __pyx_v_k;
  char const *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":56
 * 
 * cdef inline const char* typestr(const char kind[], size_t size) noexcept nogil:
 *     cdef char k = kind[0]             # <<<<<<<<<<<<<<
 *     if k == c'b':  # boolean
 *         if size ==  1: return "b1"
 */
  __pyx_v_k = (__pyx_v_kind[0]);

  /* "src/mpi4py/MPI.src/typestr.pxi":57
 * cdef inline const char* typestr(const char kind[], size_t size) noexcept nogil:
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean             # <<<<<<<<<<<<<<
 *         if size ==  1: return "b1"
 *         if size >=  2: return typestr('i', size)  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_k == 'b');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":58
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean
 *         if size ==  1: return "b1"             # <<<<<<<<<<<<<<
 *         if size >=  2: return typestr('i', size)  # ~> uncovered
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == 1);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"b1");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":59
 *     if k == c'b':  # boolean
 *         if size ==  1: return "b1"
 *         if size >=  2: return typestr('i', size)  # ~> uncovered             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral
 */
    __pyx_t_1 = (__pyx_v_size >= 2);
    if (__pyx_t_1) {
      __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), __pyx_v_size);
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":60
 *         if size ==  1: return "b1"
 *         if size >=  2: return typestr('i', size)  # ~> uncovered
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'i':  # signed integral
 *         if size ==  1: return "i1"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":57
 * cdef inline const char* typestr(const char kind[], size_t size) noexcept nogil:
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean             # <<<<<<<<<<<<<<
 *         if size ==  1: return "b1"
 *         if size >=  2: return typestr('i', size)  # ~> uncovered
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":61
 *         if size >=  2: return typestr('i', size)  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral             # <<<<<<<<<<<<<<
 *         if size ==  1: return "i1"
 *         if size ==  2: return "i2"
 */
  __pyx_t_1 = (__pyx_v_k == 'i');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":62
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral
 *         if size ==  1: return "i1"             # <<<<<<<<<<<<<<
 *         if size ==  2: return "i2"
 *         if size ==  4: return "i4"
 */
    __pyx_t_1 = (__pyx_v_size == 1);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"i1");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":63
 *     if k == c'i':  # signed integral
 *         if size ==  1: return "i1"
 *         if size ==  2: return "i2"             # <<<<<<<<<<<<<<
 *         if size ==  4: return "i4"
 *         if size ==  8: return "i8"
 */
    __pyx_t_1 = (__pyx_v_size == 2);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"i2");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":64
 *         if size ==  1: return "i1"
 *         if size ==  2: return "i2"
 *         if size ==  4: return "i4"             # <<<<<<<<<<<<<<
 *         if size ==  8: return "i8"
 *         if size == 16: return "i16"  # ~> uncovered
 */
    __pyx_t_1 = (__pyx_v_size == 4);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"i4");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":65
 *         if size ==  2: return "i2"
 *         if size ==  4: return "i4"
 *         if size ==  8: return "i8"             # <<<<<<<<<<<<<<
 *         if size == 16: return "i16"  # ~> uncovered
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == 8);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"i8");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":66
 *         if size ==  4: return "i4"
 *         if size ==  8: return "i8"
 *         if size == 16: return "i16"  # ~> uncovered             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral
 */
    __pyx_t_1 = (__pyx_v_size == 16);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"i16");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":67
 *         if size ==  8: return "i8"
 *         if size == 16: return "i16"  # ~> uncovered
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'u':  # unsigned integral
 *         if size ==  1: return "u1"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":61
 *         if size >=  2: return typestr('i', size)  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'i':  # signed integral             # <<<<<<<<<<<<<<
 *         if size ==  1: return "i1"
 *         if size ==  2: return "i2"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":68
 *         if size == 16: return "i16"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral             # <<<<<<<<<<<<<<
 *         if size ==  1: return "u1"
 *         if size ==  2: return "u2"
 */
  __pyx_t_1 = (__pyx_v_k == 'u');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":69
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral
 *         if size ==  1: return "u1"             # <<<<<<<<<<<<<<
 *         if size ==  2: return "u2"
 *         if size ==  4: return "u4"
 */
    __pyx_t_1 = (__pyx_v_size == 1);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"u1");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":70
 *     if k == c'u':  # unsigned integral
 *         if size ==  1: return "u1"
 *         if size ==  2: return "u2"             # <<<<<<<<<<<<<<
 *         if size ==  4: return "u4"
 *         if size ==  8: return "u8"
 */
    __pyx_t_1 = (__pyx_v_size == 2);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"u2");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":71
 *         if size ==  1: return "u1"
 *         if size ==  2: return "u2"
 *         if size ==  4: return "u4"             # <<<<<<<<<<<<<<
 *         if size ==  8: return "u8"
 *         if size == 16: return "u16"  # ~> uncovered
 */
    __pyx_t_1 = (__pyx_v_size == 4);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"u4");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":72
 *         if size ==  2: return "u2"
 *         if size ==  4: return "u4"
 *         if size ==  8: return "u8"             # <<<<<<<<<<<<<<
 *         if size == 16: return "u16"  # ~> uncovered
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == 8);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"u8");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":73
 *         if size ==  4: return "u4"
 *         if size ==  8: return "u8"
 *         if size == 16: return "u16"  # ~> uncovered             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating
 */
    __pyx_t_1 = (__pyx_v_size == 16);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"u16");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":74
 *         if size ==  8: return "u8"
 *         if size == 16: return "u16"  # ~> uncovered
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'f':  # real floating
 *         if size ==  2: return "f2"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":68
 *         if size == 16: return "i16"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'u':  # unsigned integral             # <<<<<<<<<<<<<<
 *         if size ==  1: return "u1"
 *         if size ==  2: return "u2"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":75
 *         if size == 16: return "u16"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating             # <<<<<<<<<<<<<<
 *         if size ==  2: return "f2"
 *         if size ==  4: return "f4"
 */
  __pyx_t_1 = (__pyx_v_k == 'f');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":76
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating
 *         if size ==  2: return "f2"             # <<<<<<<<<<<<<<
 *         if size ==  4: return "f4"
 *         if size ==  8: return "f8"
 */
    __pyx_t_1 = (__pyx_v_size == 2);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"f2");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":77
 *     if k == c'f':  # real floating
 *         if size ==  2: return "f2"
 *         if size ==  4: return "f4"             # <<<<<<<<<<<<<<
 *         if size ==  8: return "f8"
 *         if size == 12: return "f12"
 */
    __pyx_t_1 = (__pyx_v_size == 4);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"f4");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":78
 *         if size ==  2: return "f2"
 *         if size ==  4: return "f4"
 *         if size ==  8: return "f8"             # <<<<<<<<<<<<<<
 *         if size == 12: return "f12"
 *         if size == 16: return "f16"
 */
    __pyx_t_1 = (__pyx_v_size == 8);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"f8");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":79
 *         if size ==  4: return "f4"
 *         if size ==  8: return "f8"
 *         if size == 12: return "f12"             # <<<<<<<<<<<<<<
 *         if size == 16: return "f16"
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == 12);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"f12");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":80
 *         if size ==  8: return "f8"
 *         if size == 12: return "f12"
 *         if size == 16: return "f16"             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating
 */
    __pyx_t_1 = (__pyx_v_size == 16);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"f16");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":81
 *         if size == 12: return "f12"
 *         if size == 16: return "f16"
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     if k == c'c':  # complex floating
 *         if size ==  4: return "c4"
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":75
 *         if size == 16: return "u16"  # ~> uncovered
 *         return NULL  # ~> unreachable
 *     if k == c'f':  # real floating             # <<<<<<<<<<<<<<
 *         if size ==  2: return "f2"
 *         if size ==  4: return "f4"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":82
 *         if size == 16: return "f16"
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating             # <<<<<<<<<<<<<<
 *         if size ==  4: return "c4"
 *         if size ==  8: return "c8"
 */
  __pyx_t_1 = (__pyx_v_k == 'c');
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typestr.pxi":83
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating
 *         if size ==  4: return "c4"             # <<<<<<<<<<<<<<
 *         if size ==  8: return "c8"
 *         if size == 16: return "c16"
 */
    __pyx_t_1 = (__pyx_v_size == 4);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"c4");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":84
 *     if k == c'c':  # complex floating
 *         if size ==  4: return "c4"
 *         if size ==  8: return "c8"             # <<<<<<<<<<<<<<
 *         if size == 16: return "c16"
 *         if size == 24: return "c24"
 */
    __pyx_t_1 = (__pyx_v_size == 8);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"c8");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":85
 *         if size ==  4: return "c4"
 *         if size ==  8: return "c8"
 *         if size == 16: return "c16"             # <<<<<<<<<<<<<<
 *         if size == 24: return "c24"
 *         if size == 32: return "c32"
 */
    __pyx_t_1 = (__pyx_v_size == 16);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"c16");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":86
 *         if size ==  8: return "c8"
 *         if size == 16: return "c16"
 *         if size == 24: return "c24"             # <<<<<<<<<<<<<<
 *         if size == 32: return "c32"
 *         return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == 24);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"c24");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":87
 *         if size == 16: return "c16"
 *         if size == 24: return "c24"
 *         if size == 32: return "c32"             # <<<<<<<<<<<<<<
 *         return NULL  # ~> unreachable
 *     return NULL  # ~> unreachable
 */
    __pyx_t_1 = (__pyx_v_size == 32);
    if (__pyx_t_1) {
      __pyx_r = ((char const *)"c32");
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/typestr.pxi":88
 *         if size == 24: return "c24"
 *         if size == 32: return "c32"
 *         return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 *     return NULL  # ~> unreachable
 * 
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typestr.pxi":82
 *         if size == 16: return "f16"
 *         return NULL  # ~> unreachable
 *     if k == c'c':  # complex floating             # <<<<<<<<<<<<<<
 *         if size ==  4: return "c4"
 *         if size ==  8: return "c8"
 */
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":89
 *         if size == 32: return "c32"
 *         return NULL  # ~> unreachable
 *     return NULL  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* typechr_to_typestr(const char tchr[]) noexcept nogil:
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":55
 *     return NULL  # ~> unreachable
 * 
 * cdef inline const char* typestr(const char kind[], size_t size) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef char k = kind[0]
 *     if k == c'b':  # boolean
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":91
 *     return NULL  # ~> unreachable
 * 
 * cdef inline const char* typechr_to_typestr(const char tchr[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if tchr == NULL: return NULL
 *     cdef char c = tchr[0]
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typechr_to_typestr(char const *__pyx_v_tchr) {
  char __pyx_v_c;
  char const *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":92
 * 
 * cdef inline const char* typechr_to_typestr(const char tchr[]) noexcept nogil:
 *     if tchr == NULL: return NULL             # <<<<<<<<<<<<<<
 *     cdef char c = tchr[0]
 *     # boolean
 */
  __pyx_t_1 = (__pyx_v_tchr == NULL);
  if (__pyx_t_1) {
    __pyx_r = NULL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":93
 * cdef inline const char* typechr_to_typestr(const char tchr[]) noexcept nogil:
 *     if tchr == NULL: return NULL
 *     cdef char c = tchr[0]             # <<<<<<<<<<<<<<
 *     # boolean
 *     if c == c'?': return typestr('b', 1)
 */
  __pyx_v_c = (__pyx_v_tchr[0]);

  /* "src/mpi4py/MPI.src/typestr.pxi":95
 *     cdef char c = tchr[0]
 *     # boolean
 *     if c == c'?': return typestr('b', 1)             # <<<<<<<<<<<<<<
 *     # signed integral
 *     if c == c'b': return typestr('i', sizeof(char))
 */
  __pyx_t_1 = (__pyx_v_c == '?');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":97
 *     if c == c'?': return typestr('b', 1)
 *     # signed integral
 *     if c == c'b': return typestr('i', sizeof(char))             # <<<<<<<<<<<<<<
 *     if c == c'h': return typestr('i', sizeof(short))
 *     if c == c'i': return typestr('i', sizeof(int))
 */
  __pyx_t_1 = (__pyx_v_c == 'b');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), (sizeof(char)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":98
 *     # signed integral
 *     if c == c'b': return typestr('i', sizeof(char))
 *     if c == c'h': return typestr('i', sizeof(short))             # <<<<<<<<<<<<<<
 *     if c == c'i': return typestr('i', sizeof(int))
 *     if c == c'l': return typestr('i', sizeof(long))
 */
  __pyx_t_1 = (__pyx_v_c == 'h');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), (sizeof(short)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":99
 *     if c == c'b': return typestr('i', sizeof(char))
 *     if c == c'h': return typestr('i', sizeof(short))
 *     if c == c'i': return typestr('i', sizeof(int))             # <<<<<<<<<<<<<<
 *     if c == c'l': return typestr('i', sizeof(long))
 *     if c == c'q': return typestr('i', sizeof(long long))
 */
  __pyx_t_1 = (__pyx_v_c == 'i');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), (sizeof(int)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":100
 *     if c == c'h': return typestr('i', sizeof(short))
 *     if c == c'i': return typestr('i', sizeof(int))
 *     if c == c'l': return typestr('i', sizeof(long))             # <<<<<<<<<<<<<<
 *     if c == c'q': return typestr('i', sizeof(long long))
 *     if c == c'p': return typestr('i', sizeof(MPI_Aint))
 */
  __pyx_t_1 = (__pyx_v_c == 'l');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), (sizeof(long)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":101
 *     if c == c'i': return typestr('i', sizeof(int))
 *     if c == c'l': return typestr('i', sizeof(long))
 *     if c == c'q': return typestr('i', sizeof(long long))             # <<<<<<<<<<<<<<
 *     if c == c'p': return typestr('i', sizeof(MPI_Aint))
 *     # unsigned integral
 */
  __pyx_t_1 = (__pyx_v_c == 'q');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), (sizeof(PY_LONG_LONG)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":102
 *     if c == c'l': return typestr('i', sizeof(long))
 *     if c == c'q': return typestr('i', sizeof(long long))
 *     if c == c'p': return typestr('i', sizeof(MPI_Aint))             # <<<<<<<<<<<<<<
 *     # unsigned integral
 *     if c == c'B': return typestr('u', sizeof(char))
 */
  __pyx_t_1 = (__pyx_v_c == 'p');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), (sizeof(MPI_Aint)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":104
 *     if c == c'p': return typestr('i', sizeof(MPI_Aint))
 *     # unsigned integral
 *     if c == c'B': return typestr('u', sizeof(char))             # <<<<<<<<<<<<<<
 *     if c == c'H': return typestr('u', sizeof(short))
 *     if c == c'I': return typestr('u', sizeof(int))
 */
  __pyx_t_1 = (__pyx_v_c == 'B');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), (sizeof(char)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":105
 *     # unsigned integral
 *     if c == c'B': return typestr('u', sizeof(char))
 *     if c == c'H': return typestr('u', sizeof(short))             # <<<<<<<<<<<<<<
 *     if c == c'I': return typestr('u', sizeof(int))
 *     if c == c'L': return typestr('u', sizeof(long))
 */
  __pyx_t_1 = (__pyx_v_c == 'H');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), (sizeof(short)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":106
 *     if c == c'B': return typestr('u', sizeof(char))
 *     if c == c'H': return typestr('u', sizeof(short))
 *     if c == c'I': return typestr('u', sizeof(int))             # <<<<<<<<<<<<<<
 *     if c == c'L': return typestr('u', sizeof(long))
 *     if c == c'Q': return typestr('u', sizeof(long long))
 */
  __pyx_t_1 = (__pyx_v_c == 'I');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), (sizeof(int)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":107
 *     if c == c'H': return typestr('u', sizeof(short))
 *     if c == c'I': return typestr('u', sizeof(int))
 *     if c == c'L': return typestr('u', sizeof(long))             # <<<<<<<<<<<<<<
 *     if c == c'Q': return typestr('u', sizeof(long long))
 *     if c == c'P': return typestr('u', sizeof(MPI_Aint))
 */
  __pyx_t_1 = (__pyx_v_c == 'L');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), (sizeof(long)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":108
 *     if c == c'I': return typestr('u', sizeof(int))
 *     if c == c'L': return typestr('u', sizeof(long))
 *     if c == c'Q': return typestr('u', sizeof(long long))             # <<<<<<<<<<<<<<
 *     if c == c'P': return typestr('u', sizeof(MPI_Aint))
 *     # floating real
 */
  __pyx_t_1 = (__pyx_v_c == 'Q');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), (sizeof(PY_LONG_LONG)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":109
 *     if c == c'L': return typestr('u', sizeof(long))
 *     if c == c'Q': return typestr('u', sizeof(long long))
 *     if c == c'P': return typestr('u', sizeof(MPI_Aint))             # <<<<<<<<<<<<<<
 *     # floating real
 *     if c == c'e': return typestr('f', sizeof(float)//2)
 */
  __pyx_t_1 = (__pyx_v_c == 'P');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), (sizeof(MPI_Aint)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":111
 *     if c == c'P': return typestr('u', sizeof(MPI_Aint))
 *     # floating real
 *     if c == c'e': return typestr('f', sizeof(float)//2)             # <<<<<<<<<<<<<<
 *     if c == c'f': return typestr('f', sizeof(float))
 *     if c == c'd': return typestr('f', sizeof(double))
 */
  __pyx_t_1 = (__pyx_v_c == 'e');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), ((sizeof(float)) / 2));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":112
 *     # floating real
 *     if c == c'e': return typestr('f', sizeof(float)//2)
 *     if c == c'f': return typestr('f', sizeof(float))             # <<<<<<<<<<<<<<
 *     if c == c'd': return typestr('f', sizeof(double))
 *     if c == c'g': return typestr('f', sizeof(long double))
 */
  __pyx_t_1 = (__pyx_v_c == 'f');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), (sizeof(float)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":113
 *     if c == c'e': return typestr('f', sizeof(float)//2)
 *     if c == c'f': return typestr('f', sizeof(float))
 *     if c == c'd': return typestr('f', sizeof(double))             # <<<<<<<<<<<<<<
 *     if c == c'g': return typestr('f', sizeof(long double))
 *     # floating complex
 */
  __pyx_t_1 = (__pyx_v_c == 'd');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), (sizeof(double)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":114
 *     if c == c'f': return typestr('f', sizeof(float))
 *     if c == c'd': return typestr('f', sizeof(double))
 *     if c == c'g': return typestr('f', sizeof(long double))             # <<<<<<<<<<<<<<
 *     # floating complex
 *     if c == c'E': return typestr('c', 2*sizeof(float)//2)
 */
  __pyx_t_1 = (__pyx_v_c == 'g');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), (sizeof(long double)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":116
 *     if c == c'g': return typestr('f', sizeof(long double))
 *     # floating complex
 *     if c == c'E': return typestr('c', 2*sizeof(float)//2)             # <<<<<<<<<<<<<<
 *     if c == c'F': return typestr('c', 2*sizeof(float))
 *     if c == c'D': return typestr('c', 2*sizeof(double))
 */
  __pyx_t_1 = (__pyx_v_c == 'E');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), ((2 * (sizeof(float))) / 2));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":117
 *     # floating complex
 *     if c == c'E': return typestr('c', 2*sizeof(float)//2)
 *     if c == c'F': return typestr('c', 2*sizeof(float))             # <<<<<<<<<<<<<<
 *     if c == c'D': return typestr('c', 2*sizeof(double))
 *     if c == c'G': return typestr('c', 2*sizeof(long double))
 */
  __pyx_t_1 = (__pyx_v_c == 'F');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), (2 * (sizeof(float))));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":118
 *     if c == c'E': return typestr('c', 2*sizeof(float)//2)
 *     if c == c'F': return typestr('c', 2*sizeof(float))
 *     if c == c'D': return typestr('c', 2*sizeof(double))             # <<<<<<<<<<<<<<
 *     if c == c'G': return typestr('c', 2*sizeof(long double))
 *     # character
 */
  __pyx_t_1 = (__pyx_v_c == 'D');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), (2 * (sizeof(double))));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":119
 *     if c == c'F': return typestr('c', 2*sizeof(float))
 *     if c == c'D': return typestr('c', 2*sizeof(double))
 *     if c == c'G': return typestr('c', 2*sizeof(long double))             # <<<<<<<<<<<<<<
 *     # character
 *     if c == c'S': return "S1"  # NumPy
 */
  __pyx_t_1 = (__pyx_v_c == 'G');
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), (2 * (sizeof(long double))));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":121
 *     if c == c'G': return typestr('c', 2*sizeof(long double))
 *     # character
 *     if c == c'S': return "S1"  # NumPy             # <<<<<<<<<<<<<<
 *     if c == c'U': return "U1"  # NumPy
 *     if c == c'c': return "S1"  # PEP 3118
 */
  __pyx_t_1 = (__pyx_v_c == 'S');
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"S1");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":122
 *     # character
 *     if c == c'S': return "S1"  # NumPy
 *     if c == c'U': return "U1"  # NumPy             # <<<<<<<<<<<<<<
 *     if c == c'c': return "S1"  # PEP 3118
 *     if c == c'u': return "u2"  # PEP 3118  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_c == 'U');
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"U1");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":123
 *     if c == c'S': return "S1"  # NumPy
 *     if c == c'U': return "U1"  # NumPy
 *     if c == c'c': return "S1"  # PEP 3118             # <<<<<<<<<<<<<<
 *     if c == c'u': return "u2"  # PEP 3118  # ~> uncovered
 *     if c == c'w': return "U1"  # PEP 3118  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_c == 'c');
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"S1");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":124
 *     if c == c'U': return "U1"  # NumPy
 *     if c == c'c': return "S1"  # PEP 3118
 *     if c == c'u': return "u2"  # PEP 3118  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if c == c'w': return "U1"  # PEP 3118  # ~> uncovered
 *     return NULL  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_c == 'u');
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"u2");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":125
 *     if c == c'c': return "S1"  # PEP 3118
 *     if c == c'u': return "u2"  # PEP 3118  # ~> uncovered
 *     if c == c'w': return "U1"  # PEP 3118  # ~> uncovered             # <<<<<<<<<<<<<<
 *     return NULL  # ~> uncovered
 * 
 */
  __pyx_t_1 = (__pyx_v_c == 'w');
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"U1");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":126
 *     if c == c'u': return "u2"  # PEP 3118  # ~> uncovered
 *     if c == c'w': return "U1"  # PEP 3118  # ~> uncovered
 *     return NULL  # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* mpiaddrchr(size_t size) noexcept nogil:
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":91
 *     return NULL  # ~> unreachable
 * 
 * cdef inline const char* typechr_to_typestr(const char tchr[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if tchr == NULL: return NULL
 *     cdef char c = tchr[0]
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":128
 *     return NULL  # ~> uncovered
 * 
 * cdef inline const char* mpiaddrchr(size_t size) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if size == sizeof(MPI_Aint)  : return "p"
 *     if size == sizeof(long long) : return "q"  # ~> uncovered
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_mpiaddrchr(size_t __pyx_v_size) {
  char const *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":129
 * 
 * cdef inline const char* mpiaddrchr(size_t size) noexcept nogil:
 *     if size == sizeof(MPI_Aint)  : return "p"             # <<<<<<<<<<<<<<
 *     if size == sizeof(long long) : return "q"  # ~> uncovered
 *     if size == sizeof(long)      : return "l"  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_size == (sizeof(MPI_Aint)));
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"p");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":130
 * cdef inline const char* mpiaddrchr(size_t size) noexcept nogil:
 *     if size == sizeof(MPI_Aint)  : return "p"
 *     if size == sizeof(long long) : return "q"  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if size == sizeof(long)      : return "l"  # ~> uncovered
 *     if size == sizeof(int)       : return "i"  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_size == (sizeof(PY_LONG_LONG)));
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"q");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":131
 *     if size == sizeof(MPI_Aint)  : return "p"
 *     if size == sizeof(long long) : return "q"  # ~> uncovered
 *     if size == sizeof(long)      : return "l"  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if size == sizeof(int)       : return "i"  # ~> uncovered
 *     return NULL  # ~> uncovered
 */
  __pyx_t_1 = (__pyx_v_size == (sizeof(long)));
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"l");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":132
 *     if size == sizeof(long long) : return "q"  # ~> uncovered
 *     if size == sizeof(long)      : return "l"  # ~> uncovered
 *     if size == sizeof(int)       : return "i"  # ~> uncovered             # <<<<<<<<<<<<<<
 *     return NULL  # ~> uncovered
 * 
 */
  __pyx_t_1 = (__pyx_v_size == (sizeof(int)));
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"i");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":133
 *     if size == sizeof(long)      : return "l"  # ~> uncovered
 *     if size == sizeof(int)       : return "i"  # ~> uncovered
 *     return NULL  # ~> uncovered             # <<<<<<<<<<<<<<
 * 
 * cdef inline int mpicombiner(MPI_Datatype datatype) noexcept nogil:
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":128
 *     return NULL  # ~> uncovered
 * 
 * cdef inline const char* mpiaddrchr(size_t size) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if size == sizeof(MPI_Aint)  : return "p"
 *     if size == sizeof(long long) : return "q"  # ~> uncovered
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":135
 *     return NULL  # ~> uncovered
 * 
 * cdef inline int mpicombiner(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return MPI_COMBINER_NAMED
 *     cdef int combiner = MPI_COMBINER_NAMED
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_mpicombiner(MPI_Datatype __pyx_v_datatype) {
  int __pyx_v_combiner;
  MPI_Count __pyx_v_ni;
  MPI_Count __pyx_v_na;
  MPI_Count __pyx_v_nc;
  MPI_Count __pyx_v_nd;
  int __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":136
 * 
 * cdef inline int mpicombiner(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 *     cdef int combiner = MPI_COMBINER_NAMED
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = MPI_COMBINER_NAMED;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":137
 * cdef inline int mpicombiner(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return MPI_COMBINER_NAMED
 *     cdef int combiner = MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     <void> MPI_Type_get_envelope_c(datatype, &ni, &na, &nc, &nd, &combiner)
 */
  __pyx_v_combiner = MPI_COMBINER_NAMED;

  /* "src/mpi4py/MPI.src/typestr.pxi":138
 *     if not mpi_active(): return MPI_COMBINER_NAMED
 *     cdef int combiner = MPI_COMBINER_NAMED
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0             # <<<<<<<<<<<<<<
 *     <void> MPI_Type_get_envelope_c(datatype, &ni, &na, &nc, &nd, &combiner)
 *     return combiner
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nc = 0;
  __pyx_v_nd = 0;

  /* "src/mpi4py/MPI.src/typestr.pxi":139
 *     cdef int combiner = MPI_COMBINER_NAMED
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     <void> MPI_Type_get_envelope_c(datatype, &ni, &na, &nc, &nd, &combiner)             # <<<<<<<<<<<<<<
 *     return combiner
 * 
 */
  ((void)MPI_Type_get_envelope_c(__pyx_v_datatype, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nc), (&__pyx_v_nd), (&__pyx_v_combiner)));

  /* "src/mpi4py/MPI.src/typestr.pxi":140
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     <void> MPI_Type_get_envelope_c(datatype, &ni, &na, &nc, &nd, &combiner)
 *     return combiner             # <<<<<<<<<<<<<<
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:
 */
  __pyx_r = __pyx_v_combiner;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":135
 *     return NULL  # ~> uncovered
 * 
 * cdef inline int mpicombiner(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return MPI_COMBINER_NAMED
 *     cdef int combiner = MPI_COMBINER_NAMED
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":142
 *     return combiner
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = 0
 */

static CYTHON_INLINE MPI_Count __pyx_f_6mpi4py_3MPI_mpiextent(MPI_Datatype __pyx_v_datatype) {
  MPI_Count __pyx_v_lb;
  MPI_Count __pyx_v_extent;
  MPI_Count __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":143
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Count lb = 0, extent = 0
 *     <void> MPI_Type_get_extent_c(datatype, &lb, &extent)
 */
  __pyx_t_1 = (!(__pyx_f_6mpi4py_3MPI_mpi_active() != 0));
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":144
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = 0             # <<<<<<<<<<<<<<
 *     <void> MPI_Type_get_extent_c(datatype, &lb, &extent)
 *     return extent
 */
  __pyx_v_lb = 0;
  __pyx_v_extent = 0;

  /* "src/mpi4py/MPI.src/typestr.pxi":145
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = 0
 *     <void> MPI_Type_get_extent_c(datatype, &lb, &extent)             # <<<<<<<<<<<<<<
 *     return extent
 * 
 */
  ((void)MPI_Type_get_extent_c(__pyx_v_datatype, (&__pyx_v_lb), (&__pyx_v_extent)));

  /* "src/mpi4py/MPI.src/typestr.pxi":146
 *     cdef MPI_Count lb = 0, extent = 0
 *     <void> MPI_Type_get_extent_c(datatype, &lb, &extent)
 *     return extent             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* mpifortchr(
 */
  __pyx_r = __pyx_v_extent;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":142
 *     return combiner
 * 
 * cdef inline MPI_Count mpiextent(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if not mpi_active(): return 0
 *     cdef MPI_Count lb = 0, extent = 0
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":148
 *     return extent
 * 
 * cdef inline const char* mpifortchr(             # <<<<<<<<<<<<<<
 *     const char kind[],
 *     MPI_Datatype datatype,
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_mpifortchr(char const *__pyx_v_kind, MPI_Datatype __pyx_v_datatype) {
  char const *__pyx_r;

  /* "src/mpi4py/MPI.src/typestr.pxi":152
 *     MPI_Datatype datatype,
 * ) noexcept nogil:
 *     return typechr(kind, <size_t> mpiextent(datatype))             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* mpifortstr(
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(__pyx_v_kind, ((size_t)__pyx_f_6mpi4py_3MPI_mpiextent(__pyx_v_datatype)));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":148
 *     return extent
 * 
 * cdef inline const char* mpifortchr(             # <<<<<<<<<<<<<<
 *     const char kind[],
 *     MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":154
 *     return typechr(kind, <size_t> mpiextent(datatype))
 * 
 * cdef inline const char* mpifortstr(             # <<<<<<<<<<<<<<
 *     const char kind[],
 *     MPI_Datatype datatype,
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_mpifortstr(char const *__pyx_v_kind, MPI_Datatype __pyx_v_datatype) {
  char const *__pyx_r;

  /* "src/mpi4py/MPI.src/typestr.pxi":158
 *     MPI_Datatype datatype,
 * ) noexcept nogil:
 *     return typestr(kind, <size_t> mpiextent(datatype))             # <<<<<<<<<<<<<<
 * 
 * cdef inline const char* typeDUP(
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(__pyx_v_kind, ((size_t)__pyx_f_6mpi4py_3MPI_mpiextent(__pyx_v_datatype)));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":154
 *     return typechr(kind, <size_t> mpiextent(datatype))
 * 
 * cdef inline const char* mpifortstr(             # <<<<<<<<<<<<<<
 *     const char kind[],
 *     MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":160
 *     return typestr(kind, <size_t> mpiextent(datatype))
 * 
 * cdef inline const char* typeDUP(             # <<<<<<<<<<<<<<
 *     const char *(*convert)(MPI_Datatype) noexcept nogil,
 *     MPI_Datatype datatype,
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_typeDUP(char const *(*__pyx_v_convert)(MPI_Datatype), MPI_Datatype __pyx_v_datatype) {
  MPI_Datatype __pyx_v_basetype;
  char const *__pyx_v_result;
  char const *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":164
 *     MPI_Datatype datatype,
 * ) noexcept nogil:
 *     cdef MPI_Datatype basetype = MPI_DATATYPE_NULL             # <<<<<<<<<<<<<<
 *     <void> MPI_Type_get_contents_c(
 *         datatype, 0, 0, 0, 1, NULL, NULL, NULL, &basetype)
 */
  __pyx_v_basetype = MPI_DATATYPE_NULL;

  /* "src/mpi4py/MPI.src/typestr.pxi":165
 * ) noexcept nogil:
 *     cdef MPI_Datatype basetype = MPI_DATATYPE_NULL
 *     <void> MPI_Type_get_contents_c(             # <<<<<<<<<<<<<<
 *         datatype, 0, 0, 0, 1, NULL, NULL, NULL, &basetype)
 *     cdef const char *result = convert(basetype)
 */
  ((void)MPI_Type_get_contents_c(__pyx_v_datatype, 0, 0, 0, 1, NULL, NULL, NULL, (&__pyx_v_basetype)));

  /* "src/mpi4py/MPI.src/typestr.pxi":167
 *     <void> MPI_Type_get_contents_c(
 *         datatype, 0, 0, 0, 1, NULL, NULL, NULL, &basetype)
 *     cdef const char *result = convert(basetype)             # <<<<<<<<<<<<<<
 *     if not predefined(basetype): <void> MPI_Type_free(&basetype)
 *     return result
 */
  __pyx_v_result = __pyx_v_convert(__pyx_v_basetype);

  /* "src/mpi4py/MPI.src/typestr.pxi":168
 *         datatype, 0, 0, 0, 1, NULL, NULL, NULL, &basetype)
 *     cdef const char *result = convert(basetype)
 *     if not predefined(basetype): <void> MPI_Type_free(&basetype)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
  __pyx_t_1 = (!(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_predefined(__pyx_v_basetype) != 0));
  if (__pyx_t_1) {
    ((void)MPI_Type_free((&__pyx_v_basetype)));
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":169
 *     cdef const char *result = convert(basetype)
 *     if not predefined(basetype): <void> MPI_Type_free(&basetype)
 *     return result             # <<<<<<<<<<<<<<
 * 
 * cdef extern from * nogil:
 */
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":160
 *     return typestr(kind, <size_t> mpiextent(datatype))
 * 
 * cdef inline const char* typeDUP(             # <<<<<<<<<<<<<<
 *     const char *(*convert)(MPI_Datatype) noexcept nogil,
 *     MPI_Datatype datatype,
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":193
 *     const size_t alignof_voidp      "pympi_alignof(void*)"
 * 
 * cdef inline size_t typealign(const char tchr[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if tchr == NULL: return 0
 *     cdef char c = tchr[0]
 */

static CYTHON_INLINE size_t __pyx_f_6mpi4py_3MPI_typealign(char const *__pyx_v_tchr) {
  char __pyx_v_c;
  size_t __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":194
 * 
 * cdef inline size_t typealign(const char tchr[]) noexcept nogil:
 *     if tchr == NULL: return 0             # <<<<<<<<<<<<<<
 *     cdef char c = tchr[0]
 *     # bool
 */
  __pyx_t_1 = (__pyx_v_tchr == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":195
 * cdef inline size_t typealign(const char tchr[]) noexcept nogil:
 *     if tchr == NULL: return 0
 *     cdef char c = tchr[0]             # <<<<<<<<<<<<<<
 *     # bool
 *     if c == c'?': return alignof_bool
 */
  __pyx_v_c = (__pyx_v_tchr[0]);

  /* "src/mpi4py/MPI.src/typestr.pxi":197
 *     cdef char c = tchr[0]
 *     # bool
 *     if c == c'?': return alignof_bool             # <<<<<<<<<<<<<<
 *     # signed integral
 *     if c == c'b': return alignof_char
 */
  __pyx_t_1 = (__pyx_v_c == '?');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(char);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":199
 *     if c == c'?': return alignof_bool
 *     # signed integral
 *     if c == c'b': return alignof_char             # <<<<<<<<<<<<<<
 *     if c == c'h': return alignof_short
 *     if c == c'i': return alignof_int
 */
  __pyx_t_1 = (__pyx_v_c == 'b');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(char);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":200
 *     # signed integral
 *     if c == c'b': return alignof_char
 *     if c == c'h': return alignof_short             # <<<<<<<<<<<<<<
 *     if c == c'i': return alignof_int
 *     if c == c'l': return alignof_long
 */
  __pyx_t_1 = (__pyx_v_c == 'h');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(short);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":201
 *     if c == c'b': return alignof_char
 *     if c == c'h': return alignof_short
 *     if c == c'i': return alignof_int             # <<<<<<<<<<<<<<
 *     if c == c'l': return alignof_long
 *     if c == c'q': return alignof_longlong
 */
  __pyx_t_1 = (__pyx_v_c == 'i');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(int);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":202
 *     if c == c'h': return alignof_short
 *     if c == c'i': return alignof_int
 *     if c == c'l': return alignof_long             # <<<<<<<<<<<<<<
 *     if c == c'q': return alignof_longlong
 *     # unsigned integral
 */
  __pyx_t_1 = (__pyx_v_c == 'l');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(long);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":203
 *     if c == c'i': return alignof_int
 *     if c == c'l': return alignof_long
 *     if c == c'q': return alignof_longlong             # <<<<<<<<<<<<<<
 *     # unsigned integral
 *     if c == c'B': return alignof_char
 */
  __pyx_t_1 = (__pyx_v_c == 'q');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(long long);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":205
 *     if c == c'q': return alignof_longlong
 *     # unsigned integral
 *     if c == c'B': return alignof_char             # <<<<<<<<<<<<<<
 *     if c == c'H': return alignof_short
 *     if c == c'I': return alignof_int
 */
  __pyx_t_1 = (__pyx_v_c == 'B');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(char);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":206
 *     # unsigned integral
 *     if c == c'B': return alignof_char
 *     if c == c'H': return alignof_short             # <<<<<<<<<<<<<<
 *     if c == c'I': return alignof_int
 *     if c == c'L': return alignof_long
 */
  __pyx_t_1 = (__pyx_v_c == 'H');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(short);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":207
 *     if c == c'B': return alignof_char
 *     if c == c'H': return alignof_short
 *     if c == c'I': return alignof_int             # <<<<<<<<<<<<<<
 *     if c == c'L': return alignof_long
 *     if c == c'Q': return alignof_longlong
 */
  __pyx_t_1 = (__pyx_v_c == 'I');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(int);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":208
 *     if c == c'H': return alignof_short
 *     if c == c'I': return alignof_int
 *     if c == c'L': return alignof_long             # <<<<<<<<<<<<<<
 *     if c == c'Q': return alignof_longlong
 *     # floating real
 */
  __pyx_t_1 = (__pyx_v_c == 'L');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(long);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":209
 *     if c == c'I': return alignof_int
 *     if c == c'L': return alignof_long
 *     if c == c'Q': return alignof_longlong             # <<<<<<<<<<<<<<
 *     # floating real
 *     if c == c'e': return alignof_float//2
 */
  __pyx_t_1 = (__pyx_v_c == 'Q');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(long long);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":211
 *     if c == c'Q': return alignof_longlong
 *     # floating real
 *     if c == c'e': return alignof_float//2             # <<<<<<<<<<<<<<
 *     if c == c'f': return alignof_float
 *     if c == c'd': return alignof_double
 */
  __pyx_t_1 = (__pyx_v_c == 'e');
  if (__pyx_t_1) {
    __pyx_r = (pympi_alignof(float) / 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":212
 *     # floating real
 *     if c == c'e': return alignof_float//2
 *     if c == c'f': return alignof_float             # <<<<<<<<<<<<<<
 *     if c == c'd': return alignof_double
 *     if c == c'g': return alignof_longdouble
 */
  __pyx_t_1 = (__pyx_v_c == 'f');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(float);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":213
 *     if c == c'e': return alignof_float//2
 *     if c == c'f': return alignof_float
 *     if c == c'd': return alignof_double             # <<<<<<<<<<<<<<
 *     if c == c'g': return alignof_longdouble
 *     # floating complex
 */
  __pyx_t_1 = (__pyx_v_c == 'd');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(double);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":214
 *     if c == c'f': return alignof_float
 *     if c == c'd': return alignof_double
 *     if c == c'g': return alignof_longdouble             # <<<<<<<<<<<<<<
 *     # floating complex
 *     if c == c'E': return alignof_float//2
 */
  __pyx_t_1 = (__pyx_v_c == 'g');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(long double);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":216
 *     if c == c'g': return alignof_longdouble
 *     # floating complex
 *     if c == c'E': return alignof_float//2             # <<<<<<<<<<<<<<
 *     if c == c'F': return alignof_float
 *     if c == c'D': return alignof_double
 */
  __pyx_t_1 = (__pyx_v_c == 'E');
  if (__pyx_t_1) {
    __pyx_r = (pympi_alignof(float) / 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":217
 *     # floating complex
 *     if c == c'E': return alignof_float//2
 *     if c == c'F': return alignof_float             # <<<<<<<<<<<<<<
 *     if c == c'D': return alignof_double
 *     if c == c'G': return alignof_longdouble
 */
  __pyx_t_1 = (__pyx_v_c == 'F');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(float);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":218
 *     if c == c'E': return alignof_float//2
 *     if c == c'F': return alignof_float
 *     if c == c'D': return alignof_double             # <<<<<<<<<<<<<<
 *     if c == c'G': return alignof_longdouble
 *     # character
 */
  __pyx_t_1 = (__pyx_v_c == 'D');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(double);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":219
 *     if c == c'F': return alignof_float
 *     if c == c'D': return alignof_double
 *     if c == c'G': return alignof_longdouble             # <<<<<<<<<<<<<<
 *     # character
 *     if c == c'c': return alignof_char
 */
  __pyx_t_1 = (__pyx_v_c == 'G');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(long double);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":221
 *     if c == c'G': return alignof_longdouble
 *     # character
 *     if c == c'c': return alignof_char             # <<<<<<<<<<<<<<
 *     if c == c'S': return alignof_char
 *     if c == c'U': return alignof_wchar
 */
  __pyx_t_1 = (__pyx_v_c == 'c');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(char);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":222
 *     # character
 *     if c == c'c': return alignof_char
 *     if c == c'S': return alignof_char             # <<<<<<<<<<<<<<
 *     if c == c'U': return alignof_wchar
 *     # pointer
 */
  __pyx_t_1 = (__pyx_v_c == 'S');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(char);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":223
 *     if c == c'c': return alignof_char
 *     if c == c'S': return alignof_char
 *     if c == c'U': return alignof_wchar             # <<<<<<<<<<<<<<
 *     # pointer
 *     if c == c'p': return alignof_voidp
 */
  __pyx_t_1 = (__pyx_v_c == 'U');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(wchar_t);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":225
 *     if c == c'U': return alignof_wchar
 *     # pointer
 *     if c == c'p': return alignof_voidp             # <<<<<<<<<<<<<<
 *     if c == c'P': return alignof_voidp  # ~> uncovered
 *     return 0  # ~> unreachable
 */
  __pyx_t_1 = (__pyx_v_c == 'p');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(void*);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":226
 *     # pointer
 *     if c == c'p': return alignof_voidp
 *     if c == c'P': return alignof_voidp  # ~> uncovered             # <<<<<<<<<<<<<<
 *     return 0  # ~> unreachable
 * 
 */
  __pyx_t_1 = (__pyx_v_c == 'P');
  if (__pyx_t_1) {
    __pyx_r = pympi_alignof(void*);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":227
 *     if c == c'p': return alignof_voidp
 *     if c == c'P': return alignof_voidp  # ~> uncovered
 *     return 0  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 * cdef inline size_t typealignpair(
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":193
 *     const size_t alignof_voidp      "pympi_alignof(void*)"
 * 
 * cdef inline size_t typealign(const char tchr[]) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if tchr == NULL: return 0
 *     cdef char c = tchr[0]
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":229
 *     return 0  # ~> unreachable
 * 
 * cdef inline size_t typealignpair(             # <<<<<<<<<<<<<<
 *     const char tc_a[],
 *     const char tc_b[],
 */

static CYTHON_INLINE size_t __pyx_f_6mpi4py_3MPI_typealignpair(char const *__pyx_v_tc_a, char const *__pyx_v_tc_b) {
  size_t __pyx_v_align_a;
  size_t __pyx_v_align_b;
  size_t __pyx_r;
  size_t __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/typestr.pxi":233
 *     const char tc_b[],
 * ) noexcept nogil:
 *     cdef size_t align_a = typealign(tc_a)             # <<<<<<<<<<<<<<
 *     cdef size_t align_b = typealign(tc_b)
 *     return align_a if align_a > align_b else align_b
 */
  __pyx_v_align_a = __pyx_f_6mpi4py_3MPI_typealign(__pyx_v_tc_a);

  /* "src/mpi4py/MPI.src/typestr.pxi":234
 * ) noexcept nogil:
 *     cdef size_t align_a = typealign(tc_a)
 *     cdef size_t align_b = typealign(tc_b)             # <<<<<<<<<<<<<<
 *     return align_a if align_a > align_b else align_b
 * 
 */
  __pyx_v_align_b = __pyx_f_6mpi4py_3MPI_typealign(__pyx_v_tc_b);

  /* "src/mpi4py/MPI.src/typestr.pxi":235
 *     cdef size_t align_a = typealign(tc_a)
 *     cdef size_t align_b = typealign(tc_b)
 *     return align_a if align_a > align_b else align_b             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_2 = (__pyx_v_align_a > __pyx_v_align_b);
  if (__pyx_t_2) {
    __pyx_t_1 = __pyx_v_align_a;
  } else {
    __pyx_t_1 = __pyx_v_align_b;
  }
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":229
 *     return 0  # ~> unreachable
 * 
 * cdef inline size_t typealignpair(             # <<<<<<<<<<<<<<
 *     const char tc_a[],
 *     const char tc_b[],
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":239
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* DatatypeChar(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL: return NULL
 *     # MPI
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_DatatypeChar(MPI_Datatype __pyx_v_datatype) {
  int __pyx_v_combiner;
  char const *__pyx_r;
  int __pyx_t_1;
  int __pyx_t_2;

  /* "src/mpi4py/MPI.src/typestr.pxi":240
 * 
 * cdef inline const char* DatatypeChar(MPI_Datatype datatype) noexcept nogil:
 *     if datatype == MPI_DATATYPE_NULL: return NULL             # <<<<<<<<<<<<<<
 *     # MPI
 *     if datatype == MPI_PACKED : return "B"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __pyx_r = NULL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":242
 *     if datatype == MPI_DATATYPE_NULL: return NULL
 *     # MPI
 *     if datatype == MPI_PACKED : return "B"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_BYTE   : return "B"
 *     if datatype == MPI_AINT   : return mpiaddrchr(sizeof(MPI_Aint))
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_PACKED);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"B");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":243
 *     # MPI
 *     if datatype == MPI_PACKED : return "B"
 *     if datatype == MPI_BYTE   : return "B"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_AINT   : return mpiaddrchr(sizeof(MPI_Aint))
 *     if datatype == MPI_OFFSET : return mpiaddrchr(sizeof(MPI_Offset))
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_BYTE);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"B");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":244
 *     if datatype == MPI_PACKED : return "B"
 *     if datatype == MPI_BYTE   : return "B"
 *     if datatype == MPI_AINT   : return mpiaddrchr(sizeof(MPI_Aint))             # <<<<<<<<<<<<<<
 *     if datatype == MPI_OFFSET : return mpiaddrchr(sizeof(MPI_Offset))
 *     if datatype == MPI_COUNT  : return mpiaddrchr(sizeof(MPI_Count))
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_AINT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpiaddrchr((sizeof(MPI_Aint)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":245
 *     if datatype == MPI_BYTE   : return "B"
 *     if datatype == MPI_AINT   : return mpiaddrchr(sizeof(MPI_Aint))
 *     if datatype == MPI_OFFSET : return mpiaddrchr(sizeof(MPI_Offset))             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COUNT  : return mpiaddrchr(sizeof(MPI_Count))
 *     # C - character
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_OFFSET);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpiaddrchr((sizeof(MPI_Offset)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":246
 *     if datatype == MPI_AINT   : return mpiaddrchr(sizeof(MPI_Aint))
 *     if datatype == MPI_OFFSET : return mpiaddrchr(sizeof(MPI_Offset))
 *     if datatype == MPI_COUNT  : return mpiaddrchr(sizeof(MPI_Count))             # <<<<<<<<<<<<<<
 *     # C - character
 *     if datatype == MPI_CHAR : return "c"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COUNT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpiaddrchr((sizeof(MPI_Count)));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":248
 *     if datatype == MPI_COUNT  : return mpiaddrchr(sizeof(MPI_Count))
 *     # C - character
 *     if datatype == MPI_CHAR : return "c"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_WCHAR and sizeof(wchar_t) == 2: return typechr('u', 2)
 *     if datatype == MPI_WCHAR and sizeof(wchar_t) == 4: return "U"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_CHAR);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"c");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":249
 *     # C - character
 *     if datatype == MPI_CHAR : return "c"
 *     if datatype == MPI_WCHAR and sizeof(wchar_t) == 2: return typechr('u', 2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_WCHAR and sizeof(wchar_t) == 4: return "U"
 *     # C - (signed) integral
 */
  __pyx_t_2 = (__pyx_v_datatype == MPI_WCHAR);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L11_bool_binop_done;
  }
  __pyx_t_2 = ((sizeof(wchar_t)) == 2);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L11_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"u"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":250
 *     if datatype == MPI_CHAR : return "c"
 *     if datatype == MPI_WCHAR and sizeof(wchar_t) == 2: return typechr('u', 2)
 *     if datatype == MPI_WCHAR and sizeof(wchar_t) == 4: return "U"             # <<<<<<<<<<<<<<
 *     # C - (signed) integral
 *     if datatype == MPI_SIGNED_CHAR : return "b"
 */
  __pyx_t_2 = (__pyx_v_datatype == MPI_WCHAR);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_2 = ((sizeof(wchar_t)) == 4);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L14_bool_binop_done:;
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"U");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":252
 *     if datatype == MPI_WCHAR and sizeof(wchar_t) == 4: return "U"
 *     # C - (signed) integral
 *     if datatype == MPI_SIGNED_CHAR : return "b"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_SHORT       : return "h"
 *     if datatype == MPI_INT         : return "i"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_SIGNED_CHAR);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"b");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":253
 *     # C - (signed) integral
 *     if datatype == MPI_SIGNED_CHAR : return "b"
 *     if datatype == MPI_SHORT       : return "h"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT         : return "i"
 *     if datatype == MPI_LONG        : return "l"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_SHORT);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"h");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":254
 *     if datatype == MPI_SIGNED_CHAR : return "b"
 *     if datatype == MPI_SHORT       : return "h"
 *     if datatype == MPI_INT         : return "i"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LONG        : return "l"
 *     if datatype == MPI_LONG_LONG   : return "q"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"i");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":255
 *     if datatype == MPI_SHORT       : return "h"
 *     if datatype == MPI_INT         : return "i"
 *     if datatype == MPI_LONG        : return "l"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LONG_LONG   : return "q"
 *     # C - unsigned integral
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LONG);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"l");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":256
 *     if datatype == MPI_INT         : return "i"
 *     if datatype == MPI_LONG        : return "l"
 *     if datatype == MPI_LONG_LONG   : return "q"             # <<<<<<<<<<<<<<
 *     # C - unsigned integral
 *     if datatype == MPI_UNSIGNED_CHAR      : return "B"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LONG_LONG);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"q");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":258
 *     if datatype == MPI_LONG_LONG   : return "q"
 *     # C - unsigned integral
 *     if datatype == MPI_UNSIGNED_CHAR      : return "B"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UNSIGNED_SHORT     : return "H"
 *     if datatype == MPI_UNSIGNED           : return "I"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UNSIGNED_CHAR);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"B");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":259
 *     # C - unsigned integral
 *     if datatype == MPI_UNSIGNED_CHAR      : return "B"
 *     if datatype == MPI_UNSIGNED_SHORT     : return "H"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UNSIGNED           : return "I"
 *     if datatype == MPI_UNSIGNED_LONG      : return "L"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UNSIGNED_SHORT);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"H");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":260
 *     if datatype == MPI_UNSIGNED_CHAR      : return "B"
 *     if datatype == MPI_UNSIGNED_SHORT     : return "H"
 *     if datatype == MPI_UNSIGNED           : return "I"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UNSIGNED_LONG      : return "L"
 *     if datatype == MPI_UNSIGNED_LONG_LONG : return "Q"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UNSIGNED);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"I");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":261
 *     if datatype == MPI_UNSIGNED_SHORT     : return "H"
 *     if datatype == MPI_UNSIGNED           : return "I"
 *     if datatype == MPI_UNSIGNED_LONG      : return "L"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UNSIGNED_LONG_LONG : return "Q"
 *     # C - (real) floating
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UNSIGNED_LONG);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"L");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":262
 *     if datatype == MPI_UNSIGNED           : return "I"
 *     if datatype == MPI_UNSIGNED_LONG      : return "L"
 *     if datatype == MPI_UNSIGNED_LONG_LONG : return "Q"             # <<<<<<<<<<<<<<
 *     # C - (real) floating
 *     if datatype == MPI_FLOAT       : return "f"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UNSIGNED_LONG_LONG);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"Q");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":264
 *     if datatype == MPI_UNSIGNED_LONG_LONG : return "Q"
 *     # C - (real) floating
 *     if datatype == MPI_FLOAT       : return "f"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DOUBLE      : return "d"
 *     if datatype == MPI_LONG_DOUBLE : return "g"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_FLOAT);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"f");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":265
 *     # C - (real) floating
 *     if datatype == MPI_FLOAT       : return "f"
 *     if datatype == MPI_DOUBLE      : return "d"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LONG_DOUBLE : return "g"
 *     # C99 - boolean
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_DOUBLE);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"d");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":266
 *     if datatype == MPI_FLOAT       : return "f"
 *     if datatype == MPI_DOUBLE      : return "d"
 *     if datatype == MPI_LONG_DOUBLE : return "g"             # <<<<<<<<<<<<<<
 *     # C99 - boolean
 *     if datatype == MPI_C_BOOL : return "?"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LONG_DOUBLE);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"g");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":268
 *     if datatype == MPI_LONG_DOUBLE : return "g"
 *     # C99 - boolean
 *     if datatype == MPI_C_BOOL : return "?"             # <<<<<<<<<<<<<<
 *     # C99 - integral
 *     if datatype == MPI_INT8_T   : return typechr('i', 1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_C_BOOL);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"?");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":270
 *     if datatype == MPI_C_BOOL : return "?"
 *     # C99 - integral
 *     if datatype == MPI_INT8_T   : return typechr('i', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT16_T  : return typechr('i', 2)
 *     if datatype == MPI_INT32_T  : return typechr('i', 4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT8_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":271
 *     # C99 - integral
 *     if datatype == MPI_INT8_T   : return typechr('i', 1)
 *     if datatype == MPI_INT16_T  : return typechr('i', 2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT32_T  : return typechr('i', 4)
 *     if datatype == MPI_INT64_T  : return typechr('i', 8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT16_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":272
 *     if datatype == MPI_INT8_T   : return typechr('i', 1)
 *     if datatype == MPI_INT16_T  : return typechr('i', 2)
 *     if datatype == MPI_INT32_T  : return typechr('i', 4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT64_T  : return typechr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typechr('u', 1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT32_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":273
 *     if datatype == MPI_INT16_T  : return typechr('i', 2)
 *     if datatype == MPI_INT32_T  : return typechr('i', 4)
 *     if datatype == MPI_INT64_T  : return typechr('i', 8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT8_T  : return typechr('u', 1)
 *     if datatype == MPI_UINT16_T : return typechr('u', 2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT64_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":274
 *     if datatype == MPI_INT32_T  : return typechr('i', 4)
 *     if datatype == MPI_INT64_T  : return typechr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typechr('u', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT16_T : return typechr('u', 2)
 *     if datatype == MPI_UINT32_T : return typechr('u', 4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT8_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"u"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":275
 *     if datatype == MPI_INT64_T  : return typechr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typechr('u', 1)
 *     if datatype == MPI_UINT16_T : return typechr('u', 2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT32_T : return typechr('u', 4)
 *     if datatype == MPI_UINT64_T : return typechr('u', 8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT16_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"u"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":276
 *     if datatype == MPI_UINT8_T  : return typechr('u', 1)
 *     if datatype == MPI_UINT16_T : return typechr('u', 2)
 *     if datatype == MPI_UINT32_T : return typechr('u', 4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT64_T : return typechr('u', 8)
 *     # C99 - complex floating
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT32_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"u"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":277
 *     if datatype == MPI_UINT16_T : return typechr('u', 2)
 *     if datatype == MPI_UINT32_T : return typechr('u', 4)
 *     if datatype == MPI_UINT64_T : return typechr('u', 8)             # <<<<<<<<<<<<<<
 *     # C99 - complex floating
 *     if datatype == MPI_C_COMPLEX             : return "F"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT64_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"u"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":279
 *     if datatype == MPI_UINT64_T : return typechr('u', 8)
 *     # C99 - complex floating
 *     if datatype == MPI_C_COMPLEX             : return "F"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_C_FLOAT_COMPLEX       : return "F"
 *     if datatype == MPI_C_DOUBLE_COMPLEX      : return "D"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_C_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"F");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":280
 *     # C99 - complex floating
 *     if datatype == MPI_C_COMPLEX             : return "F"
 *     if datatype == MPI_C_FLOAT_COMPLEX       : return "F"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_C_DOUBLE_COMPLEX      : return "D"
 *     if datatype == MPI_C_LONG_DOUBLE_COMPLEX : return "G"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_C_FLOAT_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"F");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":281
 *     if datatype == MPI_C_COMPLEX             : return "F"
 *     if datatype == MPI_C_FLOAT_COMPLEX       : return "F"
 *     if datatype == MPI_C_DOUBLE_COMPLEX      : return "D"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_C_LONG_DOUBLE_COMPLEX : return "G"
 *     # C++ - boolean
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_C_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"D");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":282
 *     if datatype == MPI_C_FLOAT_COMPLEX       : return "F"
 *     if datatype == MPI_C_DOUBLE_COMPLEX      : return "D"
 *     if datatype == MPI_C_LONG_DOUBLE_COMPLEX : return "G"             # <<<<<<<<<<<<<<
 *     # C++ - boolean
 *     if datatype == MPI_CXX_BOOL : return "?"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_C_LONG_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"G");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":284
 *     if datatype == MPI_C_LONG_DOUBLE_COMPLEX : return "G"
 *     # C++ - boolean
 *     if datatype == MPI_CXX_BOOL : return "?"             # <<<<<<<<<<<<<<
 *     # C++ - complex floating
 *     if datatype == MPI_CXX_FLOAT_COMPLEX       : return "F"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_CXX_BOOL);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"?");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":286
 *     if datatype == MPI_CXX_BOOL : return "?"
 *     # C++ - complex floating
 *     if datatype == MPI_CXX_FLOAT_COMPLEX       : return "F"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_CXX_DOUBLE_COMPLEX      : return "D"
 *     if datatype == MPI_CXX_LONG_DOUBLE_COMPLEX : return "G"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_CXX_FLOAT_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"F");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":287
 *     # C++ - complex floating
 *     if datatype == MPI_CXX_FLOAT_COMPLEX       : return "F"
 *     if datatype == MPI_CXX_DOUBLE_COMPLEX      : return "D"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_CXX_LONG_DOUBLE_COMPLEX : return "G"
 *     # Fortran 77
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_CXX_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"D");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":288
 *     if datatype == MPI_CXX_FLOAT_COMPLEX       : return "F"
 *     if datatype == MPI_CXX_DOUBLE_COMPLEX      : return "D"
 *     if datatype == MPI_CXX_LONG_DOUBLE_COMPLEX : return "G"             # <<<<<<<<<<<<<<
 *     # Fortran 77
 *     if datatype == MPI_CHARACTER        : return "c"
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_CXX_LONG_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"G");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":290
 *     if datatype == MPI_CXX_LONG_DOUBLE_COMPLEX : return "G"
 *     # Fortran 77
 *     if datatype == MPI_CHARACTER        : return "c"             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL          : return mpifortchr('b', datatype)
 *     if datatype == MPI_INTEGER          : return mpifortchr('i', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_CHARACTER);
  if (__pyx_t_1) {
    __pyx_r = ((char const *)"c");
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":291
 *     # Fortran 77
 *     if datatype == MPI_CHARACTER        : return "c"
 *     if datatype == MPI_LOGICAL          : return mpifortchr('b', datatype)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER          : return mpifortchr('i', datatype)
 *     if datatype == MPI_REAL             : return mpifortchr('f', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"b"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":292
 *     if datatype == MPI_CHARACTER        : return "c"
 *     if datatype == MPI_LOGICAL          : return mpifortchr('b', datatype)
 *     if datatype == MPI_INTEGER          : return mpifortchr('i', datatype)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL             : return mpifortchr('f', datatype)
 *     if datatype == MPI_DOUBLE_PRECISION : return mpifortchr('f', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"i"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":293
 *     if datatype == MPI_LOGICAL          : return mpifortchr('b', datatype)
 *     if datatype == MPI_INTEGER          : return mpifortchr('i', datatype)
 *     if datatype == MPI_REAL             : return mpifortchr('f', datatype)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DOUBLE_PRECISION : return mpifortchr('f', datatype)
 *     if datatype == MPI_COMPLEX          : return mpifortchr('c', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"f"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":294
 *     if datatype == MPI_INTEGER          : return mpifortchr('i', datatype)
 *     if datatype == MPI_REAL             : return mpifortchr('f', datatype)
 *     if datatype == MPI_DOUBLE_PRECISION : return mpifortchr('f', datatype)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX          : return mpifortchr('c', datatype)
 *     if datatype == MPI_DOUBLE_COMPLEX   : return mpifortchr('c', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_DOUBLE_PRECISION);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"f"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":295
 *     if datatype == MPI_REAL             : return mpifortchr('f', datatype)
 *     if datatype == MPI_DOUBLE_PRECISION : return mpifortchr('f', datatype)
 *     if datatype == MPI_COMPLEX          : return mpifortchr('c', datatype)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DOUBLE_COMPLEX   : return mpifortchr('c', datatype)
 *     # Fortran 90
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"c"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":296
 *     if datatype == MPI_DOUBLE_PRECISION : return mpifortchr('f', datatype)
 *     if datatype == MPI_COMPLEX          : return mpifortchr('c', datatype)
 *     if datatype == MPI_DOUBLE_COMPLEX   : return mpifortchr('c', datatype)             # <<<<<<<<<<<<<<
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typechr('b',  1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_DOUBLE_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"c"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":298
 *     if datatype == MPI_DOUBLE_COMPLEX   : return mpifortchr('c', datatype)
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typechr('b',  1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL2  : return typechr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typechr('b',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL1);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"b"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":299
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typechr('b',  1)
 *     if datatype == MPI_LOGICAL2  : return typechr('b',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL4  : return typechr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typechr('b',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"b"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":300
 *     if datatype == MPI_LOGICAL1  : return typechr('b',  1)
 *     if datatype == MPI_LOGICAL2  : return typechr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typechr('b',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL8  : return typechr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typechr('i',  1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"b"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":301
 *     if datatype == MPI_LOGICAL2  : return typechr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typechr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typechr('b',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER1  : return typechr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typechr('i',  2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"b"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":302
 *     if datatype == MPI_LOGICAL4  : return typechr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typechr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typechr('i',  1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER2  : return typechr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typechr('i',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER1);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":303
 *     if datatype == MPI_LOGICAL8  : return typechr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typechr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typechr('i',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER4  : return typechr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typechr('i',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":304
 *     if datatype == MPI_INTEGER1  : return typechr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typechr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typechr('i',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER8  : return typechr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typechr('i', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":305
 *     if datatype == MPI_INTEGER2  : return typechr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typechr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typechr('i',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER16 : return typechr('i', 16)
 *     if datatype == MPI_REAL2     : return typechr('f',  2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":306
 *     if datatype == MPI_INTEGER4  : return typechr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typechr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typechr('i', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL2     : return typechr('f',  2)
 *     if datatype == MPI_REAL4     : return typechr('f',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"i"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":307
 *     if datatype == MPI_INTEGER8  : return typechr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typechr('i', 16)
 *     if datatype == MPI_REAL2     : return typechr('f',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL4     : return typechr('f',  4)
 *     if datatype == MPI_REAL8     : return typechr('f',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"f"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":308
 *     if datatype == MPI_INTEGER16 : return typechr('i', 16)
 *     if datatype == MPI_REAL2     : return typechr('f',  2)
 *     if datatype == MPI_REAL4     : return typechr('f',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL8     : return typechr('f',  8)
 *     if datatype == MPI_REAL16    : return typechr('f', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"f"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":309
 *     if datatype == MPI_REAL2     : return typechr('f',  2)
 *     if datatype == MPI_REAL4     : return typechr('f',  4)
 *     if datatype == MPI_REAL8     : return typechr('f',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL16    : return typechr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typechr('c',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"f"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":310
 *     if datatype == MPI_REAL4     : return typechr('f',  4)
 *     if datatype == MPI_REAL8     : return typechr('f',  8)
 *     if datatype == MPI_REAL16    : return typechr('f', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX4  : return typechr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typechr('c',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"f"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":311
 *     if datatype == MPI_REAL8     : return typechr('f',  8)
 *     if datatype == MPI_REAL16    : return typechr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typechr('c',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX8  : return typechr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typechr('c', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"c"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":312
 *     if datatype == MPI_REAL16    : return typechr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typechr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typechr('c',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX16 : return typechr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typechr('c', 32)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"c"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":313
 *     if datatype == MPI_COMPLEX4  : return typechr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typechr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typechr('c', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX32 : return typechr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"c"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":314
 *     if datatype == MPI_COMPLEX8  : return typechr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typechr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typechr('c', 32)             # <<<<<<<<<<<<<<
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortchr('i', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX32);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typechr(((char const *)"c"), 32);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":315
 *     if datatype == MPI_COMPLEX16 : return typechr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typechr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortchr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortchr('f', datatype)
 */
  __pyx_v_combiner = __pyx_f_6mpi4py_3MPI_mpicombiner(__pyx_v_datatype);

  /* "src/mpi4py/MPI.src/typestr.pxi":316
 *     if datatype == MPI_COMPLEX32 : return typechr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortchr('i', datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortchr('f', datatype)
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortchr('c', datatype)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_INTEGER);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"i"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":317
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortchr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortchr('f', datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortchr('c', datatype)
 *     # duplicate
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_REAL);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"f"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":318
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortchr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortchr('f', datatype)
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortchr('c', datatype)             # <<<<<<<<<<<<<<
 *     # duplicate
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeChar, datatype)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortchr(((char const *)"c"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":320
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortchr('c', datatype)
 *     # duplicate
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeChar, datatype)             # <<<<<<<<<<<<<<
 *     # fallback
 *     return NULL
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_DUP);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typeDUP(__pyx_f_6mpi4py_3MPI_DatatypeChar, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":322
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeChar, datatype)
 *     # fallback
 *     return NULL             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = NULL;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":239
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* DatatypeChar(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL: return NULL
 *     # MPI
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":326
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* DatatypeStr(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL : return NULL
 *     # C99
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_DatatypeStr(MPI_Datatype __pyx_v_datatype) {
  int __pyx_v_combiner;
  char const *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":327
 * 
 * cdef inline const char* DatatypeStr(MPI_Datatype datatype) noexcept nogil:
 *     if datatype == MPI_DATATYPE_NULL : return NULL             # <<<<<<<<<<<<<<
 *     # C99
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __pyx_r = NULL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":329
 *     if datatype == MPI_DATATYPE_NULL : return NULL
 *     # C99
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_C_BOOL);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":330
 *     # C99
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT8_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":331
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT16_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":332
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT32_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":333
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT64_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":334
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT8_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":335
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT16_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":336
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)
 *     # Fortran 90
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT32_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":337
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)             # <<<<<<<<<<<<<<
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT64_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":339
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL1);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":340
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":341
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":342
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":343
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER1);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":344
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":345
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":346
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":347
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":348
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 *     if datatype == MPI_REAL2     : return typestr('f',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":349
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 *     if datatype == MPI_REAL4     : return typestr('f',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":350
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 *     if datatype == MPI_REAL8     : return typestr('f',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":351
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 *     if datatype == MPI_REAL16    : return typestr('f', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":352
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":353
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":354
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":355
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)             # <<<<<<<<<<<<<<
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX32);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 32);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":356
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)
 */
  __pyx_v_combiner = __pyx_f_6mpi4py_3MPI_mpicombiner(__pyx_v_datatype);

  /* "src/mpi4py/MPI.src/typestr.pxi":357
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_INTEGER);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortstr(((char const *)"i"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":358
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)
 *     # duplicate
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_REAL);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortstr(((char const *)"f"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":359
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)             # <<<<<<<<<<<<<<
 *     # duplicate
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeStr, datatype)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortstr(((char const *)"c"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":361
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)
 *     # duplicate
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeStr, datatype)             # <<<<<<<<<<<<<<
 *     # fallback
 *     return typechr_to_typestr(DatatypeChar(datatype))
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_DUP);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typeDUP(__pyx_f_6mpi4py_3MPI_DatatypeStr, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":363
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeStr, datatype)
 *     # fallback
 *     return typechr_to_typestr(DatatypeChar(datatype))             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_typechr_to_typestr(__pyx_f_6mpi4py_3MPI_DatatypeChar(__pyx_v_datatype));
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":326
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* DatatypeStr(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL : return NULL
 *     # C99
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":367
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* DatatypeCode(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL : return NULL
 *     # C99
 */

static CYTHON_INLINE char const *__pyx_f_6mpi4py_3MPI_DatatypeCode(MPI_Datatype __pyx_v_datatype) {
  int __pyx_v_combiner;
  char const *__pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":368
 * 
 * cdef inline const char* DatatypeCode(MPI_Datatype datatype) noexcept nogil:
 *     if datatype == MPI_DATATYPE_NULL : return NULL             # <<<<<<<<<<<<<<
 *     # C99
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_DATATYPE_NULL);
  if (__pyx_t_1) {
    __pyx_r = NULL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":370
 *     if datatype == MPI_DATATYPE_NULL : return NULL
 *     # C99
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_C_BOOL);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":371
 *     # C99
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT8_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":372
 *     if datatype == MPI_C_BOOL   : return typestr('b', 1)
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT16_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":373
 *     if datatype == MPI_INT8_T   : return typestr('i', 1)
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT32_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":374
 *     if datatype == MPI_INT16_T  : return typestr('i', 2)
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INT64_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":375
 *     if datatype == MPI_INT32_T  : return typestr('i', 4)
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT8_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":376
 *     if datatype == MPI_INT64_T  : return typestr('i', 8)
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT16_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":377
 *     if datatype == MPI_UINT8_T  : return typestr('u', 1)
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)
 *     # Fortran 90
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT32_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":378
 *     if datatype == MPI_UINT16_T : return typestr('u', 2)
 *     if datatype == MPI_UINT32_T : return typestr('u', 4)
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)             # <<<<<<<<<<<<<<
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_UINT64_T);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"u"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":380
 *     if datatype == MPI_UINT64_T : return typestr('u', 8)
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL1);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":381
 *     # Fortran 90
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":382
 *     if datatype == MPI_LOGICAL1  : return typestr('b',  1)
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":383
 *     if datatype == MPI_LOGICAL2  : return typestr('b',  2)
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LOGICAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"b"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":384
 *     if datatype == MPI_LOGICAL4  : return typestr('b',  4)
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER1);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 1);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":385
 *     if datatype == MPI_LOGICAL8  : return typestr('b',  8)
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":386
 *     if datatype == MPI_INTEGER1  : return typestr('i',  1)
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":387
 *     if datatype == MPI_INTEGER2  : return typestr('i',  2)
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":388
 *     if datatype == MPI_INTEGER4  : return typestr('i',  4)
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_INTEGER16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"i"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":389
 *     if datatype == MPI_INTEGER8  : return typestr('i',  8)
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 *     if datatype == MPI_REAL2     : return typestr('f',  2)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL2);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 2);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":390
 *     if datatype == MPI_INTEGER16 : return typestr('i', 16)
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 *     if datatype == MPI_REAL4     : return typestr('f',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":391
 *     if datatype == MPI_REAL2     : return typestr('f',  2)
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 *     if datatype == MPI_REAL8     : return typestr('f',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":392
 *     if datatype == MPI_REAL4     : return typestr('f',  4)
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 *     if datatype == MPI_REAL16    : return typestr('f', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_REAL16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"f"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":393
 *     if datatype == MPI_REAL8     : return typestr('f',  8)
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX4);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 4);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":394
 *     if datatype == MPI_REAL16    : return typestr('f', 16)
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX8);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 8);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":395
 *     if datatype == MPI_COMPLEX4  : return typestr('c',  4)
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)             # <<<<<<<<<<<<<<
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX16);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 16);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":396
 *     if datatype == MPI_COMPLEX8  : return typestr('c',  8)
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)             # <<<<<<<<<<<<<<
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_COMPLEX32);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typestr(((char const *)"c"), 32);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":397
 *     if datatype == MPI_COMPLEX16 : return typestr('c', 16)
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)
 */
  __pyx_v_combiner = __pyx_f_6mpi4py_3MPI_mpicombiner(__pyx_v_datatype);

  /* "src/mpi4py/MPI.src/typestr.pxi":398
 *     if datatype == MPI_COMPLEX32 : return typestr('c', 32)
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_INTEGER);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortstr(((char const *)"i"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":399
 *     cdef int combiner = mpicombiner(datatype)
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)
 *     # duplicate
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_REAL);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortstr(((char const *)"f"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":400
 *     if combiner == MPI_COMBINER_F90_INTEGER : return mpifortstr('i', datatype)
 *     if combiner == MPI_COMBINER_F90_REAL    : return mpifortstr('f', datatype)
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)             # <<<<<<<<<<<<<<
 *     # duplicate
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeCode, datatype)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_COMPLEX);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_mpifortstr(((char const *)"c"), __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":402
 *     if combiner == MPI_COMBINER_F90_COMPLEX : return mpifortstr('c', datatype)
 *     # duplicate
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeCode, datatype)             # <<<<<<<<<<<<<<
 *     # fallback
 *     return DatatypeChar(datatype)
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_DUP);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typeDUP(__pyx_f_6mpi4py_3MPI_DatatypeCode, __pyx_v_datatype);
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":404
 *     if combiner == MPI_COMBINER_DUP: return typeDUP(DatatypeCode, datatype)
 *     # fallback
 *     return DatatypeChar(datatype)             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = __pyx_f_6mpi4py_3MPI_DatatypeChar(__pyx_v_datatype);
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":367
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline const char* DatatypeCode(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DATATYPE_NULL : return NULL
 *     # C99
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typestr.pxi":408
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef size_t align = typealign(DatatypeChar(datatype))
 *     if align > 0: return align
 */

static CYTHON_INLINE size_t __pyx_f_6mpi4py_3MPI_DatatypeAlign(MPI_Datatype __pyx_v_datatype) {
  size_t __pyx_v_align;
  size_t __pyx_r;
  int __pyx_t_1;

  /* "src/mpi4py/MPI.src/typestr.pxi":409
 * 
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:
 *     cdef size_t align = typealign(DatatypeChar(datatype))             # <<<<<<<<<<<<<<
 *     if align > 0: return align
 *     if datatype == MPI_SHORT_INT       : return typealignpair("h", "i")
 */
  __pyx_v_align = __pyx_f_6mpi4py_3MPI_typealign(__pyx_f_6mpi4py_3MPI_DatatypeChar(__pyx_v_datatype));

  /* "src/mpi4py/MPI.src/typestr.pxi":410
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:
 *     cdef size_t align = typealign(DatatypeChar(datatype))
 *     if align > 0: return align             # <<<<<<<<<<<<<<
 *     if datatype == MPI_SHORT_INT       : return typealignpair("h", "i")
 *     if datatype == MPI_2INT            : return typealignpair("i", "i")
 */
  __pyx_t_1 = (__pyx_v_align > 0);
  if (__pyx_t_1) {
    __pyx_r = __pyx_v_align;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":411
 *     cdef size_t align = typealign(DatatypeChar(datatype))
 *     if align > 0: return align
 *     if datatype == MPI_SHORT_INT       : return typealignpair("h", "i")             # <<<<<<<<<<<<<<
 *     if datatype == MPI_2INT            : return typealignpair("i", "i")
 *     if datatype == MPI_LONG_INT        : return typealignpair("l", "i")
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_SHORT_INT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typealignpair(((char const *)"h"), ((char const *)"i"));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":412
 *     if align > 0: return align
 *     if datatype == MPI_SHORT_INT       : return typealignpair("h", "i")
 *     if datatype == MPI_2INT            : return typealignpair("i", "i")             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LONG_INT        : return typealignpair("l", "i")
 *     if datatype == MPI_FLOAT_INT       : return typealignpair("f", "i")
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_2INT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typealignpair(((char const *)"i"), ((char const *)"i"));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":413
 *     if datatype == MPI_SHORT_INT       : return typealignpair("h", "i")
 *     if datatype == MPI_2INT            : return typealignpair("i", "i")
 *     if datatype == MPI_LONG_INT        : return typealignpair("l", "i")             # <<<<<<<<<<<<<<
 *     if datatype == MPI_FLOAT_INT       : return typealignpair("f", "i")
 *     if datatype == MPI_DOUBLE_INT      : return typealignpair("d", "i")
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LONG_INT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typealignpair(((char const *)"l"), ((char const *)"i"));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":414
 *     if datatype == MPI_2INT            : return typealignpair("i", "i")
 *     if datatype == MPI_LONG_INT        : return typealignpair("l", "i")
 *     if datatype == MPI_FLOAT_INT       : return typealignpair("f", "i")             # <<<<<<<<<<<<<<
 *     if datatype == MPI_DOUBLE_INT      : return typealignpair("d", "i")
 *     if datatype == MPI_LONG_DOUBLE_INT : return typealignpair("g", "i")
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_FLOAT_INT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typealignpair(((char const *)"f"), ((char const *)"i"));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":415
 *     if datatype == MPI_LONG_INT        : return typealignpair("l", "i")
 *     if datatype == MPI_FLOAT_INT       : return typealignpair("f", "i")
 *     if datatype == MPI_DOUBLE_INT      : return typealignpair("d", "i")             # <<<<<<<<<<<<<<
 *     if datatype == MPI_LONG_DOUBLE_INT : return typealignpair("g", "i")
 *     return 0
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_DOUBLE_INT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typealignpair(((char const *)"d"), ((char const *)"i"));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":416
 *     if datatype == MPI_FLOAT_INT       : return typealignpair("f", "i")
 *     if datatype == MPI_DOUBLE_INT      : return typealignpair("d", "i")
 *     if datatype == MPI_LONG_DOUBLE_INT : return typealignpair("g", "i")             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_t_1 = (__pyx_v_datatype == MPI_LONG_DOUBLE_INT);
  if (__pyx_t_1) {
    __pyx_r = __pyx_f_6mpi4py_3MPI_typealignpair(((char const *)"g"), ((char const *)"i"));
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typestr.pxi":417
 *     if datatype == MPI_DOUBLE_INT      : return typealignpair("d", "i")
 *     if datatype == MPI_LONG_DOUBLE_INT : return typealignpair("g", "i")
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typestr.pxi":408
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline size_t DatatypeAlign(MPI_Datatype datatype) noexcept nogil:             # <<<<<<<<<<<<<<
 *     cdef size_t align = typealign(DatatypeChar(datatype))
 *     if align > 0: return align
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typedec.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline str combinername(int combiner):             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_NAMED          : return 'NAMED'
 *     if combiner == MPI_COMBINER_DUP            : return 'DUP'
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_combinername(int __pyx_v_combiner) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("combinername", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":4
 * 
 * cdef inline str combinername(int combiner):
 *     if combiner == MPI_COMBINER_NAMED          : return 'NAMED'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_DUP            : return 'DUP'
 *     if combiner == MPI_COMBINER_CONTIGUOUS     : return 'CONTIGUOUS'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_NAMED);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_NAMED);
    __pyx_r = __pyx_n_s_NAMED;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":5
 * cdef inline str combinername(int combiner):
 *     if combiner == MPI_COMBINER_NAMED          : return 'NAMED'
 *     if combiner == MPI_COMBINER_DUP            : return 'DUP'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_CONTIGUOUS     : return 'CONTIGUOUS'
 *     if combiner == MPI_COMBINER_VECTOR         : return 'VECTOR'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_DUP);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_DUP);
    __pyx_r = __pyx_n_s_DUP;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":6
 *     if combiner == MPI_COMBINER_NAMED          : return 'NAMED'
 *     if combiner == MPI_COMBINER_DUP            : return 'DUP'
 *     if combiner == MPI_COMBINER_CONTIGUOUS     : return 'CONTIGUOUS'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_VECTOR         : return 'VECTOR'
 *     if combiner == MPI_COMBINER_HVECTOR        : return 'HVECTOR'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_CONTIGUOUS);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_CONTIGUOUS);
    __pyx_r = __pyx_n_s_CONTIGUOUS;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":7
 *     if combiner == MPI_COMBINER_DUP            : return 'DUP'
 *     if combiner == MPI_COMBINER_CONTIGUOUS     : return 'CONTIGUOUS'
 *     if combiner == MPI_COMBINER_VECTOR         : return 'VECTOR'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_HVECTOR        : return 'HVECTOR'
 *     if combiner == MPI_COMBINER_INDEXED        : return 'INDEXED'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_VECTOR);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_VECTOR);
    __pyx_r = __pyx_n_s_VECTOR;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":8
 *     if combiner == MPI_COMBINER_CONTIGUOUS     : return 'CONTIGUOUS'
 *     if combiner == MPI_COMBINER_VECTOR         : return 'VECTOR'
 *     if combiner == MPI_COMBINER_HVECTOR        : return 'HVECTOR'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_INDEXED        : return 'INDEXED'
 *     if combiner == MPI_COMBINER_HINDEXED       : return 'HINDEXED'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_HVECTOR);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_HVECTOR);
    __pyx_r = __pyx_n_s_HVECTOR;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":9
 *     if combiner == MPI_COMBINER_VECTOR         : return 'VECTOR'
 *     if combiner == MPI_COMBINER_HVECTOR        : return 'HVECTOR'
 *     if combiner == MPI_COMBINER_INDEXED        : return 'INDEXED'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_HINDEXED       : return 'HINDEXED'
 *     if combiner == MPI_COMBINER_INDEXED_BLOCK  : return 'INDEXED_BLOCK'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_INDEXED);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_INDEXED);
    __pyx_r = __pyx_n_s_INDEXED;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":10
 *     if combiner == MPI_COMBINER_HVECTOR        : return 'HVECTOR'
 *     if combiner == MPI_COMBINER_INDEXED        : return 'INDEXED'
 *     if combiner == MPI_COMBINER_HINDEXED       : return 'HINDEXED'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_INDEXED_BLOCK  : return 'INDEXED_BLOCK'
 *     if combiner == MPI_COMBINER_HINDEXED_BLOCK : return 'HINDEXED_BLOCK'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_HINDEXED);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_HINDEXED);
    __pyx_r = __pyx_n_s_HINDEXED;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":11
 *     if combiner == MPI_COMBINER_INDEXED        : return 'INDEXED'
 *     if combiner == MPI_COMBINER_HINDEXED       : return 'HINDEXED'
 *     if combiner == MPI_COMBINER_INDEXED_BLOCK  : return 'INDEXED_BLOCK'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_HINDEXED_BLOCK : return 'HINDEXED_BLOCK'
 *     if combiner == MPI_COMBINER_STRUCT         : return 'STRUCT'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_INDEXED_BLOCK);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_INDEXED_BLOCK);
    __pyx_r = __pyx_n_s_INDEXED_BLOCK;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":12
 *     if combiner == MPI_COMBINER_HINDEXED       : return 'HINDEXED'
 *     if combiner == MPI_COMBINER_INDEXED_BLOCK  : return 'INDEXED_BLOCK'
 *     if combiner == MPI_COMBINER_HINDEXED_BLOCK : return 'HINDEXED_BLOCK'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_STRUCT         : return 'STRUCT'
 *     if combiner == MPI_COMBINER_SUBARRAY       : return 'SUBARRAY'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_HINDEXED_BLOCK);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_HINDEXED_BLOCK);
    __pyx_r = __pyx_n_s_HINDEXED_BLOCK;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":13
 *     if combiner == MPI_COMBINER_INDEXED_BLOCK  : return 'INDEXED_BLOCK'
 *     if combiner == MPI_COMBINER_HINDEXED_BLOCK : return 'HINDEXED_BLOCK'
 *     if combiner == MPI_COMBINER_STRUCT         : return 'STRUCT'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_SUBARRAY       : return 'SUBARRAY'
 *     if combiner == MPI_COMBINER_DARRAY         : return 'DARRAY'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_STRUCT);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_STRUCT);
    __pyx_r = __pyx_n_s_STRUCT;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":14
 *     if combiner == MPI_COMBINER_HINDEXED_BLOCK : return 'HINDEXED_BLOCK'
 *     if combiner == MPI_COMBINER_STRUCT         : return 'STRUCT'
 *     if combiner == MPI_COMBINER_SUBARRAY       : return 'SUBARRAY'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_DARRAY         : return 'DARRAY'
 *     if combiner == MPI_COMBINER_RESIZED        : return 'RESIZED'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_SUBARRAY);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_SUBARRAY);
    __pyx_r = __pyx_n_s_SUBARRAY;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":15
 *     if combiner == MPI_COMBINER_STRUCT         : return 'STRUCT'
 *     if combiner == MPI_COMBINER_SUBARRAY       : return 'SUBARRAY'
 *     if combiner == MPI_COMBINER_DARRAY         : return 'DARRAY'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_RESIZED        : return 'RESIZED'
 *     if combiner == MPI_COMBINER_VALUE_INDEX    : return 'VALUE_INDEX'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_DARRAY);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_DARRAY);
    __pyx_r = __pyx_n_s_DARRAY;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":16
 *     if combiner == MPI_COMBINER_SUBARRAY       : return 'SUBARRAY'
 *     if combiner == MPI_COMBINER_DARRAY         : return 'DARRAY'
 *     if combiner == MPI_COMBINER_RESIZED        : return 'RESIZED'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_VALUE_INDEX    : return 'VALUE_INDEX'
 *     if combiner == MPI_COMBINER_F90_INTEGER    : return 'F90_INTEGER'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_RESIZED);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_RESIZED);
    __pyx_r = __pyx_n_s_RESIZED;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":17
 *     if combiner == MPI_COMBINER_DARRAY         : return 'DARRAY'
 *     if combiner == MPI_COMBINER_RESIZED        : return 'RESIZED'
 *     if combiner == MPI_COMBINER_VALUE_INDEX    : return 'VALUE_INDEX'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_INTEGER    : return 'F90_INTEGER'
 *     if combiner == MPI_COMBINER_F90_REAL       : return 'F90_REAL'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_VALUE_INDEX);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_VALUE_INDEX);
    __pyx_r = __pyx_n_s_VALUE_INDEX;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":18
 *     if combiner == MPI_COMBINER_RESIZED        : return 'RESIZED'
 *     if combiner == MPI_COMBINER_VALUE_INDEX    : return 'VALUE_INDEX'
 *     if combiner == MPI_COMBINER_F90_INTEGER    : return 'F90_INTEGER'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_REAL       : return 'F90_REAL'
 *     if combiner == MPI_COMBINER_F90_COMPLEX    : return 'F90_COMPLEX'
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_INTEGER);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_F90_INTEGER);
    __pyx_r = __pyx_n_s_F90_INTEGER;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":19
 *     if combiner == MPI_COMBINER_VALUE_INDEX    : return 'VALUE_INDEX'
 *     if combiner == MPI_COMBINER_F90_INTEGER    : return 'F90_INTEGER'
 *     if combiner == MPI_COMBINER_F90_REAL       : return 'F90_REAL'             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_F90_COMPLEX    : return 'F90_COMPLEX'
 *     raise ValueError(f"unknown combiner value {combiner}")  # ~> unreachable
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_REAL);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_F90_REAL);
    __pyx_r = __pyx_n_s_F90_REAL;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":20
 *     if combiner == MPI_COMBINER_F90_INTEGER    : return 'F90_INTEGER'
 *     if combiner == MPI_COMBINER_F90_REAL       : return 'F90_REAL'
 *     if combiner == MPI_COMBINER_F90_COMPLEX    : return 'F90_COMPLEX'             # <<<<<<<<<<<<<<
 *     raise ValueError(f"unknown combiner value {combiner}")  # ~> unreachable
 * 
 */
  __pyx_t_1 = (__pyx_v_combiner == MPI_COMBINER_F90_COMPLEX);
  if (__pyx_t_1) {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_n_s_F90_COMPLEX);
    __pyx_r = __pyx_n_s_F90_COMPLEX;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":21
 *     if combiner == MPI_COMBINER_F90_REAL       : return 'F90_REAL'
 *     if combiner == MPI_COMBINER_F90_COMPLEX    : return 'F90_COMPLEX'
 *     raise ValueError(f"unknown combiner value {combiner}")  # ~> unreachable             # <<<<<<<<<<<<<<
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):
 */
  __pyx_t_2 = __Pyx_PyUnicode_From_int(__pyx_v_combiner, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_kp_u_unknown_combiner_value, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(37, 21, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typedec.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline str combinername(int combiner):             # <<<<<<<<<<<<<<
 *     if combiner == MPI_COMBINER_NAMED          : return 'NAMED'
 *     if combiner == MPI_COMBINER_DUP            : return 'DUP'
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.combinername", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typedec.pxi":23
 *     raise ValueError(f"unknown combiner value {combiner}")  # ~> unreachable
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):             # <<<<<<<<<<<<<<
 *     return [p[i] for i from start <= i <= last]
 * 
 */

static CYTHON_INLINE PyObject *__pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(int *__pyx_v_p, MPI_Count __pyx_v_start, MPI_Count __pyx_v_last) {
  MPI_Count __pyx_9genexpr24__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Count __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_0makelist", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":24
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):
 *     return [p[i] for i from start <= i <= last]             # <<<<<<<<<<<<<<
 * 
 * cdef inline tuple datatype_decode(
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(37, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_last;
    for (__pyx_9genexpr24__pyx_v_i = __pyx_v_start; __pyx_9genexpr24__pyx_v_i <= __pyx_t_2; __pyx_9genexpr24__pyx_v_i++) {
      __pyx_t_3 = __Pyx_PyInt_From_int((__pyx_v_p[__pyx_9genexpr24__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(37, 24, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  } /* exit inner scope */
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typedec.pxi":23
 *     raise ValueError(f"unknown combiner value {combiner}")  # ~> unreachable
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):             # <<<<<<<<<<<<<<
 *     return [p[i] for i from start <= i <= last]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.makelist", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_1__pyx_f_6mpi4py_3MPI_makelist(MPI_Aint *__pyx_v_p, MPI_Count __pyx_v_start, MPI_Count __pyx_v_last) {
  MPI_Count __pyx_9genexpr25__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Count __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_1makelist", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":24
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):
 *     return [p[i] for i from start <= i <= last]             # <<<<<<<<<<<<<<
 * 
 * cdef inline tuple datatype_decode(
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(37, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_last;
    for (__pyx_9genexpr25__pyx_v_i = __pyx_v_start; __pyx_9genexpr25__pyx_v_i <= __pyx_t_2; __pyx_9genexpr25__pyx_v_i++) {
      __pyx_t_3 = __Pyx_PyInt_From_MPI_Aint((__pyx_v_p[__pyx_9genexpr25__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(37, 24, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  } /* exit inner scope */
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typedec.pxi":23
 *     raise ValueError(f"unknown combiner value {combiner}")  # ~> unreachable
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):             # <<<<<<<<<<<<<<
 *     return [p[i] for i from start <= i <= last]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.makelist", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static CYTHON_INLINE PyObject *__pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(MPI_Count *__pyx_v_p, MPI_Count __pyx_v_start, MPI_Count __pyx_v_last) {
  MPI_Count __pyx_9genexpr26__pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  MPI_Count __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_fuse_2makelist", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":24
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):
 *     return [p[i] for i from start <= i <= last]             # <<<<<<<<<<<<<<
 * 
 * cdef inline tuple datatype_decode(
 */
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(37, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_v_last;
    for (__pyx_9genexpr26__pyx_v_i = __pyx_v_start; __pyx_9genexpr26__pyx_v_i <= __pyx_t_2; __pyx_9genexpr26__pyx_v_i++) {
      __pyx_t_3 = __Pyx_PyInt_From_MPI_Count((__pyx_v_p[__pyx_9genexpr26__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 24, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(37, 24, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  } /* exit inner scope */
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typedec.pxi":23
 *     raise ValueError(f"unknown combiner value {combiner}")  # ~> unreachable
 * 
 * cdef inline list makelist(integral_t *p, MPI_Count start, MPI_Count last):             # <<<<<<<<<<<<<<
 *     return [p[i] for i from start <= i <= last]
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.makelist", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typedec.pxi":26
 *     return [p[i] for i from start <= i <= last]
 * 
 * cdef inline tuple datatype_decode(             # <<<<<<<<<<<<<<
 *     Datatype self,
 *     bint mark,
 */

static CYTHON_INLINE PyObject *__pyx_f_6mpi4py_3MPI_datatype_decode(struct PyMPIDatatypeObject *__pyx_v_self, int __pyx_v_mark) {
  int __pyx_v_combiner;
  MPI_Count __pyx_v_ni;
  MPI_Count __pyx_v_na;
  MPI_Count __pyx_v_nc;
  MPI_Count __pyx_v_nd;
  int *__pyx_v_i;
  MPI_Aint *__pyx_v_a;
  MPI_Count *__pyx_v_c;
  MPI_Datatype *__pyx_v_d;
  CYTHON_UNUSED PyObject *__pyx_v_unused1 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused2 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused3 = 0;
  CYTHON_UNUSED PyObject *__pyx_v_unused4 = 0;
  struct PyMPIDatatypeObject *__pyx_v_oldtype = 0;
  PyObject *__pyx_v_params = 0;
  PyObject *__pyx_v_datatypes = 0;
  int __pyx_v_use_count;
  MPI_Count __pyx_v_s1;
  MPI_Count __pyx_v_e1;
  MPI_Count __pyx_v_s2;
  MPI_Count __pyx_v_e2;
  MPI_Count __pyx_v_s3;
  MPI_Count __pyx_v_e3;
  MPI_Count __pyx_v_s4;
  MPI_Count __pyx_v_e4;
  PyObject *__pyx_v_count = 0;
  PyObject *__pyx_v_blklen = 0;
  PyObject *__pyx_v_stride = 0;
  PyObject *__pyx_v_displs = 0;
  PyObject *__pyx_v_sizes = 0;
  PyObject *__pyx_v_subsizes = 0;
  PyObject *__pyx_v_starts = 0;
  PyObject *__pyx_v_order = 0;
  PyObject *__pyx_v_lbound = 0;
  PyObject *__pyx_v_extent = 0;
  MPI_Count __pyx_9genexpr27__pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  MPI_Count __pyx_t_6;
  MPI_Count __pyx_t_7;
  MPI_Count __pyx_t_8;
  long __pyx_t_9;
  long __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("datatype_decode", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":31
 * ):
 *     # get the datatype envelope
 *     cdef int combiner = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     CHKERR( MPI_Type_get_envelope_c(
 */
  __pyx_v_combiner = MPI_UNDEFINED;

  /* "src/mpi4py/MPI.src/typedec.pxi":32
 *     # get the datatype envelope
 *     cdef int combiner = MPI_UNDEFINED
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Type_get_envelope_c(
 *         self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 */
  __pyx_v_ni = 0;
  __pyx_v_na = 0;
  __pyx_v_nc = 0;
  __pyx_v_nd = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":33
 *     cdef int combiner = MPI_UNDEFINED
 *     cdef MPI_Count ni = 0, na = 0, nc = 0, nd = 0
 *     CHKERR( MPI_Type_get_envelope_c(             # <<<<<<<<<<<<<<
 *         self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *     # return self immediately for named datatypes
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_envelope_c(__pyx_v_self->ob_mpi, (&__pyx_v_ni), (&__pyx_v_na), (&__pyx_v_nc), (&__pyx_v_nd), (&__pyx_v_combiner))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(37, 33, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typedec.pxi":36
 *         self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *     # return self immediately for named datatypes
 *     if combiner == MPI_COMBINER_NAMED:             # <<<<<<<<<<<<<<
 *         return (self, combinername(combiner), {})
 *     # get the datatype contents
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_NAMED);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":37
 *     # return self immediately for named datatypes
 *     if combiner == MPI_COMBINER_NAMED:
 *         return (self, combinername(combiner), {})             # <<<<<<<<<<<<<<
 *     # get the datatype contents
 *     cdef int *i = NULL
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_f_6mpi4py_3MPI_combinername(__pyx_v_combiner); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF((PyObject *)__pyx_v_self);
    __Pyx_GIVEREF((PyObject *)__pyx_v_self);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self))) __PYX_ERR(37, 37, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_3);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3)) __PYX_ERR(37, 37, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4)) __PYX_ERR(37, 37, __pyx_L1_error);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_r = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/typedec.pxi":36
 *         self.ob_mpi, &ni, &na, &nc, &nd, &combiner) )
 *     # return self immediately for named datatypes
 *     if combiner == MPI_COMBINER_NAMED:             # <<<<<<<<<<<<<<
 *         return (self, combinername(combiner), {})
 *     # get the datatype contents
 */
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":39
 *         return (self, combinername(combiner), {})
 *     # get the datatype contents
 *     cdef int *i = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Aint *a = NULL
 *     cdef MPI_Count *c = NULL
 */
  __pyx_v_i = NULL;

  /* "src/mpi4py/MPI.src/typedec.pxi":40
 *     # get the datatype contents
 *     cdef int *i = NULL
 *     cdef MPI_Aint *a = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Count *c = NULL
 *     cdef MPI_Datatype *d = NULL
 */
  __pyx_v_a = NULL;

  /* "src/mpi4py/MPI.src/typedec.pxi":41
 *     cdef int *i = NULL
 *     cdef MPI_Aint *a = NULL
 *     cdef MPI_Count *c = NULL             # <<<<<<<<<<<<<<
 *     cdef MPI_Datatype *d = NULL
 *     cdef unused1 = allocate(ni, sizeof(int), &i)
 */
  __pyx_v_c = NULL;

  /* "src/mpi4py/MPI.src/typedec.pxi":42
 *     cdef MPI_Aint *a = NULL
 *     cdef MPI_Count *c = NULL
 *     cdef MPI_Datatype *d = NULL             # <<<<<<<<<<<<<<
 *     cdef unused1 = allocate(ni, sizeof(int), &i)
 *     cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 */
  __pyx_v_d = NULL;

  /* "src/mpi4py/MPI.src/typedec.pxi":43
 *     cdef MPI_Count *c = NULL
 *     cdef MPI_Datatype *d = NULL
 *     cdef unused1 = allocate(ni, sizeof(int), &i)             # <<<<<<<<<<<<<<
 *     cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 *     cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 */
  __pyx_t_5 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_ni, (sizeof(int)), (&__pyx_v_i))); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_unused1 = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":44
 *     cdef MPI_Datatype *d = NULL
 *     cdef unused1 = allocate(ni, sizeof(int), &i)
 *     cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)             # <<<<<<<<<<<<<<
 *     cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 *     cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)
 */
  __pyx_t_5 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_na, (sizeof(MPI_Aint)), (&__pyx_v_a))); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_unused2 = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":45
 *     cdef unused1 = allocate(ni, sizeof(int), &i)
 *     cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 *     cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)             # <<<<<<<<<<<<<<
 *     cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)
 *     CHKERR( MPI_Type_get_contents_c(
 */
  __pyx_t_5 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_nc, (sizeof(MPI_Count)), (&__pyx_v_c))); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_unused3 = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":46
 *     cdef unused2 = allocate(na, sizeof(MPI_Aint), &a)
 *     cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 *     cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)             # <<<<<<<<<<<<<<
 *     CHKERR( MPI_Type_get_contents_c(
 *         self.ob_mpi, ni, na, nc, nd, i, a, c, d) )
 */
  __pyx_t_5 = ((PyObject *)__pyx_f_6mpi4py_3MPI_allocate(__pyx_v_nd, (sizeof(MPI_Datatype)), (&__pyx_v_d))); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_unused4 = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":47
 *     cdef unused3 = allocate(nc, sizeof(MPI_Count), &c)
 *     cdef unused4 = allocate(nd, sizeof(MPI_Datatype), &d)
 *     CHKERR( MPI_Type_get_contents_c(             # <<<<<<<<<<<<<<
 *         self.ob_mpi, ni, na, nc, nd, i, a, c, d) )
 *     # process datatypes in advance
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(MPI_Type_get_contents_c(__pyx_v_self->ob_mpi, __pyx_v_ni, __pyx_v_na, __pyx_v_nc, __pyx_v_nd, __pyx_v_i, __pyx_v_a, __pyx_v_c, __pyx_v_d)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(37, 47, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typedec.pxi":50
 *         self.ob_mpi, ni, na, nc, nd, i, a, c, d) )
 *     # process datatypes in advance
 *     cdef Datatype oldtype = __DATATYPE_NULL__             # <<<<<<<<<<<<<<
 *     cdef dict params = {}
 *     cdef list datatypes = []
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__);
  __pyx_v_oldtype = __pyx_v_6mpi4py_3MPI___DATATYPE_NULL__;

  /* "src/mpi4py/MPI.src/typedec.pxi":51
 *     # process datatypes in advance
 *     cdef Datatype oldtype = __DATATYPE_NULL__
 *     cdef dict params = {}             # <<<<<<<<<<<<<<
 *     cdef list datatypes = []
 *     if nd == 1:
 */
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_params = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":52
 *     cdef Datatype oldtype = __DATATYPE_NULL__
 *     cdef dict params = {}
 *     cdef list datatypes = []             # <<<<<<<<<<<<<<
 *     if nd == 1:
 *         oldtype = ref_Datatype(d[0])
 */
  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_v_datatypes = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":53
 *     cdef dict params = {}
 *     cdef list datatypes = []
 *     if nd == 1:             # <<<<<<<<<<<<<<
 *         oldtype = ref_Datatype(d[0])
 *         datatypes = [oldtype]
 */
  __pyx_t_2 = (__pyx_v_nd == 1);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":54
 *     cdef list datatypes = []
 *     if nd == 1:
 *         oldtype = ref_Datatype(d[0])             # <<<<<<<<<<<<<<
 *         datatypes = [oldtype]
 *     elif nd > 1:
 */
    __pyx_t_5 = ((PyObject *)__pyx_f_6mpi4py_3MPI_ref_Datatype((__pyx_v_d[0]))); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_oldtype, ((struct PyMPIDatatypeObject *)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":55
 *     if nd == 1:
 *         oldtype = ref_Datatype(d[0])
 *         datatypes = [oldtype]             # <<<<<<<<<<<<<<
 *     elif nd > 1:
 *         datatypes = [ref_Datatype(d[k]) for k in range(nd)]
 */
    __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF((PyObject *)__pyx_v_oldtype);
    __Pyx_GIVEREF((PyObject *)__pyx_v_oldtype);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_oldtype))) __PYX_ERR(37, 55, __pyx_L1_error);
    __Pyx_DECREF_SET(__pyx_v_datatypes, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":53
 *     cdef dict params = {}
 *     cdef list datatypes = []
 *     if nd == 1:             # <<<<<<<<<<<<<<
 *         oldtype = ref_Datatype(d[0])
 *         datatypes = [oldtype]
 */
    goto __pyx_L4;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":56
 *         oldtype = ref_Datatype(d[0])
 *         datatypes = [oldtype]
 *     elif nd > 1:             # <<<<<<<<<<<<<<
 *         datatypes = [ref_Datatype(d[k]) for k in range(nd)]
 * 
 */
  __pyx_t_2 = (__pyx_v_nd > 1);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":57
 *         datatypes = [oldtype]
 *     elif nd > 1:
 *         datatypes = [ref_Datatype(d[k]) for k in range(nd)]             # <<<<<<<<<<<<<<
 * 
 *     # dispatch depending on the combiner value
 */
    { /* enter inner scope */
      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 57, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __pyx_v_nd;
      __pyx_t_7 = __pyx_t_6;
      for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
        __pyx_9genexpr27__pyx_v_k = __pyx_t_8;
        __pyx_t_4 = ((PyObject *)__pyx_f_6mpi4py_3MPI_ref_Datatype((__pyx_v_d[__pyx_9genexpr27__pyx_v_k]))); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 57, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_4))) __PYX_ERR(37, 57, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    } /* exit inner scope */
    __Pyx_DECREF_SET(__pyx_v_datatypes, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":56
 *         oldtype = ref_Datatype(d[0])
 *         datatypes = [oldtype]
 *     elif nd > 1:             # <<<<<<<<<<<<<<
 *         datatypes = [ref_Datatype(d[k]) for k in range(nd)]
 * 
 */
  }
  __pyx_L4:;

  /* "src/mpi4py/MPI.src/typedec.pxi":60
 * 
 *     # dispatch depending on the combiner value
 *     cdef int use_count = 1 if (nc > 0) else 0             # <<<<<<<<<<<<<<
 *     cdef MPI_Count s1, e1, s2, e2, s3, e3, s4, e4
 *     cdef object count, blklen, stride, displs
 */
  __pyx_t_2 = (__pyx_v_nc > 0);
  if (__pyx_t_2) {
    __pyx_t_1 = 1;
  } else {
    __pyx_t_1 = 0;
  }
  __pyx_v_use_count = __pyx_t_1;

  /* "src/mpi4py/MPI.src/typedec.pxi":65
 *     cdef object sizes, subsizes, starts, order
 *     cdef object lbound, extent
 *     if combiner == MPI_COMBINER_DUP:             # <<<<<<<<<<<<<<
 *         params = {}
 *     elif combiner == MPI_COMBINER_CONTIGUOUS:
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_DUP);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":66
 *     cdef object lbound, extent
 *     if combiner == MPI_COMBINER_DUP:
 *         params = {}             # <<<<<<<<<<<<<<
 *     elif combiner == MPI_COMBINER_CONTIGUOUS:
 *         count = c[0] if use_count else i[0]
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":65
 *     cdef object sizes, subsizes, starts, order
 *     cdef object lbound, extent
 *     if combiner == MPI_COMBINER_DUP:             # <<<<<<<<<<<<<<
 *         params = {}
 *     elif combiner == MPI_COMBINER_CONTIGUOUS:
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":67
 *     if combiner == MPI_COMBINER_DUP:
 *         params = {}
 *     elif combiner == MPI_COMBINER_CONTIGUOUS:             # <<<<<<<<<<<<<<
 *         count = c[0] if use_count else i[0]
 *         params = {
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_CONTIGUOUS);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":68
 *         params = {}
 *     elif combiner == MPI_COMBINER_CONTIGUOUS:
 *         count = c[0] if use_count else i[0]             # <<<<<<<<<<<<<<
 *         params = {
 *             ('count') : count,
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_count = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":70
 *         count = c[0] if use_count else i[0]
 *         params = {
 *             ('count') : count,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_VECTOR:
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_count, __pyx_v_count) < 0) __PYX_ERR(37, 70, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":67
 *     if combiner == MPI_COMBINER_DUP:
 *         params = {}
 *     elif combiner == MPI_COMBINER_CONTIGUOUS:             # <<<<<<<<<<<<<<
 *         count = c[0] if use_count else i[0]
 *         params = {
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":72
 *             ('count') : count,
 *         }
 *     elif combiner == MPI_COMBINER_VECTOR:             # <<<<<<<<<<<<<<
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_VECTOR);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":73
 *         }
 *     elif combiner == MPI_COMBINER_VECTOR:
 *         count  = c[0] if use_count else i[0]             # <<<<<<<<<<<<<<
 *         blklen = c[1] if use_count else i[1]
 *         stride = c[2] if use_count else i[2]
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_count = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":74
 *     elif combiner == MPI_COMBINER_VECTOR:
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]             # <<<<<<<<<<<<<<
 *         stride = c[2] if use_count else i[2]
 *         params = {
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_blklen = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":75
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]
 *         stride = c[2] if use_count else i[2]             # <<<<<<<<<<<<<<
 *         params = {
 *             ('count')       : count,
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[2])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[2])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_stride = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":77
 *         stride = c[2] if use_count else i[2]
 *         params = {
 *             ('count')       : count,             # <<<<<<<<<<<<<<
 *             ('blocklength') : blklen,
 *             ('stride')      : stride,
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_count, __pyx_v_count) < 0) __PYX_ERR(37, 77, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":78
 *         params = {
 *             ('count')       : count,
 *             ('blocklength') : blklen,             # <<<<<<<<<<<<<<
 *             ('stride')      : stride,
 *         }
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_blocklength, __pyx_v_blklen) < 0) __PYX_ERR(37, 77, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":79
 *             ('count')       : count,
 *             ('blocklength') : blklen,
 *             ('stride')      : stride,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_HVECTOR:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_stride, __pyx_v_stride) < 0) __PYX_ERR(37, 77, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":72
 *             ('count') : count,
 *         }
 *     elif combiner == MPI_COMBINER_VECTOR:             # <<<<<<<<<<<<<<
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":81
 *             ('stride')      : stride,
 *         }
 *     elif combiner == MPI_COMBINER_HVECTOR:             # <<<<<<<<<<<<<<
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_HVECTOR);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":82
 *         }
 *     elif combiner == MPI_COMBINER_HVECTOR:
 *         count  = c[0] if use_count else i[0]             # <<<<<<<<<<<<<<
 *         blklen = c[1] if use_count else i[1]
 *         stride = c[2] if use_count else a[0]
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 82, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 82, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_count = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":83
 *     elif combiner == MPI_COMBINER_HVECTOR:
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]             # <<<<<<<<<<<<<<
 *         stride = c[2] if use_count else a[0]
 *         params = {
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 83, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 83, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_blklen = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":84
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]
 *         stride = c[2] if use_count else a[0]             # <<<<<<<<<<<<<<
 *         params = {
 *             ('count')       : count ,
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[2])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Aint((__pyx_v_a[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_stride = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":86
 *         stride = c[2] if use_count else a[0]
 *         params = {
 *             ('count')       : count ,             # <<<<<<<<<<<<<<
 *             ('blocklength') : blklen,
 *             ('stride')      : stride,
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_count, __pyx_v_count) < 0) __PYX_ERR(37, 86, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":87
 *         params = {
 *             ('count')       : count ,
 *             ('blocklength') : blklen,             # <<<<<<<<<<<<<<
 *             ('stride')      : stride,
 *         }
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_blocklength, __pyx_v_blklen) < 0) __PYX_ERR(37, 86, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":88
 *             ('count')       : count ,
 *             ('blocklength') : blklen,
 *             ('stride')      : stride,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_stride, __pyx_v_stride) < 0) __PYX_ERR(37, 86, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":81
 *             ('stride')      : stride,
 *         }
 *     elif combiner == MPI_COMBINER_HVECTOR:             # <<<<<<<<<<<<<<
 *         count  = c[0] if use_count else i[0]
 *         blklen = c[1] if use_count else i[1]
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":90
 *             ('stride')      : stride,
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_INDEXED);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":91
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/typedec.pxi":92
 *     elif combiner == MPI_COMBINER_INDEXED:
 *         if use_count:
 *             s1, e1 =      1,   c[0]             # <<<<<<<<<<<<<<
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)
 */
      __pyx_t_6 = 1;
      __pyx_t_7 = (__pyx_v_c[0]);
      __pyx_v_s1 = __pyx_t_6;
      __pyx_v_e1 = __pyx_t_7;

      /* "src/mpi4py/MPI.src/typedec.pxi":93
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]             # <<<<<<<<<<<<<<
 *             blklen = makelist(c, s1, e1)
 *             displs = makelist(c, s2, e2)
 */
      __pyx_t_7 = ((__pyx_v_c[0]) + 1);
      __pyx_t_6 = (2 * (__pyx_v_c[0]));
      __pyx_v_s2 = __pyx_t_7;
      __pyx_v_e2 = __pyx_t_6;

      /* "src/mpi4py/MPI.src/typedec.pxi":94
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)             # <<<<<<<<<<<<<<
 *             displs = makelist(c, s2, e2)
 *         else:
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":95
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)
 *             displs = makelist(c, s2, e2)             # <<<<<<<<<<<<<<
 *         else:
 *             s1, e1 =      1,   i[0]       # ~> uncovered
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 95, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":91
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 */
      goto __pyx_L8;
    }

    /* "src/mpi4py/MPI.src/typedec.pxi":97
 *             displs = makelist(c, s2, e2)
 *         else:
 *             s1, e1 =      1,   i[0]       # ~> uncovered             # <<<<<<<<<<<<<<
 *             s2, e2 = i[0]+1, 2*i[0]       # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 */
    /*else*/ {
      __pyx_t_6 = 1;
      __pyx_t_1 = (__pyx_v_i[0]);
      __pyx_v_s1 = __pyx_t_6;
      __pyx_v_e1 = __pyx_t_1;

      /* "src/mpi4py/MPI.src/typedec.pxi":98
 *         else:
 *             s1, e1 =      1,   i[0]       # ~> uncovered
 *             s2, e2 = i[0]+1, 2*i[0]       # ~> uncovered             # <<<<<<<<<<<<<<
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 *             displs = makelist(i, s2, e2)  # ~> uncovered
 */
      __pyx_t_9 = ((__pyx_v_i[0]) + 1);
      __pyx_t_10 = (2 * (__pyx_v_i[0]));
      __pyx_v_s2 = __pyx_t_9;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":99
 *             s1, e1 =      1,   i[0]       # ~> uncovered
 *             s2, e2 = i[0]+1, 2*i[0]       # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             displs = makelist(i, s2, e2)  # ~> uncovered
 *         params = {
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 99, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":100
 *             s2, e2 = i[0]+1, 2*i[0]       # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 *             displs = makelist(i, s2, e2)  # ~> uncovered             # <<<<<<<<<<<<<<
 *         params = {
 *             ('blocklengths')  : blklen,
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L8:;

    /* "src/mpi4py/MPI.src/typedec.pxi":102
 *             displs = makelist(i, s2, e2)  # ~> uncovered
 *         params = {
 *             ('blocklengths')  : blklen,             # <<<<<<<<<<<<<<
 *             ('displacements') : displs,
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_blocklengths, __pyx_v_blklen) < 0) __PYX_ERR(37, 102, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":103
 *         params = {
 *             ('blocklengths')  : blklen,
 *             ('displacements') : displs,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_displacements, __pyx_v_displs) < 0) __PYX_ERR(37, 102, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":90
 *             ('stride')      : stride,
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":105
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_HINDEXED);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":106
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/typedec.pxi":107
 *     elif combiner == MPI_COMBINER_HINDEXED:
 *         if use_count:
 *             s1, e1 =      1,   c[0]             # <<<<<<<<<<<<<<
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)
 */
      __pyx_t_6 = 1;
      __pyx_t_7 = (__pyx_v_c[0]);
      __pyx_v_s1 = __pyx_t_6;
      __pyx_v_e1 = __pyx_t_7;

      /* "src/mpi4py/MPI.src/typedec.pxi":108
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]             # <<<<<<<<<<<<<<
 *             blklen = makelist(c, s1, e1)
 *             displs = makelist(c, s2, e2)
 */
      __pyx_t_7 = ((__pyx_v_c[0]) + 1);
      __pyx_t_6 = (2 * (__pyx_v_c[0]));
      __pyx_v_s2 = __pyx_t_7;
      __pyx_v_e2 = __pyx_t_6;

      /* "src/mpi4py/MPI.src/typedec.pxi":109
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)             # <<<<<<<<<<<<<<
 *             displs = makelist(c, s2, e2)
 *         else:
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":110
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)
 *             displs = makelist(c, s2, e2)             # <<<<<<<<<<<<<<
 *         else:
 *             s1, e1 = 1, i[0]              # ~> uncovered
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 110, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":106
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 */
      goto __pyx_L9;
    }

    /* "src/mpi4py/MPI.src/typedec.pxi":112
 *             displs = makelist(c, s2, e2)
 *         else:
 *             s1, e1 = 1, i[0]              # ~> uncovered             # <<<<<<<<<<<<<<
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 */
    /*else*/ {
      __pyx_t_6 = 1;
      __pyx_t_1 = (__pyx_v_i[0]);
      __pyx_v_s1 = __pyx_t_6;
      __pyx_v_e1 = __pyx_t_1;

      /* "src/mpi4py/MPI.src/typedec.pxi":113
 *         else:
 *             s1, e1 = 1, i[0]              # ~> uncovered
 *             s2, e2 = 0, i[0]-1            # ~> uncovered             # <<<<<<<<<<<<<<
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 */
      __pyx_t_6 = 0;
      __pyx_t_10 = ((__pyx_v_i[0]) - 1);
      __pyx_v_s2 = __pyx_t_6;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":114
 *             s1, e1 = 1, i[0]              # ~> uncovered
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 *         params = {
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 114, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":115
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 *             displs = makelist(a, s2, e2)  # ~> uncovered             # <<<<<<<<<<<<<<
 *         params = {
 *             ('blocklengths')  : blklen,
 */
      __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_a, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L9:;

    /* "src/mpi4py/MPI.src/typedec.pxi":117
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 *         params = {
 *             ('blocklengths')  : blklen,             # <<<<<<<<<<<<<<
 *             ('displacements') : displs,
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 117, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_blocklengths, __pyx_v_blklen) < 0) __PYX_ERR(37, 117, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":118
 *         params = {
 *             ('blocklengths')  : blklen,
 *             ('displacements') : displs,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED_BLOCK:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_displacements, __pyx_v_displs) < 0) __PYX_ERR(37, 117, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":105
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":120
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED_BLOCK:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s2, e2 = 2, c[0]+1
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_INDEXED_BLOCK);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":121
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED_BLOCK:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/typedec.pxi":122
 *     elif combiner == MPI_COMBINER_INDEXED_BLOCK:
 *         if use_count:
 *             s2, e2 = 2, c[0]+1             # <<<<<<<<<<<<<<
 *             blklen = c[1]
 *             displs = makelist(c, s2, e2)
 */
      __pyx_t_6 = 2;
      __pyx_t_7 = ((__pyx_v_c[0]) + 1);
      __pyx_v_s2 = __pyx_t_6;
      __pyx_v_e2 = __pyx_t_7;

      /* "src/mpi4py/MPI.src/typedec.pxi":123
 *         if use_count:
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]             # <<<<<<<<<<<<<<
 *             displs = makelist(c, s2, e2)
 *         else:
 */
      __pyx_t_5 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":124
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]
 *             displs = makelist(c, s2, e2)             # <<<<<<<<<<<<<<
 *         else:
 *             s2, e2 = 2, i[0]+1            # ~> uncovered
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 124, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":121
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED_BLOCK:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]
 */
      goto __pyx_L10;
    }

    /* "src/mpi4py/MPI.src/typedec.pxi":126
 *             displs = makelist(c, s2, e2)
 *         else:
 *             s2, e2 = 2, i[0]+1            # ~> uncovered             # <<<<<<<<<<<<<<
 *             blklen = i[1]                 # ~> uncovered
 *             displs = makelist(i, s2, e2)  # ~> uncovered
 */
    /*else*/ {
      __pyx_t_7 = 2;
      __pyx_t_10 = ((__pyx_v_i[0]) + 1);
      __pyx_v_s2 = __pyx_t_7;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":127
 *         else:
 *             s2, e2 = 2, i[0]+1            # ~> uncovered
 *             blklen = i[1]                 # ~> uncovered             # <<<<<<<<<<<<<<
 *             displs = makelist(i, s2, e2)  # ~> uncovered
 *         params = {
 */
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":128
 *             s2, e2 = 2, i[0]+1            # ~> uncovered
 *             blklen = i[1]                 # ~> uncovered
 *             displs = makelist(i, s2, e2)  # ~> uncovered             # <<<<<<<<<<<<<<
 *         params = {
 *             ('blocklength')   : blklen,
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L10:;

    /* "src/mpi4py/MPI.src/typedec.pxi":130
 *             displs = makelist(i, s2, e2)  # ~> uncovered
 *         params = {
 *             ('blocklength')   : blklen,             # <<<<<<<<<<<<<<
 *             ('displacements') : displs,
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_blocklength, __pyx_v_blklen) < 0) __PYX_ERR(37, 130, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":131
 *         params = {
 *             ('blocklength')   : blklen,
 *             ('displacements') : displs,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED_BLOCK:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_displacements, __pyx_v_displs) < 0) __PYX_ERR(37, 130, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":120
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_INDEXED_BLOCK:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s2, e2 = 2, c[0]+1
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":133
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED_BLOCK:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s2, e2 = 2, c[0]+1
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_HINDEXED_BLOCK);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":134
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED_BLOCK:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/typedec.pxi":135
 *     elif combiner == MPI_COMBINER_HINDEXED_BLOCK:
 *         if use_count:
 *             s2, e2 = 2, c[0]+1             # <<<<<<<<<<<<<<
 *             blklen = c[1]
 *             displs = makelist(c, s2, e2)
 */
      __pyx_t_7 = 2;
      __pyx_t_6 = ((__pyx_v_c[0]) + 1);
      __pyx_v_s2 = __pyx_t_7;
      __pyx_v_e2 = __pyx_t_6;

      /* "src/mpi4py/MPI.src/typedec.pxi":136
 *         if use_count:
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]             # <<<<<<<<<<<<<<
 *             displs = makelist(c, s2, e2)
 *         else:
 */
      __pyx_t_5 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 136, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":137
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]
 *             displs = makelist(c, s2, e2)             # <<<<<<<<<<<<<<
 *         else:
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 137, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":134
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED_BLOCK:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s2, e2 = 2, c[0]+1
 *             blklen = c[1]
 */
      goto __pyx_L11;
    }

    /* "src/mpi4py/MPI.src/typedec.pxi":139
 *             displs = makelist(c, s2, e2)
 *         else:
 *             s2, e2 = 0, i[0]-1            # ~> uncovered             # <<<<<<<<<<<<<<
 *             blklen = i[1]                 # ~> uncovered
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 */
    /*else*/ {
      __pyx_t_6 = 0;
      __pyx_t_10 = ((__pyx_v_i[0]) - 1);
      __pyx_v_s2 = __pyx_t_6;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":140
 *         else:
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = i[1]                 # ~> uncovered             # <<<<<<<<<<<<<<
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 *         params = {
 */
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 140, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":141
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = i[1]                 # ~> uncovered
 *             displs = makelist(a, s2, e2)  # ~> uncovered             # <<<<<<<<<<<<<<
 *         params = {
 *             ('blocklength')   : blklen,
 */
      __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_a, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 141, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L11:;

    /* "src/mpi4py/MPI.src/typedec.pxi":143
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 *         params = {
 *             ('blocklength')   : blklen,             # <<<<<<<<<<<<<<
 *             ('displacements') : displs,
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_blocklength, __pyx_v_blklen) < 0) __PYX_ERR(37, 143, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":144
 *         params = {
 *             ('blocklength')   : blklen,
 *             ('displacements') : displs,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_STRUCT:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_displacements, __pyx_v_displs) < 0) __PYX_ERR(37, 143, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":133
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_HINDEXED_BLOCK:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s2, e2 = 2, c[0]+1
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":146
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_STRUCT:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_STRUCT);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":147
 *         }
 *     elif combiner == MPI_COMBINER_STRUCT:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/typedec.pxi":148
 *     elif combiner == MPI_COMBINER_STRUCT:
 *         if use_count:
 *             s1, e1 =      1,   c[0]             # <<<<<<<<<<<<<<
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)
 */
      __pyx_t_6 = 1;
      __pyx_t_7 = (__pyx_v_c[0]);
      __pyx_v_s1 = __pyx_t_6;
      __pyx_v_e1 = __pyx_t_7;

      /* "src/mpi4py/MPI.src/typedec.pxi":149
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]             # <<<<<<<<<<<<<<
 *             blklen = makelist(c, s1, e1)
 *             displs = makelist(c, s2, e2)
 */
      __pyx_t_7 = ((__pyx_v_c[0]) + 1);
      __pyx_t_6 = (2 * (__pyx_v_c[0]));
      __pyx_v_s2 = __pyx_t_7;
      __pyx_v_e2 = __pyx_t_6;

      /* "src/mpi4py/MPI.src/typedec.pxi":150
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)             # <<<<<<<<<<<<<<
 *             displs = makelist(c, s2, e2)
 *         else:
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":151
 *             s2, e2 = c[0]+1, 2*c[0]
 *             blklen = makelist(c, s1, e1)
 *             displs = makelist(c, s2, e2)             # <<<<<<<<<<<<<<
 *         else:
 *             s1, e1 = 1, i[0]              # ~> uncovered
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":147
 *         }
 *     elif combiner == MPI_COMBINER_STRUCT:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 =      1,   c[0]
 *             s2, e2 = c[0]+1, 2*c[0]
 */
      goto __pyx_L12;
    }

    /* "src/mpi4py/MPI.src/typedec.pxi":153
 *             displs = makelist(c, s2, e2)
 *         else:
 *             s1, e1 = 1, i[0]              # ~> uncovered             # <<<<<<<<<<<<<<
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 */
    /*else*/ {
      __pyx_t_6 = 1;
      __pyx_t_1 = (__pyx_v_i[0]);
      __pyx_v_s1 = __pyx_t_6;
      __pyx_v_e1 = __pyx_t_1;

      /* "src/mpi4py/MPI.src/typedec.pxi":154
 *         else:
 *             s1, e1 = 1, i[0]              # ~> uncovered
 *             s2, e2 = 0, i[0]-1            # ~> uncovered             # <<<<<<<<<<<<<<
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 */
      __pyx_t_6 = 0;
      __pyx_t_10 = ((__pyx_v_i[0]) - 1);
      __pyx_v_s2 = __pyx_t_6;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":155
 *             s1, e1 = 1, i[0]              # ~> uncovered
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 *         params = {
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 155, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_blklen = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":156
 *             s2, e2 = 0, i[0]-1            # ~> uncovered
 *             blklen = makelist(i, s1, e1)  # ~> uncovered
 *             displs = makelist(a, s2, e2)  # ~> uncovered             # <<<<<<<<<<<<<<
 *         params = {
 *             ('blocklengths')  : blklen,
 */
      __pyx_t_5 = __pyx_fuse_1__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_a, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 156, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_displs = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L12:;

    /* "src/mpi4py/MPI.src/typedec.pxi":158
 *             displs = makelist(a, s2, e2)  # ~> uncovered
 *         params = {
 *             ('blocklengths')  : blklen,             # <<<<<<<<<<<<<<
 *             ('displacements') : displs,
 *             ('datatypes')     : datatypes,
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_blocklengths, __pyx_v_blklen) < 0) __PYX_ERR(37, 158, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":159
 *         params = {
 *             ('blocklengths')  : blklen,
 *             ('displacements') : displs,             # <<<<<<<<<<<<<<
 *             ('datatypes')     : datatypes,
 *         }
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_displacements, __pyx_v_displs) < 0) __PYX_ERR(37, 158, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":160
 *             ('blocklengths')  : blklen,
 *             ('displacements') : displs,
 *             ('datatypes')     : datatypes,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_SUBARRAY:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_datatypes, __pyx_v_datatypes) < 0) __PYX_ERR(37, 158, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":146
 *             ('displacements') : displs,
 *         }
 *     elif combiner == MPI_COMBINER_STRUCT:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 =      1,   c[0]
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":162
 *             ('datatypes')     : datatypes,
 *         }
 *     elif combiner == MPI_COMBINER_SUBARRAY:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 = 0*i[0], 1*i[0]-1
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_SUBARRAY);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":163
 *         }
 *     elif combiner == MPI_COMBINER_SUBARRAY:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 = 0*i[0], 1*i[0]-1
 *             s2, e2 = 1*i[0], 2*i[0]-1
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/typedec.pxi":164
 *     elif combiner == MPI_COMBINER_SUBARRAY:
 *         if use_count:
 *             s1, e1 = 0*i[0], 1*i[0]-1             # <<<<<<<<<<<<<<
 *             s2, e2 = 1*i[0], 2*i[0]-1
 *             s3, e3 = 2*i[0], 3*i[0]-1
 */
      __pyx_t_10 = (0 * (__pyx_v_i[0]));
      __pyx_t_9 = ((1 * (__pyx_v_i[0])) - 1);
      __pyx_v_s1 = __pyx_t_10;
      __pyx_v_e1 = __pyx_t_9;

      /* "src/mpi4py/MPI.src/typedec.pxi":165
 *         if use_count:
 *             s1, e1 = 0*i[0], 1*i[0]-1
 *             s2, e2 = 1*i[0], 2*i[0]-1             # <<<<<<<<<<<<<<
 *             s3, e3 = 2*i[0], 3*i[0]-1
 *             sizes    = makelist(c, s1, e1)
 */
      __pyx_t_9 = (1 * (__pyx_v_i[0]));
      __pyx_t_10 = ((2 * (__pyx_v_i[0])) - 1);
      __pyx_v_s2 = __pyx_t_9;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":166
 *             s1, e1 = 0*i[0], 1*i[0]-1
 *             s2, e2 = 1*i[0], 2*i[0]-1
 *             s3, e3 = 2*i[0], 3*i[0]-1             # <<<<<<<<<<<<<<
 *             sizes    = makelist(c, s1, e1)
 *             subsizes = makelist(c, s2, e2)
 */
      __pyx_t_10 = (2 * (__pyx_v_i[0]));
      __pyx_t_9 = ((3 * (__pyx_v_i[0])) - 1);
      __pyx_v_s3 = __pyx_t_10;
      __pyx_v_e3 = __pyx_t_9;

      /* "src/mpi4py/MPI.src/typedec.pxi":167
 *             s2, e2 = 1*i[0], 2*i[0]-1
 *             s3, e3 = 2*i[0], 3*i[0]-1
 *             sizes    = makelist(c, s1, e1)             # <<<<<<<<<<<<<<
 *             subsizes = makelist(c, s2, e2)
 *             starts   = makelist(c, s3, e3)
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_sizes = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":168
 *             s3, e3 = 2*i[0], 3*i[0]-1
 *             sizes    = makelist(c, s1, e1)
 *             subsizes = makelist(c, s2, e2)             # <<<<<<<<<<<<<<
 *             starts   = makelist(c, s3, e3)
 *             order    = i[1]
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_subsizes = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":169
 *             sizes    = makelist(c, s1, e1)
 *             subsizes = makelist(c, s2, e2)
 *             starts   = makelist(c, s3, e3)             # <<<<<<<<<<<<<<
 *             order    = i[1]
 *         else:
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s3, __pyx_v_e3); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 169, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_starts = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":170
 *             subsizes = makelist(c, s2, e2)
 *             starts   = makelist(c, s3, e3)
 *             order    = i[1]             # <<<<<<<<<<<<<<
 *         else:
 *             s1, e1 = 0*i[0]+1, 1*i[0]       # ~> uncovered
 */
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_order = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":163
 *         }
 *     elif combiner == MPI_COMBINER_SUBARRAY:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 = 0*i[0], 1*i[0]-1
 *             s2, e2 = 1*i[0], 2*i[0]-1
 */
      goto __pyx_L13;
    }

    /* "src/mpi4py/MPI.src/typedec.pxi":172
 *             order    = i[1]
 *         else:
 *             s1, e1 = 0*i[0]+1, 1*i[0]       # ~> uncovered             # <<<<<<<<<<<<<<
 *             s2, e2 = 1*i[0]+1, 2*i[0]       # ~> uncovered
 *             s3, e3 = 2*i[0]+1, 3*i[0]       # ~> uncovered
 */
    /*else*/ {
      __pyx_t_9 = ((0 * (__pyx_v_i[0])) + 1);
      __pyx_t_10 = (1 * (__pyx_v_i[0]));
      __pyx_v_s1 = __pyx_t_9;
      __pyx_v_e1 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":173
 *         else:
 *             s1, e1 = 0*i[0]+1, 1*i[0]       # ~> uncovered
 *             s2, e2 = 1*i[0]+1, 2*i[0]       # ~> uncovered             # <<<<<<<<<<<<<<
 *             s3, e3 = 2*i[0]+1, 3*i[0]       # ~> uncovered
 *             sizes    = makelist(i, s1, e1)  # ~> uncovered
 */
      __pyx_t_10 = ((1 * (__pyx_v_i[0])) + 1);
      __pyx_t_9 = (2 * (__pyx_v_i[0]));
      __pyx_v_s2 = __pyx_t_10;
      __pyx_v_e2 = __pyx_t_9;

      /* "src/mpi4py/MPI.src/typedec.pxi":174
 *             s1, e1 = 0*i[0]+1, 1*i[0]       # ~> uncovered
 *             s2, e2 = 1*i[0]+1, 2*i[0]       # ~> uncovered
 *             s3, e3 = 2*i[0]+1, 3*i[0]       # ~> uncovered             # <<<<<<<<<<<<<<
 *             sizes    = makelist(i, s1, e1)  # ~> uncovered
 *             subsizes = makelist(i, s2, e2)  # ~> uncovered
 */
      __pyx_t_9 = ((2 * (__pyx_v_i[0])) + 1);
      __pyx_t_10 = (3 * (__pyx_v_i[0]));
      __pyx_v_s3 = __pyx_t_9;
      __pyx_v_e3 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":175
 *             s2, e2 = 1*i[0]+1, 2*i[0]       # ~> uncovered
 *             s3, e3 = 2*i[0]+1, 3*i[0]       # ~> uncovered
 *             sizes    = makelist(i, s1, e1)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             subsizes = makelist(i, s2, e2)  # ~> uncovered
 *             starts   = makelist(i, s3, e3)  # ~> uncovered
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_sizes = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":176
 *             s3, e3 = 2*i[0]+1, 3*i[0]       # ~> uncovered
 *             sizes    = makelist(i, s1, e1)  # ~> uncovered
 *             subsizes = makelist(i, s2, e2)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             starts   = makelist(i, s3, e3)  # ~> uncovered
 *             order    = i[3*i[0]+1]          # ~> uncovered
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 176, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_subsizes = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":177
 *             sizes    = makelist(i, s1, e1)  # ~> uncovered
 *             subsizes = makelist(i, s2, e2)  # ~> uncovered
 *             starts   = makelist(i, s3, e3)  # ~> uncovered             # <<<<<<<<<<<<<<
 *             order    = i[3*i[0]+1]          # ~> uncovered
 *         params = {
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s3, __pyx_v_e3); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 177, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_starts = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":178
 *             subsizes = makelist(i, s2, e2)  # ~> uncovered
 *             starts   = makelist(i, s3, e3)  # ~> uncovered
 *             order    = i[3*i[0]+1]          # ~> uncovered             # <<<<<<<<<<<<<<
 *         params = {
 *             ('sizes')    : sizes,
 */
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_i[((3 * (__pyx_v_i[0])) + 1)])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_order = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L13:;

    /* "src/mpi4py/MPI.src/typedec.pxi":180
 *             order    = i[3*i[0]+1]          # ~> uncovered
 *         params = {
 *             ('sizes')    : sizes,             # <<<<<<<<<<<<<<
 *             ('subsizes') : subsizes,
 *             ('starts')   : starts,
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_sizes, __pyx_v_sizes) < 0) __PYX_ERR(37, 180, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":181
 *         params = {
 *             ('sizes')    : sizes,
 *             ('subsizes') : subsizes,             # <<<<<<<<<<<<<<
 *             ('starts')   : starts,
 *             ('order')    : order,
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_subsizes, __pyx_v_subsizes) < 0) __PYX_ERR(37, 180, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":182
 *             ('sizes')    : sizes,
 *             ('subsizes') : subsizes,
 *             ('starts')   : starts,             # <<<<<<<<<<<<<<
 *             ('order')    : order,
 *         }
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_starts, __pyx_v_starts) < 0) __PYX_ERR(37, 180, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":183
 *             ('subsizes') : subsizes,
 *             ('starts')   : starts,
 *             ('order')    : order,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_DARRAY:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_v_order) < 0) __PYX_ERR(37, 180, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":162
 *             ('datatypes')     : datatypes,
 *         }
 *     elif combiner == MPI_COMBINER_SUBARRAY:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 = 0*i[0], 1*i[0]-1
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":185
 *             ('order')    : order,
 *         }
 *     elif combiner == MPI_COMBINER_DARRAY:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 = 0*i[2]+0, 1*i[2]+0-1
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_DARRAY);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":186
 *         }
 *     elif combiner == MPI_COMBINER_DARRAY:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 = 0*i[2]+0, 1*i[2]+0-1
 *             s2, e2 = 0*i[2]+3, 1*i[2]+3-1
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {

      /* "src/mpi4py/MPI.src/typedec.pxi":187
 *     elif combiner == MPI_COMBINER_DARRAY:
 *         if use_count:
 *             s1, e1 = 0*i[2]+0, 1*i[2]+0-1             # <<<<<<<<<<<<<<
 *             s2, e2 = 0*i[2]+3, 1*i[2]+3-1
 *             s3, e3 = 1*i[2]+3, 2*i[2]+3-1
 */
      __pyx_t_10 = ((0 * (__pyx_v_i[2])) + 0);
      __pyx_t_9 = (((1 * (__pyx_v_i[2])) + 0) - 1);
      __pyx_v_s1 = __pyx_t_10;
      __pyx_v_e1 = __pyx_t_9;

      /* "src/mpi4py/MPI.src/typedec.pxi":188
 *         if use_count:
 *             s1, e1 = 0*i[2]+0, 1*i[2]+0-1
 *             s2, e2 = 0*i[2]+3, 1*i[2]+3-1             # <<<<<<<<<<<<<<
 *             s3, e3 = 1*i[2]+3, 2*i[2]+3-1
 *             s4, e4 = 2*i[2]+3, 3*i[2]+3-1
 */
      __pyx_t_9 = ((0 * (__pyx_v_i[2])) + 3);
      __pyx_t_10 = (((1 * (__pyx_v_i[2])) + 3) - 1);
      __pyx_v_s2 = __pyx_t_9;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":189
 *             s1, e1 = 0*i[2]+0, 1*i[2]+0-1
 *             s2, e2 = 0*i[2]+3, 1*i[2]+3-1
 *             s3, e3 = 1*i[2]+3, 2*i[2]+3-1             # <<<<<<<<<<<<<<
 *             s4, e4 = 2*i[2]+3, 3*i[2]+3-1
 *             sizes = makelist(c, s1, e1)
 */
      __pyx_t_10 = ((1 * (__pyx_v_i[2])) + 3);
      __pyx_t_9 = (((2 * (__pyx_v_i[2])) + 3) - 1);
      __pyx_v_s3 = __pyx_t_10;
      __pyx_v_e3 = __pyx_t_9;

      /* "src/mpi4py/MPI.src/typedec.pxi":190
 *             s2, e2 = 0*i[2]+3, 1*i[2]+3-1
 *             s3, e3 = 1*i[2]+3, 2*i[2]+3-1
 *             s4, e4 = 2*i[2]+3, 3*i[2]+3-1             # <<<<<<<<<<<<<<
 *             sizes = makelist(c, s1, e1)
 *             order = i[3*i[2]+3]
 */
      __pyx_t_9 = ((2 * (__pyx_v_i[2])) + 3);
      __pyx_t_10 = (((3 * (__pyx_v_i[2])) + 3) - 1);
      __pyx_v_s4 = __pyx_t_9;
      __pyx_v_e4 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":191
 *             s3, e3 = 1*i[2]+3, 2*i[2]+3-1
 *             s4, e4 = 2*i[2]+3, 3*i[2]+3-1
 *             sizes = makelist(c, s1, e1)             # <<<<<<<<<<<<<<
 *             order = i[3*i[2]+3]
 *         else:
 */
      __pyx_t_5 = __pyx_fuse_2__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_c, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 191, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_sizes = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":192
 *             s4, e4 = 2*i[2]+3, 3*i[2]+3-1
 *             sizes = makelist(c, s1, e1)
 *             order = i[3*i[2]+3]             # <<<<<<<<<<<<<<
 *         else:
 *             s1, e1 = 0*i[2]+3, 1*i[2]+3-1  # ~> uncovered
 */
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_i[((3 * (__pyx_v_i[2])) + 3)])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 192, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_order = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":186
 *         }
 *     elif combiner == MPI_COMBINER_DARRAY:
 *         if use_count:             # <<<<<<<<<<<<<<
 *             s1, e1 = 0*i[2]+0, 1*i[2]+0-1
 *             s2, e2 = 0*i[2]+3, 1*i[2]+3-1
 */
      goto __pyx_L14;
    }

    /* "src/mpi4py/MPI.src/typedec.pxi":194
 *             order = i[3*i[2]+3]
 *         else:
 *             s1, e1 = 0*i[2]+3, 1*i[2]+3-1  # ~> uncovered             # <<<<<<<<<<<<<<
 *             s2, e2 = 1*i[2]+3, 2*i[2]+3-1  # ~> uncovered
 *             s3, e3 = 2*i[2]+3, 3*i[2]+3-1  # ~> uncovered
 */
    /*else*/ {
      __pyx_t_10 = ((0 * (__pyx_v_i[2])) + 3);
      __pyx_t_9 = (((1 * (__pyx_v_i[2])) + 3) - 1);
      __pyx_v_s1 = __pyx_t_10;
      __pyx_v_e1 = __pyx_t_9;

      /* "src/mpi4py/MPI.src/typedec.pxi":195
 *         else:
 *             s1, e1 = 0*i[2]+3, 1*i[2]+3-1  # ~> uncovered
 *             s2, e2 = 1*i[2]+3, 2*i[2]+3-1  # ~> uncovered             # <<<<<<<<<<<<<<
 *             s3, e3 = 2*i[2]+3, 3*i[2]+3-1  # ~> uncovered
 *             s4, e4 = 3*i[2]+3, 4*i[2]+3-1  # ~> uncovered
 */
      __pyx_t_9 = ((1 * (__pyx_v_i[2])) + 3);
      __pyx_t_10 = (((2 * (__pyx_v_i[2])) + 3) - 1);
      __pyx_v_s2 = __pyx_t_9;
      __pyx_v_e2 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":196
 *             s1, e1 = 0*i[2]+3, 1*i[2]+3-1  # ~> uncovered
 *             s2, e2 = 1*i[2]+3, 2*i[2]+3-1  # ~> uncovered
 *             s3, e3 = 2*i[2]+3, 3*i[2]+3-1  # ~> uncovered             # <<<<<<<<<<<<<<
 *             s4, e4 = 3*i[2]+3, 4*i[2]+3-1  # ~> uncovered
 *             sizes = makelist(i, s1, e1)    # ~> uncovered
 */
      __pyx_t_10 = ((2 * (__pyx_v_i[2])) + 3);
      __pyx_t_9 = (((3 * (__pyx_v_i[2])) + 3) - 1);
      __pyx_v_s3 = __pyx_t_10;
      __pyx_v_e3 = __pyx_t_9;

      /* "src/mpi4py/MPI.src/typedec.pxi":197
 *             s2, e2 = 1*i[2]+3, 2*i[2]+3-1  # ~> uncovered
 *             s3, e3 = 2*i[2]+3, 3*i[2]+3-1  # ~> uncovered
 *             s4, e4 = 3*i[2]+3, 4*i[2]+3-1  # ~> uncovered             # <<<<<<<<<<<<<<
 *             sizes = makelist(i, s1, e1)    # ~> uncovered
 *             order = i[4*i[2]+3]            # ~> uncovered
 */
      __pyx_t_9 = ((3 * (__pyx_v_i[2])) + 3);
      __pyx_t_10 = (((4 * (__pyx_v_i[2])) + 3) - 1);
      __pyx_v_s4 = __pyx_t_9;
      __pyx_v_e4 = __pyx_t_10;

      /* "src/mpi4py/MPI.src/typedec.pxi":198
 *             s3, e3 = 2*i[2]+3, 3*i[2]+3-1  # ~> uncovered
 *             s4, e4 = 3*i[2]+3, 4*i[2]+3-1  # ~> uncovered
 *             sizes = makelist(i, s1, e1)    # ~> uncovered             # <<<<<<<<<<<<<<
 *             order = i[4*i[2]+3]            # ~> uncovered
 *         params = {
 */
      __pyx_t_5 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s1, __pyx_v_e1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_sizes = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/mpi4py/MPI.src/typedec.pxi":199
 *             s4, e4 = 3*i[2]+3, 4*i[2]+3-1  # ~> uncovered
 *             sizes = makelist(i, s1, e1)    # ~> uncovered
 *             order = i[4*i[2]+3]            # ~> uncovered             # <<<<<<<<<<<<<<
 *         params = {
 *             ('size')     : i[0],
 */
      __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_i[((4 * (__pyx_v_i[2])) + 3)])); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_v_order = __pyx_t_5;
      __pyx_t_5 = 0;
    }
    __pyx_L14:;

    /* "src/mpi4py/MPI.src/typedec.pxi":201
 *             order = i[4*i[2]+3]            # ~> uncovered
 *         params = {
 *             ('size')     : i[0],             # <<<<<<<<<<<<<<
 *             ('rank')     : i[1],
 *             ('gsizes')   : sizes,
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_size_2, __pyx_t_4) < 0) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":202
 *         params = {
 *             ('size')     : i[0],
 *             ('rank')     : i[1],             # <<<<<<<<<<<<<<
 *             ('gsizes')   : sizes,
 *             ('distribs') : makelist(i, s2, e2),
 */
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_rank, __pyx_t_4) < 0) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":203
 *             ('size')     : i[0],
 *             ('rank')     : i[1],
 *             ('gsizes')   : sizes,             # <<<<<<<<<<<<<<
 *             ('distribs') : makelist(i, s2, e2),
 *             ('dargs')    : makelist(i, s3, e3),
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_gsizes, __pyx_v_sizes) < 0) __PYX_ERR(37, 201, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":204
 *             ('rank')     : i[1],
 *             ('gsizes')   : sizes,
 *             ('distribs') : makelist(i, s2, e2),             # <<<<<<<<<<<<<<
 *             ('dargs')    : makelist(i, s3, e3),
 *             ('psizes')   : makelist(i, s4, e4),
 */
    __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s2, __pyx_v_e2); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_distribs, __pyx_t_4) < 0) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":205
 *             ('gsizes')   : sizes,
 *             ('distribs') : makelist(i, s2, e2),
 *             ('dargs')    : makelist(i, s3, e3),             # <<<<<<<<<<<<<<
 *             ('psizes')   : makelist(i, s4, e4),
 *             ('order')    : order,
 */
    __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s3, __pyx_v_e3); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dargs, __pyx_t_4) < 0) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":206
 *             ('distribs') : makelist(i, s2, e2),
 *             ('dargs')    : makelist(i, s3, e3),
 *             ('psizes')   : makelist(i, s4, e4),             # <<<<<<<<<<<<<<
 *             ('order')    : order,
 *         }
 */
    __pyx_t_4 = __pyx_fuse_0__pyx_f_6mpi4py_3MPI_makelist(__pyx_v_i, __pyx_v_s4, __pyx_v_e4); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_psizes, __pyx_t_4) < 0) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":207
 *             ('dargs')    : makelist(i, s3, e3),
 *             ('psizes')   : makelist(i, s4, e4),
 *             ('order')    : order,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_RESIZED:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_order, __pyx_v_order) < 0) __PYX_ERR(37, 201, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":185
 *             ('order')    : order,
 *         }
 *     elif combiner == MPI_COMBINER_DARRAY:             # <<<<<<<<<<<<<<
 *         if use_count:
 *             s1, e1 = 0*i[2]+0, 1*i[2]+0-1
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":209
 *             ('order')    : order,
 *         }
 *     elif combiner == MPI_COMBINER_RESIZED:             # <<<<<<<<<<<<<<
 *         lbound = c[0] if use_count else a[0]
 *         extent = c[1] if use_count else a[1]
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_RESIZED);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":210
 *         }
 *     elif combiner == MPI_COMBINER_RESIZED:
 *         lbound = c[0] if use_count else a[0]             # <<<<<<<<<<<<<<
 *         extent = c[1] if use_count else a[1]
 *         params = {
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 210, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Aint((__pyx_v_a[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 210, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_lbound = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":211
 *     elif combiner == MPI_COMBINER_RESIZED:
 *         lbound = c[0] if use_count else a[0]
 *         extent = c[1] if use_count else a[1]             # <<<<<<<<<<<<<<
 *         params = {
 *             ('lb')     : lbound,
 */
    __pyx_t_2 = (__pyx_v_use_count != 0);
    if (__pyx_t_2) {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Count((__pyx_v_c[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 211, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyInt_From_MPI_Aint((__pyx_v_a[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 211, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_v_extent = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":213
 *         extent = c[1] if use_count else a[1]
 *         params = {
 *             ('lb')     : lbound,             # <<<<<<<<<<<<<<
 *             ('extent') : extent,
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_lb_2, __pyx_v_lbound) < 0) __PYX_ERR(37, 213, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":214
 *         params = {
 *             ('lb')     : lbound,
 *             ('extent') : extent,             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_VALUE_INDEX:
 */
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_extent, __pyx_v_extent) < 0) __PYX_ERR(37, 213, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":209
 *             ('order')    : order,
 *         }
 *     elif combiner == MPI_COMBINER_RESIZED:             # <<<<<<<<<<<<<<
 *         lbound = c[0] if use_count else a[0]
 *         extent = c[1] if use_count else a[1]
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":216
 *             ('extent') : extent,
 *         }
 *     elif combiner == MPI_COMBINER_VALUE_INDEX:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('value') : datatypes[0],  # ~> MPI-4.1
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_VALUE_INDEX);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":218
 *     elif combiner == MPI_COMBINER_VALUE_INDEX:
 *         params = {
 *             ('value') : datatypes[0],  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *             ('index') : datatypes[1],  # ~> MPI-4.1
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_datatypes, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_value, __pyx_t_4) < 0) __PYX_ERR(37, 218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":219
 *         params = {
 *             ('value') : datatypes[0],  # ~> MPI-4.1
 *             ('index') : datatypes[1],  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_F90_INTEGER:
 */
    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_datatypes, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_index, __pyx_t_4) < 0) __PYX_ERR(37, 218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":216
 *             ('extent') : extent,
 *         }
 *     elif combiner == MPI_COMBINER_VALUE_INDEX:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('value') : datatypes[0],  # ~> MPI-4.1
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":221
 *             ('index') : datatypes[1],  # ~> MPI-4.1
 *         }
 *     elif combiner == MPI_COMBINER_F90_INTEGER:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('r') : i[0],
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_F90_INTEGER);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":223
 *     elif combiner == MPI_COMBINER_F90_INTEGER:
 *         params = {
 *             ('r') : i[0],             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_F90_REAL:
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_r, __pyx_t_4) < 0) __PYX_ERR(37, 223, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":221
 *             ('index') : datatypes[1],  # ~> MPI-4.1
 *         }
 *     elif combiner == MPI_COMBINER_F90_INTEGER:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('r') : i[0],
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":225
 *             ('r') : i[0],
 *         }
 *     elif combiner == MPI_COMBINER_F90_REAL:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('p') : i[0],
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_F90_REAL);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":227
 *     elif combiner == MPI_COMBINER_F90_REAL:
 *         params = {
 *             ('p') : i[0],             # <<<<<<<<<<<<<<
 *             ('r') : i[1],
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_p, __pyx_t_4) < 0) __PYX_ERR(37, 227, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":228
 *         params = {
 *             ('p') : i[0],
 *             ('r') : i[1],             # <<<<<<<<<<<<<<
 *         }
 *     elif combiner == MPI_COMBINER_F90_COMPLEX:
 */
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_r, __pyx_t_4) < 0) __PYX_ERR(37, 227, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":225
 *             ('r') : i[0],
 *         }
 *     elif combiner == MPI_COMBINER_F90_REAL:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('p') : i[0],
 */
    goto __pyx_L7;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":230
 *             ('r') : i[1],
 *         }
 *     elif combiner == MPI_COMBINER_F90_COMPLEX:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('p') : i[0],
 */
  __pyx_t_2 = (__pyx_v_combiner == MPI_COMBINER_F90_COMPLEX);
  if (__pyx_t_2) {

    /* "src/mpi4py/MPI.src/typedec.pxi":232
 *     elif combiner == MPI_COMBINER_F90_COMPLEX:
 *         params = {
 *             ('p') : i[0],             # <<<<<<<<<<<<<<
 *             ('r') : i[1],
 *         }
 */
    __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_p, __pyx_t_4) < 0) __PYX_ERR(37, 232, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":233
 *         params = {
 *             ('p') : i[0],
 *             ('r') : i[1],             # <<<<<<<<<<<<<<
 *         }
 *     if mark:
 */
    __pyx_t_4 = __Pyx_PyInt_From_int((__pyx_v_i[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_r, __pyx_t_4) < 0) __PYX_ERR(37, 232, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_params, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":230
 *             ('r') : i[1],
 *         }
 *     elif combiner == MPI_COMBINER_F90_COMPLEX:             # <<<<<<<<<<<<<<
 *         params = {
 *             ('p') : i[0],
 */
  }
  __pyx_L7:;

  /* "src/mpi4py/MPI.src/typedec.pxi":235
 *             ('r') : i[1],
 *         }
 *     if mark:             # <<<<<<<<<<<<<<
 *         datatype_visit(marktemp, datatypes)
 *     return (oldtype, combinername(combiner), params)
 */
  if (__pyx_v_mark) {

    /* "src/mpi4py/MPI.src/typedec.pxi":236
 *         }
 *     if mark:
 *         datatype_visit(marktemp, datatypes)             # <<<<<<<<<<<<<<
 *     return (oldtype, combinername(combiner), params)
 * 
 */
    __pyx_t_1 = __pyx_f_6mpi4py_3MPI_datatype_visit(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_marktemp, __pyx_v_datatypes); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(37, 236, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":235
 *             ('r') : i[1],
 *         }
 *     if mark:             # <<<<<<<<<<<<<<
 *         datatype_visit(marktemp, datatypes)
 *     return (oldtype, combinername(combiner), params)
 */
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":237
 *     if mark:
 *         datatype_visit(marktemp, datatypes)
 *     return (oldtype, combinername(combiner), params)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __pyx_f_6mpi4py_3MPI_combinername(__pyx_v_combiner); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF((PyObject *)__pyx_v_oldtype);
  __Pyx_GIVEREF((PyObject *)__pyx_v_oldtype);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_oldtype))) __PYX_ERR(37, 237, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5)) __PYX_ERR(37, 237, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_params);
  __Pyx_GIVEREF(__pyx_v_params);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_params)) __PYX_ERR(37, 237, __pyx_L1_error);
  __pyx_t_5 = 0;
  __pyx_r = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typedec.pxi":26
 *     return [p[i] for i from start <= i <= last]
 * 
 * cdef inline tuple datatype_decode(             # <<<<<<<<<<<<<<
 *     Datatype self,
 *     bint mark,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.datatype_decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused1);
  __Pyx_XDECREF(__pyx_v_unused2);
  __Pyx_XDECREF(__pyx_v_unused3);
  __Pyx_XDECREF(__pyx_v_unused4);
  __Pyx_XDECREF((PyObject *)__pyx_v_oldtype);
  __Pyx_XDECREF(__pyx_v_params);
  __Pyx_XDECREF(__pyx_v_datatypes);
  __Pyx_XDECREF(__pyx_v_count);
  __Pyx_XDECREF(__pyx_v_blklen);
  __Pyx_XDECREF(__pyx_v_stride);
  __Pyx_XDECREF(__pyx_v_displs);
  __Pyx_XDECREF(__pyx_v_sizes);
  __Pyx_XDECREF(__pyx_v_subsizes);
  __Pyx_XDECREF(__pyx_v_starts);
  __Pyx_XDECREF(__pyx_v_order);
  __Pyx_XDECREF(__pyx_v_lbound);
  __Pyx_XDECREF(__pyx_v_extent);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typedec.pxi":240
 * 
 * 
 * cdef inline Datatype datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype,
 *     str  combiner,
 */

static CYTHON_INLINE struct PyMPIDatatypeObject *__pyx_f_6mpi4py_3MPI_datatype_create(struct PyMPIDatatypeObject *__pyx_v_datatype, PyObject *__pyx_v_combiner, PyObject *__pyx_v_params, int __pyx_v_free) {
  PyObject *__pyx_v_factory = 0;
  struct PyMPIDatatypeObject *__pyx_v_newtype = 0;
  PyObject *__pyx_v_datatypes = 0;
  struct PyMPIDatatypeObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  unsigned int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("datatype_create", 0);
  __Pyx_INCREF(__pyx_v_combiner);

  /* "src/mpi4py/MPI.src/typedec.pxi":249
 *     cdef Datatype newtype
 *     cdef list datatypes
 *     if 'datatypes' in params:             # <<<<<<<<<<<<<<
 *         datatypes = params['datatypes']
 *     elif 'value' in params and 'index' in params:
 */
  if (unlikely(__pyx_v_params == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(37, 249, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_datatypes, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(37, 249, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typedec.pxi":250
 *     cdef list datatypes
 *     if 'datatypes' in params:
 *         datatypes = params['datatypes']             # <<<<<<<<<<<<<<
 *     elif 'value' in params and 'index' in params:
 *         datatypes = list(params.values())  # ~> MPI-4.1
 */
    if (unlikely(__pyx_v_params == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(37, 250, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_params, __pyx_n_s_datatypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(37, 250, __pyx_L1_error)
    __pyx_v_datatypes = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":249
 *     cdef Datatype newtype
 *     cdef list datatypes
 *     if 'datatypes' in params:             # <<<<<<<<<<<<<<
 *         datatypes = params['datatypes']
 *     elif 'value' in params and 'index' in params:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":251
 *     if 'datatypes' in params:
 *         datatypes = params['datatypes']
 *     elif 'value' in params and 'index' in params:             # <<<<<<<<<<<<<<
 *         datatypes = list(params.values())  # ~> MPI-4.1
 *     else:
 */
  if (unlikely(__pyx_v_params == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(37, 251, __pyx_L1_error)
  }
  __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_value, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(37, 251, __pyx_L1_error)
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  if (unlikely(__pyx_v_params == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(37, 251, __pyx_L1_error)
  }
  __pyx_t_3 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_index, __pyx_v_params, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(37, 251, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/typedec.pxi":252
 *         datatypes = params['datatypes']
 *     elif 'value' in params and 'index' in params:
 *         datatypes = list(params.values())  # ~> MPI-4.1             # <<<<<<<<<<<<<<
 *     else:
 *         datatypes = [datatype]
 */
    if (unlikely(__pyx_v_params == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
      __PYX_ERR(37, 252, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_PyDict_Values(__pyx_v_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PySequence_ListKeepNew(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_datatypes = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":251
 *     if 'datatypes' in params:
 *         datatypes = params['datatypes']
 *     elif 'value' in params and 'index' in params:             # <<<<<<<<<<<<<<
 *         datatypes = list(params.values())  # ~> MPI-4.1
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":254
 *         datatypes = list(params.values())  # ~> MPI-4.1
 *     else:
 *         datatypes = [datatype]             # <<<<<<<<<<<<<<
 *     try:
 *         combiner = combiner.lower()
 */
  /*else*/ {
    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF((PyObject *)__pyx_v_datatype);
    __Pyx_GIVEREF((PyObject *)__pyx_v_datatype);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_datatype))) __PYX_ERR(37, 254, __pyx_L1_error);
    __pyx_v_datatypes = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/typedec.pxi":255
 *     else:
 *         datatypes = [datatype]
 *     try:             # <<<<<<<<<<<<<<
 *         combiner = combiner.lower()
 *         factory = getattr(datatype, f'Create_{combiner}')
 */
  /*try:*/ {

    /* "src/mpi4py/MPI.src/typedec.pxi":256
 *         datatypes = [datatype]
 *     try:
 *         combiner = combiner.lower()             # <<<<<<<<<<<<<<
 *         factory = getattr(datatype, f'Create_{combiner}')
 *         newtype = factory(**params).Commit()
 */
    __pyx_t_4 = __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyString_Type_lower, __pyx_v_combiner); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 256, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (!(likely(PyString_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(37, 256, __pyx_L7_error)
    __Pyx_DECREF_SET(__pyx_v_combiner, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":257
 *     try:
 *         combiner = combiner.lower()
 *         factory = getattr(datatype, f'Create_{combiner}')             # <<<<<<<<<<<<<<
 *         newtype = factory(**params).Commit()
 *     finally:
 */
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_combiner, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 257, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_n_u_Create_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 257, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetAttr(((PyObject *)__pyx_v_datatype), __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 257, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_factory = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":258
 *         combiner = combiner.lower()
 *         factory = getattr(datatype, f'Create_{combiner}')
 *         newtype = factory(**params).Commit()             # <<<<<<<<<<<<<<
 *     finally:
 *         if free:
 */
    if (unlikely(__pyx_v_params == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
      __PYX_ERR(37, 258, __pyx_L7_error)
    }
    __pyx_t_2 = PyDict_Copy(__pyx_v_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 258, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_factory, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(37, 258, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Commit); if (unlikely(!__pyx_t_2)) __PYX_ERR(37, 258, __pyx_L7_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    #if CYTHON_UNPACK_METHODS
    if (likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(37, 258, __pyx_L7_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(37, 258, __pyx_L7_error)
    __pyx_v_newtype = ((struct PyMPIDatatypeObject *)__pyx_t_4);
    __pyx_t_4 = 0;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":260
 *         newtype = factory(**params).Commit()
 *     finally:
 *         if free:             # <<<<<<<<<<<<<<
 *             datatype_visit(freetemp, datatypes)
 *     return newtype
 */
  /*finally:*/ {
    /*normal exit:*/{
      if (__pyx_v_free) {

        /* "src/mpi4py/MPI.src/typedec.pxi":261
 *     finally:
 *         if free:
 *             datatype_visit(freetemp, datatypes)             # <<<<<<<<<<<<<<
 *     return newtype
 * 
 */
        __pyx_t_7 = __pyx_f_6mpi4py_3MPI_datatype_visit(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_freetemp, __pyx_v_datatypes); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(37, 261, __pyx_L1_error)

        /* "src/mpi4py/MPI.src/typedec.pxi":260
 *         newtype = factory(**params).Commit()
 *     finally:
 *         if free:             # <<<<<<<<<<<<<<
 *             datatype_visit(freetemp, datatypes)
 *     return newtype
 */
      }
      goto __pyx_L8;
    }
    __pyx_L7_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_7 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {
        if (__pyx_v_free) {

          /* "src/mpi4py/MPI.src/typedec.pxi":261
 *     finally:
 *         if free:
 *             datatype_visit(freetemp, datatypes)             # <<<<<<<<<<<<<<
 *     return newtype
 * 
 */
          __pyx_t_16 = __pyx_f_6mpi4py_3MPI_datatype_visit(__pyx_fuse_0__pyx_f_6mpi4py_3MPI_freetemp, __pyx_v_datatypes); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(37, 261, __pyx_L11_error)

          /* "src/mpi4py/MPI.src/typedec.pxi":260
 *         newtype = factory(**params).Commit()
 *     finally:
 *         if free:             # <<<<<<<<<<<<<<
 *             datatype_visit(freetemp, datatypes)
 *     return newtype
 */
        }
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_7; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
      __pyx_L11_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L8:;
  }

  /* "src/mpi4py/MPI.src/typedec.pxi":262
 *         if free:
 *             datatype_visit(freetemp, datatypes)
 *     return newtype             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_newtype);
  __pyx_r = __pyx_v_newtype;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typedec.pxi":240
 * 
 * 
 * cdef inline Datatype datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype,
 *     str  combiner,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("mpi4py.MPI.datatype_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_factory);
  __Pyx_XDECREF((PyObject *)__pyx_v_newtype);
  __Pyx_XDECREF(__pyx_v_datatypes);
  __Pyx_XDECREF(__pyx_v_combiner);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typedec.pxi":265
 * 
 * 
 * cdef inline int datatype_visit(             # <<<<<<<<<<<<<<
 *     int (*visit)(Datatype) except -1,
 *     list datatypes,
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI_datatype_visit(int (*__pyx_v_visit)(struct PyMPIDatatypeObject *), PyObject *__pyx_v_datatypes) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("datatype_visit", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":270
 * ) except -1:
 *     cdef Datatype datatype
 *     for datatype in datatypes:             # <<<<<<<<<<<<<<
 *         visit(datatype)
 * 
 */
  if (unlikely(__pyx_v_datatypes == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(37, 270, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_datatypes; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
      #if !CYTHON_ASSUME_SAFE_MACROS
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(37, 270, __pyx_L1_error)
      #endif
      if (__pyx_t_2 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(37, 270, __pyx_L1_error)
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(37, 270, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_datatype, ((struct PyMPIDatatypeObject *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/typedec.pxi":271
 *     cdef Datatype datatype
 *     for datatype in datatypes:
 *         visit(datatype)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_4 = __pyx_v_visit(__pyx_v_datatype); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(37, 271, __pyx_L1_error)

    /* "src/mpi4py/MPI.src/typedec.pxi":270
 * ) except -1:
 *     cdef Datatype datatype
 *     for datatype in datatypes:             # <<<<<<<<<<<<<<
 *         visit(datatype)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":265
 * 
 * 
 * cdef inline int datatype_visit(             # <<<<<<<<<<<<<<
 *     int (*visit)(Datatype) except -1,
 *     list datatypes,
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI.datatype_visit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_datatype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typedec.pxi":274
 * 
 * 
 * def _datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     str combiner: str,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_91_datatype_create(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_90_datatype_create, "_datatype_create(datatype: Datatype, combiner: str, params: dict[str, Any], free: bool = False) -> Datatype\n\n    Create datatype from base datatype, combiner name, and parameters.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_91_datatype_create = {"_datatype_create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_91_datatype_create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_90_datatype_create};
static PyObject *__pyx_pw_6mpi4py_3MPI_91_datatype_create(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  PyObject *__pyx_v_combiner = 0;
  PyObject *__pyx_v_params = 0;
  int __pyx_v_free;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_datatype_create (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,&__pyx_n_s_combiner,&__pyx_n_s_params,&__pyx_n_s_free,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(37, 274, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_combiner)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(37, 274, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_datatype_create", 0, 3, 4, 1); __PYX_ERR(37, 274, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_params)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(37, 274, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_datatype_create", 0, 3, 4, 2); __PYX_ERR(37, 274, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_free);
          if (value) { values[3] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(37, 274, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_datatype_create") < 0)) __PYX_ERR(37, 274, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
    __pyx_v_combiner = ((PyObject*)values[1]);
    __pyx_v_params = ((PyObject*)values[2]);
    if (values[3]) {
      __pyx_v_free = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_free == (int)-1) && PyErr_Occurred())) __PYX_ERR(37, 278, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/typedec.pxi":278
 *     str combiner: str,
 *     dict params: dict[str, Any],
 *     bint free: bool = False,             # <<<<<<<<<<<<<<
 * ) -> Datatype:
 *     """
 */
      __pyx_v_free = ((int)((int)0));
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_datatype_create", 0, 3, 4, __pyx_nargs); __PYX_ERR(37, 274, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._datatype_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(37, 275, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_combiner), (&PyString_Type), 0, "combiner", 1))) __PYX_ERR(37, 276, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_params), (&PyDict_Type), 0, "params", 1))) __PYX_ERR(37, 277, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_90_datatype_create(__pyx_self, __pyx_v_datatype, __pyx_v_combiner, __pyx_v_params, __pyx_v_free);

  /* "src/mpi4py/MPI.src/typedec.pxi":274
 * 
 * 
 * def _datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     str combiner: str,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_90_datatype_create(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype, PyObject *__pyx_v_combiner, PyObject *__pyx_v_params, int __pyx_v_free) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_datatype_create", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":283
 *     Create datatype from base datatype, combiner name, and parameters.
 *     """
 *     return datatype_create(datatype, combiner, params, free)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_6mpi4py_3MPI_datatype_create(__pyx_v_datatype, __pyx_v_combiner, __pyx_v_params, __pyx_v_free)); if (unlikely(!__pyx_t_1)) __PYX_ERR(37, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typedec.pxi":274
 * 
 * 
 * def _datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     str combiner: str,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._datatype_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/typedec.pxi":286
 * 
 * 
 * def _datatype_decode(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     bint mark: bool = False,
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_93_datatype_decode(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_92_datatype_decode, "_datatype_decode(datatype: Datatype, mark: bool = False) -> tuple[Datatype, str, dict[str, Any]]\n\n    Decode datatype to base datatype, combiner name, and parameters.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_93_datatype_decode = {"_datatype_decode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_93_datatype_decode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_92_datatype_decode};
static PyObject *__pyx_pw_6mpi4py_3MPI_93_datatype_decode(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct PyMPIDatatypeObject *__pyx_v_datatype = 0;
  int __pyx_v_mark;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_datatype_decode (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datatype,&__pyx_n_s_mark,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_datatype)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(37, 286, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_mark);
          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(37, 286, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_datatype_decode") < 0)) __PYX_ERR(37, 286, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_datatype = ((struct PyMPIDatatypeObject *)values[0]);
    if (values[1]) {
      __pyx_v_mark = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_mark == (int)-1) && PyErr_Occurred())) __PYX_ERR(37, 288, __pyx_L3_error)
    } else {

      /* "src/mpi4py/MPI.src/typedec.pxi":288
 * def _datatype_decode(
 *     Datatype datatype: Datatype,
 *     bint mark: bool = False,             # <<<<<<<<<<<<<<
 * ) -> tuple[Datatype, str, dict[str, Any]]:
 *     """
 */
      __pyx_v_mark = ((int)((int)0));
    }
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_datatype_decode", 0, 1, 2, __pyx_nargs); __PYX_ERR(37, 286, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._datatype_decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_datatype), __pyx_ptype_6mpi4py_3MPI_Datatype, 0, "datatype", 0))) __PYX_ERR(37, 287, __pyx_L1_error)
  __pyx_r = __pyx_pf_6mpi4py_3MPI_92_datatype_decode(__pyx_self, __pyx_v_datatype, __pyx_v_mark);

  /* "src/mpi4py/MPI.src/typedec.pxi":286
 * 
 * 
 * def _datatype_decode(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     bint mark: bool = False,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_92_datatype_decode(CYTHON_UNUSED PyObject *__pyx_self, struct PyMPIDatatypeObject *__pyx_v_datatype, int __pyx_v_mark) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_datatype_decode", 1);

  /* "src/mpi4py/MPI.src/typedec.pxi":293
 *     Decode datatype to base datatype, combiner name, and parameters.
 *     """
 *     return datatype_decode(datatype, mark)  # ~> TODO             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_datatype_decode(__pyx_v_datatype, __pyx_v_mark); if (unlikely(!__pyx_t_1)) __PYX_ERR(37, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/typedec.pxi":286
 * 
 * 
 * def _datatype_decode(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     bint mark: bool = False,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("mpi4py.MPI._datatype_decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":309
 * 
 * 
 * def get_vendor() -> tuple[str, tuple[int, int, int]]:             # <<<<<<<<<<<<<<
 *     """
 *     Information about the underlying MPI implementation.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_95get_vendor(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_94get_vendor, "get_vendor() -> tuple[str, tuple[int, int, int]]\n\n    Information about the underlying MPI implementation.\n\n    Returns:\n      - string with the name of the MPI implementation.\n      - integer 3-tuple version number ``(major, minor, micro)``.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_95get_vendor = {"get_vendor", (PyCFunction)__pyx_pw_6mpi4py_3MPI_95get_vendor, METH_NOARGS, __pyx_doc_6mpi4py_3MPI_94get_vendor};
static PyObject *__pyx_pw_6mpi4py_3MPI_95get_vendor(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_vendor (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_6mpi4py_3MPI_94get_vendor(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_94get_vendor(CYTHON_UNUSED PyObject *__pyx_self) {
  char const *__pyx_v_name;
  int __pyx_v_major;
  int __pyx_v_minor;
  int __pyx_v_micro;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_vendor", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":317
 *       - integer 3-tuple version number ``(major, minor, micro)``.
 *     """
 *     cdef const char *name=NULL             # <<<<<<<<<<<<<<
 *     cdef int major=0, minor=0, micro=0
 *     CHKERR( PyMPI_Get_vendor(&name, &major, &minor, &micro) )
 */
  __pyx_v_name = NULL;

  /* "src/mpi4py/MPI.src/MPI.pyx":318
 *     """
 *     cdef const char *name=NULL
 *     cdef int major=0, minor=0, micro=0             # <<<<<<<<<<<<<<
 *     CHKERR( PyMPI_Get_vendor(&name, &major, &minor, &micro) )
 *     return (mpistr(name), (major, minor, micro))
 */
  __pyx_v_major = 0;
  __pyx_v_minor = 0;
  __pyx_v_micro = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":319
 *     cdef const char *name=NULL
 *     cdef int major=0, minor=0, micro=0
 *     CHKERR( PyMPI_Get_vendor(&name, &major, &minor, &micro) )             # <<<<<<<<<<<<<<
 *     return (mpistr(name), (major, minor, micro))
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI_CHKERR(PyMPI_Get_vendor((&__pyx_v_name), (&__pyx_v_major), (&__pyx_v_minor), (&__pyx_v_micro))); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 319, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":320
 *     cdef int major=0, minor=0, micro=0
 *     CHKERR( PyMPI_Get_vendor(&name, &major, &minor, &micro) )
 *     return (mpistr(name), (major, minor, micro))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_6mpi4py_3MPI_mpistr(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_major); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_minor); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_micro); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3)) __PYX_ERR(34, 320, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4)) __PYX_ERR(34, 320, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_5)) __PYX_ERR(34, 320, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2)) __PYX_ERR(34, 320, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_6);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6)) __PYX_ERR(34, 320, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_6 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":309
 * 
 * 
 * def get_vendor() -> tuple[str, tuple[int, int, int]]:             # <<<<<<<<<<<<<<
 *     """
 *     Information about the underlying MPI implementation.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("mpi4py.MPI.get_vendor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":325
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int _mpi_type(object arg, type cls) except -1:             # <<<<<<<<<<<<<<
 *     if isinstance(arg, type):
 *         if issubclass(arg, cls): return 1
 */

static CYTHON_INLINE int __pyx_f_6mpi4py_3MPI__mpi_type(PyObject *__pyx_v_arg, PyTypeObject *__pyx_v_cls) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":326
 * 
 * cdef inline int _mpi_type(object arg, type cls) except -1:
 *     if isinstance(arg, type):             # <<<<<<<<<<<<<<
 *         if issubclass(arg, cls): return 1
 *     else:
 */
  __pyx_t_1 = PyType_Check(__pyx_v_arg); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":327
 * cdef inline int _mpi_type(object arg, type cls) except -1:
 *     if isinstance(arg, type):
 *         if issubclass(arg, cls): return 1             # <<<<<<<<<<<<<<
 *     else:
 *         if isinstance(arg, cls): return 1
 */
    __pyx_t_1 = PyObject_IsSubclass(__pyx_v_arg, ((PyObject *)__pyx_v_cls)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 327, __pyx_L1_error)
    if (__pyx_t_1) {
      __pyx_r = 1;
      goto __pyx_L0;
    }

    /* "src/mpi4py/MPI.src/MPI.pyx":326
 * 
 * cdef inline int _mpi_type(object arg, type cls) except -1:
 *     if isinstance(arg, type):             # <<<<<<<<<<<<<<
 *         if issubclass(arg, cls): return 1
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":329
 *         if issubclass(arg, cls): return 1
 *     else:
 *         if isinstance(arg, cls): return 1             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  /*else*/ {
    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_v_cls); 
    if (__pyx_t_1) {
      __pyx_r = 1;
      goto __pyx_L0;
    }
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/MPI.pyx":330
 *     else:
 *         if isinstance(arg, cls): return 1
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":325
 * # -----------------------------------------------------------------------------
 * 
 * cdef inline int _mpi_type(object arg, type cls) except -1:             # <<<<<<<<<<<<<<
 *     if isinstance(arg, type):
 *         if issubclass(arg, cls): return 1
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("mpi4py.MPI._mpi_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":333
 * 
 * 
 * def _sizeof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Size in bytes of the underlying MPI handle.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_97_sizeof(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_96_sizeof, "_sizeof(arg: Any) -> int\n\n    Size in bytes of the underlying MPI handle.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_97_sizeof = {"_sizeof", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_97_sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_96_sizeof};
static PyObject *__pyx_pw_6mpi4py_3MPI_97_sizeof(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_sizeof (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 333, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_sizeof") < 0)) __PYX_ERR(34, 333, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_sizeof", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 333, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._sizeof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_96_sizeof(__pyx_self, __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_96_sizeof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_sizeof", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":337
 *     Size in bytes of the underlying MPI handle.
 *     """
 *     if _mpi_type(arg, Status):     return sizeof(MPI_Status)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Datatype):   return sizeof(MPI_Datatype)
 *     if _mpi_type(arg, Request):    return sizeof(MPI_Request)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Status); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 337, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Status))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":338
 *     """
 *     if _mpi_type(arg, Status):     return sizeof(MPI_Status)
 *     if _mpi_type(arg, Datatype):   return sizeof(MPI_Datatype)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Request):    return sizeof(MPI_Request)
 *     if _mpi_type(arg, Message):    return sizeof(MPI_Message)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Datatype); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 338, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Datatype))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 338, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":339
 *     if _mpi_type(arg, Status):     return sizeof(MPI_Status)
 *     if _mpi_type(arg, Datatype):   return sizeof(MPI_Datatype)
 *     if _mpi_type(arg, Request):    return sizeof(MPI_Request)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Message):    return sizeof(MPI_Message)
 *     if _mpi_type(arg, Op):         return sizeof(MPI_Op)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 339, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Request))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":340
 *     if _mpi_type(arg, Datatype):   return sizeof(MPI_Datatype)
 *     if _mpi_type(arg, Request):    return sizeof(MPI_Request)
 *     if _mpi_type(arg, Message):    return sizeof(MPI_Message)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Op):         return sizeof(MPI_Op)
 *     if _mpi_type(arg, Group):      return sizeof(MPI_Group)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Message); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 340, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Message))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 340, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":341
 *     if _mpi_type(arg, Request):    return sizeof(MPI_Request)
 *     if _mpi_type(arg, Message):    return sizeof(MPI_Message)
 *     if _mpi_type(arg, Op):         return sizeof(MPI_Op)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Group):      return sizeof(MPI_Group)
 *     if _mpi_type(arg, Info):       return sizeof(MPI_Info)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Op); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 341, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Op))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":342
 *     if _mpi_type(arg, Message):    return sizeof(MPI_Message)
 *     if _mpi_type(arg, Op):         return sizeof(MPI_Op)
 *     if _mpi_type(arg, Group):      return sizeof(MPI_Group)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Info):       return sizeof(MPI_Info)
 *     if _mpi_type(arg, Errhandler): return sizeof(MPI_Errhandler)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Group); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 342, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Group))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":343
 *     if _mpi_type(arg, Op):         return sizeof(MPI_Op)
 *     if _mpi_type(arg, Group):      return sizeof(MPI_Group)
 *     if _mpi_type(arg, Info):       return sizeof(MPI_Info)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Errhandler): return sizeof(MPI_Errhandler)
 *     if _mpi_type(arg, Session):    return sizeof(MPI_Session)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Info); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 343, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Info))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":344
 *     if _mpi_type(arg, Group):      return sizeof(MPI_Group)
 *     if _mpi_type(arg, Info):       return sizeof(MPI_Info)
 *     if _mpi_type(arg, Errhandler): return sizeof(MPI_Errhandler)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Session):    return sizeof(MPI_Session)
 *     if _mpi_type(arg, Comm):       return sizeof(MPI_Comm)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Errhandler); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 344, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Errhandler))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 344, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":345
 *     if _mpi_type(arg, Info):       return sizeof(MPI_Info)
 *     if _mpi_type(arg, Errhandler): return sizeof(MPI_Errhandler)
 *     if _mpi_type(arg, Session):    return sizeof(MPI_Session)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Comm):       return sizeof(MPI_Comm)
 *     if _mpi_type(arg, Win):        return sizeof(MPI_Win)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Session); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 345, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Session))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":346
 *     if _mpi_type(arg, Errhandler): return sizeof(MPI_Errhandler)
 *     if _mpi_type(arg, Session):    return sizeof(MPI_Session)
 *     if _mpi_type(arg, Comm):       return sizeof(MPI_Comm)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, Win):        return sizeof(MPI_Win)
 *     if _mpi_type(arg, File):       return sizeof(MPI_File)
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Comm); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 346, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Comm))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":347
 *     if _mpi_type(arg, Session):    return sizeof(MPI_Session)
 *     if _mpi_type(arg, Comm):       return sizeof(MPI_Comm)
 *     if _mpi_type(arg, Win):        return sizeof(MPI_Win)             # <<<<<<<<<<<<<<
 *     if _mpi_type(arg, File):       return sizeof(MPI_File)
 *     raise TypeError("expecting an MPI type or instance")
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Win); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 347, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_Win))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":348
 *     if _mpi_type(arg, Comm):       return sizeof(MPI_Comm)
 *     if _mpi_type(arg, Win):        return sizeof(MPI_Win)
 *     if _mpi_type(arg, File):       return sizeof(MPI_File)             # <<<<<<<<<<<<<<
 *     raise TypeError("expecting an MPI type or instance")
 * 
 */
  __pyx_t_1 = __pyx_f_6mpi4py_3MPI__mpi_type(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_File); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(34, 348, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(MPI_File))); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 348, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":349
 *     if _mpi_type(arg, Win):        return sizeof(MPI_Win)
 *     if _mpi_type(arg, File):       return sizeof(MPI_File)
 *     raise TypeError("expecting an MPI type or instance")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__203, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_Raise(__pyx_t_3, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __PYX_ERR(34, 349, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":333
 * 
 * 
 * def _sizeof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Size in bytes of the underlying MPI handle.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("mpi4py.MPI._sizeof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":352
 * 
 * 
 * def _addressof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Memory address of the underlying MPI handle.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_99_addressof(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_98_addressof, "_addressof(arg: Any) -> int\n\n    Memory address of the underlying MPI handle.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_99_addressof = {"_addressof", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_99_addressof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_98_addressof};
static PyObject *__pyx_pw_6mpi4py_3MPI_99_addressof(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_addressof (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 352, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_addressof") < 0)) __PYX_ERR(34, 352, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_addressof", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 352, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._addressof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_98_addressof(__pyx_self, __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_98_addressof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg) {
  void *__pyx_v_ptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_addressof", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":356
 *     Memory address of the underlying MPI handle.
 *     """
 *     cdef void *ptr = NULL             # <<<<<<<<<<<<<<
 *     if isinstance(arg, Status):
 *         ptr = <void*>&(<Status>arg).ob_mpi
 */
  __pyx_v_ptr = NULL;

  /* "src/mpi4py/MPI.src/MPI.pyx":357
 *     """
 *     cdef void *ptr = NULL
 *     if isinstance(arg, Status):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Status>arg).ob_mpi
 *     elif isinstance(arg, Datatype):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Status); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":358
 *     cdef void *ptr = NULL
 *     if isinstance(arg, Status):
 *         ptr = <void*>&(<Status>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Datatype):
 *         ptr = <void*>&(<Datatype>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIStatusObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":357
 *     """
 *     cdef void *ptr = NULL
 *     if isinstance(arg, Status):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Status>arg).ob_mpi
 *     elif isinstance(arg, Datatype):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":359
 *     if isinstance(arg, Status):
 *         ptr = <void*>&(<Status>arg).ob_mpi
 *     elif isinstance(arg, Datatype):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Datatype>arg).ob_mpi
 *     elif isinstance(arg, Request):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Datatype); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":360
 *         ptr = <void*>&(<Status>arg).ob_mpi
 *     elif isinstance(arg, Datatype):
 *         ptr = <void*>&(<Datatype>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Request):
 *         ptr = <void*>&(<Request>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIDatatypeObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":359
 *     if isinstance(arg, Status):
 *         ptr = <void*>&(<Status>arg).ob_mpi
 *     elif isinstance(arg, Datatype):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Datatype>arg).ob_mpi
 *     elif isinstance(arg, Request):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":361
 *     elif isinstance(arg, Datatype):
 *         ptr = <void*>&(<Datatype>arg).ob_mpi
 *     elif isinstance(arg, Request):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Request>arg).ob_mpi
 *     elif isinstance(arg, Message):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Request); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":362
 *         ptr = <void*>&(<Datatype>arg).ob_mpi
 *     elif isinstance(arg, Request):
 *         ptr = <void*>&(<Request>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Message):
 *         ptr = <void*>&(<Message>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIRequestObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":361
 *     elif isinstance(arg, Datatype):
 *         ptr = <void*>&(<Datatype>arg).ob_mpi
 *     elif isinstance(arg, Request):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Request>arg).ob_mpi
 *     elif isinstance(arg, Message):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":363
 *     elif isinstance(arg, Request):
 *         ptr = <void*>&(<Request>arg).ob_mpi
 *     elif isinstance(arg, Message):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Message>arg).ob_mpi
 *     elif isinstance(arg, Op):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Message); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":364
 *         ptr = <void*>&(<Request>arg).ob_mpi
 *     elif isinstance(arg, Message):
 *         ptr = <void*>&(<Message>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Op):
 *         ptr = <void*>&(<Op>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIMessageObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":363
 *     elif isinstance(arg, Request):
 *         ptr = <void*>&(<Request>arg).ob_mpi
 *     elif isinstance(arg, Message):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Message>arg).ob_mpi
 *     elif isinstance(arg, Op):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":365
 *     elif isinstance(arg, Message):
 *         ptr = <void*>&(<Message>arg).ob_mpi
 *     elif isinstance(arg, Op):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Op>arg).ob_mpi
 *     elif isinstance(arg, Group):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Op); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":366
 *         ptr = <void*>&(<Message>arg).ob_mpi
 *     elif isinstance(arg, Op):
 *         ptr = <void*>&(<Op>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Group):
 *         ptr = <void*>&(<Group>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIOpObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":365
 *     elif isinstance(arg, Message):
 *         ptr = <void*>&(<Message>arg).ob_mpi
 *     elif isinstance(arg, Op):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Op>arg).ob_mpi
 *     elif isinstance(arg, Group):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":367
 *     elif isinstance(arg, Op):
 *         ptr = <void*>&(<Op>arg).ob_mpi
 *     elif isinstance(arg, Group):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Group>arg).ob_mpi
 *     elif isinstance(arg, Info):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Group); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":368
 *         ptr = <void*>&(<Op>arg).ob_mpi
 *     elif isinstance(arg, Group):
 *         ptr = <void*>&(<Group>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Info):
 *         ptr = <void*>&(<Info>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIGroupObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":367
 *     elif isinstance(arg, Op):
 *         ptr = <void*>&(<Op>arg).ob_mpi
 *     elif isinstance(arg, Group):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Group>arg).ob_mpi
 *     elif isinstance(arg, Info):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":369
 *     elif isinstance(arg, Group):
 *         ptr = <void*>&(<Group>arg).ob_mpi
 *     elif isinstance(arg, Info):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Info>arg).ob_mpi
 *     elif isinstance(arg, Errhandler):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Info); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":370
 *         ptr = <void*>&(<Group>arg).ob_mpi
 *     elif isinstance(arg, Info):
 *         ptr = <void*>&(<Info>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Errhandler):
 *         ptr = <void*>&(<Errhandler>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIInfoObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":369
 *     elif isinstance(arg, Group):
 *         ptr = <void*>&(<Group>arg).ob_mpi
 *     elif isinstance(arg, Info):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Info>arg).ob_mpi
 *     elif isinstance(arg, Errhandler):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":371
 *     elif isinstance(arg, Info):
 *         ptr = <void*>&(<Info>arg).ob_mpi
 *     elif isinstance(arg, Errhandler):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Errhandler>arg).ob_mpi
 *     elif isinstance(arg, Session):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Errhandler); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":372
 *         ptr = <void*>&(<Info>arg).ob_mpi
 *     elif isinstance(arg, Errhandler):
 *         ptr = <void*>&(<Errhandler>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Session):
 *         ptr = <void*>&(<Session>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIErrhandlerObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":371
 *     elif isinstance(arg, Info):
 *         ptr = <void*>&(<Info>arg).ob_mpi
 *     elif isinstance(arg, Errhandler):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Errhandler>arg).ob_mpi
 *     elif isinstance(arg, Session):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":373
 *     elif isinstance(arg, Errhandler):
 *         ptr = <void*>&(<Errhandler>arg).ob_mpi
 *     elif isinstance(arg, Session):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Session>arg).ob_mpi
 *     elif isinstance(arg, Comm):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Session); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":374
 *         ptr = <void*>&(<Errhandler>arg).ob_mpi
 *     elif isinstance(arg, Session):
 *         ptr = <void*>&(<Session>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Comm):
 *         ptr = <void*>&(<Comm>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPISessionObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":373
 *     elif isinstance(arg, Errhandler):
 *         ptr = <void*>&(<Errhandler>arg).ob_mpi
 *     elif isinstance(arg, Session):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Session>arg).ob_mpi
 *     elif isinstance(arg, Comm):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":375
 *     elif isinstance(arg, Session):
 *         ptr = <void*>&(<Session>arg).ob_mpi
 *     elif isinstance(arg, Comm):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Comm>arg).ob_mpi
 *     elif isinstance(arg, Win):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Comm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":376
 *         ptr = <void*>&(<Session>arg).ob_mpi
 *     elif isinstance(arg, Comm):
 *         ptr = <void*>&(<Comm>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Win):
 *         ptr = <void*>&(<Win>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPICommObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":375
 *     elif isinstance(arg, Session):
 *         ptr = <void*>&(<Session>arg).ob_mpi
 *     elif isinstance(arg, Comm):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Comm>arg).ob_mpi
 *     elif isinstance(arg, Win):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":377
 *     elif isinstance(arg, Comm):
 *         ptr = <void*>&(<Comm>arg).ob_mpi
 *     elif isinstance(arg, Win):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Win>arg).ob_mpi
 *     elif isinstance(arg, File):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Win); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":378
 *         ptr = <void*>&(<Comm>arg).ob_mpi
 *     elif isinstance(arg, Win):
 *         ptr = <void*>&(<Win>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, File):
 *         ptr = <void*>&(<File>arg).ob_mpi
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIWinObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":377
 *     elif isinstance(arg, Comm):
 *         ptr = <void*>&(<Comm>arg).ob_mpi
 *     elif isinstance(arg, Win):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<Win>arg).ob_mpi
 *     elif isinstance(arg, File):
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":379
 *     elif isinstance(arg, Win):
 *         ptr = <void*>&(<Win>arg).ob_mpi
 *     elif isinstance(arg, File):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<File>arg).ob_mpi
 *     else:
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_File); 
  if (likely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/MPI.pyx":380
 *         ptr = <void*>&(<Win>arg).ob_mpi
 *     elif isinstance(arg, File):
 *         ptr = <void*>&(<File>arg).ob_mpi             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("expecting an MPI instance")
 */
    __pyx_v_ptr = ((void *)(&((struct PyMPIFileObject *)__pyx_v_arg)->ob_mpi));

    /* "src/mpi4py/MPI.src/MPI.pyx":379
 *     elif isinstance(arg, Win):
 *         ptr = <void*>&(<Win>arg).ob_mpi
 *     elif isinstance(arg, File):             # <<<<<<<<<<<<<<
 *         ptr = <void*>&(<File>arg).ob_mpi
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":382
 *         ptr = <void*>&(<File>arg).ob_mpi
 *     else:
 *         raise TypeError("expecting an MPI instance")             # <<<<<<<<<<<<<<
 *     return PyLong_FromVoidPtr(ptr)
 * 
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__204, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(34, 382, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/mpi4py/MPI.src/MPI.pyx":383
 *     else:
 *         raise TypeError("expecting an MPI instance")
 *     return PyLong_FromVoidPtr(ptr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyLong_FromVoidPtr(__pyx_v_ptr); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/mpi4py/MPI.src/MPI.pyx":352
 * 
 * 
 * def _addressof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Memory address of the underlying MPI handle.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._addressof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/mpi4py/MPI.src/MPI.pyx":386
 * 
 * 
 * def _handleof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Unsigned integer value with the underlying MPI handle.
 */

/* Python wrapper */
static PyObject *__pyx_pw_6mpi4py_3MPI_101_handleof(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_6mpi4py_3MPI_100_handleof, "_handleof(arg: Any) -> int\n\n    Unsigned integer value with the underlying MPI handle.\n    ");
static PyMethodDef __pyx_mdef_6mpi4py_3MPI_101_handleof = {"_handleof", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_101_handleof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_100_handleof};
static PyObject *__pyx_pw_6mpi4py_3MPI_101_handleof(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handleof (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_MACROS
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) {
          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
          kw_args--;
        }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 386, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_handleof") < 0)) __PYX_ERR(34, 386, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handleof", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 386, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_AddTraceback("mpi4py.MPI._handleof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_6mpi4py_3MPI_100_handleof(__pyx_self, __pyx_v_arg);

  /* function exit code */
  {
    Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
      __Pyx_Arg_XDECREF_FASTCALL(values[__pyx_temp]);
    }
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_6mpi4py_3MPI_100_handleof(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_arg) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handleof", 1);

  /* "src/mpi4py/MPI.src/MPI.pyx":390
 *     Unsigned integer value with the underlying MPI handle.
 *     """
 *     if isinstance(arg, Status):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>&((<Status>arg).ob_mpi)
 *     elif isinstance(arg, Datatype):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Status); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":391
 *     """
 *     if isinstance(arg, Status):
 *         return <Py_uintptr_t>&((<Status>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Datatype):
 *         return <Py_uintptr_t>((<Datatype>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)(&((struct PyMPIStatusObject *)__pyx_v_arg)->ob_mpi))); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":390
 *     Unsigned integer value with the underlying MPI handle.
 *     """
 *     if isinstance(arg, Status):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>&((<Status>arg).ob_mpi)
 *     elif isinstance(arg, Datatype):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":392
 *     if isinstance(arg, Status):
 *         return <Py_uintptr_t>&((<Status>arg).ob_mpi)
 *     elif isinstance(arg, Datatype):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Datatype>arg).ob_mpi)
 *     elif isinstance(arg, Request):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Datatype); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":393
 *         return <Py_uintptr_t>&((<Status>arg).ob_mpi)
 *     elif isinstance(arg, Datatype):
 *         return <Py_uintptr_t>((<Datatype>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Request):
 *         return <Py_uintptr_t>((<Request>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIDatatypeObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":392
 *     if isinstance(arg, Status):
 *         return <Py_uintptr_t>&((<Status>arg).ob_mpi)
 *     elif isinstance(arg, Datatype):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Datatype>arg).ob_mpi)
 *     elif isinstance(arg, Request):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":394
 *     elif isinstance(arg, Datatype):
 *         return <Py_uintptr_t>((<Datatype>arg).ob_mpi)
 *     elif isinstance(arg, Request):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Request>arg).ob_mpi)
 *     elif isinstance(arg, Message):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Request); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":395
 *         return <Py_uintptr_t>((<Datatype>arg).ob_mpi)
 *     elif isinstance(arg, Request):
 *         return <Py_uintptr_t>((<Request>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Message):
 *         return <Py_uintptr_t>((<Message>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIRequestObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":394
 *     elif isinstance(arg, Datatype):
 *         return <Py_uintptr_t>((<Datatype>arg).ob_mpi)
 *     elif isinstance(arg, Request):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Request>arg).ob_mpi)
 *     elif isinstance(arg, Message):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":396
 *     elif isinstance(arg, Request):
 *         return <Py_uintptr_t>((<Request>arg).ob_mpi)
 *     elif isinstance(arg, Message):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Message>arg).ob_mpi)
 *     elif isinstance(arg, Op):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Message); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":397
 *         return <Py_uintptr_t>((<Request>arg).ob_mpi)
 *     elif isinstance(arg, Message):
 *         return <Py_uintptr_t>((<Message>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Op):
 *         return <Py_uintptr_t>((<Op>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIMessageObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 397, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":396
 *     elif isinstance(arg, Request):
 *         return <Py_uintptr_t>((<Request>arg).ob_mpi)
 *     elif isinstance(arg, Message):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Message>arg).ob_mpi)
 *     elif isinstance(arg, Op):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":398
 *     elif isinstance(arg, Message):
 *         return <Py_uintptr_t>((<Message>arg).ob_mpi)
 *     elif isinstance(arg, Op):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Op>arg).ob_mpi)
 *     elif isinstance(arg, Group):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Op); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":399
 *         return <Py_uintptr_t>((<Message>arg).ob_mpi)
 *     elif isinstance(arg, Op):
 *         return <Py_uintptr_t>((<Op>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Group):
 *         return <Py_uintptr_t>((<Group>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIOpObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":398
 *     elif isinstance(arg, Message):
 *         return <Py_uintptr_t>((<Message>arg).ob_mpi)
 *     elif isinstance(arg, Op):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Op>arg).ob_mpi)
 *     elif isinstance(arg, Group):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":400
 *     elif isinstance(arg, Op):
 *         return <Py_uintptr_t>((<Op>arg).ob_mpi)
 *     elif isinstance(arg, Group):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Group>arg).ob_mpi)
 *     elif isinstance(arg, Info):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Group); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":401
 *         return <Py_uintptr_t>((<Op>arg).ob_mpi)
 *     elif isinstance(arg, Group):
 *         return <Py_uintptr_t>((<Group>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Info):
 *         return <Py_uintptr_t>((<Info>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIGroupObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":400
 *     elif isinstance(arg, Op):
 *         return <Py_uintptr_t>((<Op>arg).ob_mpi)
 *     elif isinstance(arg, Group):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Group>arg).ob_mpi)
 *     elif isinstance(arg, Info):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":402
 *     elif isinstance(arg, Group):
 *         return <Py_uintptr_t>((<Group>arg).ob_mpi)
 *     elif isinstance(arg, Info):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Info>arg).ob_mpi)
 *     elif isinstance(arg, Errhandler):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Info); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":403
 *         return <Py_uintptr_t>((<Group>arg).ob_mpi)
 *     elif isinstance(arg, Info):
 *         return <Py_uintptr_t>((<Info>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Errhandler):
 *         return <Py_uintptr_t>((<Errhandler>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIInfoObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":402
 *     elif isinstance(arg, Group):
 *         return <Py_uintptr_t>((<Group>arg).ob_mpi)
 *     elif isinstance(arg, Info):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Info>arg).ob_mpi)
 *     elif isinstance(arg, Errhandler):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":404
 *     elif isinstance(arg, Info):
 *         return <Py_uintptr_t>((<Info>arg).ob_mpi)
 *     elif isinstance(arg, Errhandler):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Errhandler>arg).ob_mpi)
 *     elif isinstance(arg, Session):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Errhandler); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":405
 *         return <Py_uintptr_t>((<Info>arg).ob_mpi)
 *     elif isinstance(arg, Errhandler):
 *         return <Py_uintptr_t>((<Errhandler>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Session):
 *         return <Py_uintptr_t>((<Session>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIErrhandlerObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":404
 *     elif isinstance(arg, Info):
 *         return <Py_uintptr_t>((<Info>arg).ob_mpi)
 *     elif isinstance(arg, Errhandler):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Errhandler>arg).ob_mpi)
 *     elif isinstance(arg, Session):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":406
 *     elif isinstance(arg, Errhandler):
 *         return <Py_uintptr_t>((<Errhandler>arg).ob_mpi)
 *     elif isinstance(arg, Session):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Session>arg).ob_mpi)
 *     elif isinstance(arg, Comm):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Session); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":407
 *         return <Py_uintptr_t>((<Errhandler>arg).ob_mpi)
 *     elif isinstance(arg, Session):
 *         return <Py_uintptr_t>((<Session>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Comm):
 *         return <Py_uintptr_t>((<Comm>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPISessionObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":406
 *     elif isinstance(arg, Errhandler):
 *         return <Py_uintptr_t>((<Errhandler>arg).ob_mpi)
 *     elif isinstance(arg, Session):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Session>arg).ob_mpi)
 *     elif isinstance(arg, Comm):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":408
 *     elif isinstance(arg, Session):
 *         return <Py_uintptr_t>((<Session>arg).ob_mpi)
 *     elif isinstance(arg, Comm):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Comm>arg).ob_mpi)
 *     elif isinstance(arg, Win):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Comm); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":409
 *         return <Py_uintptr_t>((<Session>arg).ob_mpi)
 *     elif isinstance(arg, Comm):
 *         return <Py_uintptr_t>((<Comm>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, Win):
 *         return <Py_uintptr_t>((<Win>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPICommObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":408
 *     elif isinstance(arg, Session):
 *         return <Py_uintptr_t>((<Session>arg).ob_mpi)
 *     elif isinstance(arg, Comm):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Comm>arg).ob_mpi)
 *     elif isinstance(arg, Win):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":410
 *     elif isinstance(arg, Comm):
 *         return <Py_uintptr_t>((<Comm>arg).ob_mpi)
 *     elif isinstance(arg, Win):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Win>arg).ob_mpi)
 *     elif isinstance(arg, File):
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_Win); 
  if (__pyx_t_1) {

    /* "src/mpi4py/MPI.src/MPI.pyx":411
 *         return <Py_uintptr_t>((<Comm>arg).ob_mpi)
 *     elif isinstance(arg, Win):
 *         return <Py_uintptr_t>((<Win>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     elif isinstance(arg, File):
 *         return <Py_uintptr_t>((<File>arg).ob_mpi)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIWinObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":410
 *     elif isinstance(arg, Comm):
 *         return <Py_uintptr_t>((<Comm>arg).ob_mpi)
 *     elif isinstance(arg, Win):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<Win>arg).ob_mpi)
 *     elif isinstance(arg, File):
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":412
 *     elif isinstance(arg, Win):
 *         return <Py_uintptr_t>((<Win>arg).ob_mpi)
 *     elif isinstance(arg, File):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<File>arg).ob_mpi)
 *     else:
 */
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_arg, __pyx_ptype_6mpi4py_3MPI_File); 
  if (likely(__pyx_t_1)) {

    /* "src/mpi4py/MPI.src/MPI.pyx":413
 *         return <Py_uintptr_t>((<Win>arg).ob_mpi)
 *     elif isinstance(arg, File):
 *         return <Py_uintptr_t>((<File>arg).ob_mpi)             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("expecting an MPI instance")
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_FromSize_t(((Py_uintptr_t)((struct PyMPIFileObject *)__pyx_v_arg)->ob_mpi)); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 413, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/mpi4py/MPI.src/MPI.pyx":412
 *     elif isinstance(arg, Win):
 *         return <Py_uintptr_t>((<Win>arg).ob_mpi)
 *     elif isinstance(arg, File):             # <<<<<<<<<<<<<<
 *         return <Py_uintptr_t>((<File>arg).ob_mpi)
 *     else:
 */
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":415
 *         return <Py_uintptr_t>((<File>arg).ob_mpi)
 *     else:
 *         raise TypeError("expecting an MPI instance")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__204, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(34, 415, __pyx_L1_error)
  }

  /* "src/mpi4py/MPI.src/MPI.pyx":386
 * 
 * 
 * def _handleof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Unsigned integer value with the underlying MPI handle.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("mpi4py.MPI._handleof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Datatype(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_8Datatype_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Datatype(PyObject *o) {
  struct PyMPIDatatypeObject *p = (struct PyMPIDatatypeObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Datatype) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_8Datatype_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_6handle_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_4size_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_extent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_6extent_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_lb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_2lb_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_ub(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_2ub_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_true_extent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_11true_extent_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_true_lb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_7true_lb_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_true_ub(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_7true_ub_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_envelope(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_8envelope_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_contents(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_8contents_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_combiner(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_8combiner_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_is_named(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_8is_named_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_is_predefined(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_13is_predefined_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_4name_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_8Datatype_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_8Datatype_4name_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_typestr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_7typestr_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Datatype_typechar(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Datatype_8typechar_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Datatype[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_12free},
  {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_15Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_14Get_size},
  {"Get_extent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_17Get_extent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_16Get_extent},
  {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_19Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_18Dup},
  {"Create_contiguous", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_21Create_contiguous, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_20Create_contiguous},
  {"Create_vector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_23Create_vector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_22Create_vector},
  {"Create_hvector", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_25Create_hvector, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_24Create_hvector},
  {"Create_indexed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_27Create_indexed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_26Create_indexed},
  {"Create_hindexed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_29Create_hindexed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_28Create_hindexed},
  {"Create_indexed_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_31Create_indexed_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_30Create_indexed_block},
  {"Create_hindexed_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_33Create_hindexed_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_32Create_hindexed_block},
  {"Create_struct", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_35Create_struct, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_34Create_struct},
  {"Create_subarray", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_37Create_subarray, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_36Create_subarray},
  {"Create_darray", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_39Create_darray, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_38Create_darray},
  {"Get_value_index", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_41Get_value_index, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_40Get_value_index},
  {"Create_f90_integer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_43Create_f90_integer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_42Create_f90_integer},
  {"Create_f90_real", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_45Create_f90_real, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_44Create_f90_real},
  {"Create_f90_complex", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_47Create_f90_complex, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_46Create_f90_complex},
  {"Match_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_49Match_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_48Match_size},
  {"Commit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_51Commit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_50Commit},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_53Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_52Free},
  {"Create_resized", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_55Create_resized, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_54Create_resized},
  {"Get_true_extent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_57Get_true_extent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_56Get_true_extent},
  {"Get_envelope", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_59Get_envelope, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_58Get_envelope},
  {"Get_contents", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_61Get_contents, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_60Get_contents},
  {"decode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_63decode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_62decode},
  {"Pack", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_65Pack, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_64Pack},
  {"Unpack", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_67Unpack, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_66Unpack},
  {"Pack_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_69Pack_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_68Pack_size},
  {"Pack_external", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_71Pack_external, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_70Pack_external},
  {"Unpack_external", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_73Unpack_external, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_72Unpack_external},
  {"Pack_external_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_75Pack_external_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_74Pack_external_size},
  {"Get_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_77Get_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_76Get_attr},
  {"Set_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_79Set_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_78Set_attr},
  {"Delete_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_81Delete_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_80Delete_attr},
  {"Create_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_83Create_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_82Create_keyval},
  {"Free_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_85Free_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_84Free_keyval},
  {"Get_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_87Get_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_86Get_name},
  {"Set_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_89Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_88Set_name},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_91py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_90py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_93f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_92f2py},
  {"tocode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_95tocode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_94tocode},
  {"fromcode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Datatype_97fromcode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Datatype_96fromcode},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Datatype[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_8Datatype_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_8Datatype_size, 0, (char *)PyDoc_STR("size: int\nSize (in bytes)."), 0},
  {(char *)"extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_extent, 0, (char *)PyDoc_STR("extent: int\nExtent."), 0},
  {(char *)"lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_lb, 0, (char *)PyDoc_STR("lb: int\nLower bound."), 0},
  {(char *)"ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_ub, 0, (char *)PyDoc_STR("ub: int\nUpper bound."), 0},
  {(char *)"true_extent", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_extent, 0, (char *)PyDoc_STR("true_extent: int\nTrue extent."), 0},
  {(char *)"true_lb", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_lb, 0, (char *)PyDoc_STR("true_lb: int\nTrue lower bound."), 0},
  {(char *)"true_ub", __pyx_getprop_6mpi4py_3MPI_8Datatype_true_ub, 0, (char *)PyDoc_STR("true_ub: int\nTrue upper bound."), 0},
  {(char *)"envelope", __pyx_getprop_6mpi4py_3MPI_8Datatype_envelope, 0, (char *)PyDoc_STR("envelope: tuple[int, int, int, int, int]\nEnvelope."), 0},
  {(char *)"contents", __pyx_getprop_6mpi4py_3MPI_8Datatype_contents, 0, (char *)PyDoc_STR("contents: tuple[list[int], list[int], list[int], list[Datatype]]\nContents."), 0},
  {(char *)"combiner", __pyx_getprop_6mpi4py_3MPI_8Datatype_combiner, 0, (char *)PyDoc_STR("combiner: int\nCombiner."), 0},
  {(char *)"is_named", __pyx_getprop_6mpi4py_3MPI_8Datatype_is_named, 0, (char *)PyDoc_STR("is_named: bool\nIs a named datatype."), 0},
  {(char *)"is_predefined", __pyx_getprop_6mpi4py_3MPI_8Datatype_is_predefined, 0, (char *)PyDoc_STR("is_predefined: bool\nIs a predefined datatype."), 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_8Datatype_name, __pyx_setprop_6mpi4py_3MPI_8Datatype_name, (char *)PyDoc_STR("name: str\nPrint name."), 0},
  {(char *)"typestr", __pyx_getprop_6mpi4py_3MPI_8Datatype_typestr, 0, (char *)PyDoc_STR("typestr: str\nType string."), 0},
  {(char *)"typechar", __pyx_getprop_6mpi4py_3MPI_8Datatype_typechar, 0, (char *)PyDoc_STR("typechar: str\nCharacter code."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIDatatype_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Datatype},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_8Datatype_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Datatype object.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_8Datatype_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Datatype},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Datatype},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Datatype},
  {0, 0},
};
static PyType_Spec PyMPIDatatype_Type_spec = {
  "mpi4py.MPI.Datatype",
  sizeof(struct PyMPIDatatypeObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIDatatype_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Datatype = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_8Datatype_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIDatatype_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Datatype", /*tp_name*/
  sizeof(struct PyMPIDatatypeObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Datatype, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Datatype, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Datatype object.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_8Datatype_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Datatype, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Datatype, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Datatype, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Status(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_6Status_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Status(PyObject *o) {
  struct PyMPIStatusObject *p = (struct PyMPIStatusObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Status) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_source(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6Status_6source_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_source(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6Status_6source_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6Status_3tag_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_tag(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6Status_3tag_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_error(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6Status_5error_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_error(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6Status_5error_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6Status_5count_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_count(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6Status_5count_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Status_cancelled(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6Status_9cancelled_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Status_cancelled(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6Status_9cancelled_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Status[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_5__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_4__reduce__},
  {"__getstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_7__getstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_6__getstate__},
  {"__setstate__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_9__setstate__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_8__setstate__},
  {"Get_source", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_11Get_source, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_10Get_source},
  {"Set_source", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_13Set_source, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_12Set_source},
  {"Get_tag", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_15Get_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_14Get_tag},
  {"Set_tag", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_17Set_tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_16Set_tag},
  {"Get_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_19Get_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_18Get_error},
  {"Set_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_21Set_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_20Set_error},
  {"Get_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_23Get_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_22Get_count},
  {"Get_elements", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_25Get_elements, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_24Get_elements},
  {"Set_elements", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_27Set_elements, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_26Set_elements},
  {"Is_cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_29Is_cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_28Is_cancelled},
  {"Set_cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_31Set_cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_30Set_cancelled},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_33py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_32py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Status_35f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Status_34f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Status[] = {
  {(char *)"source", __pyx_getprop_6mpi4py_3MPI_6Status_source, __pyx_setprop_6mpi4py_3MPI_6Status_source, (char *)PyDoc_STR("source: int\nMessage source."), 0},
  {(char *)"tag", __pyx_getprop_6mpi4py_3MPI_6Status_tag, __pyx_setprop_6mpi4py_3MPI_6Status_tag, (char *)PyDoc_STR("tag: int\nMessage tag."), 0},
  {(char *)"error", __pyx_getprop_6mpi4py_3MPI_6Status_error, __pyx_setprop_6mpi4py_3MPI_6Status_error, (char *)PyDoc_STR("error: int\nMessage error."), 0},
  {(char *)"count", __pyx_getprop_6mpi4py_3MPI_6Status_count, __pyx_setprop_6mpi4py_3MPI_6Status_count, (char *)PyDoc_STR("count: int\nByte count."), 0},
  {(char *)"cancelled", __pyx_getprop_6mpi4py_3MPI_6Status_cancelled, __pyx_setprop_6mpi4py_3MPI_6Status_cancelled, (char *)PyDoc_STR("cancelled: bool\nCancelled state."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIStatus_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Status},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Status object.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_6Status_3__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Status},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Status},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Status},
  {0, 0},
};
static PyType_Spec PyMPIStatus_Type_spec = {
  "mpi4py.MPI.Status",
  sizeof(struct PyMPIStatusObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIStatus_Type_slots,
};
#else

static PyTypeObject PyMPIStatus_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Status", /*tp_name*/
  sizeof(struct PyMPIStatusObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Status, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Status object.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_6Status_3__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Status, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Status, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Status, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Request(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct PyMPIRequestObject *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct PyMPIRequestObject *)o);
  p->ob_buf = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_7Request_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Request(PyObject *o) {
  struct PyMPIRequestObject *p = (struct PyMPIRequestObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Request) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_7Request_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->ob_buf);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Request(PyObject *o, visitproc v, void *a) {
  int e;
  struct PyMPIRequestObject *p = (struct PyMPIRequestObject *)o;
  if (p->ob_buf) {
    e = (*v)(p->ob_buf, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI_Request(PyObject *o) {
  PyObject* tmp;
  struct PyMPIRequestObject *p = (struct PyMPIRequestObject *)o;
  tmp = ((PyObject*)p->ob_buf);
  p->ob_buf = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_7Request_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_7Request_6handle_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Request[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_12free},
  {"Wait", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_15Wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_14Wait},
  {"Test", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_17Test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_16Test},
  {"Get_status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_19Get_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_18Get_status},
  {"Waitany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_21Waitany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_20Waitany},
  {"Testany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_23Testany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_22Testany},
  {"Get_status_any", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_25Get_status_any, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_24Get_status_any},
  {"Waitall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_27Waitall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_26Waitall},
  {"Testall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_29Testall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_28Testall},
  {"Get_status_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_31Get_status_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_30Get_status_all},
  {"Waitsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_33Waitsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_32Waitsome},
  {"Testsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_35Testsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_34Testsome},
  {"Get_status_some", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_37Get_status_some, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_36Get_status_some},
  {"Cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_39Cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_38Cancel},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_41Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_40Free},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_43py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_42py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_45f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_44f2py},
  {"wait", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_47wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_46wait},
  {"test", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_49test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_48test},
  {"get_status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_51get_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_50get_status},
  {"waitany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_53waitany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_52waitany},
  {"testany", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_55testany, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_54testany},
  {"get_status_any", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_57get_status_any, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_56get_status_any},
  {"waitall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_59waitall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_58waitall},
  {"testall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_61testall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_60testall},
  {"get_status_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_63get_status_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_62get_status_all},
  {"waitsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_65waitsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_64waitsome},
  {"testsome", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_67testsome, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_66testsome},
  {"get_status_some", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_69get_status_some, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_68get_status_some},
  {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Request_71cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Request_70cancel},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Request[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_7Request_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIRequest_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Request},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_7Request_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Request handler.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI_Request},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI_Request},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_7Request_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Request},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Request},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Request},
  {0, 0},
};
static PyType_Spec PyMPIRequest_Type_spec = {
  "mpi4py.MPI.Request",
  sizeof(struct PyMPIRequestObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  PyMPIRequest_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Request = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_7Request_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIRequest_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Request", /*tp_name*/
  sizeof(struct PyMPIRequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Request, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Request handler.\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Request, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Request, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_7Request_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Request, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Request, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Request, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Prequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Request(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_8Prequest_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Prequest[] = {
  {"Start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_3Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_2Start},
  {"Startall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_5Startall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_4Startall},
  {"Pready", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_7Pready, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_6Pready},
  {"Pready_range", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_9Pready_range, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_8Pready_range},
  {"Pready_list", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_11Pready_list, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_10Pready_list},
  {"Parrived", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Prequest_13Parrived, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Prequest_12Parrived},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIPrequest_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    Persistent request handler.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI_Request},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI_Request},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Prequest},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Prequest},
  {0, 0},
};
static PyType_Spec PyMPIPrequest_Type_spec = {
  "mpi4py.MPI.Prequest",
  sizeof(struct PyMPIPrequestObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  PyMPIPrequest_Type_slots,
};
#else

static PyTypeObject PyMPIPrequest_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Prequest", /*tp_name*/
  sizeof(struct PyMPIPrequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Persistent request handler.\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Request, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Request, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Prequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Prequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Grequest(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Request(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_8Grequest_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Grequest[] = {
  {"Start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_3Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_2Start},
  {"Complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_5Complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_4Complete},
  {"complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Grequest_7complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Grequest_6complete},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIGrequest_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    Generalized request handler.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI_Request},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI_Request},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Grequest},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Grequest},
  {0, 0},
};
static PyType_Spec PyMPIGrequest_Type_spec = {
  "mpi4py.MPI.Grequest",
  sizeof(struct PyMPIGrequestObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  PyMPIGrequest_Type_slots,
};
#else

static PyTypeObject PyMPIGrequest_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Grequest", /*tp_name*/
  sizeof(struct PyMPIGrequestObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Request, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Generalized request handler.\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Request, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Request, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Grequest, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Grequest, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Message(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct PyMPIMessageObject *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct PyMPIMessageObject *)o);
  p->ob_buf = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_7Message_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Message(PyObject *o) {
  struct PyMPIMessageObject *p = (struct PyMPIMessageObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Message) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_7Message_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->ob_buf);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Message(PyObject *o, visitproc v, void *a) {
  int e;
  struct PyMPIMessageObject *p = (struct PyMPIMessageObject *)o;
  if (p->ob_buf) {
    e = (*v)(p->ob_buf, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI_Message(PyObject *o) {
  PyObject* tmp;
  struct PyMPIMessageObject *p = (struct PyMPIMessageObject *)o;
  tmp = ((PyObject*)p->ob_buf);
  p->ob_buf = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_7Message_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_7Message_6handle_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Message[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_12free},
  {"Probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_15Probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_14Probe},
  {"Iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_17Iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_16Iprobe},
  {"Recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_19Recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_18Recv},
  {"Irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_21Irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_20Irecv},
  {"probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_23probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_22probe},
  {"iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_25iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_24iprobe},
  {"recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_27recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_26recv},
  {"irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_29irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_28irecv},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_31py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_30py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Message_33f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Message_32f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Message[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_7Message_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIMessage_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Message},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_7Message_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Matched message.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI_Message},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI_Message},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_7Message_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Message},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Message},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Message},
  {0, 0},
};
static PyType_Spec PyMPIMessage_Type_spec = {
  "mpi4py.MPI.Message",
  sizeof(struct PyMPIMessageObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  PyMPIMessage_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Message = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_7Message_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIMessage_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Message", /*tp_name*/
  sizeof(struct PyMPIMessageObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Message, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Message, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Matched message.\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Message, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Message, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_7Message_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Message, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Message, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Message, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Op(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_2Op_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Op(PyObject *o) {
  struct PyMPIOpObject *p = (struct PyMPIOpObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Op) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_2Op_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_2Op_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_2Op_6handle_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_2Op_is_commutative(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_2Op_14is_commutative_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_2Op_is_predefined(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_2Op_13is_predefined_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Op[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_13fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_12fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_15free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_14free},
  {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_17Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_16Create},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_19Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_18Free},
  {"Is_commutative", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_21Is_commutative, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_20Is_commutative},
  {"Reduce_local", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_23Reduce_local, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_22Reduce_local},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_25py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_24py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_2Op_27f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_2Op_26f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Op[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_2Op_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {(char *)"is_commutative", __pyx_getprop_6mpi4py_3MPI_2Op_is_commutative, 0, (char *)PyDoc_STR("is_commutative: bool\nIs a commutative operation."), 0},
  {(char *)"is_predefined", __pyx_getprop_6mpi4py_3MPI_2Op_is_predefined, 0, (char *)PyDoc_STR("is_predefined: bool\nIs a predefined operation."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIOp_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Op},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_2Op_7__bool__},
  {Py_tp_call, (void *)__pyx_pw_6mpi4py_3MPI_2Op_11__call__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Reduction operation.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_2Op_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Op},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Op},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Op},
  {0, 0},
};
static PyType_Spec PyMPIOp_Type_spec = {
  "mpi4py.MPI.Op",
  sizeof(struct PyMPIOpObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIOp_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Op = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_2Op_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIOp_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Op", /*tp_name*/
  sizeof(struct PyMPIOpObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Op, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Op, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  __pyx_pw_6mpi4py_3MPI_2Op_11__call__, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Reduction operation.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_2Op_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Op, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Op, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Op, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Group(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_5Group_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Group(PyObject *o) {
  struct PyMPIGroupObject *p = (struct PyMPIGroupObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Group) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_5Group_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_5Group_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_5Group_6handle_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_5Group_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_5Group_4size_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_5Group_rank(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_5Group_4rank_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Group[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_12free},
  {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_15Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_14Get_size},
  {"Get_rank", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_17Get_rank, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_16Get_rank},
  {"Translate_ranks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_19Translate_ranks, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_18Translate_ranks},
  {"Compare", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_21Compare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_20Compare},
  {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_23Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_22Dup},
  {"Union", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_25Union, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_24Union},
  {"Intersection", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_27Intersection, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_26Intersection},
  {"Difference", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_29Difference, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_28Difference},
  {"Incl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_31Incl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_30Incl},
  {"Excl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_33Excl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_32Excl},
  {"Range_incl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_35Range_incl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_34Range_incl},
  {"Range_excl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_37Range_excl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_36Range_excl},
  {"Create_from_session_pset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_39Create_from_session_pset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_38Create_from_session_pset},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_41Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_40Free},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_43py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_42py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_5Group_45f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_5Group_44f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Group[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_5Group_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_5Group_size, 0, (char *)PyDoc_STR("size: int\nNumber of processes."), 0},
  {(char *)"rank", __pyx_getprop_6mpi4py_3MPI_5Group_rank, 0, (char *)PyDoc_STR("rank: int\nRank of this process."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIGroup_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Group},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_5Group_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Group of processes.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_5Group_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Group},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Group},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Group},
  {0, 0},
};
static PyType_Spec PyMPIGroup_Type_spec = {
  "mpi4py.MPI.Group",
  sizeof(struct PyMPIGroupObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIGroup_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Group = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_5Group_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIGroup_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Group", /*tp_name*/
  sizeof(struct PyMPIGroupObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Group, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Group, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Group of processes.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_5Group_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Group, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Group, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Group, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Info(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_4Info_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Info(PyObject *o) {
  struct PyMPIInfoObject *p = (struct PyMPIInfoObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Info) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_4Info_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}
static PyObject *__pyx_sq_item_6mpi4py_3MPI_Info(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_6mpi4py_3MPI_Info(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_4Info_45__setitem__(o, i, v);
  }
  else {
    return __pyx_pw_6mpi4py_3MPI_4Info_47__delitem__(o, i);
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Info_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Info_6handle_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Info[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_12free},
  {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_15Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_14Create},
  {"Create_env", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_17Create_env, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_16Create_env},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_19Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_18Free},
  {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_21Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_20Dup},
  {"Get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_23Get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_22Get},
  {"Set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_25Set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_24Set},
  {"Delete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_27Delete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_26Delete},
  {"Get_nkeys", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_29Get_nkeys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_28Get_nkeys},
  {"Get_nthkey", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_31Get_nthkey, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_30Get_nthkey},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_33py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_32py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_35f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_34f2py},
  {"get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_49get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_48get},
  {"keys", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_51keys, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_50keys},
  {"values", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_53values, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_52values},
  {"items", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_55items, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_54items},
  {"update", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_57update, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_56update},
  {"pop", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_59pop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_58pop},
  {"popitem", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_61popitem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_60popitem},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_63copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_62copy},
  {"clear", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Info_65clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Info_64clear},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Info[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_4Info_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIInfo_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Info},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_4Info_7__bool__},
  {Py_sq_length, (void *)__pyx_pw_6mpi4py_3MPI_4Info_37__len__},
  {Py_sq_item, (void *)__pyx_sq_item_6mpi4py_3MPI_Info},
  {Py_sq_contains, (void *)__pyx_pw_6mpi4py_3MPI_4Info_39__contains__},
  {Py_mp_length, (void *)__pyx_pw_6mpi4py_3MPI_4Info_37__len__},
  {Py_mp_subscript, (void *)__pyx_pw_6mpi4py_3MPI_4Info_43__getitem__},
  {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_6mpi4py_3MPI_Info},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Info object.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_4Info_5__richcmp__},
  {Py_tp_iter, (void *)__pyx_pw_6mpi4py_3MPI_4Info_41__iter__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Info},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Info},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Info},
  {0, 0},
};
static PyType_Spec PyMPIInfo_Type_spec = {
  "mpi4py.MPI.Info",
  sizeof(struct PyMPIInfoObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIInfo_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Info = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_4Info_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Info = {
  __pyx_pw_6mpi4py_3MPI_4Info_37__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_6mpi4py_3MPI_Info, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  __pyx_pw_6mpi4py_3MPI_4Info_39__contains__, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Info = {
  __pyx_pw_6mpi4py_3MPI_4Info_37__len__, /*mp_length*/
  __pyx_pw_6mpi4py_3MPI_4Info_43__getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_6mpi4py_3MPI_Info, /*mp_ass_subscript*/
};

static PyTypeObject PyMPIInfo_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Info", /*tp_name*/
  sizeof(struct PyMPIInfoObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Info, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Info, /*tp_as_number*/
  &__pyx_tp_as_sequence_Info, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Info, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Info object.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_4Info_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_6mpi4py_3MPI_4Info_41__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Info, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Info, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Info, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Errhandler(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_10Errhandler_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Errhandler(PyObject *o) {
  struct PyMPIErrhandlerObject *p = (struct PyMPIErrhandlerObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Errhandler) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_10Errhandler_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_10Errhandler_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_10Errhandler_6handle_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Errhandler[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_12free},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_15Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_14Free},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_17py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_16py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10Errhandler_19f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10Errhandler_18f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Errhandler[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_10Errhandler_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIErrhandler_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Errhandler},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_10Errhandler_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Error handler.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_10Errhandler_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Errhandler},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Errhandler},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Errhandler},
  {0, 0},
};
static PyType_Spec PyMPIErrhandler_Type_spec = {
  "mpi4py.MPI.Errhandler",
  sizeof(struct PyMPIErrhandlerObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIErrhandler_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Errhandler = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_10Errhandler_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIErrhandler_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Errhandler", /*tp_name*/
  sizeof(struct PyMPIErrhandlerObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Errhandler, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Errhandler, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Error handler.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_10Errhandler_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Errhandler, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Errhandler, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Errhandler, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Session(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_7Session_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Session(PyObject *o) {
  struct PyMPISessionObject *p = (struct PyMPISessionObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Session) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_7Session_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_7Session_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_7Session_6handle_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Session[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_12free},
  {"Init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_15Init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_14Init},
  {"Finalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_17Finalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_16Finalize},
  {"Get_num_psets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_19Get_num_psets, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_18Get_num_psets},
  {"Get_nth_pset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_21Get_nth_pset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_20Get_nth_pset},
  {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_23Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_22Get_info},
  {"Get_pset_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_25Get_pset_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_24Get_pset_info},
  {"Create_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_27Create_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_26Create_group},
  {"Attach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_29Attach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_28Attach_buffer},
  {"Detach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_31Detach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_30Detach_buffer},
  {"Flush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_33Flush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_32Flush_buffer},
  {"Iflush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_35Iflush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_34Iflush_buffer},
  {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_37Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_36Create_errhandler},
  {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_39Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_38Get_errhandler},
  {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_41Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_40Set_errhandler},
  {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_43Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_42Call_errhandler},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_45py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_44py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_7Session_47f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_7Session_46f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Session[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_7Session_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPISession_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Session},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_7Session_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Session context.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_7Session_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Session},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Session},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Session},
  {0, 0},
};
static PyType_Spec PyMPISession_Type_spec = {
  "mpi4py.MPI.Session",
  sizeof(struct PyMPISessionObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPISession_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Session = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_7Session_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPISession_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Session", /*tp_name*/
  sizeof(struct PyMPISessionObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Session, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Session, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Session context.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_7Session_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Session, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Session, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Session, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Comm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_4Comm_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Comm(PyObject *o) {
  struct PyMPICommObject *p = (struct PyMPICommObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Comm) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_4Comm_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_6handle_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_group(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_5group_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_4size_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_rank(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_4rank_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_info(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_4info_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_4Comm_info(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_4Comm_4info_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_is_inter(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_8is_inter_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_is_intra(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_8is_intra_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_topology(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_8topology_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_is_topo(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_7is_topo_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4Comm_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4Comm_4name_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_4Comm_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_4Comm_4name_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Comm[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_12free},
  {"Get_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_15Get_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_14Get_group},
  {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_17Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_16Get_size},
  {"Get_rank", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_19Get_rank, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_18Get_rank},
  {"Compare", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_21Compare, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_20Compare},
  {"Clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_23Clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_22Clone},
  {"Dup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_25Dup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_24Dup},
  {"Dup_with_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_27Dup_with_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_26Dup_with_info},
  {"Idup", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_29Idup, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_28Idup},
  {"Idup_with_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_31Idup_with_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_30Idup_with_info},
  {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_33Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_32Create},
  {"Split", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_35Split, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_34Split},
  {"Split_type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_37Split_type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_36Split_type},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_39Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_38Free},
  {"Revoke", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_41Revoke, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_40Revoke},
  {"Is_revoked", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_43Is_revoked, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_42Is_revoked},
  {"Get_failed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_45Get_failed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_44Get_failed},
  {"Ack_failed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_47Ack_failed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_46Ack_failed},
  {"Agree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_49Agree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_48Agree},
  {"Iagree", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_51Iagree, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_50Iagree},
  {"Shrink", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_53Shrink, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_52Shrink},
  {"Ishrink", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_55Ishrink, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_54Ishrink},
  {"Set_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_57Set_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_56Set_info},
  {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_59Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_58Get_info},
  {"Attach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_61Attach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_60Attach_buffer},
  {"Detach_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_63Detach_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_62Detach_buffer},
  {"Flush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_65Flush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_64Flush_buffer},
  {"Iflush_buffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_67Iflush_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_66Iflush_buffer},
  {"Send", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_69Send, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_68Send},
  {"Recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_71Recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_70Recv},
  {"Sendrecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_73Sendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_72Sendrecv},
  {"Sendrecv_replace", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_75Sendrecv_replace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_74Sendrecv_replace},
  {"Isend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_77Isend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_76Isend},
  {"Irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_79Irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_78Irecv},
  {"Isendrecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_81Isendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_80Isendrecv},
  {"Isendrecv_replace", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_83Isendrecv_replace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_82Isendrecv_replace},
  {"Probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_85Probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_84Probe},
  {"Iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_87Iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_86Iprobe},
  {"Mprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_89Mprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_88Mprobe},
  {"Improbe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_91Improbe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_90Improbe},
  {"Send_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_93Send_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_92Send_init},
  {"Recv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_95Recv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_94Recv_init},
  {"Psend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_97Psend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_96Psend_init},
  {"Precv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_99Precv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_98Precv_init},
  {"Bsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_101Bsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_100Bsend},
  {"Ssend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_103Ssend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_102Ssend},
  {"Rsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_105Rsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_104Rsend},
  {"Ibsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_107Ibsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_106Ibsend},
  {"Issend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_109Issend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_108Issend},
  {"Irsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_111Irsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_110Irsend},
  {"Bsend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_113Bsend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_112Bsend_init},
  {"Ssend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_115Ssend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_114Ssend_init},
  {"Rsend_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_117Rsend_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_116Rsend_init},
  {"Barrier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_119Barrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_118Barrier},
  {"Bcast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_121Bcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_120Bcast},
  {"Gather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_123Gather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_122Gather},
  {"Gatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_125Gatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_124Gatherv},
  {"Scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_127Scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_126Scatter},
  {"Scatterv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_129Scatterv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_128Scatterv},
  {"Allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_131Allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_130Allgather},
  {"Allgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_133Allgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_132Allgatherv},
  {"Alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_135Alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_134Alltoall},
  {"Alltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_137Alltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_136Alltoallv},
  {"Alltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_139Alltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_138Alltoallw},
  {"Reduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_141Reduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_140Reduce},
  {"Allreduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_143Allreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_142Allreduce},
  {"Reduce_scatter_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_145Reduce_scatter_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_144Reduce_scatter_block},
  {"Reduce_scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_147Reduce_scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_146Reduce_scatter},
  {"Ibarrier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_149Ibarrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_148Ibarrier},
  {"Ibcast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_151Ibcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_150Ibcast},
  {"Igather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_153Igather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_152Igather},
  {"Igatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_155Igatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_154Igatherv},
  {"Iscatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_157Iscatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_156Iscatter},
  {"Iscatterv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_159Iscatterv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_158Iscatterv},
  {"Iallgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_161Iallgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_160Iallgather},
  {"Iallgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_163Iallgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_162Iallgatherv},
  {"Ialltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_165Ialltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_164Ialltoall},
  {"Ialltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_167Ialltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_166Ialltoallv},
  {"Ialltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_169Ialltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_168Ialltoallw},
  {"Ireduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_171Ireduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_170Ireduce},
  {"Iallreduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_173Iallreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_172Iallreduce},
  {"Ireduce_scatter_block", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_174Ireduce_scatter_block},
  {"Ireduce_scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_177Ireduce_scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_176Ireduce_scatter},
  {"Barrier_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_179Barrier_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_178Barrier_init},
  {"Bcast_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_181Bcast_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_180Bcast_init},
  {"Gather_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_183Gather_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_182Gather_init},
  {"Gatherv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_185Gatherv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_184Gatherv_init},
  {"Scatter_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_187Scatter_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_186Scatter_init},
  {"Scatterv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_189Scatterv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_188Scatterv_init},
  {"Allgather_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_191Allgather_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_190Allgather_init},
  {"Allgatherv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_193Allgatherv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_192Allgatherv_init},
  {"Alltoall_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_195Alltoall_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_194Alltoall_init},
  {"Alltoallv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_197Alltoallv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_196Alltoallv_init},
  {"Alltoallw_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_199Alltoallw_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_198Alltoallw_init},
  {"Reduce_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_201Reduce_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_200Reduce_init},
  {"Allreduce_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_203Allreduce_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_202Allreduce_init},
  {"Reduce_scatter_block_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_204Reduce_scatter_block_init},
  {"Reduce_scatter_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_207Reduce_scatter_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_206Reduce_scatter_init},
  {"Is_inter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_209Is_inter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_208Is_inter},
  {"Is_intra", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_211Is_intra, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_210Is_intra},
  {"Get_topology", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_213Get_topology, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_212Get_topology},
  {"Get_parent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_215Get_parent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_214Get_parent},
  {"Disconnect", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_217Disconnect, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_216Disconnect},
  {"Join", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_219Join, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_218Join},
  {"Get_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_221Get_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_220Get_attr},
  {"Set_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_223Set_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_222Set_attr},
  {"Delete_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_225Delete_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_224Delete_attr},
  {"Create_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_227Create_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_226Create_keyval},
  {"Free_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_229Free_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_228Free_keyval},
  {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_231Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_230Create_errhandler},
  {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_233Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_232Get_errhandler},
  {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_235Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_234Set_errhandler},
  {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_237Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_236Call_errhandler},
  {"Abort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_239Abort, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_238Abort},
  {"Get_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_241Get_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_240Get_name},
  {"Set_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_243Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_242Set_name},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_245py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_244py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_247f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_246f2py},
  {"send", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_249send, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_248send},
  {"bsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_251bsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_250bsend},
  {"ssend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_253ssend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_252ssend},
  {"recv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_255recv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_254recv},
  {"sendrecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_257sendrecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_256sendrecv},
  {"isend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_259isend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_258isend},
  {"ibsend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_261ibsend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_260ibsend},
  {"issend", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_263issend, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_262issend},
  {"irecv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_265irecv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_264irecv},
  {"probe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_267probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_266probe},
  {"iprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_269iprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_268iprobe},
  {"mprobe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_271mprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_270mprobe},
  {"improbe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_273improbe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_272improbe},
  {"barrier", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_275barrier, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_274barrier},
  {"bcast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_277bcast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_276bcast},
  {"gather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_279gather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_278gather},
  {"scatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_281scatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_280scatter},
  {"allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_283allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_282allgather},
  {"alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_285alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_284alltoall},
  {"reduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_287reduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_286reduce},
  {"allreduce", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4Comm_289allreduce, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4Comm_288allreduce},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Comm[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_4Comm_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_4Comm_group, 0, (char *)PyDoc_STR("group: Group\nGroup."), 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_4Comm_size, 0, (char *)PyDoc_STR("size: int\nNumber of processes."), 0},
  {(char *)"rank", __pyx_getprop_6mpi4py_3MPI_4Comm_rank, 0, (char *)PyDoc_STR("rank: int\nRank of this process."), 0},
  {(char *)"info", __pyx_getprop_6mpi4py_3MPI_4Comm_info, __pyx_setprop_6mpi4py_3MPI_4Comm_info, (char *)PyDoc_STR("info: Info\nInfo hints."), 0},
  {(char *)"is_inter", __pyx_getprop_6mpi4py_3MPI_4Comm_is_inter, 0, (char *)PyDoc_STR("is_inter: bool\nIs intercommunicator."), 0},
  {(char *)"is_intra", __pyx_getprop_6mpi4py_3MPI_4Comm_is_intra, 0, (char *)PyDoc_STR("is_intra: bool\nIs intracommunicator."), 0},
  {(char *)"topology", __pyx_getprop_6mpi4py_3MPI_4Comm_topology, 0, (char *)PyDoc_STR("topology: int\nTopology type."), 0},
  {(char *)"is_topo", __pyx_getprop_6mpi4py_3MPI_4Comm_is_topo, 0, (char *)PyDoc_STR("is_topo: bool\nIs a topology."), 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_4Comm_name, __pyx_setprop_6mpi4py_3MPI_4Comm_name, (char *)PyDoc_STR("name: str\nPrint name."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIComm_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Comm},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_4Comm_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Communication context.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_4Comm_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Comm},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Comm},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Comm},
  {0, 0},
};
static PyType_Spec PyMPIComm_Type_spec = {
  "mpi4py.MPI.Comm",
  sizeof(struct PyMPICommObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIComm_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Comm = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_4Comm_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIComm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Comm", /*tp_name*/
  sizeof(struct PyMPICommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Comm, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Communication context.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_4Comm_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Comm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Comm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Comm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intracomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Comm(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_9Intracomm_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Intracomm[] = {
  {"Create_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_3Create_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_2Create_group},
  {"Create_from_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_5Create_from_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_4Create_from_group},
  {"Create_cart", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_7Create_cart, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_6Create_cart},
  {"Create_graph", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_9Create_graph, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_8Create_graph},
  {"Create_dist_graph_adjacent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_10Create_dist_graph_adjacent},
  {"Create_dist_graph", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_13Create_dist_graph, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_12Create_dist_graph},
  {"Create_intercomm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_15Create_intercomm, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_14Create_intercomm},
  {"Cart_map", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_17Cart_map, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_16Cart_map},
  {"Graph_map", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_19Graph_map, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_18Graph_map},
  {"Scan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_21Scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_20Scan},
  {"Exscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_23Exscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_22Exscan},
  {"Iscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_25Iscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_24Iscan},
  {"Iexscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_27Iexscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_26Iexscan},
  {"Scan_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_29Scan_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_28Scan_init},
  {"Exscan_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_31Exscan_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_30Exscan_init},
  {"scan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_33scan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_32scan},
  {"exscan", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_35exscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_34exscan},
  {"Spawn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_37Spawn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_36Spawn},
  {"Spawn_multiple", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_39Spawn_multiple, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_38Spawn_multiple},
  {"Accept", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_41Accept, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_40Accept},
  {"Connect", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intracomm_43Connect, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intracomm_42Connect},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIIntracomm_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    Intracommunicator.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Intracomm},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Intracomm},
  {0, 0},
};
static PyType_Spec PyMPIIntracomm_Type_spec = {
  "mpi4py.MPI.Intracomm",
  sizeof(struct PyMPIIntracommObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIIntracomm_Type_slots,
};
#else

static PyTypeObject PyMPIIntracomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Intracomm", /*tp_name*/
  sizeof(struct PyMPIIntracommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Intracommunicator.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Intracomm, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Intracomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Topocomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Intracomm(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_8Topocomm_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Topocomm_degrees(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Topocomm_7degrees_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Topocomm_indegree(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Topocomm_8indegree_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Topocomm_outdegree(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Topocomm_9outdegree_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Topocomm_inoutedges(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Topocomm_10inoutedges_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Topocomm_inedges(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Topocomm_7inedges_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Topocomm_outedges(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Topocomm_8outedges_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Topocomm[] = {
  {"Neighbor_allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_2Neighbor_allgather},
  {"Neighbor_allgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_4Neighbor_allgatherv},
  {"Neighbor_alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_6Neighbor_alltoall},
  {"Neighbor_alltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_8Neighbor_alltoallv},
  {"Neighbor_alltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_10Neighbor_alltoallw},
  {"Ineighbor_allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_12Ineighbor_allgather},
  {"Ineighbor_allgatherv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_14Ineighbor_allgatherv},
  {"Ineighbor_alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_16Ineighbor_alltoall},
  {"Ineighbor_alltoallv", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_18Ineighbor_alltoallv},
  {"Ineighbor_alltoallw", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_20Ineighbor_alltoallw},
  {"Neighbor_allgather_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_22Neighbor_allgather_init},
  {"Neighbor_allgatherv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_24Neighbor_allgatherv_init},
  {"Neighbor_alltoall_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_26Neighbor_alltoall_init},
  {"Neighbor_alltoallv_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_28Neighbor_alltoallv_init},
  {"Neighbor_alltoallw_init", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_30Neighbor_alltoallw_init},
  {"neighbor_allgather", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_33neighbor_allgather, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_32neighbor_allgather},
  {"neighbor_alltoall", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Topocomm_34neighbor_alltoall},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Topocomm[] = {
  {(char *)"degrees", __pyx_getprop_6mpi4py_3MPI_8Topocomm_degrees, 0, (char *)PyDoc_STR("degrees: tuple[int, int]\nNumber of incoming and outgoing neighbors."), 0},
  {(char *)"indegree", __pyx_getprop_6mpi4py_3MPI_8Topocomm_indegree, 0, (char *)PyDoc_STR("indegree: int\nNumber of incoming neighbors."), 0},
  {(char *)"outdegree", __pyx_getprop_6mpi4py_3MPI_8Topocomm_outdegree, 0, (char *)PyDoc_STR("outdegree: int\nNumber of outgoing neighbors."), 0},
  {(char *)"inoutedges", __pyx_getprop_6mpi4py_3MPI_8Topocomm_inoutedges, 0, (char *)PyDoc_STR("inoutedges: tuple[list[int], list[int]]\nIncoming and outgoing neighbors."), 0},
  {(char *)"inedges", __pyx_getprop_6mpi4py_3MPI_8Topocomm_inedges, 0, (char *)PyDoc_STR("inedges: list[int]\nIncoming neighbors."), 0},
  {(char *)"outedges", __pyx_getprop_6mpi4py_3MPI_8Topocomm_outedges, 0, (char *)PyDoc_STR("outedges: list[int]\nOutgoing neighbors."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPITopocomm_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    Topology intracommunicator.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Topocomm},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Topocomm},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Topocomm},
  {0, 0},
};
static PyType_Spec PyMPITopocomm_Type_spec = {
  "mpi4py.MPI.Topocomm",
  sizeof(struct PyMPITopocommObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPITopocomm_Type_slots,
};
#else

static PyTypeObject PyMPITopocomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Topocomm", /*tp_name*/
  sizeof(struct PyMPITopocommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Topology intracommunicator.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Topocomm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Topocomm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Topocomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Cartcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Topocomm(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_8Cartcomm_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_dim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Cartcomm_3dim_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_ndim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Cartcomm_4ndim_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_topo(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Cartcomm_4topo_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_dims(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Cartcomm_4dims_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_periods(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Cartcomm_7periods_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_8Cartcomm_coords(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_8Cartcomm_6coords_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Cartcomm[] = {
  {"Get_dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_3Get_dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_2Get_dim},
  {"Get_topo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_5Get_topo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_4Get_topo},
  {"Get_cart_rank", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_6Get_cart_rank},
  {"Get_coords", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_9Get_coords, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_8Get_coords},
  {"Shift", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_11Shift, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_10Shift},
  {"Sub", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_8Cartcomm_13Sub, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_8Cartcomm_12Sub},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Cartcomm[] = {
  {(char *)"dim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dim, 0, (char *)PyDoc_STR("dim: int\nNumber of dimensions."), 0},
  {(char *)"ndim", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_ndim, 0, (char *)PyDoc_STR("ndim: int\nNumber of dimensions."), 0},
  {(char *)"topo", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_topo, 0, (char *)PyDoc_STR("topo: tuple[list[int], list[int], list[int]]\nTopology information."), 0},
  {(char *)"dims", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_dims, 0, (char *)PyDoc_STR("dims: list[int]\nDimensions."), 0},
  {(char *)"periods", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_periods, 0, (char *)PyDoc_STR("periods: list[int]\nPeriodicity."), 0},
  {(char *)"coords", __pyx_getprop_6mpi4py_3MPI_8Cartcomm_coords, 0, (char *)PyDoc_STR("coords: list[int]\nCoordinates."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPICartcomm_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    Cartesian topology intracommunicator.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Cartcomm},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Cartcomm},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Cartcomm},
  {0, 0},
};
static PyType_Spec PyMPICartcomm_Type_spec = {
  "mpi4py.MPI.Cartcomm",
  sizeof(struct PyMPICartcommObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPICartcomm_Type_slots,
};
#else

static PyTypeObject PyMPICartcomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Cartcomm", /*tp_name*/
  sizeof(struct PyMPICartcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Cartesian topology intracommunicator.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Cartcomm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Cartcomm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Cartcomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Graphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Topocomm(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_9Graphcomm_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_dims(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_4dims_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_nnodes(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_6nnodes_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_nedges(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_6nedges_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_topo(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_4topo_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_index(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_5index_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_edges(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_5edges_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_nneighbors(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_10nneighbors_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Graphcomm_neighbors(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Graphcomm_9neighbors_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Graphcomm[] = {
  {"Get_dims", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_3Get_dims, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_2Get_dims},
  {"Get_topo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_5Get_topo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_4Get_topo},
  {"Get_neighbors_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_6Get_neighbors_count},
  {"Get_neighbors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Graphcomm_9Get_neighbors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Graphcomm_8Get_neighbors},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Graphcomm[] = {
  {(char *)"dims", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_dims, 0, (char *)PyDoc_STR("dims: tuple[int, int]\nNumber of nodes and edges."), 0},
  {(char *)"nnodes", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nnodes, 0, (char *)PyDoc_STR("nnodes: int\nNumber of nodes."), 0},
  {(char *)"nedges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nedges, 0, (char *)PyDoc_STR("nedges: int\nNumber of edges."), 0},
  {(char *)"topo", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_topo, 0, (char *)PyDoc_STR("topo: tuple[list[int], list[int]]\nTopology information."), 0},
  {(char *)"index", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_index, 0, (char *)PyDoc_STR("index: list[int]\nIndex."), 0},
  {(char *)"edges", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_edges, 0, (char *)PyDoc_STR("edges: list[int]\nEdges."), 0},
  {(char *)"nneighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_nneighbors, 0, (char *)PyDoc_STR("nneighbors: int\nNumber of neighbors."), 0},
  {(char *)"neighbors", __pyx_getprop_6mpi4py_3MPI_9Graphcomm_neighbors, 0, (char *)PyDoc_STR("neighbors: list[int]\nNeighbors."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIGraphcomm_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    General graph topology intracommunicator.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Graphcomm},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Graphcomm},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Graphcomm},
  {0, 0},
};
static PyType_Spec PyMPIGraphcomm_Type_spec = {
  "mpi4py.MPI.Graphcomm",
  sizeof(struct PyMPIGraphcommObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIGraphcomm_Type_slots,
};
#else

static PyTypeObject PyMPIGraphcomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Graphcomm", /*tp_name*/
  sizeof(struct PyMPIGraphcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    General graph topology intracommunicator.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Graphcomm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Graphcomm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Graphcomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Distgraphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Topocomm(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Distgraphcomm[] = {
  {"Get_dist_neighbors_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_13Distgraphcomm_2Get_dist_neighbors_count},
  {"Get_dist_neighbors", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_13Distgraphcomm_4Get_dist_neighbors},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIDistgraphcomm_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    Distributed graph topology intracommunicator.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Distgraphcomm},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Distgraphcomm},
  {0, 0},
};
static PyType_Spec PyMPIDistgraphcomm_Type_spec = {
  "mpi4py.MPI.Distgraphcomm",
  sizeof(struct PyMPIDistgraphcommObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIDistgraphcomm_Type_slots,
};
#else

static PyTypeObject PyMPIDistgraphcomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Distgraphcomm", /*tp_name*/
  sizeof(struct PyMPIDistgraphcommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Distributed graph topology intracommunicator.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Distgraphcomm, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Distgraphcomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intercomm(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_tp_new_6mpi4py_3MPI_Comm(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_9Intercomm_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_group(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Intercomm_12remote_group_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Intercomm_11remote_size_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Intercomm[] = {
  {"Create_from_groups", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_3Create_from_groups, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_2Create_from_groups},
  {"Get_remote_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_5Get_remote_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_4Get_remote_group},
  {"Get_remote_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_7Get_remote_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_6Get_remote_size},
  {"Merge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Intercomm_9Merge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Intercomm_8Merge},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Intercomm[] = {
  {(char *)"remote_group", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_group, 0, (char *)PyDoc_STR("remote_group: Group\nRemote group."), 0},
  {(char *)"remote_size", __pyx_getprop_6mpi4py_3MPI_9Intercomm_remote_size, 0, (char *)PyDoc_STR("remote_size: int\nNumber of remote processes."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIIntercomm_Type_slots[] = {
  {Py_tp_doc, (void *)PyDoc_STR("\n    Intercommunicator.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Intercomm},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Intercomm},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Intercomm},
  {0, 0},
};
static PyType_Spec PyMPIIntercomm_Type_spec = {
  "mpi4py.MPI.Intercomm",
  sizeof(struct PyMPIIntercommObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIIntercomm_Type_slots,
};
#else

static PyTypeObject PyMPIIntercomm_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Intercomm", /*tp_name*/
  sizeof(struct PyMPIIntercommObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Comm, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    Intercommunicator.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Intercomm, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Intercomm, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Intercomm, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Win(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct PyMPIWinObject *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct PyMPIWinObject *)o);
  p->ob_mem = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_3Win_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Win(PyObject *o) {
  struct PyMPIWinObject *p = (struct PyMPIWinObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Win) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_3Win_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->ob_mem);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Win(PyObject *o, visitproc v, void *a) {
  int e;
  struct PyMPIWinObject *p = (struct PyMPIWinObject *)o;
  if (p->ob_mem) {
    e = (*v)(p->ob_mem, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI_Win(PyObject *o) {
  PyObject* tmp;
  struct PyMPIWinObject *p = (struct PyMPIWinObject *)o;
  tmp = ((PyObject*)p->ob_mem);
  p->ob_mem = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_6handle_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_info(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_4info_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_3Win_info(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_3Win_4info_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_group(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_5group_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_group_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_10group_size_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_group_rank(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_10group_rank_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_attrs(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_5attrs_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_flavor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_6flavor_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_model(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_5model_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_3Win_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_3Win_4name_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_3Win_name(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_3Win_4name_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Win[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_12free},
  {"Create", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_15Create, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_14Create},
  {"Allocate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_17Allocate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_16Allocate},
  {"Allocate_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_19Allocate_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_18Allocate_shared},
  {"Shared_query", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_21Shared_query, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_20Shared_query},
  {"Create_dynamic", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_23Create_dynamic, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_22Create_dynamic},
  {"Attach", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_25Attach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_24Attach},
  {"Detach", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_27Detach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_26Detach},
  {"Free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_29Free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_28Free},
  {"Set_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_31Set_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_30Set_info},
  {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_33Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_32Get_info},
  {"Get_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_35Get_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_34Get_group},
  {"Get_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_37Get_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_36Get_attr},
  {"Set_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_39Set_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_38Set_attr},
  {"Delete_attr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_41Delete_attr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_40Delete_attr},
  {"Create_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_43Create_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_42Create_keyval},
  {"Free_keyval", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_45Free_keyval, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_44Free_keyval},
  {"tomemory", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_47tomemory, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_46tomemory},
  {"Put", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_51Put, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_50Put},
  {"Get", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_53Get, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_52Get},
  {"Accumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_55Accumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_54Accumulate},
  {"Get_accumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_57Get_accumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_56Get_accumulate},
  {"Fetch_and_op", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_59Fetch_and_op, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_58Fetch_and_op},
  {"Compare_and_swap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_61Compare_and_swap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_60Compare_and_swap},
  {"Rput", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_63Rput, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_62Rput},
  {"Rget", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_65Rget, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_64Rget},
  {"Raccumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_67Raccumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_66Raccumulate},
  {"Rget_accumulate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_69Rget_accumulate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_68Rget_accumulate},
  {"Fence", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_71Fence, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_70Fence},
  {"Start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_73Start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_72Start},
  {"Complete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_75Complete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_74Complete},
  {"Post", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_77Post, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_76Post},
  {"Wait", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_79Wait, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_78Wait},
  {"Test", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_81Test, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_80Test},
  {"Lock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_83Lock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_82Lock},
  {"Unlock", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_85Unlock, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_84Unlock},
  {"Lock_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_87Lock_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_86Lock_all},
  {"Unlock_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_89Unlock_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_88Unlock_all},
  {"Flush", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_91Flush, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_90Flush},
  {"Flush_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_93Flush_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_92Flush_all},
  {"Flush_local", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_95Flush_local, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_94Flush_local},
  {"Flush_local_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_97Flush_local_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_96Flush_local_all},
  {"Sync", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_99Sync, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_98Sync},
  {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_101Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_100Create_errhandler},
  {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_103Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_102Get_errhandler},
  {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_105Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_104Set_errhandler},
  {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_107Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_106Call_errhandler},
  {"Get_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_109Get_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_108Get_name},
  {"Set_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_111Set_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_110Set_name},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_113py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_112py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_3Win_115f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_3Win_114f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Win[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_3Win_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {(char *)"info", __pyx_getprop_6mpi4py_3MPI_3Win_info, __pyx_setprop_6mpi4py_3MPI_3Win_info, (char *)PyDoc_STR("info: Info\nInfo hints."), 0},
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_3Win_group, 0, (char *)PyDoc_STR("group: Group\nGroup."), 0},
  {(char *)"group_size", __pyx_getprop_6mpi4py_3MPI_3Win_group_size, 0, (char *)PyDoc_STR("group_size: int\nGroup size."), 0},
  {(char *)"group_rank", __pyx_getprop_6mpi4py_3MPI_3Win_group_rank, 0, (char *)PyDoc_STR("group_rank: int\nGroup rank."), 0},
  {(char *)"attrs", __pyx_getprop_6mpi4py_3MPI_3Win_attrs, 0, (char *)PyDoc_STR("attrs: tuple[int, int, int]\nAttributes."), 0},
  {(char *)"flavor", __pyx_getprop_6mpi4py_3MPI_3Win_flavor, 0, (char *)PyDoc_STR("flavor: int\nCreate flavor."), 0},
  {(char *)"model", __pyx_getprop_6mpi4py_3MPI_3Win_model, 0, (char *)PyDoc_STR("model: int\nMemory model."), 0},
  {(char *)"name", __pyx_getprop_6mpi4py_3MPI_3Win_name, __pyx_setprop_6mpi4py_3MPI_3Win_name, (char *)PyDoc_STR("name: str\nPrint name."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_Win = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_3Win_49__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot PyMPIWin_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Win},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_3Win_7__bool__},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_3Win_49__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Remote memory access context.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI_Win},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI_Win},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_3Win_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Win},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Win},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Win},
  {0, 0},
};
static PyType_Spec PyMPIWin_Type_spec = {
  "mpi4py.MPI.Win",
  sizeof(struct PyMPIWinObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  PyMPIWin_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Win = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_3Win_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyBufferProcs __pyx_tp_as_buffer_Win = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_3Win_49__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject PyMPIWin_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Win", /*tp_name*/
  sizeof(struct PyMPIWinObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Win, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_Win, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Win, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Remote memory access context.\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Win, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Win, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_3Win_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Win, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Win, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Win, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_File(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_4File_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_File(PyObject *o) {
  struct PyMPIFileObject *p = (struct PyMPIFileObject *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_File) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  if (p->__weakref__) PyObject_ClearWeakRefs(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_4File_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_handle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_6handle_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_4size_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_amode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_5amode_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_group(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_5group_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_group_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_10group_size_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_group_rank(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_10group_rank_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_info(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_4info_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_4File_info(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_4File_4info_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_4File_atomicity(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_4File_9atomicity_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_4File_atomicity(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_4File_9atomicity_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_File[] = {
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_9__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_8__reduce__},
  {"fromhandle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_11fromhandle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_10fromhandle},
  {"free", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_13free, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_12free},
  {"Open", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_15Open, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_14Open},
  {"Close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_17Close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_16Close},
  {"Delete", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_19Delete, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_18Delete},
  {"Set_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_21Set_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_20Set_size},
  {"Preallocate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_23Preallocate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_22Preallocate},
  {"Get_size", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_25Get_size, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_24Get_size},
  {"Get_amode", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_27Get_amode, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_26Get_amode},
  {"Get_group", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_29Get_group, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_28Get_group},
  {"Set_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_31Set_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_30Set_info},
  {"Get_info", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_33Get_info, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_32Get_info},
  {"Set_view", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_35Set_view, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_34Set_view},
  {"Get_view", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_37Get_view, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_36Get_view},
  {"Read_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_39Read_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_38Read_at},
  {"Read_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_41Read_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_40Read_at_all},
  {"Write_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_43Write_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_42Write_at},
  {"Write_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_45Write_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_44Write_at_all},
  {"Iread_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_47Iread_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_46Iread_at},
  {"Iread_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_49Iread_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_48Iread_at_all},
  {"Iwrite_at", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_51Iwrite_at, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_50Iwrite_at},
  {"Iwrite_at_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_53Iwrite_at_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_52Iwrite_at_all},
  {"Read", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_55Read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_54Read},
  {"Read_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_57Read_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_56Read_all},
  {"Write", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_59Write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_58Write},
  {"Write_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_61Write_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_60Write_all},
  {"Iread", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_63Iread, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_62Iread},
  {"Iread_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_65Iread_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_64Iread_all},
  {"Iwrite", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_67Iwrite, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_66Iwrite},
  {"Iwrite_all", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_69Iwrite_all, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_68Iwrite_all},
  {"Seek", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_71Seek, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_70Seek},
  {"Get_position", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_73Get_position, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_72Get_position},
  {"Get_byte_offset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_75Get_byte_offset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_74Get_byte_offset},
  {"Read_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_77Read_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_76Read_shared},
  {"Write_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_79Write_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_78Write_shared},
  {"Iread_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_81Iread_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_80Iread_shared},
  {"Iwrite_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_83Iwrite_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_82Iwrite_shared},
  {"Read_ordered", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_85Read_ordered, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_84Read_ordered},
  {"Write_ordered", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_87Write_ordered, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_86Write_ordered},
  {"Seek_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_89Seek_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_88Seek_shared},
  {"Get_position_shared", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_91Get_position_shared, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_90Get_position_shared},
  {"Read_at_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_93Read_at_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_92Read_at_all_begin},
  {"Read_at_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_95Read_at_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_94Read_at_all_end},
  {"Write_at_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_97Write_at_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_96Write_at_all_begin},
  {"Write_at_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_99Write_at_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_98Write_at_all_end},
  {"Read_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_101Read_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_100Read_all_begin},
  {"Read_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_103Read_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_102Read_all_end},
  {"Write_all_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_105Write_all_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_104Write_all_begin},
  {"Write_all_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_107Write_all_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_106Write_all_end},
  {"Read_ordered_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_109Read_ordered_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_108Read_ordered_begin},
  {"Read_ordered_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_111Read_ordered_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_110Read_ordered_end},
  {"Write_ordered_begin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_113Write_ordered_begin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_112Write_ordered_begin},
  {"Write_ordered_end", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_115Write_ordered_end, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_114Write_ordered_end},
  {"Get_type_extent", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_117Get_type_extent, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_116Get_type_extent},
  {"Set_atomicity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_119Set_atomicity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_118Set_atomicity},
  {"Get_atomicity", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_121Get_atomicity, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_120Get_atomicity},
  {"Sync", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_123Sync, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_122Sync},
  {"Create_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_125Create_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_124Create_errhandler},
  {"Get_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_127Get_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_126Get_errhandler},
  {"Set_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_129Set_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_128Set_errhandler},
  {"Call_errhandler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_131Call_errhandler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_130Call_errhandler},
  {"py2f", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_133py2f, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_132py2f},
  {"f2py", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_4File_135f2py, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_4File_134f2py},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_File[] = {
  {(char *)"handle", __pyx_getprop_6mpi4py_3MPI_4File_handle, 0, (char *)PyDoc_STR("handle: int\nMPI handle."), 0},
  {(char *)"size", __pyx_getprop_6mpi4py_3MPI_4File_size, 0, (char *)PyDoc_STR("size: int\nSize (in bytes)."), 0},
  {(char *)"amode", __pyx_getprop_6mpi4py_3MPI_4File_amode, 0, (char *)PyDoc_STR("amode: int\nAccess mode."), 0},
  {(char *)"group", __pyx_getprop_6mpi4py_3MPI_4File_group, 0, (char *)PyDoc_STR("group: Group\nGroup."), 0},
  {(char *)"group_size", __pyx_getprop_6mpi4py_3MPI_4File_group_size, 0, (char *)PyDoc_STR("group_size: int\nGroup size."), 0},
  {(char *)"group_rank", __pyx_getprop_6mpi4py_3MPI_4File_group_rank, 0, (char *)PyDoc_STR("group_rank: int\nGroup rank."), 0},
  {(char *)"info", __pyx_getprop_6mpi4py_3MPI_4File_info, __pyx_setprop_6mpi4py_3MPI_4File_info, (char *)PyDoc_STR("info: Info\nInfo hints."), 0},
  {(char *)"atomicity", __pyx_getprop_6mpi4py_3MPI_4File_atomicity, __pyx_setprop_6mpi4py_3MPI_4File_atomicity, (char *)PyDoc_STR("atomicity: bool\nAtomicity mode."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot PyMPIFile_Type_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_File},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_4File_7__bool__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    File I/O context.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_4File_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_File},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_File},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_File},
  {0, 0},
};
static PyType_Spec PyMPIFile_Type_spec = {
  "mpi4py.MPI.File",
  sizeof(struct PyMPIFileObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  PyMPIFile_Type_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_File = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_4File_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject PyMPIFile_Type = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""File", /*tp_name*/
  sizeof(struct PyMPIFileObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_File, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_File, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  PyDoc_STR("\n    File I/O context.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_4File_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_File, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_File, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_File, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI__PyMem(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  if (unlikely(__pyx_pw_6mpi4py_3MPI_6_PyMem_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__PyMem(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_6_PyMem_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__PyMem[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer__PyMem = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_6_PyMem_5__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI__PyMem_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__PyMem},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_6_PyMem_5__getbuffer__},
  #endif
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__PyMem},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__PyMem},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__PyMem_spec = {
  "mpi4py.MPI._PyMem",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__PyMem),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER,
  __pyx_type_6mpi4py_3MPI__PyMem_slots,
};
#else

static PyBufferProcs __pyx_tp_as_buffer__PyMem = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_6_PyMem_5__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type_6mpi4py_3MPI__PyMem = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_PyMem", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__PyMem), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__PyMem, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__PyMem, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__PyMem, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__PyMem, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_buffer(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI_buffer *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)o);
  p->view.obj = NULL;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_6buffer_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_buffer(PyObject *o) {
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_6mpi4py_3MPI_6buffer_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}
static PyObject *__pyx_sq_item_6mpi4py_3MPI_buffer(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static int __pyx_mp_ass_subscript_6mpi4py_3MPI_buffer(PyObject *o, PyObject *i, PyObject *v) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6buffer_25__setitem__(o, i, v);
  }
  else {
    __Pyx_TypeName o_type_name;
    o_type_name = __Pyx_PyType_GetName(Py_TYPE(o));
    PyErr_Format(PyExc_NotImplementedError,
      "Subscript deletion not supported by " __Pyx_FMT_TYPENAME, o_type_name);
    __Pyx_DECREF_TypeName(o_type_name);
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6buffer_address(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6buffer_7address_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6buffer_obj(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6buffer_3obj_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6buffer_nbytes(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6buffer_6nbytes_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6buffer_readonly(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6buffer_8readonly_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6buffer_format(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6buffer_6format_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6buffer_itemsize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6buffer_8itemsize_1__get__(o);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_buffer[] = {
  {"allocate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_5allocate, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_4allocate},
  {"frombuffer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_7frombuffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_6frombuffer},
  {"fromaddress", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_9fromaddress, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_8fromaddress},
  {"cast", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_11cast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_10cast},
  {"tobytes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_13tobytes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_12tobytes},
  {"toreadonly", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_15toreadonly, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_14toreadonly},
  {"release", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6buffer_17release, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6buffer_16release},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_buffer[] = {
  {(char *)"address", __pyx_getprop_6mpi4py_3MPI_6buffer_address, 0, (char *)PyDoc_STR("address: int\nBuffer address."), 0},
  {(char *)"obj", __pyx_getprop_6mpi4py_3MPI_6buffer_obj, 0, (char *)PyDoc_STR("obj: Buffer | None\nObject exposing buffer."), 0},
  {(char *)"nbytes", __pyx_getprop_6mpi4py_3MPI_6buffer_nbytes, 0, (char *)PyDoc_STR("nbytes: int\nBuffer size (in bytes)."), 0},
  {(char *)"readonly", __pyx_getprop_6mpi4py_3MPI_6buffer_readonly, 0, (char *)PyDoc_STR("readonly: bool\nBuffer is read-only."), 0},
  {(char *)"format", __pyx_getprop_6mpi4py_3MPI_6buffer_format, 0, (char *)PyDoc_STR("format: str\nFormat of each element."), 0},
  {(char *)"itemsize", __pyx_getprop_6mpi4py_3MPI_6buffer_itemsize, 0, (char *)PyDoc_STR("itemsize: int\nSize (in bytes) of each element."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_buffer = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_6buffer_19__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI_buffer_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_buffer},
  {Py_sq_length, (void *)__pyx_pw_6mpi4py_3MPI_6buffer_21__len__},
  {Py_sq_item, (void *)__pyx_sq_item_6mpi4py_3MPI_buffer},
  {Py_mp_length, (void *)__pyx_pw_6mpi4py_3MPI_6buffer_21__len__},
  {Py_mp_subscript, (void *)__pyx_pw_6mpi4py_3MPI_6buffer_23__getitem__},
  {Py_mp_ass_subscript, (void *)__pyx_mp_ass_subscript_6mpi4py_3MPI_buffer},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_6buffer_19__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Buffer.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_buffer},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_buffer},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_buffer},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI_buffer_spec = {
  "mpi4py.MPI.buffer",
  sizeof(struct __pyx_obj_6mpi4py_3MPI_buffer),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER,
  __pyx_type_6mpi4py_3MPI_buffer_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_buffer = {
  __pyx_pw_6mpi4py_3MPI_6buffer_21__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_6mpi4py_3MPI_buffer, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_buffer = {
  __pyx_pw_6mpi4py_3MPI_6buffer_21__len__, /*mp_length*/
  __pyx_pw_6mpi4py_3MPI_6buffer_23__getitem__, /*mp_subscript*/
  __pyx_mp_ass_subscript_6mpi4py_3MPI_buffer, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_buffer = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_6buffer_19__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type_6mpi4py_3MPI_buffer = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""buffer", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI_buffer), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_buffer, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_buffer, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_buffer, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_buffer, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  PyDoc_STR("\n    Buffer.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_buffer, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_buffer, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_buffer, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_keyval(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_keyval *)o);
  p->copy_fn = Py_None; Py_INCREF(Py_None);
  p->delete_fn = Py_None; Py_INCREF(Py_None);
  p->lock = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_9_p_keyval_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_keyval(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *p = (struct __pyx_obj_6mpi4py_3MPI__p_keyval *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->copy_fn);
  Py_CLEAR(p->delete_fn);
  Py_CLEAR(p->lock);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_keyval(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *p = (struct __pyx_obj_6mpi4py_3MPI__p_keyval *)o;
  if (p->copy_fn) {
    e = (*v)(p->copy_fn, a); if (e) return e;
  }
  if (p->delete_fn) {
    e = (*v)(p->delete_fn, a); if (e) return e;
  }
  if (p->lock) {
    e = (*v)(p->lock, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_keyval(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_keyval *p = (struct __pyx_obj_6mpi4py_3MPI__p_keyval *)o;
  tmp = ((PyObject*)p->copy_fn);
  p->copy_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->delete_fn);
  p->delete_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->lock);
  p->lock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9_p_keyval_copy_fn(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_9_p_keyval_copy_fn(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_3__set__(o, v);
  }
  else {
    return __pyx_pw_6mpi4py_3MPI_9_p_keyval_7copy_fn_5__del__(o);
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9_p_keyval_delete_fn(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_9_p_keyval_delete_fn(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_3__set__(o, v);
  }
  else {
    return __pyx_pw_6mpi4py_3MPI_9_p_keyval_9delete_fn_5__del__(o);
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9_p_keyval_nopython(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9_p_keyval_8nopython_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_9_p_keyval_nopython(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_9_p_keyval_8nopython_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_keyval[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI__p_keyval[] = {
  {(char *)"copy_fn", __pyx_getprop_6mpi4py_3MPI_9_p_keyval_copy_fn, __pyx_setprop_6mpi4py_3MPI_9_p_keyval_copy_fn, (char *)0, 0},
  {(char *)"delete_fn", __pyx_getprop_6mpi4py_3MPI_9_p_keyval_delete_fn, __pyx_setprop_6mpi4py_3MPI_9_p_keyval_delete_fn, (char *)0, 0},
  {(char *)"nopython", __pyx_getprop_6mpi4py_3MPI_9_p_keyval_nopython, __pyx_setprop_6mpi4py_3MPI_9_p_keyval_nopython, (char *)PyDoc_STR("nopython: bool"), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_keyval_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_keyval},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_keyval},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_keyval},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_keyval},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI__p_keyval},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_keyval},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_keyval_spec = {
  "mpi4py.MPI._p_keyval",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_keyval),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_keyval_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_keyval = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_keyval", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_keyval), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_keyval, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_keyval, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_keyval, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_keyval, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI__p_keyval, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_keyval, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_rs __pyx_vtable_6mpi4py_3MPI__p_rs;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_rs(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_rs *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_rs;
  p->arg_req = Py_None; Py_INCREF(Py_None);
  p->buf_req = Py_None; Py_INCREF(Py_None);
  p->buf_sts = Py_None; Py_INCREF(Py_None);
  p->buf_ids = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_5_p_rs_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_rs(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_rs *p = (struct __pyx_obj_6mpi4py_3MPI__p_rs *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->arg_req);
  Py_CLEAR(p->buf_req);
  Py_CLEAR(p->buf_sts);
  Py_CLEAR(p->buf_ids);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_rs(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *p = (struct __pyx_obj_6mpi4py_3MPI__p_rs *)o;
  if (p->arg_req) {
    e = (*v)(p->arg_req, a); if (e) return e;
  }
  if (p->buf_req) {
    e = (*v)(p->buf_req, a); if (e) return e;
  }
  if (p->buf_sts) {
    e = (*v)(p->buf_sts, a); if (e) return e;
  }
  if (p->buf_ids) {
    e = (*v)(p->buf_ids, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_rs(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_rs *p = (struct __pyx_obj_6mpi4py_3MPI__p_rs *)o;
  tmp = ((PyObject*)p->arg_req);
  p->arg_req = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->buf_req);
  p->buf_req = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->buf_sts);
  p->buf_sts = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->buf_ids);
  p->buf_ids = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_rs[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_rs_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_rs},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_rs},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_rs},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_rs},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_rs},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_rs_spec = {
  "mpi4py.MPI._p_rs",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_rs),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_rs_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_rs = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_rs", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_rs), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_rs, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_rs, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_rs, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_rs, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_rs, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq __pyx_vtable_6mpi4py_3MPI__p_greq;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_greq(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_greq *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_greq;
  p->query_fn = Py_None; Py_INCREF(Py_None);
  p->free_fn = Py_None; Py_INCREF(Py_None);
  p->cancel_fn = Py_None; Py_INCREF(Py_None);
  p->args = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->kwargs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_7_p_greq_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_greq(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p = (struct __pyx_obj_6mpi4py_3MPI__p_greq *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->query_fn);
  Py_CLEAR(p->free_fn);
  Py_CLEAR(p->cancel_fn);
  Py_CLEAR(p->args);
  Py_CLEAR(p->kwargs);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_greq(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p = (struct __pyx_obj_6mpi4py_3MPI__p_greq *)o;
  if (p->query_fn) {
    e = (*v)(p->query_fn, a); if (e) return e;
  }
  if (p->free_fn) {
    e = (*v)(p->free_fn, a); if (e) return e;
  }
  if (p->cancel_fn) {
    e = (*v)(p->cancel_fn, a); if (e) return e;
  }
  if (p->args) {
    e = (*v)(p->args, a); if (e) return e;
  }
  if (p->kwargs) {
    e = (*v)(p->kwargs, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_greq(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_greq *p = (struct __pyx_obj_6mpi4py_3MPI__p_greq *)o;
  tmp = ((PyObject*)p->query_fn);
  p->query_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->free_fn);
  p->free_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cancel_fn);
  p->cancel_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->args);
  p->args = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->kwargs);
  p->kwargs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_greq[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_greq_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_greq},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_greq},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_greq},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_greq},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_greq},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_greq_spec = {
  "mpi4py.MPI._p_greq",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_greq),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_greq_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_greq = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_greq", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_greq), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_greq, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_greq, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_greq, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_greq, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_greq, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_BufferAutomaticType(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot((&PyInt_Type), tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__repr__(self);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_BufferAutomaticType[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_19BufferAutomaticType_6__reduce__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_BufferAutomaticType = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI_BufferAutomaticType_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__repr__},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Type of `BUFFER_AUTOMATIC`.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_BufferAutomaticType},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_BufferAutomaticType},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI_BufferAutomaticType_spec = {
  "mpi4py.MPI.BufferAutomaticType",
  sizeof(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_6mpi4py_3MPI_BufferAutomaticType_slots,
};
#else

static PyBufferProcs __pyx_tp_as_buffer_BufferAutomaticType = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_3__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type_6mpi4py_3MPI_BufferAutomaticType = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""BufferAutomaticType", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6mpi4py_3MPI_19BufferAutomaticType_5__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_BufferAutomaticType, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("\n    Type of `BUFFER_AUTOMATIC`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_BufferAutomaticType, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_BufferAutomaticType, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_datarep __pyx_vtable_6mpi4py_3MPI__p_datarep;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_datarep(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_datarep *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_datarep *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_datarep;
  p->read_fn = Py_None; Py_INCREF(Py_None);
  p->write_fn = Py_None; Py_INCREF(Py_None);
  p->extent_fn = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_10_p_datarep_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_datarep(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_datarep *p = (struct __pyx_obj_6mpi4py_3MPI__p_datarep *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->read_fn);
  Py_CLEAR(p->write_fn);
  Py_CLEAR(p->extent_fn);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_datarep(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_datarep *p = (struct __pyx_obj_6mpi4py_3MPI__p_datarep *)o;
  if (p->read_fn) {
    e = (*v)(p->read_fn, a); if (e) return e;
  }
  if (p->write_fn) {
    e = (*v)(p->write_fn, a); if (e) return e;
  }
  if (p->extent_fn) {
    e = (*v)(p->extent_fn, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_datarep(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_datarep *p = (struct __pyx_obj_6mpi4py_3MPI__p_datarep *)o;
  tmp = ((PyObject*)p->read_fn);
  p->read_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->write_fn);
  p->write_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->extent_fn);
  p->extent_fn = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_datarep[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_datarep_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_datarep},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_datarep},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_datarep},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_datarep},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_datarep},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_datarep_spec = {
  "mpi4py.MPI._p_datarep",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_datarep),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_datarep_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_datarep = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_datarep", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_datarep), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_datarep, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_datarep, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_datarep, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_datarep, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_datarep, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_BottomType(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot((&PyInt_Type), tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_10BottomType_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_10BottomType_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_6mpi4py_3MPI_10BottomType_5__repr__(self);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_BottomType[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_10BottomType_5__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_10BottomType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_10BottomType_6__reduce__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_BottomType = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_10BottomType_3__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI_BottomType_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_5__repr__},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_10BottomType_3__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Type of `BOTTOM`.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_BottomType},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_BottomType},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI_BottomType_spec = {
  "mpi4py.MPI.BottomType",
  sizeof(struct __pyx_obj_6mpi4py_3MPI_BottomType),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_6mpi4py_3MPI_BottomType_slots,
};
#else

static PyBufferProcs __pyx_tp_as_buffer_BottomType = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_10BottomType_3__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type_6mpi4py_3MPI_BottomType = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""BottomType", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI_BottomType), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6mpi4py_3MPI_10BottomType_5__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_BottomType, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("\n    Type of `BOTTOM`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_BottomType, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_BottomType, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_InPlaceType(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot((&PyInt_Type), tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_11InPlaceType_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_11InPlaceType_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_6mpi4py_3MPI_11InPlaceType_5__repr__(self);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_InPlaceType[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_11InPlaceType_5__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_11InPlaceType_7__reduce__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_11InPlaceType_6__reduce__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
#if !CYTHON_COMPILING_IN_LIMITED_API

static PyBufferProcs __pyx_tp_as_buffer_InPlaceType = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_3__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};
#endif
static PyType_Slot __pyx_type_6mpi4py_3MPI_InPlaceType_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_6mpi4py_3MPI_11InPlaceType_5__repr__},
  #if defined(Py_bf_getbuffer)
  {Py_bf_getbuffer, (void *)__pyx_pw_6mpi4py_3MPI_11InPlaceType_3__getbuffer__},
  #endif
  {Py_tp_doc, (void *)PyDoc_STR("\n    Type of `IN_PLACE`.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_InPlaceType},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_InPlaceType},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI_InPlaceType_spec = {
  "mpi4py.MPI.InPlaceType",
  sizeof(struct __pyx_obj_6mpi4py_3MPI_InPlaceType),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_6mpi4py_3MPI_InPlaceType_slots,
};
#else

static PyBufferProcs __pyx_tp_as_buffer_InPlaceType = {
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getreadbuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getwritebuffer*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getsegcount*/
  #endif
  #if PY_MAJOR_VERSION < 3
  0, /*bf_getcharbuffer*/
  #endif
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_3__getbuffer__, /*bf_getbuffer*/
  0, /*bf_releasebuffer*/
};

static PyTypeObject __pyx_type_6mpi4py_3MPI_InPlaceType = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""InPlaceType", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI_InPlaceType), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6mpi4py_3MPI_11InPlaceType_5__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_InPlaceType, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("\n    Type of `IN_PLACE`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_InPlaceType, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_InPlaceType, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_message *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_message *)o);
  p->buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)Py_None); Py_INCREF(Py_None);
  p->count = Py_None; Py_INCREF(Py_None);
  p->displ = Py_None; Py_INCREF(Py_None);
  p->type = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_message(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_message *p = (struct __pyx_obj_6mpi4py_3MPI__p_message *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->buf);
  Py_CLEAR(p->count);
  Py_CLEAR(p->displ);
  Py_CLEAR(p->type);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_message(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_message *p = (struct __pyx_obj_6mpi4py_3MPI__p_message *)o;
  if (p->buf) {
    e = (*v)(((PyObject *)p->buf), a); if (e) return e;
  }
  if (p->count) {
    e = (*v)(p->count, a); if (e) return e;
  }
  if (p->displ) {
    e = (*v)(p->displ, a); if (e) return e;
  }
  if (p->type) {
    e = (*v)(((PyObject *)p->type), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_message(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_message *p = (struct __pyx_obj_6mpi4py_3MPI__p_message *)o;
  tmp = ((PyObject*)p->buf);
  p->buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->count);
  p->count = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->displ);
  p->displ = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->type);
  p->type = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_message_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_message},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_message},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_message},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_message},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_message_spec = {
  "mpi4py.MPI._p_message",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_message),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_message_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_message = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_message", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_message), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_message, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_message, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_message, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_message, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p __pyx_vtable_6mpi4py_3MPI__p_msg_p2p;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p;
  p->_msg = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_10_p_msg_p2p_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_p2p(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_msg);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_p2p(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o;
  if (p->_msg) {
    e = (*v)(p->_msg, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_p2p(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *)o;
  tmp = ((PyObject*)p->_msg);
  p->_msg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_p2p[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_msg_p2p_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_msg_p2p},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_msg_p2p},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_msg_p2p},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_msg_p2p},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_msg_p2p},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_msg_p2p_spec = {
  "mpi4py.MPI._p_msg_p2p",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_msg_p2p_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_p2p = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_msg_p2p", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_p2p, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_p2p, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_p2p, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_p2p, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_p2p, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco __pyx_vtable_6mpi4py_3MPI__p_msg_cco;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_cco(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_cco;
  p->_smsg = Py_None; Py_INCREF(Py_None);
  p->_rmsg = Py_None; Py_INCREF(Py_None);
  p->_rcnt = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_10_p_msg_cco_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_cco(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_smsg);
  Py_CLEAR(p->_rmsg);
  Py_CLEAR(p->_rcnt);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_cco(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o;
  if (p->_smsg) {
    e = (*v)(p->_smsg, a); if (e) return e;
  }
  if (p->_rmsg) {
    e = (*v)(p->_rmsg, a); if (e) return e;
  }
  if (p->_rcnt) {
    e = (*v)(p->_rcnt, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_cco(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *)o;
  tmp = ((PyObject*)p->_smsg);
  p->_smsg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rmsg);
  p->_rmsg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rcnt);
  p->_rcnt = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_cco[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_msg_cco_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_msg_cco},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_msg_cco},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_msg_cco},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_msg_cco},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_msg_cco},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_msg_cco_spec = {
  "mpi4py.MPI._p_msg_cco",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_msg_cco_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_cco = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_msg_cco", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_cco, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_cco, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_cco, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_cco, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_cco, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_ccow __pyx_vtable_6mpi4py_3MPI__p_msg_ccow;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_ccow(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_ccow;
  p->_smsg = Py_None; Py_INCREF(Py_None);
  p->_rmsg = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_11_p_msg_ccow_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_ccow(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_smsg);
  Py_CLEAR(p->_rmsg);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_ccow(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)o;
  if (p->_smsg) {
    e = (*v)(p->_smsg, a); if (e) return e;
  }
  if (p->_rmsg) {
    e = (*v)(p->_rmsg, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_ccow(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *)o;
  tmp = ((PyObject*)p->_smsg);
  p->_smsg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_rmsg);
  p->_rmsg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_ccow[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_msg_ccow_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_msg_ccow},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_msg_ccow},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_msg_ccow},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_msg_ccow},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_msg_ccow},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_msg_ccow_spec = {
  "mpi4py.MPI._p_msg_ccow",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_msg_ccow_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_ccow = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_msg_ccow", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_ccow, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_ccow, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_ccow, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_ccow, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_ccow, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma __pyx_vtable_6mpi4py_3MPI__p_msg_rma;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_rma(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_rma;
  p->_origin = Py_None; Py_INCREF(Py_None);
  p->_compare = Py_None; Py_INCREF(Py_None);
  p->_result = Py_None; Py_INCREF(Py_None);
  p->_target = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_10_p_msg_rma_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_rma(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_origin);
  Py_CLEAR(p->_compare);
  Py_CLEAR(p->_result);
  Py_CLEAR(p->_target);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_rma(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o;
  if (p->_origin) {
    e = (*v)(p->_origin, a); if (e) return e;
  }
  if (p->_compare) {
    e = (*v)(p->_compare, a); if (e) return e;
  }
  if (p->_result) {
    e = (*v)(p->_result, a); if (e) return e;
  }
  if (p->_target) {
    e = (*v)(p->_target, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_rma(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *)o;
  tmp = ((PyObject*)p->_origin);
  p->_origin = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_compare);
  p->_compare = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_result);
  p->_result = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_target);
  p->_target = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_rma[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_msg_rma_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_msg_rma},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_msg_rma},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_msg_rma},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_msg_rma},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_msg_rma},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_msg_rma_spec = {
  "mpi4py.MPI._p_msg_rma",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_msg_rma_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_rma = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_msg_rma", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_rma, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_rma, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_rma, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_rma, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_rma, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io __pyx_vtable_6mpi4py_3MPI__p_msg_io;

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_msg_io(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o);
  p->__pyx_vtab = __pyx_vtabptr_6mpi4py_3MPI__p_msg_io;
  p->_msg = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_9_p_msg_io_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_io(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_msg);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_msg_io(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o;
  if (p->_msg) {
    e = (*v)(p->_msg, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_msg_io(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_msg_io *p = (struct __pyx_obj_6mpi4py_3MPI__p_msg_io *)o;
  tmp = ((PyObject*)p->_msg);
  p->_msg = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI__p_msg_io[] = {
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_msg_io_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_msg_io},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_msg_io},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_msg_io},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI__p_msg_io},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_msg_io},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_msg_io_spec = {
  "mpi4py.MPI._p_msg_io",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_io),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_msg_io_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_msg_io = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_msg_io", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_msg_io), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_msg_io, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_msg_io, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_msg_io, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI__p_msg_io, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_msg_io, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Pickle(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI_Pickle *)o);
  p->ob_dumps = Py_None; Py_INCREF(Py_None);
  p->ob_loads = Py_None; Py_INCREF(Py_None);
  p->ob_PROTO = Py_None; Py_INCREF(Py_None);
  p->ob_THRES = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_6mpi4py_3MPI_6Pickle_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI_Pickle(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI_Pickle *p = (struct __pyx_obj_6mpi4py_3MPI_Pickle *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI_Pickle) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->ob_dumps);
  Py_CLEAR(p->ob_loads);
  Py_CLEAR(p->ob_PROTO);
  Py_CLEAR(p->ob_THRES);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI_Pickle(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI_Pickle *p = (struct __pyx_obj_6mpi4py_3MPI_Pickle *)o;
  if (p->ob_dumps) {
    e = (*v)(p->ob_dumps, a); if (e) return e;
  }
  if (p->ob_loads) {
    e = (*v)(p->ob_loads, a); if (e) return e;
  }
  if (p->ob_PROTO) {
    e = (*v)(p->ob_PROTO, a); if (e) return e;
  }
  if (p->ob_THRES) {
    e = (*v)(p->ob_THRES, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI_Pickle(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI_Pickle *p = (struct __pyx_obj_6mpi4py_3MPI_Pickle *)o;
  tmp = ((PyObject*)p->ob_dumps);
  p->ob_dumps = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->ob_loads);
  p->ob_loads = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->ob_PROTO);
  p->ob_PROTO = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->ob_THRES);
  p->ob_THRES = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Pickle_PROTOCOL(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6Pickle_8PROTOCOL_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Pickle_PROTOCOL(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6Pickle_8PROTOCOL_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_6Pickle_THRESHOLD(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_6Pickle_9THRESHOLD_1__get__(o);
}

static int __pyx_setprop_6mpi4py_3MPI_6Pickle_THRESHOLD(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_6mpi4py_3MPI_6Pickle_9THRESHOLD_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Pickle[] = {
  {"dumps", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_5dumps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_4dumps},
  {"loads", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_7loads, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_6loads},
  {"dumps_oob", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_9dumps_oob, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_8dumps_oob},
  {"loads_oob", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_6Pickle_11loads_oob, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_6Pickle_10loads_oob},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Pickle[] = {
  {(char *)"PROTOCOL", __pyx_getprop_6mpi4py_3MPI_6Pickle_PROTOCOL, __pyx_setprop_6mpi4py_3MPI_6Pickle_PROTOCOL, (char *)PyDoc_STR("PROTOCOL: int | None\nProtocol version."), 0},
  {(char *)"THRESHOLD", __pyx_getprop_6mpi4py_3MPI_6Pickle_THRESHOLD, __pyx_setprop_6mpi4py_3MPI_6Pickle_THRESHOLD, (char *)PyDoc_STR("THRESHOLD: int\nOut-of-band threshold."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI_Pickle_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI_Pickle},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Pickle/unpickle Python objects.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI_Pickle},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI_Pickle},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Pickle},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Pickle},
  {Py_tp_init, (void *)__pyx_pw_6mpi4py_3MPI_6Pickle_3__init__},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Pickle},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI_Pickle_spec = {
  "mpi4py.MPI.Pickle",
  sizeof(struct __pyx_obj_6mpi4py_3MPI_Pickle),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI_Pickle_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI_Pickle = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Pickle", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI_Pickle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI_Pickle, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Pickle/unpickle Python objects.\n    "), /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI_Pickle, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI_Pickle, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Pickle, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Pickle, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_6mpi4py_3MPI_6Pickle_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Pickle, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_req_buf(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_req_buf *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_req_buf *)o);
  p->buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_req_buf(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_req_buf *p = (struct __pyx_obj_6mpi4py_3MPI__p_req_buf *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->buf);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_req_buf(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_req_buf *p = (struct __pyx_obj_6mpi4py_3MPI__p_req_buf *)o;
  if (p->buf) {
    e = (*v)(((PyObject *)p->buf), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_req_buf(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_req_buf *p = (struct __pyx_obj_6mpi4py_3MPI__p_req_buf *)o;
  tmp = ((PyObject*)p->buf);
  p->buf = ((struct __pyx_obj_6mpi4py_3MPI_buffer *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_req_buf_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_req_buf},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_req_buf},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_req_buf},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_req_buf},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_req_buf_spec = {
  "mpi4py.MPI._p_req_buf",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_req_buf),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_req_buf_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_req_buf = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_req_buf", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_req_buf), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_req_buf, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_req_buf, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_req_buf, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_req_buf, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_req_obj(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_6mpi4py_3MPI__p_req_obj *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  o = (*t->tp_alloc)(t, 0);
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_6mpi4py_3MPI__p_req_obj *)o);
  p->obj = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI__p_req_obj(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI__p_req_obj *p = (struct __pyx_obj_6mpi4py_3MPI__p_req_obj *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->obj);
  #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_6mpi4py_3MPI__p_req_obj(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI__p_req_obj *p = (struct __pyx_obj_6mpi4py_3MPI__p_req_obj *)o;
  if (p->obj) {
    e = (*v)(p->obj, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI__p_req_obj(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI__p_req_obj *p = (struct __pyx_obj_6mpi4py_3MPI__p_req_obj *)o;
  tmp = ((PyObject*)p->obj);
  p->obj = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI__p_req_obj_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI__p_req_obj},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI__p_req_obj},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI__p_req_obj},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI__p_req_obj},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI__p_req_obj_spec = {
  "mpi4py.MPI._p_req_obj",
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_req_obj),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC,
  __pyx_type_6mpi4py_3MPI__p_req_obj_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI__p_req_obj = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""_p_req_obj", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI__p_req_obj), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI__p_req_obj, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI__p_req_obj, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI__p_req_obj, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI__p_req_obj, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI_Exception(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_6mpi4py_3MPI_RuntimeError, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_6mpi4py_3MPI_9Exception_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Exception_error_code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Exception_10error_code_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Exception_error_class(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Exception_11error_class_1__get__(o);
}

static PyObject *__pyx_getprop_6mpi4py_3MPI_9Exception_error_string(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_6mpi4py_3MPI_9Exception_12error_string_1__get__(o);
}

static PyObject *__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_9Exception_11__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_6mpi4py_3MPI_9Exception_11__repr__(self);
}

static PyMethodDef __pyx_methods_6mpi4py_3MPI_Exception[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_6mpi4py_3MPI_9Exception_11__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"Get_error_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_15Get_error_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_14Get_error_code},
  {"Get_error_class", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_17Get_error_class, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_16Get_error_class},
  {"Get_error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_6mpi4py_3MPI_9Exception_19Get_error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_6mpi4py_3MPI_9Exception_18Get_error_string},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6mpi4py_3MPI_Exception[] = {
  {(char *)"error_code", __pyx_getprop_6mpi4py_3MPI_9Exception_error_code, 0, (char *)PyDoc_STR("error_code: int\nError code."), 0},
  {(char *)"error_class", __pyx_getprop_6mpi4py_3MPI_9Exception_error_class, 0, (char *)PyDoc_STR("error_class: int\nError class."), 0},
  {(char *)"error_string", __pyx_getprop_6mpi4py_3MPI_9Exception_error_string, 0, (char *)PyDoc_STR("error_string: str\nError string."), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI_Exception_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_6mpi4py_3MPI_9Exception_11__repr__},
  {Py_nb_bool, (void *)__pyx_pw_6mpi4py_3MPI_9Exception_7__bool__},
  {Py_nb_int, (void *)__pyx_pw_6mpi4py_3MPI_9Exception_9__int__},
  #if PY_MAJOR_VERSION < 3
  {Py_nb_long, (void *)__pyx_pw_6mpi4py_3MPI_9Exception_9__int__},
  #endif
  {Py_tp_hash, (void *)__pyx_pw_6mpi4py_3MPI_9Exception_5__hash__},
  {Py_tp_str, (void *)__pyx_pw_6mpi4py_3MPI_9Exception_13__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Exception class.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_6mpi4py_3MPI_9Exception_3__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_6mpi4py_3MPI_Exception},
  {Py_tp_getset, (void *)__pyx_getsets_6mpi4py_3MPI_Exception},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI_Exception},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI_Exception_spec = {
  "mpi4py.MPI.Exception",
  sizeof(struct __pyx_obj_6mpi4py_3MPI_Exception),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_6mpi4py_3MPI_Exception_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Exception = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  __pyx_pw_6mpi4py_3MPI_9Exception_7__bool__, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  __pyx_pw_6mpi4py_3MPI_9Exception_9__int__, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  __pyx_pw_6mpi4py_3MPI_9Exception_9__int__, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_6mpi4py_3MPI_Exception = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""Exception", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI_Exception), /*tp_basicsize*/
  0, /*tp_itemsize*/
  0, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_6mpi4py_3MPI_9Exception_11__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Exception, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  __pyx_pw_6mpi4py_3MPI_9Exception_5__hash__, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_6mpi4py_3MPI_9Exception_13__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("\n    Exception class.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_6mpi4py_3MPI_9Exception_3__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6mpi4py_3MPI_Exception, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6mpi4py_3MPI_Exception, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI_Exception, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

#if CYTHON_USE_FREELISTS
static struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *__pyx_freelist_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback[8];
static int __pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback = 0;
#endif

static PyObject *__pyx_tp_new_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback)))) {
    o = (PyObject*)__pyx_freelist_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback[--__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback];
    memset(o, 0, sizeof(struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback(PyObject *o) {
  struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *p = (struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_buffers);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback)))) {
    __pyx_freelist_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback[__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback++] = ((struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *p = (struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *)o;
  if (p->__pyx_v_buffers) {
    e = (*v)(p->__pyx_v_buffers, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *p = (struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback *)o;
  tmp = ((PyObject*)p->__pyx_v_buffers);
  p->__pyx_v_buffers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback},
  {Py_tp_clear, (void *)__pyx_tp_clear_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback},
  {Py_tp_new, (void *)__pyx_tp_new_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback},
  {0, 0},
};
static PyType_Spec __pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback_spec = {
  "mpi4py.MPI.__pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback",
  sizeof(struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback_slots,
};
#else

static PyTypeObject __pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback = {
  PyVarObject_HEAD_INIT(0, 0)
  "mpi4py.MPI.""__pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback", /*tp_name*/
  sizeof(struct __pyx_obj_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback, /*tp_traverse*/
  __pyx_tp_clear_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
    #define CYTHON_SMALL_CODE
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
    #define CYTHON_SMALL_CODE __attribute__((cold))
#else
    #define CYTHON_SMALL_CODE
#endif
#endif
/* #### Code section: pystring_table ### */

static int __Pyx_CreateStringTabAndInitStrings(void) {
  __Pyx_StringTabEntry __pyx_string_tab[] = {
    {&__pyx_n_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 1},
    {&__pyx_kp_b_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 0, 0},
    {&__pyx_n_s_AINT, __pyx_k_AINT, sizeof(__pyx_k_AINT), 0, 0, 1, 1},
    {&__pyx_n_s_ANY_SOURCE, __pyx_k_ANY_SOURCE, sizeof(__pyx_k_ANY_SOURCE), 0, 0, 1, 1},
    {&__pyx_n_s_ANY_TAG, __pyx_k_ANY_TAG, sizeof(__pyx_k_ANY_TAG), 0, 0, 1, 1},
    {&__pyx_n_s_APPNUM, __pyx_k_APPNUM, sizeof(__pyx_k_APPNUM), 0, 0, 1, 1},
    {&__pyx_n_s_Abort, __pyx_k_Abort, sizeof(__pyx_k_Abort), 0, 0, 1, 1},
    {&__pyx_n_s_Accept, __pyx_k_Accept, sizeof(__pyx_k_Accept), 0, 0, 1, 1},
    {&__pyx_n_s_Accumulate, __pyx_k_Accumulate, sizeof(__pyx_k_Accumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Ack_failed, __pyx_k_Ack_failed, sizeof(__pyx_k_Ack_failed), 0, 0, 1, 1},
    {&__pyx_n_s_Add_error_class, __pyx_k_Add_error_class, sizeof(__pyx_k_Add_error_class), 0, 0, 1, 1},
    {&__pyx_n_s_Add_error_code, __pyx_k_Add_error_code, sizeof(__pyx_k_Add_error_code), 0, 0, 1, 1},
    {&__pyx_n_s_Add_error_string, __pyx_k_Add_error_string, sizeof(__pyx_k_Add_error_string), 0, 0, 1, 1},
    {&__pyx_n_s_Agree, __pyx_k_Agree, sizeof(__pyx_k_Agree), 0, 0, 1, 1},
    {&__pyx_n_s_Aint_add, __pyx_k_Aint_add, sizeof(__pyx_k_Aint_add), 0, 0, 1, 1},
    {&__pyx_n_s_Aint_diff, __pyx_k_Aint_diff, sizeof(__pyx_k_Aint_diff), 0, 0, 1, 1},
    {&__pyx_n_s_Allgather, __pyx_k_Allgather, sizeof(__pyx_k_Allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Allgather_init, __pyx_k_Allgather_init, sizeof(__pyx_k_Allgather_init), 0, 0, 1, 1},
    {&__pyx_n_s_Allgatherv, __pyx_k_Allgatherv, sizeof(__pyx_k_Allgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Allgatherv_init, __pyx_k_Allgatherv_init, sizeof(__pyx_k_Allgatherv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Alloc_mem, __pyx_k_Alloc_mem, sizeof(__pyx_k_Alloc_mem), 0, 0, 1, 1},
    {&__pyx_n_s_Allocate, __pyx_k_Allocate, sizeof(__pyx_k_Allocate), 0, 0, 1, 1},
    {&__pyx_n_s_Allocate_shared, __pyx_k_Allocate_shared, sizeof(__pyx_k_Allocate_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Allreduce, __pyx_k_Allreduce, sizeof(__pyx_k_Allreduce), 0, 0, 1, 1},
    {&__pyx_n_s_Allreduce_init, __pyx_k_Allreduce_init, sizeof(__pyx_k_Allreduce_init), 0, 0, 1, 1},
    {&__pyx_n_s_Alltoall, __pyx_k_Alltoall, sizeof(__pyx_k_Alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Alltoall_init, __pyx_k_Alltoall_init, sizeof(__pyx_k_Alltoall_init), 0, 0, 1, 1},
    {&__pyx_n_s_Alltoallv, __pyx_k_Alltoallv, sizeof(__pyx_k_Alltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Alltoallv_init, __pyx_k_Alltoallv_init, sizeof(__pyx_k_Alltoallv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Alltoallw, __pyx_k_Alltoallw, sizeof(__pyx_k_Alltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Alltoallw_init, __pyx_k_Alltoallw_init, sizeof(__pyx_k_Alltoallw_init), 0, 0, 1, 1},
    {&__pyx_n_s_Any, __pyx_k_Any, sizeof(__pyx_k_Any), 0, 0, 1, 1},
    {&__pyx_kp_s_Any_None, __pyx_k_Any_None, sizeof(__pyx_k_Any_None), 0, 0, 1, 0},
    {&__pyx_n_s_Attach, __pyx_k_Attach, sizeof(__pyx_k_Attach), 0, 0, 1, 1},
    {&__pyx_n_s_Attach_buffer, __pyx_k_Attach_buffer, sizeof(__pyx_k_Attach_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
    {&__pyx_n_s_BAND, __pyx_k_BAND, sizeof(__pyx_k_BAND), 0, 0, 1, 1},
    {&__pyx_n_s_BOOL, __pyx_k_BOOL, sizeof(__pyx_k_BOOL), 0, 0, 1, 1},
    {&__pyx_n_s_BOR, __pyx_k_BOR, sizeof(__pyx_k_BOR), 0, 0, 1, 1},
    {&__pyx_n_s_BOTTOM, __pyx_k_BOTTOM, sizeof(__pyx_k_BOTTOM), 0, 0, 1, 1},
    {&__pyx_n_s_BSEND_OVERHEAD, __pyx_k_BSEND_OVERHEAD, sizeof(__pyx_k_BSEND_OVERHEAD), 0, 0, 1, 1},
    {&__pyx_n_s_BUFFER_AUTOMATIC, __pyx_k_BUFFER_AUTOMATIC, sizeof(__pyx_k_BUFFER_AUTOMATIC), 0, 0, 1, 1},
    {&__pyx_n_s_BXOR, __pyx_k_BXOR, sizeof(__pyx_k_BXOR), 0, 0, 1, 1},
    {&__pyx_n_s_BYTE, __pyx_k_BYTE, sizeof(__pyx_k_BYTE), 0, 0, 1, 1},
    {&__pyx_n_s_Barrier, __pyx_k_Barrier, sizeof(__pyx_k_Barrier), 0, 0, 1, 1},
    {&__pyx_n_s_Barrier_init, __pyx_k_Barrier_init, sizeof(__pyx_k_Barrier_init), 0, 0, 1, 1},
    {&__pyx_n_s_BaseException, __pyx_k_BaseException, sizeof(__pyx_k_BaseException), 0, 0, 1, 1},
    {&__pyx_n_s_Bcast, __pyx_k_Bcast, sizeof(__pyx_k_Bcast), 0, 0, 1, 1},
    {&__pyx_n_s_Bcast_init, __pyx_k_Bcast_init, sizeof(__pyx_k_Bcast_init), 0, 0, 1, 1},
    {&__pyx_n_s_BottomType, __pyx_k_BottomType, sizeof(__pyx_k_BottomType), 0, 0, 1, 1},
    {&__pyx_n_s_BottomType___reduce, __pyx_k_BottomType___reduce, sizeof(__pyx_k_BottomType___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Bsend, __pyx_k_Bsend, sizeof(__pyx_k_Bsend), 0, 0, 1, 1},
    {&__pyx_n_s_Bsend_init, __pyx_k_Bsend_init, sizeof(__pyx_k_Bsend_init), 0, 0, 1, 1},
    {&__pyx_n_s_BufSpec, __pyx_k_BufSpec, sizeof(__pyx_k_BufSpec), 0, 0, 1, 1},
    {&__pyx_n_s_BufSpecB, __pyx_k_BufSpecB, sizeof(__pyx_k_BufSpecB), 0, 0, 1, 1},
    {&__pyx_kp_s_BufSpecB_InPlace, __pyx_k_BufSpecB_InPlace, sizeof(__pyx_k_BufSpecB_InPlace), 0, 0, 1, 0},
    {&__pyx_kp_s_BufSpecB_None, __pyx_k_BufSpecB_None, sizeof(__pyx_k_BufSpecB_None), 0, 0, 1, 0},
    {&__pyx_n_s_BufSpecV, __pyx_k_BufSpecV, sizeof(__pyx_k_BufSpecV), 0, 0, 1, 1},
    {&__pyx_kp_s_BufSpecV_InPlace, __pyx_k_BufSpecV_InPlace, sizeof(__pyx_k_BufSpecV_InPlace), 0, 0, 1, 0},
    {&__pyx_kp_s_BufSpecV_None, __pyx_k_BufSpecV_None, sizeof(__pyx_k_BufSpecV_None), 0, 0, 1, 0},
    {&__pyx_n_s_BufSpecW, __pyx_k_BufSpecW, sizeof(__pyx_k_BufSpecW), 0, 0, 1, 1},
    {&__pyx_kp_s_BufSpecW_InPlace, __pyx_k_BufSpecW_InPlace, sizeof(__pyx_k_BufSpecW_InPlace), 0, 0, 1, 0},
    {&__pyx_kp_s_BufSpec_BufSpecB, __pyx_k_BufSpec_BufSpecB, sizeof(__pyx_k_BufSpec_BufSpecB), 0, 0, 1, 0},
    {&__pyx_kp_s_BufSpec_InPlace, __pyx_k_BufSpec_InPlace, sizeof(__pyx_k_BufSpec_InPlace), 0, 0, 1, 0},
    {&__pyx_kp_s_BufSpec_None, __pyx_k_BufSpec_None, sizeof(__pyx_k_BufSpec_None), 0, 0, 1, 0},
    {&__pyx_n_s_Buffer, __pyx_k_Buffer, sizeof(__pyx_k_Buffer), 0, 0, 1, 1},
    {&__pyx_n_s_BufferAutomaticType, __pyx_k_BufferAutomaticType, sizeof(__pyx_k_BufferAutomaticType), 0, 0, 1, 1},
    {&__pyx_n_s_BufferAutomaticType___reduce, __pyx_k_BufferAutomaticType___reduce, sizeof(__pyx_k_BufferAutomaticType___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_BufferError, __pyx_k_BufferError, sizeof(__pyx_k_BufferError), 0, 0, 1, 1},
    {&__pyx_kp_s_Buffer_Bottom, __pyx_k_Buffer_Bottom, sizeof(__pyx_k_Buffer_Bottom), 0, 0, 1, 0},
    {&__pyx_kp_s_Buffer_None, __pyx_k_Buffer_None, sizeof(__pyx_k_Buffer_None), 0, 0, 1, 0},
    {&__pyx_n_s_CART, __pyx_k_CART, sizeof(__pyx_k_CART), 0, 0, 1, 1},
    {&__pyx_n_s_CHAR, __pyx_k_CHAR, sizeof(__pyx_k_CHAR), 0, 0, 1, 1},
    {&__pyx_n_s_CHARACTER, __pyx_k_CHARACTER, sizeof(__pyx_k_CHARACTER), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_CONTIGUOUS, __pyx_k_COMBINER_CONTIGUOUS, sizeof(__pyx_k_COMBINER_CONTIGUOUS), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_DARRAY, __pyx_k_COMBINER_DARRAY, sizeof(__pyx_k_COMBINER_DARRAY), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_DUP, __pyx_k_COMBINER_DUP, sizeof(__pyx_k_COMBINER_DUP), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_F90_COMPLEX, __pyx_k_COMBINER_F90_COMPLEX, sizeof(__pyx_k_COMBINER_F90_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_F90_INTEGER, __pyx_k_COMBINER_F90_INTEGER, sizeof(__pyx_k_COMBINER_F90_INTEGER), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_F90_REAL, __pyx_k_COMBINER_F90_REAL, sizeof(__pyx_k_COMBINER_F90_REAL), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_HINDEXED, __pyx_k_COMBINER_HINDEXED, sizeof(__pyx_k_COMBINER_HINDEXED), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_HINDEXED_BLOCK, __pyx_k_COMBINER_HINDEXED_BLOCK, sizeof(__pyx_k_COMBINER_HINDEXED_BLOCK), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_HVECTOR, __pyx_k_COMBINER_HVECTOR, sizeof(__pyx_k_COMBINER_HVECTOR), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_INDEXED, __pyx_k_COMBINER_INDEXED, sizeof(__pyx_k_COMBINER_INDEXED), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_INDEXED_BLOCK, __pyx_k_COMBINER_INDEXED_BLOCK, sizeof(__pyx_k_COMBINER_INDEXED_BLOCK), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_NAMED, __pyx_k_COMBINER_NAMED, sizeof(__pyx_k_COMBINER_NAMED), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_RESIZED, __pyx_k_COMBINER_RESIZED, sizeof(__pyx_k_COMBINER_RESIZED), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_STRUCT, __pyx_k_COMBINER_STRUCT, sizeof(__pyx_k_COMBINER_STRUCT), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_SUBARRAY, __pyx_k_COMBINER_SUBARRAY, sizeof(__pyx_k_COMBINER_SUBARRAY), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_VALUE_INDEX, __pyx_k_COMBINER_VALUE_INDEX, sizeof(__pyx_k_COMBINER_VALUE_INDEX), 0, 0, 1, 1},
    {&__pyx_n_s_COMBINER_VECTOR, __pyx_k_COMBINER_VECTOR, sizeof(__pyx_k_COMBINER_VECTOR), 0, 0, 1, 1},
    {&__pyx_n_s_COMM_NULL, __pyx_k_COMM_NULL, sizeof(__pyx_k_COMM_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_COMM_SELF, __pyx_k_COMM_SELF, sizeof(__pyx_k_COMM_SELF), 0, 0, 1, 1},
    {&__pyx_n_s_COMM_TYPE_HW_GUIDED, __pyx_k_COMM_TYPE_HW_GUIDED, sizeof(__pyx_k_COMM_TYPE_HW_GUIDED), 0, 0, 1, 1},
    {&__pyx_n_s_COMM_TYPE_HW_UNGUIDED, __pyx_k_COMM_TYPE_HW_UNGUIDED, sizeof(__pyx_k_COMM_TYPE_HW_UNGUIDED), 0, 0, 1, 1},
    {&__pyx_n_s_COMM_TYPE_RESOURCE_GUIDED, __pyx_k_COMM_TYPE_RESOURCE_GUIDED, sizeof(__pyx_k_COMM_TYPE_RESOURCE_GUIDED), 0, 0, 1, 1},
    {&__pyx_n_s_COMM_TYPE_SHARED, __pyx_k_COMM_TYPE_SHARED, sizeof(__pyx_k_COMM_TYPE_SHARED), 0, 0, 1, 1},
    {&__pyx_n_s_COMM_WORLD, __pyx_k_COMM_WORLD, sizeof(__pyx_k_COMM_WORLD), 0, 0, 1, 1},
    {&__pyx_n_s_COMPLEX, __pyx_k_COMPLEX, sizeof(__pyx_k_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_COMPLEX16, __pyx_k_COMPLEX16, sizeof(__pyx_k_COMPLEX16), 0, 0, 1, 1},
    {&__pyx_n_s_COMPLEX32, __pyx_k_COMPLEX32, sizeof(__pyx_k_COMPLEX32), 0, 0, 1, 1},
    {&__pyx_n_s_COMPLEX4, __pyx_k_COMPLEX4, sizeof(__pyx_k_COMPLEX4), 0, 0, 1, 1},
    {&__pyx_n_s_COMPLEX8, __pyx_k_COMPLEX8, sizeof(__pyx_k_COMPLEX8), 0, 0, 1, 1},
    {&__pyx_n_s_CONGRUENT, __pyx_k_CONGRUENT, sizeof(__pyx_k_CONGRUENT), 0, 0, 1, 1},
    {&__pyx_n_s_CONTIGUOUS, __pyx_k_CONTIGUOUS, sizeof(__pyx_k_CONTIGUOUS), 0, 0, 1, 1},
    {&__pyx_n_s_COUNT, __pyx_k_COUNT, sizeof(__pyx_k_COUNT), 0, 0, 1, 1},
    {&__pyx_n_s_CXX_BOOL, __pyx_k_CXX_BOOL, sizeof(__pyx_k_CXX_BOOL), 0, 0, 1, 1},
    {&__pyx_n_s_CXX_DOUBLE_COMPLEX, __pyx_k_CXX_DOUBLE_COMPLEX, sizeof(__pyx_k_CXX_DOUBLE_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_CXX_FLOAT_COMPLEX, __pyx_k_CXX_FLOAT_COMPLEX, sizeof(__pyx_k_CXX_FLOAT_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_CXX_LONG_DOUBLE_COMPLEX, __pyx_k_CXX_LONG_DOUBLE_COMPLEX, sizeof(__pyx_k_CXX_LONG_DOUBLE_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_C_BOOL, __pyx_k_C_BOOL, sizeof(__pyx_k_C_BOOL), 0, 0, 1, 1},
    {&__pyx_n_s_C_COMPLEX, __pyx_k_C_COMPLEX, sizeof(__pyx_k_C_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_C_DOUBLE_COMPLEX, __pyx_k_C_DOUBLE_COMPLEX, sizeof(__pyx_k_C_DOUBLE_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_C_FLOAT_COMPLEX, __pyx_k_C_FLOAT_COMPLEX, sizeof(__pyx_k_C_FLOAT_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_C_LONG_DOUBLE_COMPLEX, __pyx_k_C_LONG_DOUBLE_COMPLEX, sizeof(__pyx_k_C_LONG_DOUBLE_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_Call_errhandler, __pyx_k_Call_errhandler, sizeof(__pyx_k_Call_errhandler), 0, 0, 1, 1},
    {&__pyx_kp_s_Callable_Buffer_Buffer_Datatype, __pyx_k_Callable_Buffer_Buffer_Datatype, sizeof(__pyx_k_Callable_Buffer_Buffer_Datatype), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Buffer_Datatype_int_Buf, __pyx_k_Callable_Buffer_Datatype_int_Buf, sizeof(__pyx_k_Callable_Buffer_Datatype_int_Buf), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Comm_int_Any_Any_None, __pyx_k_Callable_Comm_int_Any_Any_None, sizeof(__pyx_k_Callable_Comm_int_Any_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Comm_int_Any_None_None, __pyx_k_Callable_Comm_int_Any_None_None, sizeof(__pyx_k_Callable_Comm_int_Any_None_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Comm_int_None, __pyx_k_Callable_Comm_int_None, sizeof(__pyx_k_Callable_Comm_int_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Datatype_int, __pyx_k_Callable_Datatype_int, sizeof(__pyx_k_Callable_Datatype_int), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Datatype_int_Any_Any_No, __pyx_k_Callable_Datatype_int_Any_Any_No, sizeof(__pyx_k_Callable_Datatype_int_Any_Any_No), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Datatype_int_Any_None_N, __pyx_k_Callable_Datatype_int_Any_None_N, sizeof(__pyx_k_Callable_Datatype_int_Any_None_N), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_File_int_None, __pyx_k_Callable_File_int_None, sizeof(__pyx_k_Callable_File_int_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_None_None, __pyx_k_Callable_None_None, sizeof(__pyx_k_Callable_None_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Session_int_None, __pyx_k_Callable_Session_int_None, sizeof(__pyx_k_Callable_Session_int_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Win_int_Any_Any_None, __pyx_k_Callable_Win_int_Any_Any_None, sizeof(__pyx_k_Callable_Win_int_Any_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Win_int_Any_None_None, __pyx_k_Callable_Win_int_Any_None_None, sizeof(__pyx_k_Callable_Win_int_Any_None_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Callable_Win_int_None, __pyx_k_Callable_Win_int_None, sizeof(__pyx_k_Callable_Win_int_None), 0, 0, 1, 0},
    {&__pyx_n_s_Cancel, __pyx_k_Cancel, sizeof(__pyx_k_Cancel), 0, 0, 1, 1},
    {&__pyx_n_s_Cart_map, __pyx_k_Cart_map, sizeof(__pyx_k_Cart_map), 0, 0, 1, 1},
    {&__pyx_n_s_Cartcomm, __pyx_k_Cartcomm, sizeof(__pyx_k_Cartcomm), 0, 0, 1, 1},
    {&__pyx_n_s_Cartcomm_Get_cart_rank, __pyx_k_Cartcomm_Get_cart_rank, sizeof(__pyx_k_Cartcomm_Get_cart_rank), 0, 0, 1, 1},
    {&__pyx_n_s_Cartcomm_Get_coords, __pyx_k_Cartcomm_Get_coords, sizeof(__pyx_k_Cartcomm_Get_coords), 0, 0, 1, 1},
    {&__pyx_n_s_Cartcomm_Get_dim, __pyx_k_Cartcomm_Get_dim, sizeof(__pyx_k_Cartcomm_Get_dim), 0, 0, 1, 1},
    {&__pyx_n_s_Cartcomm_Get_topo, __pyx_k_Cartcomm_Get_topo, sizeof(__pyx_k_Cartcomm_Get_topo), 0, 0, 1, 1},
    {&__pyx_n_s_Cartcomm_Shift, __pyx_k_Cartcomm_Shift, sizeof(__pyx_k_Cartcomm_Shift), 0, 0, 1, 1},
    {&__pyx_n_s_Cartcomm_Sub, __pyx_k_Cartcomm_Sub, sizeof(__pyx_k_Cartcomm_Sub), 0, 0, 1, 1},
    {&__pyx_n_s_Clone, __pyx_k_Clone, sizeof(__pyx_k_Clone), 0, 0, 1, 1},
    {&__pyx_n_s_Close, __pyx_k_Close, sizeof(__pyx_k_Close), 0, 0, 1, 1},
    {&__pyx_n_s_Close_port, __pyx_k_Close_port, sizeof(__pyx_k_Close_port), 0, 0, 1, 1},
    {&__pyx_n_s_Comm, __pyx_k_Comm, sizeof(__pyx_k_Comm), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Abort, __pyx_k_Comm_Abort, sizeof(__pyx_k_Comm_Abort), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ack_failed, __pyx_k_Comm_Ack_failed, sizeof(__pyx_k_Comm_Ack_failed), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Agree, __pyx_k_Comm_Agree, sizeof(__pyx_k_Comm_Agree), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Allgather, __pyx_k_Comm_Allgather, sizeof(__pyx_k_Comm_Allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Allgather_init, __pyx_k_Comm_Allgather_init, sizeof(__pyx_k_Comm_Allgather_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Allgatherv, __pyx_k_Comm_Allgatherv, sizeof(__pyx_k_Comm_Allgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Allgatherv_init, __pyx_k_Comm_Allgatherv_init, sizeof(__pyx_k_Comm_Allgatherv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Allreduce, __pyx_k_Comm_Allreduce, sizeof(__pyx_k_Comm_Allreduce), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Allreduce_init, __pyx_k_Comm_Allreduce_init, sizeof(__pyx_k_Comm_Allreduce_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Alltoall, __pyx_k_Comm_Alltoall, sizeof(__pyx_k_Comm_Alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Alltoall_init, __pyx_k_Comm_Alltoall_init, sizeof(__pyx_k_Comm_Alltoall_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Alltoallv, __pyx_k_Comm_Alltoallv, sizeof(__pyx_k_Comm_Alltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Alltoallv_init, __pyx_k_Comm_Alltoallv_init, sizeof(__pyx_k_Comm_Alltoallv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Alltoallw, __pyx_k_Comm_Alltoallw, sizeof(__pyx_k_Comm_Alltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Alltoallw_init, __pyx_k_Comm_Alltoallw_init, sizeof(__pyx_k_Comm_Alltoallw_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Attach_buffer, __pyx_k_Comm_Attach_buffer, sizeof(__pyx_k_Comm_Attach_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Barrier, __pyx_k_Comm_Barrier, sizeof(__pyx_k_Comm_Barrier), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Barrier_init, __pyx_k_Comm_Barrier_init, sizeof(__pyx_k_Comm_Barrier_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Bcast, __pyx_k_Comm_Bcast, sizeof(__pyx_k_Comm_Bcast), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Bcast_init, __pyx_k_Comm_Bcast_init, sizeof(__pyx_k_Comm_Bcast_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Bsend, __pyx_k_Comm_Bsend, sizeof(__pyx_k_Comm_Bsend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Bsend_init, __pyx_k_Comm_Bsend_init, sizeof(__pyx_k_Comm_Bsend_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Call_errhandler, __pyx_k_Comm_Call_errhandler, sizeof(__pyx_k_Comm_Call_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Clone, __pyx_k_Comm_Clone, sizeof(__pyx_k_Comm_Clone), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Compare, __pyx_k_Comm_Compare, sizeof(__pyx_k_Comm_Compare), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Create, __pyx_k_Comm_Create, sizeof(__pyx_k_Comm_Create), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Create_errhandler, __pyx_k_Comm_Create_errhandler, sizeof(__pyx_k_Comm_Create_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Create_keyval, __pyx_k_Comm_Create_keyval, sizeof(__pyx_k_Comm_Create_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Delete_attr, __pyx_k_Comm_Delete_attr, sizeof(__pyx_k_Comm_Delete_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Detach_buffer, __pyx_k_Comm_Detach_buffer, sizeof(__pyx_k_Comm_Detach_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Disconnect, __pyx_k_Comm_Disconnect, sizeof(__pyx_k_Comm_Disconnect), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Dup, __pyx_k_Comm_Dup, sizeof(__pyx_k_Comm_Dup), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Dup_with_info, __pyx_k_Comm_Dup_with_info, sizeof(__pyx_k_Comm_Dup_with_info), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Flush_buffer, __pyx_k_Comm_Flush_buffer, sizeof(__pyx_k_Comm_Flush_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Free, __pyx_k_Comm_Free, sizeof(__pyx_k_Comm_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Free_keyval, __pyx_k_Comm_Free_keyval, sizeof(__pyx_k_Comm_Free_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Gather, __pyx_k_Comm_Gather, sizeof(__pyx_k_Comm_Gather), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Gather_init, __pyx_k_Comm_Gather_init, sizeof(__pyx_k_Comm_Gather_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Gatherv, __pyx_k_Comm_Gatherv, sizeof(__pyx_k_Comm_Gatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Gatherv_init, __pyx_k_Comm_Gatherv_init, sizeof(__pyx_k_Comm_Gatherv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_attr, __pyx_k_Comm_Get_attr, sizeof(__pyx_k_Comm_Get_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_errhandler, __pyx_k_Comm_Get_errhandler, sizeof(__pyx_k_Comm_Get_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_failed, __pyx_k_Comm_Get_failed, sizeof(__pyx_k_Comm_Get_failed), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_group, __pyx_k_Comm_Get_group, sizeof(__pyx_k_Comm_Get_group), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_info, __pyx_k_Comm_Get_info, sizeof(__pyx_k_Comm_Get_info), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_name, __pyx_k_Comm_Get_name, sizeof(__pyx_k_Comm_Get_name), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_parent, __pyx_k_Comm_Get_parent, sizeof(__pyx_k_Comm_Get_parent), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_rank, __pyx_k_Comm_Get_rank, sizeof(__pyx_k_Comm_Get_rank), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_size, __pyx_k_Comm_Get_size, sizeof(__pyx_k_Comm_Get_size), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Get_topology, __pyx_k_Comm_Get_topology, sizeof(__pyx_k_Comm_Get_topology), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iagree, __pyx_k_Comm_Iagree, sizeof(__pyx_k_Comm_Iagree), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iallgather, __pyx_k_Comm_Iallgather, sizeof(__pyx_k_Comm_Iallgather), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iallgatherv, __pyx_k_Comm_Iallgatherv, sizeof(__pyx_k_Comm_Iallgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iallreduce, __pyx_k_Comm_Iallreduce, sizeof(__pyx_k_Comm_Iallreduce), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ialltoall, __pyx_k_Comm_Ialltoall, sizeof(__pyx_k_Comm_Ialltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ialltoallv, __pyx_k_Comm_Ialltoallv, sizeof(__pyx_k_Comm_Ialltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ialltoallw, __pyx_k_Comm_Ialltoallw, sizeof(__pyx_k_Comm_Ialltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ibarrier, __pyx_k_Comm_Ibarrier, sizeof(__pyx_k_Comm_Ibarrier), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ibcast, __pyx_k_Comm_Ibcast, sizeof(__pyx_k_Comm_Ibcast), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ibsend, __pyx_k_Comm_Ibsend, sizeof(__pyx_k_Comm_Ibsend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Idup, __pyx_k_Comm_Idup, sizeof(__pyx_k_Comm_Idup), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Idup_with_info, __pyx_k_Comm_Idup_with_info, sizeof(__pyx_k_Comm_Idup_with_info), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iflush_buffer, __pyx_k_Comm_Iflush_buffer, sizeof(__pyx_k_Comm_Iflush_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Igather, __pyx_k_Comm_Igather, sizeof(__pyx_k_Comm_Igather), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Igatherv, __pyx_k_Comm_Igatherv, sizeof(__pyx_k_Comm_Igatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Improbe, __pyx_k_Comm_Improbe, sizeof(__pyx_k_Comm_Improbe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iprobe, __pyx_k_Comm_Iprobe, sizeof(__pyx_k_Comm_Iprobe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Irecv, __pyx_k_Comm_Irecv, sizeof(__pyx_k_Comm_Irecv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ireduce, __pyx_k_Comm_Ireduce, sizeof(__pyx_k_Comm_Ireduce), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ireduce_scatter, __pyx_k_Comm_Ireduce_scatter, sizeof(__pyx_k_Comm_Ireduce_scatter), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ireduce_scatter_block, __pyx_k_Comm_Ireduce_scatter_block, sizeof(__pyx_k_Comm_Ireduce_scatter_block), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Irsend, __pyx_k_Comm_Irsend, sizeof(__pyx_k_Comm_Irsend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Is_inter, __pyx_k_Comm_Is_inter, sizeof(__pyx_k_Comm_Is_inter), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Is_intra, __pyx_k_Comm_Is_intra, sizeof(__pyx_k_Comm_Is_intra), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Is_revoked, __pyx_k_Comm_Is_revoked, sizeof(__pyx_k_Comm_Is_revoked), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iscatter, __pyx_k_Comm_Iscatter, sizeof(__pyx_k_Comm_Iscatter), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Iscatterv, __pyx_k_Comm_Iscatterv, sizeof(__pyx_k_Comm_Iscatterv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Isend, __pyx_k_Comm_Isend, sizeof(__pyx_k_Comm_Isend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Isendrecv, __pyx_k_Comm_Isendrecv, sizeof(__pyx_k_Comm_Isendrecv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Isendrecv_replace, __pyx_k_Comm_Isendrecv_replace, sizeof(__pyx_k_Comm_Isendrecv_replace), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ishrink, __pyx_k_Comm_Ishrink, sizeof(__pyx_k_Comm_Ishrink), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Issend, __pyx_k_Comm_Issend, sizeof(__pyx_k_Comm_Issend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Join, __pyx_k_Comm_Join, sizeof(__pyx_k_Comm_Join), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Mprobe, __pyx_k_Comm_Mprobe, sizeof(__pyx_k_Comm_Mprobe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Precv_init, __pyx_k_Comm_Precv_init, sizeof(__pyx_k_Comm_Precv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Probe, __pyx_k_Comm_Probe, sizeof(__pyx_k_Comm_Probe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Psend_init, __pyx_k_Comm_Psend_init, sizeof(__pyx_k_Comm_Psend_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Recv, __pyx_k_Comm_Recv, sizeof(__pyx_k_Comm_Recv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Recv_init, __pyx_k_Comm_Recv_init, sizeof(__pyx_k_Comm_Recv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Reduce, __pyx_k_Comm_Reduce, sizeof(__pyx_k_Comm_Reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Reduce_init, __pyx_k_Comm_Reduce_init, sizeof(__pyx_k_Comm_Reduce_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Reduce_scatter, __pyx_k_Comm_Reduce_scatter, sizeof(__pyx_k_Comm_Reduce_scatter), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Reduce_scatter_block, __pyx_k_Comm_Reduce_scatter_block, sizeof(__pyx_k_Comm_Reduce_scatter_block), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Reduce_scatter_block_init, __pyx_k_Comm_Reduce_scatter_block_init, sizeof(__pyx_k_Comm_Reduce_scatter_block_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Reduce_scatter_init, __pyx_k_Comm_Reduce_scatter_init, sizeof(__pyx_k_Comm_Reduce_scatter_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Revoke, __pyx_k_Comm_Revoke, sizeof(__pyx_k_Comm_Revoke), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Rsend, __pyx_k_Comm_Rsend, sizeof(__pyx_k_Comm_Rsend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Rsend_init, __pyx_k_Comm_Rsend_init, sizeof(__pyx_k_Comm_Rsend_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Scatter, __pyx_k_Comm_Scatter, sizeof(__pyx_k_Comm_Scatter), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Scatter_init, __pyx_k_Comm_Scatter_init, sizeof(__pyx_k_Comm_Scatter_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Scatterv, __pyx_k_Comm_Scatterv, sizeof(__pyx_k_Comm_Scatterv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Scatterv_init, __pyx_k_Comm_Scatterv_init, sizeof(__pyx_k_Comm_Scatterv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Send, __pyx_k_Comm_Send, sizeof(__pyx_k_Comm_Send), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Send_init, __pyx_k_Comm_Send_init, sizeof(__pyx_k_Comm_Send_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Sendrecv, __pyx_k_Comm_Sendrecv, sizeof(__pyx_k_Comm_Sendrecv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Sendrecv_replace, __pyx_k_Comm_Sendrecv_replace, sizeof(__pyx_k_Comm_Sendrecv_replace), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Set_attr, __pyx_k_Comm_Set_attr, sizeof(__pyx_k_Comm_Set_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Set_errhandler, __pyx_k_Comm_Set_errhandler, sizeof(__pyx_k_Comm_Set_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Set_info, __pyx_k_Comm_Set_info, sizeof(__pyx_k_Comm_Set_info), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Set_name, __pyx_k_Comm_Set_name, sizeof(__pyx_k_Comm_Set_name), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Shrink, __pyx_k_Comm_Shrink, sizeof(__pyx_k_Comm_Shrink), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Split, __pyx_k_Comm_Split, sizeof(__pyx_k_Comm_Split), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Split_type, __pyx_k_Comm_Split_type, sizeof(__pyx_k_Comm_Split_type), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ssend, __pyx_k_Comm_Ssend, sizeof(__pyx_k_Comm_Ssend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_Ssend_init, __pyx_k_Comm_Ssend_init, sizeof(__pyx_k_Comm_Ssend_init), 0, 0, 1, 1},
    {&__pyx_n_s_Comm___reduce, __pyx_k_Comm___reduce, sizeof(__pyx_k_Comm___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_allgather, __pyx_k_Comm_allgather, sizeof(__pyx_k_Comm_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_allreduce, __pyx_k_Comm_allreduce, sizeof(__pyx_k_Comm_allreduce), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_alltoall, __pyx_k_Comm_alltoall, sizeof(__pyx_k_Comm_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_barrier, __pyx_k_Comm_barrier, sizeof(__pyx_k_Comm_barrier), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_bcast, __pyx_k_Comm_bcast, sizeof(__pyx_k_Comm_bcast), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_bsend, __pyx_k_Comm_bsend, sizeof(__pyx_k_Comm_bsend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_f2py, __pyx_k_Comm_f2py, sizeof(__pyx_k_Comm_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_free, __pyx_k_Comm_free, sizeof(__pyx_k_Comm_free), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_fromhandle, __pyx_k_Comm_fromhandle, sizeof(__pyx_k_Comm_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_gather, __pyx_k_Comm_gather, sizeof(__pyx_k_Comm_gather), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_ibsend, __pyx_k_Comm_ibsend, sizeof(__pyx_k_Comm_ibsend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_improbe, __pyx_k_Comm_improbe, sizeof(__pyx_k_Comm_improbe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_iprobe, __pyx_k_Comm_iprobe, sizeof(__pyx_k_Comm_iprobe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_irecv, __pyx_k_Comm_irecv, sizeof(__pyx_k_Comm_irecv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_isend, __pyx_k_Comm_isend, sizeof(__pyx_k_Comm_isend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_issend, __pyx_k_Comm_issend, sizeof(__pyx_k_Comm_issend), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_mprobe, __pyx_k_Comm_mprobe, sizeof(__pyx_k_Comm_mprobe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_probe, __pyx_k_Comm_probe, sizeof(__pyx_k_Comm_probe), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_py2f, __pyx_k_Comm_py2f, sizeof(__pyx_k_Comm_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_recv, __pyx_k_Comm_recv, sizeof(__pyx_k_Comm_recv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_reduce, __pyx_k_Comm_reduce, sizeof(__pyx_k_Comm_reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_scatter, __pyx_k_Comm_scatter, sizeof(__pyx_k_Comm_scatter), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_send, __pyx_k_Comm_send, sizeof(__pyx_k_Comm_send), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_sendrecv, __pyx_k_Comm_sendrecv, sizeof(__pyx_k_Comm_sendrecv), 0, 0, 1, 1},
    {&__pyx_n_s_Comm_ssend, __pyx_k_Comm_ssend, sizeof(__pyx_k_Comm_ssend), 0, 0, 1, 1},
    {&__pyx_n_s_Commit, __pyx_k_Commit, sizeof(__pyx_k_Commit), 0, 0, 1, 1},
    {&__pyx_n_s_Compare, __pyx_k_Compare, sizeof(__pyx_k_Compare), 0, 0, 1, 1},
    {&__pyx_n_s_Compare_and_swap, __pyx_k_Compare_and_swap, sizeof(__pyx_k_Compare_and_swap), 0, 0, 1, 1},
    {&__pyx_n_s_Complete, __pyx_k_Complete, sizeof(__pyx_k_Complete), 0, 0, 1, 1},
    {&__pyx_n_s_Compute_dims, __pyx_k_Compute_dims, sizeof(__pyx_k_Compute_dims), 0, 0, 1, 1},
    {&__pyx_n_s_Connect, __pyx_k_Connect, sizeof(__pyx_k_Connect), 0, 0, 1, 1},
    {&__pyx_n_s_Create, __pyx_k_Create, sizeof(__pyx_k_Create), 0, 0, 1, 1},
    {&__pyx_n_u_Create_2, __pyx_k_Create_2, sizeof(__pyx_k_Create_2), 0, 1, 0, 1},
    {&__pyx_n_s_Create_cart, __pyx_k_Create_cart, sizeof(__pyx_k_Create_cart), 0, 0, 1, 1},
    {&__pyx_n_s_Create_contiguous, __pyx_k_Create_contiguous, sizeof(__pyx_k_Create_contiguous), 0, 0, 1, 1},
    {&__pyx_n_s_Create_darray, __pyx_k_Create_darray, sizeof(__pyx_k_Create_darray), 0, 0, 1, 1},
    {&__pyx_n_s_Create_dist_graph, __pyx_k_Create_dist_graph, sizeof(__pyx_k_Create_dist_graph), 0, 0, 1, 1},
    {&__pyx_n_s_Create_dist_graph_adjacent, __pyx_k_Create_dist_graph_adjacent, sizeof(__pyx_k_Create_dist_graph_adjacent), 0, 0, 1, 1},
    {&__pyx_n_s_Create_dup, __pyx_k_Create_dup, sizeof(__pyx_k_Create_dup), 0, 0, 1, 1},
    {&__pyx_n_s_Create_dynamic, __pyx_k_Create_dynamic, sizeof(__pyx_k_Create_dynamic), 0, 0, 1, 1},
    {&__pyx_n_s_Create_env, __pyx_k_Create_env, sizeof(__pyx_k_Create_env), 0, 0, 1, 1},
    {&__pyx_n_s_Create_errhandler, __pyx_k_Create_errhandler, sizeof(__pyx_k_Create_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Create_f90_complex, __pyx_k_Create_f90_complex, sizeof(__pyx_k_Create_f90_complex), 0, 0, 1, 1},
    {&__pyx_n_s_Create_f90_integer, __pyx_k_Create_f90_integer, sizeof(__pyx_k_Create_f90_integer), 0, 0, 1, 1},
    {&__pyx_n_s_Create_f90_real, __pyx_k_Create_f90_real, sizeof(__pyx_k_Create_f90_real), 0, 0, 1, 1},
    {&__pyx_n_s_Create_from_group, __pyx_k_Create_from_group, sizeof(__pyx_k_Create_from_group), 0, 0, 1, 1},
    {&__pyx_n_s_Create_from_groups, __pyx_k_Create_from_groups, sizeof(__pyx_k_Create_from_groups), 0, 0, 1, 1},
    {&__pyx_n_s_Create_from_session_pset, __pyx_k_Create_from_session_pset, sizeof(__pyx_k_Create_from_session_pset), 0, 0, 1, 1},
    {&__pyx_n_s_Create_graph, __pyx_k_Create_graph, sizeof(__pyx_k_Create_graph), 0, 0, 1, 1},
    {&__pyx_n_s_Create_group, __pyx_k_Create_group, sizeof(__pyx_k_Create_group), 0, 0, 1, 1},
    {&__pyx_n_s_Create_hindexed, __pyx_k_Create_hindexed, sizeof(__pyx_k_Create_hindexed), 0, 0, 1, 1},
    {&__pyx_n_s_Create_hindexed_block, __pyx_k_Create_hindexed_block, sizeof(__pyx_k_Create_hindexed_block), 0, 0, 1, 1},
    {&__pyx_n_s_Create_hvector, __pyx_k_Create_hvector, sizeof(__pyx_k_Create_hvector), 0, 0, 1, 1},
    {&__pyx_n_s_Create_indexed, __pyx_k_Create_indexed, sizeof(__pyx_k_Create_indexed), 0, 0, 1, 1},
    {&__pyx_n_s_Create_indexed_block, __pyx_k_Create_indexed_block, sizeof(__pyx_k_Create_indexed_block), 0, 0, 1, 1},
    {&__pyx_n_s_Create_intercomm, __pyx_k_Create_intercomm, sizeof(__pyx_k_Create_intercomm), 0, 0, 1, 1},
    {&__pyx_n_s_Create_keyval, __pyx_k_Create_keyval, sizeof(__pyx_k_Create_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Create_resized, __pyx_k_Create_resized, sizeof(__pyx_k_Create_resized), 0, 0, 1, 1},
    {&__pyx_n_s_Create_struct, __pyx_k_Create_struct, sizeof(__pyx_k_Create_struct), 0, 0, 1, 1},
    {&__pyx_n_s_Create_subarray, __pyx_k_Create_subarray, sizeof(__pyx_k_Create_subarray), 0, 0, 1, 1},
    {&__pyx_n_s_Create_vector, __pyx_k_Create_vector, sizeof(__pyx_k_Create_vector), 0, 0, 1, 1},
    {&__pyx_n_s_DARRAY, __pyx_k_DARRAY, sizeof(__pyx_k_DARRAY), 0, 0, 1, 1},
    {&__pyx_n_s_DATATYPE_NULL, __pyx_k_DATATYPE_NULL, sizeof(__pyx_k_DATATYPE_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_DISPLACEMENT_CURRENT, __pyx_k_DISPLACEMENT_CURRENT, sizeof(__pyx_k_DISPLACEMENT_CURRENT), 0, 0, 1, 1},
    {&__pyx_n_s_DISP_CUR, __pyx_k_DISP_CUR, sizeof(__pyx_k_DISP_CUR), 0, 0, 1, 1},
    {&__pyx_n_s_DISTRIBUTE_BLOCK, __pyx_k_DISTRIBUTE_BLOCK, sizeof(__pyx_k_DISTRIBUTE_BLOCK), 0, 0, 1, 1},
    {&__pyx_n_s_DISTRIBUTE_CYCLIC, __pyx_k_DISTRIBUTE_CYCLIC, sizeof(__pyx_k_DISTRIBUTE_CYCLIC), 0, 0, 1, 1},
    {&__pyx_n_s_DISTRIBUTE_DFLT_DARG, __pyx_k_DISTRIBUTE_DFLT_DARG, sizeof(__pyx_k_DISTRIBUTE_DFLT_DARG), 0, 0, 1, 1},
    {&__pyx_n_s_DISTRIBUTE_NONE, __pyx_k_DISTRIBUTE_NONE, sizeof(__pyx_k_DISTRIBUTE_NONE), 0, 0, 1, 1},
    {&__pyx_n_s_DIST_GRAPH, __pyx_k_DIST_GRAPH, sizeof(__pyx_k_DIST_GRAPH), 0, 0, 1, 1},
    {&__pyx_n_s_DOUBLE, __pyx_k_DOUBLE, sizeof(__pyx_k_DOUBLE), 0, 0, 1, 1},
    {&__pyx_n_s_DOUBLE_COMPLEX, __pyx_k_DOUBLE_COMPLEX, sizeof(__pyx_k_DOUBLE_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_DOUBLE_INT, __pyx_k_DOUBLE_INT, sizeof(__pyx_k_DOUBLE_INT), 0, 0, 1, 1},
    {&__pyx_n_s_DOUBLE_PRECISION, __pyx_k_DOUBLE_PRECISION, sizeof(__pyx_k_DOUBLE_PRECISION), 0, 0, 1, 1},
    {&__pyx_n_s_DUP, __pyx_k_DUP, sizeof(__pyx_k_DUP), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype, __pyx_k_Datatype, sizeof(__pyx_k_Datatype), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Commit, __pyx_k_Datatype_Commit, sizeof(__pyx_k_Datatype_Commit), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_contiguous, __pyx_k_Datatype_Create_contiguous, sizeof(__pyx_k_Datatype_Create_contiguous), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_darray, __pyx_k_Datatype_Create_darray, sizeof(__pyx_k_Datatype_Create_darray), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_f90_complex, __pyx_k_Datatype_Create_f90_complex, sizeof(__pyx_k_Datatype_Create_f90_complex), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_f90_integer, __pyx_k_Datatype_Create_f90_integer, sizeof(__pyx_k_Datatype_Create_f90_integer), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_f90_real, __pyx_k_Datatype_Create_f90_real, sizeof(__pyx_k_Datatype_Create_f90_real), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_hindexed, __pyx_k_Datatype_Create_hindexed, sizeof(__pyx_k_Datatype_Create_hindexed), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_hindexed_block, __pyx_k_Datatype_Create_hindexed_block, sizeof(__pyx_k_Datatype_Create_hindexed_block), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_hvector, __pyx_k_Datatype_Create_hvector, sizeof(__pyx_k_Datatype_Create_hvector), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_indexed, __pyx_k_Datatype_Create_indexed, sizeof(__pyx_k_Datatype_Create_indexed), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_indexed_block, __pyx_k_Datatype_Create_indexed_block, sizeof(__pyx_k_Datatype_Create_indexed_block), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_keyval, __pyx_k_Datatype_Create_keyval, sizeof(__pyx_k_Datatype_Create_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_resized, __pyx_k_Datatype_Create_resized, sizeof(__pyx_k_Datatype_Create_resized), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_struct, __pyx_k_Datatype_Create_struct, sizeof(__pyx_k_Datatype_Create_struct), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_subarray, __pyx_k_Datatype_Create_subarray, sizeof(__pyx_k_Datatype_Create_subarray), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Create_vector, __pyx_k_Datatype_Create_vector, sizeof(__pyx_k_Datatype_Create_vector), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Delete_attr, __pyx_k_Datatype_Delete_attr, sizeof(__pyx_k_Datatype_Delete_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Dup, __pyx_k_Datatype_Dup, sizeof(__pyx_k_Datatype_Dup), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Free, __pyx_k_Datatype_Free, sizeof(__pyx_k_Datatype_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Free_keyval, __pyx_k_Datatype_Free_keyval, sizeof(__pyx_k_Datatype_Free_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_attr, __pyx_k_Datatype_Get_attr, sizeof(__pyx_k_Datatype_Get_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_contents, __pyx_k_Datatype_Get_contents, sizeof(__pyx_k_Datatype_Get_contents), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_envelope, __pyx_k_Datatype_Get_envelope, sizeof(__pyx_k_Datatype_Get_envelope), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_extent, __pyx_k_Datatype_Get_extent, sizeof(__pyx_k_Datatype_Get_extent), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_name, __pyx_k_Datatype_Get_name, sizeof(__pyx_k_Datatype_Get_name), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_size, __pyx_k_Datatype_Get_size, sizeof(__pyx_k_Datatype_Get_size), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_true_extent, __pyx_k_Datatype_Get_true_extent, sizeof(__pyx_k_Datatype_Get_true_extent), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Get_value_index, __pyx_k_Datatype_Get_value_index, sizeof(__pyx_k_Datatype_Get_value_index), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Match_size, __pyx_k_Datatype_Match_size, sizeof(__pyx_k_Datatype_Match_size), 0, 0, 1, 1},
    {&__pyx_kp_s_Datatype_None, __pyx_k_Datatype_None, sizeof(__pyx_k_Datatype_None), 0, 0, 1, 0},
    {&__pyx_n_s_Datatype_Pack, __pyx_k_Datatype_Pack, sizeof(__pyx_k_Datatype_Pack), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Pack_external, __pyx_k_Datatype_Pack_external, sizeof(__pyx_k_Datatype_Pack_external), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Pack_external_size, __pyx_k_Datatype_Pack_external_size, sizeof(__pyx_k_Datatype_Pack_external_size), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Pack_size, __pyx_k_Datatype_Pack_size, sizeof(__pyx_k_Datatype_Pack_size), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Set_attr, __pyx_k_Datatype_Set_attr, sizeof(__pyx_k_Datatype_Set_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Set_name, __pyx_k_Datatype_Set_name, sizeof(__pyx_k_Datatype_Set_name), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Unpack, __pyx_k_Datatype_Unpack, sizeof(__pyx_k_Datatype_Unpack), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_Unpack_external, __pyx_k_Datatype_Unpack_external, sizeof(__pyx_k_Datatype_Unpack_external), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype___reduce, __pyx_k_Datatype___reduce, sizeof(__pyx_k_Datatype___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_decode, __pyx_k_Datatype_decode, sizeof(__pyx_k_Datatype_decode), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_f2py, __pyx_k_Datatype_f2py, sizeof(__pyx_k_Datatype_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_free, __pyx_k_Datatype_free, sizeof(__pyx_k_Datatype_free), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_fromcode, __pyx_k_Datatype_fromcode, sizeof(__pyx_k_Datatype_fromcode), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_fromhandle, __pyx_k_Datatype_fromhandle, sizeof(__pyx_k_Datatype_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_py2f, __pyx_k_Datatype_py2f, sizeof(__pyx_k_Datatype_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Datatype_tocode, __pyx_k_Datatype_tocode, sizeof(__pyx_k_Datatype_tocode), 0, 0, 1, 1},
    {&__pyx_n_s_Delete, __pyx_k_Delete, sizeof(__pyx_k_Delete), 0, 0, 1, 1},
    {&__pyx_n_s_Delete_attr, __pyx_k_Delete_attr, sizeof(__pyx_k_Delete_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Detach, __pyx_k_Detach, sizeof(__pyx_k_Detach), 0, 0, 1, 1},
    {&__pyx_n_s_Detach_buffer, __pyx_k_Detach_buffer, sizeof(__pyx_k_Detach_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Difference, __pyx_k_Difference, sizeof(__pyx_k_Difference), 0, 0, 1, 1},
    {&__pyx_n_s_Disconnect, __pyx_k_Disconnect, sizeof(__pyx_k_Disconnect), 0, 0, 1, 1},
    {&__pyx_n_s_Distgraphcomm, __pyx_k_Distgraphcomm, sizeof(__pyx_k_Distgraphcomm), 0, 0, 1, 1},
    {&__pyx_n_s_Distgraphcomm_Get_dist_neighbors, __pyx_k_Distgraphcomm_Get_dist_neighbors, sizeof(__pyx_k_Distgraphcomm_Get_dist_neighbors), 0, 0, 1, 1},
    {&__pyx_n_s_Distgraphcomm_Get_dist_neighbors_2, __pyx_k_Distgraphcomm_Get_dist_neighbors_2, sizeof(__pyx_k_Distgraphcomm_Get_dist_neighbors_2), 0, 0, 1, 1},
    {&__pyx_n_s_Dup, __pyx_k_Dup, sizeof(__pyx_k_Dup), 0, 0, 1, 1},
    {&__pyx_n_s_Dup_with_info, __pyx_k_Dup_with_info, sizeof(__pyx_k_Dup_with_info), 0, 0, 1, 1},
    {&__pyx_n_s_ERRHANDLER_NULL, __pyx_k_ERRHANDLER_NULL, sizeof(__pyx_k_ERRHANDLER_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_ERRORS_ABORT, __pyx_k_ERRORS_ABORT, sizeof(__pyx_k_ERRORS_ABORT), 0, 0, 1, 1},
    {&__pyx_n_s_ERRORS_ARE_FATAL, __pyx_k_ERRORS_ARE_FATAL, sizeof(__pyx_k_ERRORS_ARE_FATAL), 0, 0, 1, 1},
    {&__pyx_n_s_ERRORS_RETURN, __pyx_k_ERRORS_RETURN, sizeof(__pyx_k_ERRORS_RETURN), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_ACCESS, __pyx_k_ERR_ACCESS, sizeof(__pyx_k_ERR_ACCESS), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_AMODE, __pyx_k_ERR_AMODE, sizeof(__pyx_k_ERR_AMODE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_ARG, __pyx_k_ERR_ARG, sizeof(__pyx_k_ERR_ARG), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_ASSERT, __pyx_k_ERR_ASSERT, sizeof(__pyx_k_ERR_ASSERT), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_BAD_FILE, __pyx_k_ERR_BAD_FILE, sizeof(__pyx_k_ERR_BAD_FILE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_BASE, __pyx_k_ERR_BASE, sizeof(__pyx_k_ERR_BASE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_BUFFER, __pyx_k_ERR_BUFFER, sizeof(__pyx_k_ERR_BUFFER), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_COMM, __pyx_k_ERR_COMM, sizeof(__pyx_k_ERR_COMM), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_CONVERSION, __pyx_k_ERR_CONVERSION, sizeof(__pyx_k_ERR_CONVERSION), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_COUNT, __pyx_k_ERR_COUNT, sizeof(__pyx_k_ERR_COUNT), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_DIMS, __pyx_k_ERR_DIMS, sizeof(__pyx_k_ERR_DIMS), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_DISP, __pyx_k_ERR_DISP, sizeof(__pyx_k_ERR_DISP), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_DUP_DATAREP, __pyx_k_ERR_DUP_DATAREP, sizeof(__pyx_k_ERR_DUP_DATAREP), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_ERRHANDLER, __pyx_k_ERR_ERRHANDLER, sizeof(__pyx_k_ERR_ERRHANDLER), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_FILE, __pyx_k_ERR_FILE, sizeof(__pyx_k_ERR_FILE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_FILE_EXISTS, __pyx_k_ERR_FILE_EXISTS, sizeof(__pyx_k_ERR_FILE_EXISTS), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_FILE_IN_USE, __pyx_k_ERR_FILE_IN_USE, sizeof(__pyx_k_ERR_FILE_IN_USE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_GROUP, __pyx_k_ERR_GROUP, sizeof(__pyx_k_ERR_GROUP), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_INFO, __pyx_k_ERR_INFO, sizeof(__pyx_k_ERR_INFO), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_INFO_KEY, __pyx_k_ERR_INFO_KEY, sizeof(__pyx_k_ERR_INFO_KEY), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_INFO_NOKEY, __pyx_k_ERR_INFO_NOKEY, sizeof(__pyx_k_ERR_INFO_NOKEY), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_INFO_VALUE, __pyx_k_ERR_INFO_VALUE, sizeof(__pyx_k_ERR_INFO_VALUE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_INTERN, __pyx_k_ERR_INTERN, sizeof(__pyx_k_ERR_INTERN), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_IN_STATUS, __pyx_k_ERR_IN_STATUS, sizeof(__pyx_k_ERR_IN_STATUS), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_IO, __pyx_k_ERR_IO, sizeof(__pyx_k_ERR_IO), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_KEYVAL, __pyx_k_ERR_KEYVAL, sizeof(__pyx_k_ERR_KEYVAL), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_LASTCODE, __pyx_k_ERR_LASTCODE, sizeof(__pyx_k_ERR_LASTCODE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_LOCKTYPE, __pyx_k_ERR_LOCKTYPE, sizeof(__pyx_k_ERR_LOCKTYPE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_NAME, __pyx_k_ERR_NAME, sizeof(__pyx_k_ERR_NAME), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_NOT_SAME, __pyx_k_ERR_NOT_SAME, sizeof(__pyx_k_ERR_NOT_SAME), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_NO_MEM, __pyx_k_ERR_NO_MEM, sizeof(__pyx_k_ERR_NO_MEM), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_NO_SPACE, __pyx_k_ERR_NO_SPACE, sizeof(__pyx_k_ERR_NO_SPACE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_NO_SUCH_FILE, __pyx_k_ERR_NO_SUCH_FILE, sizeof(__pyx_k_ERR_NO_SUCH_FILE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_OP, __pyx_k_ERR_OP, sizeof(__pyx_k_ERR_OP), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_OTHER, __pyx_k_ERR_OTHER, sizeof(__pyx_k_ERR_OTHER), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_PENDING, __pyx_k_ERR_PENDING, sizeof(__pyx_k_ERR_PENDING), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_PORT, __pyx_k_ERR_PORT, sizeof(__pyx_k_ERR_PORT), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_PROC_ABORTED, __pyx_k_ERR_PROC_ABORTED, sizeof(__pyx_k_ERR_PROC_ABORTED), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_PROC_FAILED, __pyx_k_ERR_PROC_FAILED, sizeof(__pyx_k_ERR_PROC_FAILED), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_PROC_FAILED_PENDING, __pyx_k_ERR_PROC_FAILED_PENDING, sizeof(__pyx_k_ERR_PROC_FAILED_PENDING), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_QUOTA, __pyx_k_ERR_QUOTA, sizeof(__pyx_k_ERR_QUOTA), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_RANK, __pyx_k_ERR_RANK, sizeof(__pyx_k_ERR_RANK), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_READ_ONLY, __pyx_k_ERR_READ_ONLY, sizeof(__pyx_k_ERR_READ_ONLY), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_REQUEST, __pyx_k_ERR_REQUEST, sizeof(__pyx_k_ERR_REQUEST), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_REVOKED, __pyx_k_ERR_REVOKED, sizeof(__pyx_k_ERR_REVOKED), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_RMA_ATTACH, __pyx_k_ERR_RMA_ATTACH, sizeof(__pyx_k_ERR_RMA_ATTACH), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_RMA_CONFLICT, __pyx_k_ERR_RMA_CONFLICT, sizeof(__pyx_k_ERR_RMA_CONFLICT), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_RMA_FLAVOR, __pyx_k_ERR_RMA_FLAVOR, sizeof(__pyx_k_ERR_RMA_FLAVOR), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_RMA_RANGE, __pyx_k_ERR_RMA_RANGE, sizeof(__pyx_k_ERR_RMA_RANGE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_RMA_SHARED, __pyx_k_ERR_RMA_SHARED, sizeof(__pyx_k_ERR_RMA_SHARED), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_RMA_SYNC, __pyx_k_ERR_RMA_SYNC, sizeof(__pyx_k_ERR_RMA_SYNC), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_ROOT, __pyx_k_ERR_ROOT, sizeof(__pyx_k_ERR_ROOT), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_SERVICE, __pyx_k_ERR_SERVICE, sizeof(__pyx_k_ERR_SERVICE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_SESSION, __pyx_k_ERR_SESSION, sizeof(__pyx_k_ERR_SESSION), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_SIZE, __pyx_k_ERR_SIZE, sizeof(__pyx_k_ERR_SIZE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_SPAWN, __pyx_k_ERR_SPAWN, sizeof(__pyx_k_ERR_SPAWN), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_TAG, __pyx_k_ERR_TAG, sizeof(__pyx_k_ERR_TAG), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_TOPOLOGY, __pyx_k_ERR_TOPOLOGY, sizeof(__pyx_k_ERR_TOPOLOGY), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_TRUNCATE, __pyx_k_ERR_TRUNCATE, sizeof(__pyx_k_ERR_TRUNCATE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_TYPE, __pyx_k_ERR_TYPE, sizeof(__pyx_k_ERR_TYPE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_UNKNOWN, __pyx_k_ERR_UNKNOWN, sizeof(__pyx_k_ERR_UNKNOWN), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_UNSUPPORTED_DATAREP, __pyx_k_ERR_UNSUPPORTED_DATAREP, sizeof(__pyx_k_ERR_UNSUPPORTED_DATAREP), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_UNSUPPORTED_OPERATION, __pyx_k_ERR_UNSUPPORTED_OPERATION, sizeof(__pyx_k_ERR_UNSUPPORTED_OPERATION), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_VALUE_TOO_LARGE, __pyx_k_ERR_VALUE_TOO_LARGE, sizeof(__pyx_k_ERR_VALUE_TOO_LARGE), 0, 0, 1, 1},
    {&__pyx_n_s_ERR_WIN, __pyx_k_ERR_WIN, sizeof(__pyx_k_ERR_WIN), 0, 0, 1, 1},
    {&__pyx_n_s_Ellipsis, __pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 0, 1, 1},
    {&__pyx_n_s_Errhandler, __pyx_k_Errhandler, sizeof(__pyx_k_Errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Errhandler_Free, __pyx_k_Errhandler_Free, sizeof(__pyx_k_Errhandler_Free), 0, 0, 1, 1},
    {&__pyx_kp_s_Errhandler_None, __pyx_k_Errhandler_None, sizeof(__pyx_k_Errhandler_None), 0, 0, 1, 0},
    {&__pyx_n_s_Errhandler___reduce, __pyx_k_Errhandler___reduce, sizeof(__pyx_k_Errhandler___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Errhandler_f2py, __pyx_k_Errhandler_f2py, sizeof(__pyx_k_Errhandler_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Errhandler_free, __pyx_k_Errhandler_free, sizeof(__pyx_k_Errhandler_free), 0, 0, 1, 1},
    {&__pyx_n_s_Errhandler_fromhandle, __pyx_k_Errhandler_fromhandle, sizeof(__pyx_k_Errhandler_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Errhandler_py2f, __pyx_k_Errhandler_py2f, sizeof(__pyx_k_Errhandler_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Exception, __pyx_k_Exception, sizeof(__pyx_k_Exception), 0, 0, 1, 1},
    {&__pyx_n_s_Exception_Get_error_class, __pyx_k_Exception_Get_error_class, sizeof(__pyx_k_Exception_Get_error_class), 0, 0, 1, 1},
    {&__pyx_n_s_Exception_Get_error_code, __pyx_k_Exception_Get_error_code, sizeof(__pyx_k_Exception_Get_error_code), 0, 0, 1, 1},
    {&__pyx_n_s_Exception_Get_error_string, __pyx_k_Exception_Get_error_string, sizeof(__pyx_k_Exception_Get_error_string), 0, 0, 1, 1},
    {&__pyx_n_s_Excl, __pyx_k_Excl, sizeof(__pyx_k_Excl), 0, 0, 1, 1},
    {&__pyx_n_s_Exscan, __pyx_k_Exscan, sizeof(__pyx_k_Exscan), 0, 0, 1, 1},
    {&__pyx_n_s_Exscan_init, __pyx_k_Exscan_init, sizeof(__pyx_k_Exscan_init), 0, 0, 1, 1},
    {&__pyx_n_s_F90_COMPLEX, __pyx_k_F90_COMPLEX, sizeof(__pyx_k_F90_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_F90_INTEGER, __pyx_k_F90_INTEGER, sizeof(__pyx_k_F90_INTEGER), 0, 0, 1, 1},
    {&__pyx_n_s_F90_REAL, __pyx_k_F90_REAL, sizeof(__pyx_k_F90_REAL), 0, 0, 1, 1},
    {&__pyx_n_s_FILE_NULL, __pyx_k_FILE_NULL, sizeof(__pyx_k_FILE_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_FLOAT, __pyx_k_FLOAT, sizeof(__pyx_k_FLOAT), 0, 0, 1, 1},
    {&__pyx_n_s_FLOAT_INT, __pyx_k_FLOAT_INT, sizeof(__pyx_k_FLOAT_INT), 0, 0, 1, 1},
    {&__pyx_n_s_F_BOOL, __pyx_k_F_BOOL, sizeof(__pyx_k_F_BOOL), 0, 0, 1, 1},
    {&__pyx_n_s_F_COMPLEX, __pyx_k_F_COMPLEX, sizeof(__pyx_k_F_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_F_DOUBLE, __pyx_k_F_DOUBLE, sizeof(__pyx_k_F_DOUBLE), 0, 0, 1, 1},
    {&__pyx_n_s_F_DOUBLE_COMPLEX, __pyx_k_F_DOUBLE_COMPLEX, sizeof(__pyx_k_F_DOUBLE_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_F_ERROR, __pyx_k_F_ERROR, sizeof(__pyx_k_F_ERROR), 0, 0, 1, 1},
    {&__pyx_n_s_F_FLOAT, __pyx_k_F_FLOAT, sizeof(__pyx_k_F_FLOAT), 0, 0, 1, 1},
    {&__pyx_n_s_F_FLOAT_COMPLEX, __pyx_k_F_FLOAT_COMPLEX, sizeof(__pyx_k_F_FLOAT_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_F_INT, __pyx_k_F_INT, sizeof(__pyx_k_F_INT), 0, 0, 1, 1},
    {&__pyx_n_s_F_SOURCE, __pyx_k_F_SOURCE, sizeof(__pyx_k_F_SOURCE), 0, 0, 1, 1},
    {&__pyx_n_s_F_STATUS_SIZE, __pyx_k_F_STATUS_SIZE, sizeof(__pyx_k_F_STATUS_SIZE), 0, 0, 1, 1},
    {&__pyx_n_s_F_TAG, __pyx_k_F_TAG, sizeof(__pyx_k_F_TAG), 0, 0, 1, 1},
    {&__pyx_n_s_Fence, __pyx_k_Fence, sizeof(__pyx_k_Fence), 0, 0, 1, 1},
    {&__pyx_n_s_Fetch_and_op, __pyx_k_Fetch_and_op, sizeof(__pyx_k_Fetch_and_op), 0, 0, 1, 1},
    {&__pyx_n_s_File, __pyx_k_File, sizeof(__pyx_k_File), 0, 0, 1, 1},
    {&__pyx_n_s_File_Call_errhandler, __pyx_k_File_Call_errhandler, sizeof(__pyx_k_File_Call_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_File_Close, __pyx_k_File_Close, sizeof(__pyx_k_File_Close), 0, 0, 1, 1},
    {&__pyx_n_s_File_Create_errhandler, __pyx_k_File_Create_errhandler, sizeof(__pyx_k_File_Create_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_File_Delete, __pyx_k_File_Delete, sizeof(__pyx_k_File_Delete), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_amode, __pyx_k_File_Get_amode, sizeof(__pyx_k_File_Get_amode), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_atomicity, __pyx_k_File_Get_atomicity, sizeof(__pyx_k_File_Get_atomicity), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_byte_offset, __pyx_k_File_Get_byte_offset, sizeof(__pyx_k_File_Get_byte_offset), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_errhandler, __pyx_k_File_Get_errhandler, sizeof(__pyx_k_File_Get_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_group, __pyx_k_File_Get_group, sizeof(__pyx_k_File_Get_group), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_info, __pyx_k_File_Get_info, sizeof(__pyx_k_File_Get_info), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_position, __pyx_k_File_Get_position, sizeof(__pyx_k_File_Get_position), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_position_shared, __pyx_k_File_Get_position_shared, sizeof(__pyx_k_File_Get_position_shared), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_size, __pyx_k_File_Get_size, sizeof(__pyx_k_File_Get_size), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_type_extent, __pyx_k_File_Get_type_extent, sizeof(__pyx_k_File_Get_type_extent), 0, 0, 1, 1},
    {&__pyx_n_s_File_Get_view, __pyx_k_File_Get_view, sizeof(__pyx_k_File_Get_view), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iread, __pyx_k_File_Iread, sizeof(__pyx_k_File_Iread), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iread_all, __pyx_k_File_Iread_all, sizeof(__pyx_k_File_Iread_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iread_at, __pyx_k_File_Iread_at, sizeof(__pyx_k_File_Iread_at), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iread_at_all, __pyx_k_File_Iread_at_all, sizeof(__pyx_k_File_Iread_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iread_shared, __pyx_k_File_Iread_shared, sizeof(__pyx_k_File_Iread_shared), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iwrite, __pyx_k_File_Iwrite, sizeof(__pyx_k_File_Iwrite), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iwrite_all, __pyx_k_File_Iwrite_all, sizeof(__pyx_k_File_Iwrite_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iwrite_at, __pyx_k_File_Iwrite_at, sizeof(__pyx_k_File_Iwrite_at), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iwrite_at_all, __pyx_k_File_Iwrite_at_all, sizeof(__pyx_k_File_Iwrite_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Iwrite_shared, __pyx_k_File_Iwrite_shared, sizeof(__pyx_k_File_Iwrite_shared), 0, 0, 1, 1},
    {&__pyx_n_s_File_Open, __pyx_k_File_Open, sizeof(__pyx_k_File_Open), 0, 0, 1, 1},
    {&__pyx_n_s_File_Preallocate, __pyx_k_File_Preallocate, sizeof(__pyx_k_File_Preallocate), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read, __pyx_k_File_Read, sizeof(__pyx_k_File_Read), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_all, __pyx_k_File_Read_all, sizeof(__pyx_k_File_Read_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_all_begin, __pyx_k_File_Read_all_begin, sizeof(__pyx_k_File_Read_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_all_end, __pyx_k_File_Read_all_end, sizeof(__pyx_k_File_Read_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_at, __pyx_k_File_Read_at, sizeof(__pyx_k_File_Read_at), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_at_all, __pyx_k_File_Read_at_all, sizeof(__pyx_k_File_Read_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_at_all_begin, __pyx_k_File_Read_at_all_begin, sizeof(__pyx_k_File_Read_at_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_at_all_end, __pyx_k_File_Read_at_all_end, sizeof(__pyx_k_File_Read_at_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_ordered, __pyx_k_File_Read_ordered, sizeof(__pyx_k_File_Read_ordered), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_ordered_begin, __pyx_k_File_Read_ordered_begin, sizeof(__pyx_k_File_Read_ordered_begin), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_ordered_end, __pyx_k_File_Read_ordered_end, sizeof(__pyx_k_File_Read_ordered_end), 0, 0, 1, 1},
    {&__pyx_n_s_File_Read_shared, __pyx_k_File_Read_shared, sizeof(__pyx_k_File_Read_shared), 0, 0, 1, 1},
    {&__pyx_n_s_File_Seek, __pyx_k_File_Seek, sizeof(__pyx_k_File_Seek), 0, 0, 1, 1},
    {&__pyx_n_s_File_Seek_shared, __pyx_k_File_Seek_shared, sizeof(__pyx_k_File_Seek_shared), 0, 0, 1, 1},
    {&__pyx_n_s_File_Set_atomicity, __pyx_k_File_Set_atomicity, sizeof(__pyx_k_File_Set_atomicity), 0, 0, 1, 1},
    {&__pyx_n_s_File_Set_errhandler, __pyx_k_File_Set_errhandler, sizeof(__pyx_k_File_Set_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_File_Set_info, __pyx_k_File_Set_info, sizeof(__pyx_k_File_Set_info), 0, 0, 1, 1},
    {&__pyx_n_s_File_Set_size, __pyx_k_File_Set_size, sizeof(__pyx_k_File_Set_size), 0, 0, 1, 1},
    {&__pyx_n_s_File_Set_view, __pyx_k_File_Set_view, sizeof(__pyx_k_File_Set_view), 0, 0, 1, 1},
    {&__pyx_n_s_File_Sync, __pyx_k_File_Sync, sizeof(__pyx_k_File_Sync), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write, __pyx_k_File_Write, sizeof(__pyx_k_File_Write), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_all, __pyx_k_File_Write_all, sizeof(__pyx_k_File_Write_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_all_begin, __pyx_k_File_Write_all_begin, sizeof(__pyx_k_File_Write_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_all_end, __pyx_k_File_Write_all_end, sizeof(__pyx_k_File_Write_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_at, __pyx_k_File_Write_at, sizeof(__pyx_k_File_Write_at), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_at_all, __pyx_k_File_Write_at_all, sizeof(__pyx_k_File_Write_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_at_all_begin, __pyx_k_File_Write_at_all_begin, sizeof(__pyx_k_File_Write_at_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_at_all_end, __pyx_k_File_Write_at_all_end, sizeof(__pyx_k_File_Write_at_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_ordered, __pyx_k_File_Write_ordered, sizeof(__pyx_k_File_Write_ordered), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_ordered_begin, __pyx_k_File_Write_ordered_begin, sizeof(__pyx_k_File_Write_ordered_begin), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_ordered_end, __pyx_k_File_Write_ordered_end, sizeof(__pyx_k_File_Write_ordered_end), 0, 0, 1, 1},
    {&__pyx_n_s_File_Write_shared, __pyx_k_File_Write_shared, sizeof(__pyx_k_File_Write_shared), 0, 0, 1, 1},
    {&__pyx_n_s_File___reduce, __pyx_k_File___reduce, sizeof(__pyx_k_File___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_File_f2py, __pyx_k_File_f2py, sizeof(__pyx_k_File_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_File_free, __pyx_k_File_free, sizeof(__pyx_k_File_free), 0, 0, 1, 1},
    {&__pyx_n_s_File_fromhandle, __pyx_k_File_fromhandle, sizeof(__pyx_k_File_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_File_py2f, __pyx_k_File_py2f, sizeof(__pyx_k_File_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Finalize, __pyx_k_Finalize, sizeof(__pyx_k_Finalize), 0, 0, 1, 1},
    {&__pyx_n_s_Flush, __pyx_k_Flush, sizeof(__pyx_k_Flush), 0, 0, 1, 1},
    {&__pyx_n_s_Flush_all, __pyx_k_Flush_all, sizeof(__pyx_k_Flush_all), 0, 0, 1, 1},
    {&__pyx_n_s_Flush_buffer, __pyx_k_Flush_buffer, sizeof(__pyx_k_Flush_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Flush_local, __pyx_k_Flush_local, sizeof(__pyx_k_Flush_local), 0, 0, 1, 1},
    {&__pyx_n_s_Flush_local_all, __pyx_k_Flush_local_all, sizeof(__pyx_k_Flush_local_all), 0, 0, 1, 1},
    {&__pyx_n_s_Free, __pyx_k_Free, sizeof(__pyx_k_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Free_keyval, __pyx_k_Free_keyval, sizeof(__pyx_k_Free_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Free_mem, __pyx_k_Free_mem, sizeof(__pyx_k_Free_mem), 0, 0, 1, 1},
    {&__pyx_n_s_GRAPH, __pyx_k_GRAPH, sizeof(__pyx_k_GRAPH), 0, 0, 1, 1},
    {&__pyx_n_s_GROUP_EMPTY, __pyx_k_GROUP_EMPTY, sizeof(__pyx_k_GROUP_EMPTY), 0, 0, 1, 1},
    {&__pyx_n_s_GROUP_NULL, __pyx_k_GROUP_NULL, sizeof(__pyx_k_GROUP_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_Gather, __pyx_k_Gather, sizeof(__pyx_k_Gather), 0, 0, 1, 1},
    {&__pyx_n_s_Gather_init, __pyx_k_Gather_init, sizeof(__pyx_k_Gather_init), 0, 0, 1, 1},
    {&__pyx_n_s_Gatherv, __pyx_k_Gatherv, sizeof(__pyx_k_Gatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Gatherv_init, __pyx_k_Gatherv_init, sizeof(__pyx_k_Gatherv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Get, __pyx_k_Get, sizeof(__pyx_k_Get), 0, 0, 1, 1},
    {&__pyx_n_s_Get_accumulate, __pyx_k_Get_accumulate, sizeof(__pyx_k_Get_accumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Get_address, __pyx_k_Get_address, sizeof(__pyx_k_Get_address), 0, 0, 1, 1},
    {&__pyx_n_s_Get_amode, __pyx_k_Get_amode, sizeof(__pyx_k_Get_amode), 0, 0, 1, 1},
    {&__pyx_n_s_Get_atomicity, __pyx_k_Get_atomicity, sizeof(__pyx_k_Get_atomicity), 0, 0, 1, 1},
    {&__pyx_n_s_Get_attr, __pyx_k_Get_attr, sizeof(__pyx_k_Get_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Get_byte_offset, __pyx_k_Get_byte_offset, sizeof(__pyx_k_Get_byte_offset), 0, 0, 1, 1},
    {&__pyx_n_s_Get_cart_rank, __pyx_k_Get_cart_rank, sizeof(__pyx_k_Get_cart_rank), 0, 0, 1, 1},
    {&__pyx_n_s_Get_contents, __pyx_k_Get_contents, sizeof(__pyx_k_Get_contents), 0, 0, 1, 1},
    {&__pyx_n_s_Get_coords, __pyx_k_Get_coords, sizeof(__pyx_k_Get_coords), 0, 0, 1, 1},
    {&__pyx_n_s_Get_count, __pyx_k_Get_count, sizeof(__pyx_k_Get_count), 0, 0, 1, 1},
    {&__pyx_n_s_Get_dim, __pyx_k_Get_dim, sizeof(__pyx_k_Get_dim), 0, 0, 1, 1},
    {&__pyx_n_s_Get_dims, __pyx_k_Get_dims, sizeof(__pyx_k_Get_dims), 0, 0, 1, 1},
    {&__pyx_n_s_Get_dist_neighbors, __pyx_k_Get_dist_neighbors, sizeof(__pyx_k_Get_dist_neighbors), 0, 0, 1, 1},
    {&__pyx_n_s_Get_dist_neighbors_count, __pyx_k_Get_dist_neighbors_count, sizeof(__pyx_k_Get_dist_neighbors_count), 0, 0, 1, 1},
    {&__pyx_n_s_Get_elements, __pyx_k_Get_elements, sizeof(__pyx_k_Get_elements), 0, 0, 1, 1},
    {&__pyx_n_s_Get_envelope, __pyx_k_Get_envelope, sizeof(__pyx_k_Get_envelope), 0, 0, 1, 1},
    {&__pyx_n_s_Get_errhandler, __pyx_k_Get_errhandler, sizeof(__pyx_k_Get_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Get_error, __pyx_k_Get_error, sizeof(__pyx_k_Get_error), 0, 0, 1, 1},
    {&__pyx_n_s_Get_error_class, __pyx_k_Get_error_class, sizeof(__pyx_k_Get_error_class), 0, 0, 1, 1},
    {&__pyx_n_s_Get_error_code, __pyx_k_Get_error_code, sizeof(__pyx_k_Get_error_code), 0, 0, 1, 1},
    {&__pyx_n_s_Get_error_string, __pyx_k_Get_error_string, sizeof(__pyx_k_Get_error_string), 0, 0, 1, 1},
    {&__pyx_n_s_Get_extent, __pyx_k_Get_extent, sizeof(__pyx_k_Get_extent), 0, 0, 1, 1},
    {&__pyx_n_s_Get_failed, __pyx_k_Get_failed, sizeof(__pyx_k_Get_failed), 0, 0, 1, 1},
    {&__pyx_n_s_Get_group, __pyx_k_Get_group, sizeof(__pyx_k_Get_group), 0, 0, 1, 1},
    {&__pyx_n_s_Get_hw_resource_info, __pyx_k_Get_hw_resource_info, sizeof(__pyx_k_Get_hw_resource_info), 0, 0, 1, 1},
    {&__pyx_n_s_Get_info, __pyx_k_Get_info, sizeof(__pyx_k_Get_info), 0, 0, 1, 1},
    {&__pyx_n_s_Get_library_version, __pyx_k_Get_library_version, sizeof(__pyx_k_Get_library_version), 0, 0, 1, 1},
    {&__pyx_n_s_Get_name, __pyx_k_Get_name, sizeof(__pyx_k_Get_name), 0, 0, 1, 1},
    {&__pyx_n_s_Get_neighbors, __pyx_k_Get_neighbors, sizeof(__pyx_k_Get_neighbors), 0, 0, 1, 1},
    {&__pyx_n_s_Get_neighbors_count, __pyx_k_Get_neighbors_count, sizeof(__pyx_k_Get_neighbors_count), 0, 0, 1, 1},
    {&__pyx_n_s_Get_nkeys, __pyx_k_Get_nkeys, sizeof(__pyx_k_Get_nkeys), 0, 0, 1, 1},
    {&__pyx_n_s_Get_nth_pset, __pyx_k_Get_nth_pset, sizeof(__pyx_k_Get_nth_pset), 0, 0, 1, 1},
    {&__pyx_n_s_Get_nthkey, __pyx_k_Get_nthkey, sizeof(__pyx_k_Get_nthkey), 0, 0, 1, 1},
    {&__pyx_n_s_Get_num_psets, __pyx_k_Get_num_psets, sizeof(__pyx_k_Get_num_psets), 0, 0, 1, 1},
    {&__pyx_n_s_Get_parent, __pyx_k_Get_parent, sizeof(__pyx_k_Get_parent), 0, 0, 1, 1},
    {&__pyx_n_s_Get_position, __pyx_k_Get_position, sizeof(__pyx_k_Get_position), 0, 0, 1, 1},
    {&__pyx_n_s_Get_position_shared, __pyx_k_Get_position_shared, sizeof(__pyx_k_Get_position_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Get_processor_name, __pyx_k_Get_processor_name, sizeof(__pyx_k_Get_processor_name), 0, 0, 1, 1},
    {&__pyx_n_s_Get_pset_info, __pyx_k_Get_pset_info, sizeof(__pyx_k_Get_pset_info), 0, 0, 1, 1},
    {&__pyx_n_s_Get_rank, __pyx_k_Get_rank, sizeof(__pyx_k_Get_rank), 0, 0, 1, 1},
    {&__pyx_n_s_Get_remote_group, __pyx_k_Get_remote_group, sizeof(__pyx_k_Get_remote_group), 0, 0, 1, 1},
    {&__pyx_n_s_Get_remote_size, __pyx_k_Get_remote_size, sizeof(__pyx_k_Get_remote_size), 0, 0, 1, 1},
    {&__pyx_n_s_Get_size, __pyx_k_Get_size, sizeof(__pyx_k_Get_size), 0, 0, 1, 1},
    {&__pyx_n_s_Get_source, __pyx_k_Get_source, sizeof(__pyx_k_Get_source), 0, 0, 1, 1},
    {&__pyx_n_s_Get_status, __pyx_k_Get_status, sizeof(__pyx_k_Get_status), 0, 0, 1, 1},
    {&__pyx_n_s_Get_status_all, __pyx_k_Get_status_all, sizeof(__pyx_k_Get_status_all), 0, 0, 1, 1},
    {&__pyx_n_s_Get_status_any, __pyx_k_Get_status_any, sizeof(__pyx_k_Get_status_any), 0, 0, 1, 1},
    {&__pyx_n_s_Get_status_some, __pyx_k_Get_status_some, sizeof(__pyx_k_Get_status_some), 0, 0, 1, 1},
    {&__pyx_n_s_Get_tag, __pyx_k_Get_tag, sizeof(__pyx_k_Get_tag), 0, 0, 1, 1},
    {&__pyx_n_s_Get_topo, __pyx_k_Get_topo, sizeof(__pyx_k_Get_topo), 0, 0, 1, 1},
    {&__pyx_n_s_Get_topology, __pyx_k_Get_topology, sizeof(__pyx_k_Get_topology), 0, 0, 1, 1},
    {&__pyx_n_s_Get_true_extent, __pyx_k_Get_true_extent, sizeof(__pyx_k_Get_true_extent), 0, 0, 1, 1},
    {&__pyx_n_s_Get_type_extent, __pyx_k_Get_type_extent, sizeof(__pyx_k_Get_type_extent), 0, 0, 1, 1},
    {&__pyx_n_s_Get_value_index, __pyx_k_Get_value_index, sizeof(__pyx_k_Get_value_index), 0, 0, 1, 1},
    {&__pyx_n_s_Get_version, __pyx_k_Get_version, sizeof(__pyx_k_Get_version), 0, 0, 1, 1},
    {&__pyx_n_s_Get_view, __pyx_k_Get_view, sizeof(__pyx_k_Get_view), 0, 0, 1, 1},
    {&__pyx_n_s_Graph_map, __pyx_k_Graph_map, sizeof(__pyx_k_Graph_map), 0, 0, 1, 1},
    {&__pyx_n_s_Graphcomm, __pyx_k_Graphcomm, sizeof(__pyx_k_Graphcomm), 0, 0, 1, 1},
    {&__pyx_n_s_Graphcomm_Get_dims, __pyx_k_Graphcomm_Get_dims, sizeof(__pyx_k_Graphcomm_Get_dims), 0, 0, 1, 1},
    {&__pyx_n_s_Graphcomm_Get_neighbors, __pyx_k_Graphcomm_Get_neighbors, sizeof(__pyx_k_Graphcomm_Get_neighbors), 0, 0, 1, 1},
    {&__pyx_n_s_Graphcomm_Get_neighbors_count, __pyx_k_Graphcomm_Get_neighbors_count, sizeof(__pyx_k_Graphcomm_Get_neighbors_count), 0, 0, 1, 1},
    {&__pyx_n_s_Graphcomm_Get_topo, __pyx_k_Graphcomm_Get_topo, sizeof(__pyx_k_Graphcomm_Get_topo), 0, 0, 1, 1},
    {&__pyx_n_s_Grequest, __pyx_k_Grequest, sizeof(__pyx_k_Grequest), 0, 0, 1, 1},
    {&__pyx_n_s_Grequest_Complete, __pyx_k_Grequest_Complete, sizeof(__pyx_k_Grequest_Complete), 0, 0, 1, 1},
    {&__pyx_n_s_Grequest_Start, __pyx_k_Grequest_Start, sizeof(__pyx_k_Grequest_Start), 0, 0, 1, 1},
    {&__pyx_n_s_Grequest_complete, __pyx_k_Grequest_complete, sizeof(__pyx_k_Grequest_complete), 0, 0, 1, 1},
    {&__pyx_n_s_Group, __pyx_k_Group, sizeof(__pyx_k_Group), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Compare, __pyx_k_Group_Compare, sizeof(__pyx_k_Group_Compare), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Create_from_session_pset, __pyx_k_Group_Create_from_session_pset, sizeof(__pyx_k_Group_Create_from_session_pset), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Difference, __pyx_k_Group_Difference, sizeof(__pyx_k_Group_Difference), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Dup, __pyx_k_Group_Dup, sizeof(__pyx_k_Group_Dup), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Excl, __pyx_k_Group_Excl, sizeof(__pyx_k_Group_Excl), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Free, __pyx_k_Group_Free, sizeof(__pyx_k_Group_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Get_rank, __pyx_k_Group_Get_rank, sizeof(__pyx_k_Group_Get_rank), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Get_size, __pyx_k_Group_Get_size, sizeof(__pyx_k_Group_Get_size), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Incl, __pyx_k_Group_Incl, sizeof(__pyx_k_Group_Incl), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Intersection, __pyx_k_Group_Intersection, sizeof(__pyx_k_Group_Intersection), 0, 0, 1, 1},
    {&__pyx_kp_s_Group_None, __pyx_k_Group_None, sizeof(__pyx_k_Group_None), 0, 0, 1, 0},
    {&__pyx_n_s_Group_Range_excl, __pyx_k_Group_Range_excl, sizeof(__pyx_k_Group_Range_excl), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Range_incl, __pyx_k_Group_Range_incl, sizeof(__pyx_k_Group_Range_incl), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Translate_ranks, __pyx_k_Group_Translate_ranks, sizeof(__pyx_k_Group_Translate_ranks), 0, 0, 1, 1},
    {&__pyx_n_s_Group_Union, __pyx_k_Group_Union, sizeof(__pyx_k_Group_Union), 0, 0, 1, 1},
    {&__pyx_n_s_Group___reduce, __pyx_k_Group___reduce, sizeof(__pyx_k_Group___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Group_f2py, __pyx_k_Group_f2py, sizeof(__pyx_k_Group_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Group_free, __pyx_k_Group_free, sizeof(__pyx_k_Group_free), 0, 0, 1, 1},
    {&__pyx_n_s_Group_fromhandle, __pyx_k_Group_fromhandle, sizeof(__pyx_k_Group_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Group_py2f, __pyx_k_Group_py2f, sizeof(__pyx_k_Group_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_HIGHEST_PROTOCOL, __pyx_k_HIGHEST_PROTOCOL, sizeof(__pyx_k_HIGHEST_PROTOCOL), 0, 0, 1, 1},
    {&__pyx_n_s_HINDEXED, __pyx_k_HINDEXED, sizeof(__pyx_k_HINDEXED), 0, 0, 1, 1},
    {&__pyx_n_s_HINDEXED_BLOCK, __pyx_k_HINDEXED_BLOCK, sizeof(__pyx_k_HINDEXED_BLOCK), 0, 0, 1, 1},
    {&__pyx_n_s_HVECTOR, __pyx_k_HVECTOR, sizeof(__pyx_k_HVECTOR), 0, 0, 1, 1},
    {&__pyx_kp_s_Hashable_None, __pyx_k_Hashable_None, sizeof(__pyx_k_Hashable_None), 0, 0, 1, 0},
    {&__pyx_n_s_IDENT, __pyx_k_IDENT, sizeof(__pyx_k_IDENT), 0, 0, 1, 1},
    {&__pyx_n_s_INDEXED, __pyx_k_INDEXED, sizeof(__pyx_k_INDEXED), 0, 0, 1, 1},
    {&__pyx_n_s_INDEXED_BLOCK, __pyx_k_INDEXED_BLOCK, sizeof(__pyx_k_INDEXED_BLOCK), 0, 0, 1, 1},
    {&__pyx_n_s_INFO_ENV, __pyx_k_INFO_ENV, sizeof(__pyx_k_INFO_ENV), 0, 0, 1, 1},
    {&__pyx_n_s_INFO_NULL, __pyx_k_INFO_NULL, sizeof(__pyx_k_INFO_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_INT, __pyx_k_INT, sizeof(__pyx_k_INT), 0, 0, 1, 1},
    {&__pyx_n_s_INT16_T, __pyx_k_INT16_T, sizeof(__pyx_k_INT16_T), 0, 0, 1, 1},
    {&__pyx_n_s_INT32_T, __pyx_k_INT32_T, sizeof(__pyx_k_INT32_T), 0, 0, 1, 1},
    {&__pyx_n_s_INT64_T, __pyx_k_INT64_T, sizeof(__pyx_k_INT64_T), 0, 0, 1, 1},
    {&__pyx_n_s_INT8_T, __pyx_k_INT8_T, sizeof(__pyx_k_INT8_T), 0, 0, 1, 1},
    {&__pyx_n_s_INTEGER, __pyx_k_INTEGER, sizeof(__pyx_k_INTEGER), 0, 0, 1, 1},
    {&__pyx_n_s_INTEGER1, __pyx_k_INTEGER1, sizeof(__pyx_k_INTEGER1), 0, 0, 1, 1},
    {&__pyx_n_s_INTEGER16, __pyx_k_INTEGER16, sizeof(__pyx_k_INTEGER16), 0, 0, 1, 1},
    {&__pyx_n_s_INTEGER2, __pyx_k_INTEGER2, sizeof(__pyx_k_INTEGER2), 0, 0, 1, 1},
    {&__pyx_n_s_INTEGER4, __pyx_k_INTEGER4, sizeof(__pyx_k_INTEGER4), 0, 0, 1, 1},
    {&__pyx_n_s_INTEGER8, __pyx_k_INTEGER8, sizeof(__pyx_k_INTEGER8), 0, 0, 1, 1},
    {&__pyx_n_s_INT_INT, __pyx_k_INT_INT, sizeof(__pyx_k_INT_INT), 0, 0, 1, 1},
    {&__pyx_n_s_IN_PLACE, __pyx_k_IN_PLACE, sizeof(__pyx_k_IN_PLACE), 0, 0, 1, 1},
    {&__pyx_n_s_IO, __pyx_k_IO, sizeof(__pyx_k_IO), 0, 0, 1, 1},
    {&__pyx_n_s_Iagree, __pyx_k_Iagree, sizeof(__pyx_k_Iagree), 0, 0, 1, 1},
    {&__pyx_n_s_Iallgather, __pyx_k_Iallgather, sizeof(__pyx_k_Iallgather), 0, 0, 1, 1},
    {&__pyx_n_s_Iallgatherv, __pyx_k_Iallgatherv, sizeof(__pyx_k_Iallgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Iallreduce, __pyx_k_Iallreduce, sizeof(__pyx_k_Iallreduce), 0, 0, 1, 1},
    {&__pyx_n_s_Ialltoall, __pyx_k_Ialltoall, sizeof(__pyx_k_Ialltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Ialltoallv, __pyx_k_Ialltoallv, sizeof(__pyx_k_Ialltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Ialltoallw, __pyx_k_Ialltoallw, sizeof(__pyx_k_Ialltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Ibarrier, __pyx_k_Ibarrier, sizeof(__pyx_k_Ibarrier), 0, 0, 1, 1},
    {&__pyx_n_s_Ibcast, __pyx_k_Ibcast, sizeof(__pyx_k_Ibcast), 0, 0, 1, 1},
    {&__pyx_n_s_Ibsend, __pyx_k_Ibsend, sizeof(__pyx_k_Ibsend), 0, 0, 1, 1},
    {&__pyx_n_s_Idup, __pyx_k_Idup, sizeof(__pyx_k_Idup), 0, 0, 1, 1},
    {&__pyx_n_s_Idup_with_info, __pyx_k_Idup_with_info, sizeof(__pyx_k_Idup_with_info), 0, 0, 1, 1},
    {&__pyx_n_s_Iexscan, __pyx_k_Iexscan, sizeof(__pyx_k_Iexscan), 0, 0, 1, 1},
    {&__pyx_n_s_Iflush_buffer, __pyx_k_Iflush_buffer, sizeof(__pyx_k_Iflush_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Igather, __pyx_k_Igather, sizeof(__pyx_k_Igather), 0, 0, 1, 1},
    {&__pyx_n_s_Igatherv, __pyx_k_Igatherv, sizeof(__pyx_k_Igatherv), 0, 0, 1, 1},
    {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
    {&__pyx_n_s_ImportWarning, __pyx_k_ImportWarning, sizeof(__pyx_k_ImportWarning), 0, 0, 1, 1},
    {&__pyx_n_s_Improbe, __pyx_k_Improbe, sizeof(__pyx_k_Improbe), 0, 0, 1, 1},
    {&__pyx_n_s_InPlaceType, __pyx_k_InPlaceType, sizeof(__pyx_k_InPlaceType), 0, 0, 1, 1},
    {&__pyx_n_s_InPlaceType___reduce, __pyx_k_InPlaceType___reduce, sizeof(__pyx_k_InPlaceType___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Incl, __pyx_k_Incl, sizeof(__pyx_k_Incl), 0, 0, 1, 1},
    {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
    {&__pyx_n_s_Ineighbor_allgather, __pyx_k_Ineighbor_allgather, sizeof(__pyx_k_Ineighbor_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Ineighbor_allgatherv, __pyx_k_Ineighbor_allgatherv, sizeof(__pyx_k_Ineighbor_allgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Ineighbor_alltoall, __pyx_k_Ineighbor_alltoall, sizeof(__pyx_k_Ineighbor_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Ineighbor_alltoallv, __pyx_k_Ineighbor_alltoallv, sizeof(__pyx_k_Ineighbor_alltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Ineighbor_alltoallw, __pyx_k_Ineighbor_alltoallw, sizeof(__pyx_k_Ineighbor_alltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Info, __pyx_k_Info, sizeof(__pyx_k_Info), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Create, __pyx_k_Info_Create, sizeof(__pyx_k_Info_Create), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Create_env, __pyx_k_Info_Create_env, sizeof(__pyx_k_Info_Create_env), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Delete, __pyx_k_Info_Delete, sizeof(__pyx_k_Info_Delete), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Dup, __pyx_k_Info_Dup, sizeof(__pyx_k_Info_Dup), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Free, __pyx_k_Info_Free, sizeof(__pyx_k_Info_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Get, __pyx_k_Info_Get, sizeof(__pyx_k_Info_Get), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Get_nkeys, __pyx_k_Info_Get_nkeys, sizeof(__pyx_k_Info_Get_nkeys), 0, 0, 1, 1},
    {&__pyx_n_s_Info_Get_nthkey, __pyx_k_Info_Get_nthkey, sizeof(__pyx_k_Info_Get_nthkey), 0, 0, 1, 1},
    {&__pyx_kp_s_Info_Mapping_str_str_Iterable_tu, __pyx_k_Info_Mapping_str_str_Iterable_tu, sizeof(__pyx_k_Info_Mapping_str_str_Iterable_tu), 0, 0, 1, 0},
    {&__pyx_kp_s_Info_Mapping_str_str_Iterable_tu_2, __pyx_k_Info_Mapping_str_str_Iterable_tu_2, sizeof(__pyx_k_Info_Mapping_str_str_Iterable_tu_2), 0, 0, 1, 0},
    {&__pyx_kp_s_Info_None, __pyx_k_Info_None, sizeof(__pyx_k_Info_None), 0, 0, 1, 0},
    {&__pyx_n_s_Info_Set, __pyx_k_Info_Set, sizeof(__pyx_k_Info_Set), 0, 0, 1, 1},
    {&__pyx_n_s_Info___reduce, __pyx_k_Info___reduce, sizeof(__pyx_k_Info___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Info_clear, __pyx_k_Info_clear, sizeof(__pyx_k_Info_clear), 0, 0, 1, 1},
    {&__pyx_n_s_Info_copy, __pyx_k_Info_copy, sizeof(__pyx_k_Info_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Info_f2py, __pyx_k_Info_f2py, sizeof(__pyx_k_Info_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Info_free, __pyx_k_Info_free, sizeof(__pyx_k_Info_free), 0, 0, 1, 1},
    {&__pyx_n_s_Info_fromhandle, __pyx_k_Info_fromhandle, sizeof(__pyx_k_Info_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Info_get, __pyx_k_Info_get, sizeof(__pyx_k_Info_get), 0, 0, 1, 1},
    {&__pyx_n_s_Info_items, __pyx_k_Info_items, sizeof(__pyx_k_Info_items), 0, 0, 1, 1},
    {&__pyx_n_s_Info_keys, __pyx_k_Info_keys, sizeof(__pyx_k_Info_keys), 0, 0, 1, 1},
    {&__pyx_n_s_Info_pop, __pyx_k_Info_pop, sizeof(__pyx_k_Info_pop), 0, 0, 1, 1},
    {&__pyx_n_s_Info_popitem, __pyx_k_Info_popitem, sizeof(__pyx_k_Info_popitem), 0, 0, 1, 1},
    {&__pyx_n_s_Info_py2f, __pyx_k_Info_py2f, sizeof(__pyx_k_Info_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Info_update, __pyx_k_Info_update, sizeof(__pyx_k_Info_update), 0, 0, 1, 1},
    {&__pyx_n_s_Info_values, __pyx_k_Info_values, sizeof(__pyx_k_Info_values), 0, 0, 1, 1},
    {&__pyx_n_s_Init, __pyx_k_Init, sizeof(__pyx_k_Init), 0, 0, 1, 1},
    {&__pyx_n_s_Init_thread, __pyx_k_Init_thread, sizeof(__pyx_k_Init_thread), 0, 0, 1, 1},
    {&__pyx_n_s_Intercomm, __pyx_k_Intercomm, sizeof(__pyx_k_Intercomm), 0, 0, 1, 1},
    {&__pyx_n_s_Intercomm_Create_from_groups, __pyx_k_Intercomm_Create_from_groups, sizeof(__pyx_k_Intercomm_Create_from_groups), 0, 0, 1, 1},
    {&__pyx_n_s_Intercomm_Get_remote_group, __pyx_k_Intercomm_Get_remote_group, sizeof(__pyx_k_Intercomm_Get_remote_group), 0, 0, 1, 1},
    {&__pyx_n_s_Intercomm_Get_remote_size, __pyx_k_Intercomm_Get_remote_size, sizeof(__pyx_k_Intercomm_Get_remote_size), 0, 0, 1, 1},
    {&__pyx_n_s_Intercomm_Merge, __pyx_k_Intercomm_Merge, sizeof(__pyx_k_Intercomm_Merge), 0, 0, 1, 1},
    {&__pyx_n_s_Intersect, __pyx_k_Intersect, sizeof(__pyx_k_Intersect), 0, 0, 1, 1},
    {&__pyx_n_s_Intersection, __pyx_k_Intersection, sizeof(__pyx_k_Intersection), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm, __pyx_k_Intracomm, sizeof(__pyx_k_Intracomm), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Accept, __pyx_k_Intracomm_Accept, sizeof(__pyx_k_Intracomm_Accept), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Cart_map, __pyx_k_Intracomm_Cart_map, sizeof(__pyx_k_Intracomm_Cart_map), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Connect, __pyx_k_Intracomm_Connect, sizeof(__pyx_k_Intracomm_Connect), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Create_cart, __pyx_k_Intracomm_Create_cart, sizeof(__pyx_k_Intracomm_Create_cart), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Create_dist_graph, __pyx_k_Intracomm_Create_dist_graph, sizeof(__pyx_k_Intracomm_Create_dist_graph), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Create_dist_graph_adja, __pyx_k_Intracomm_Create_dist_graph_adja, sizeof(__pyx_k_Intracomm_Create_dist_graph_adja), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Create_from_group, __pyx_k_Intracomm_Create_from_group, sizeof(__pyx_k_Intracomm_Create_from_group), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Create_graph, __pyx_k_Intracomm_Create_graph, sizeof(__pyx_k_Intracomm_Create_graph), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Create_group, __pyx_k_Intracomm_Create_group, sizeof(__pyx_k_Intracomm_Create_group), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Create_intercomm, __pyx_k_Intracomm_Create_intercomm, sizeof(__pyx_k_Intracomm_Create_intercomm), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Exscan, __pyx_k_Intracomm_Exscan, sizeof(__pyx_k_Intracomm_Exscan), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Exscan_init, __pyx_k_Intracomm_Exscan_init, sizeof(__pyx_k_Intracomm_Exscan_init), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Graph_map, __pyx_k_Intracomm_Graph_map, sizeof(__pyx_k_Intracomm_Graph_map), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Iexscan, __pyx_k_Intracomm_Iexscan, sizeof(__pyx_k_Intracomm_Iexscan), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Iscan, __pyx_k_Intracomm_Iscan, sizeof(__pyx_k_Intracomm_Iscan), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Scan, __pyx_k_Intracomm_Scan, sizeof(__pyx_k_Intracomm_Scan), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Scan_init, __pyx_k_Intracomm_Scan_init, sizeof(__pyx_k_Intracomm_Scan_init), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Spawn, __pyx_k_Intracomm_Spawn, sizeof(__pyx_k_Intracomm_Spawn), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_Spawn_multiple, __pyx_k_Intracomm_Spawn_multiple, sizeof(__pyx_k_Intracomm_Spawn_multiple), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_exscan, __pyx_k_Intracomm_exscan, sizeof(__pyx_k_Intracomm_exscan), 0, 0, 1, 1},
    {&__pyx_n_s_Intracomm_scan, __pyx_k_Intracomm_scan, sizeof(__pyx_k_Intracomm_scan), 0, 0, 1, 1},
    {&__pyx_n_s_Iprobe, __pyx_k_Iprobe, sizeof(__pyx_k_Iprobe), 0, 0, 1, 1},
    {&__pyx_n_s_Iread, __pyx_k_Iread, sizeof(__pyx_k_Iread), 0, 0, 1, 1},
    {&__pyx_n_s_Iread_all, __pyx_k_Iread_all, sizeof(__pyx_k_Iread_all), 0, 0, 1, 1},
    {&__pyx_n_s_Iread_at, __pyx_k_Iread_at, sizeof(__pyx_k_Iread_at), 0, 0, 1, 1},
    {&__pyx_n_s_Iread_at_all, __pyx_k_Iread_at_all, sizeof(__pyx_k_Iread_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_Iread_shared, __pyx_k_Iread_shared, sizeof(__pyx_k_Iread_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Irecv, __pyx_k_Irecv, sizeof(__pyx_k_Irecv), 0, 0, 1, 1},
    {&__pyx_n_s_Ireduce, __pyx_k_Ireduce, sizeof(__pyx_k_Ireduce), 0, 0, 1, 1},
    {&__pyx_n_s_Ireduce_scatter, __pyx_k_Ireduce_scatter, sizeof(__pyx_k_Ireduce_scatter), 0, 0, 1, 1},
    {&__pyx_n_s_Ireduce_scatter_block, __pyx_k_Ireduce_scatter_block, sizeof(__pyx_k_Ireduce_scatter_block), 0, 0, 1, 1},
    {&__pyx_n_s_Irsend, __pyx_k_Irsend, sizeof(__pyx_k_Irsend), 0, 0, 1, 1},
    {&__pyx_n_s_Is_cancelled, __pyx_k_Is_cancelled, sizeof(__pyx_k_Is_cancelled), 0, 0, 1, 1},
    {&__pyx_n_s_Is_commutative, __pyx_k_Is_commutative, sizeof(__pyx_k_Is_commutative), 0, 0, 1, 1},
    {&__pyx_n_s_Is_finalized, __pyx_k_Is_finalized, sizeof(__pyx_k_Is_finalized), 0, 0, 1, 1},
    {&__pyx_n_s_Is_initialized, __pyx_k_Is_initialized, sizeof(__pyx_k_Is_initialized), 0, 0, 1, 1},
    {&__pyx_n_s_Is_inter, __pyx_k_Is_inter, sizeof(__pyx_k_Is_inter), 0, 0, 1, 1},
    {&__pyx_n_s_Is_intra, __pyx_k_Is_intra, sizeof(__pyx_k_Is_intra), 0, 0, 1, 1},
    {&__pyx_n_s_Is_revoked, __pyx_k_Is_revoked, sizeof(__pyx_k_Is_revoked), 0, 0, 1, 1},
    {&__pyx_n_s_Is_thread_main, __pyx_k_Is_thread_main, sizeof(__pyx_k_Is_thread_main), 0, 0, 1, 1},
    {&__pyx_n_s_Iscan, __pyx_k_Iscan, sizeof(__pyx_k_Iscan), 0, 0, 1, 1},
    {&__pyx_n_s_Iscatter, __pyx_k_Iscatter, sizeof(__pyx_k_Iscatter), 0, 0, 1, 1},
    {&__pyx_n_s_Iscatterv, __pyx_k_Iscatterv, sizeof(__pyx_k_Iscatterv), 0, 0, 1, 1},
    {&__pyx_n_s_Isend, __pyx_k_Isend, sizeof(__pyx_k_Isend), 0, 0, 1, 1},
    {&__pyx_n_s_Isendrecv, __pyx_k_Isendrecv, sizeof(__pyx_k_Isendrecv), 0, 0, 1, 1},
    {&__pyx_n_s_Isendrecv_replace, __pyx_k_Isendrecv_replace, sizeof(__pyx_k_Isendrecv_replace), 0, 0, 1, 1},
    {&__pyx_n_s_Ishrink, __pyx_k_Ishrink, sizeof(__pyx_k_Ishrink), 0, 0, 1, 1},
    {&__pyx_n_s_Issend, __pyx_k_Issend, sizeof(__pyx_k_Issend), 0, 0, 1, 1},
    {&__pyx_kp_s_Iterable_Buffer, __pyx_k_Iterable_Buffer, sizeof(__pyx_k_Iterable_Buffer), 0, 0, 1, 0},
    {&__pyx_n_s_Iwrite, __pyx_k_Iwrite, sizeof(__pyx_k_Iwrite), 0, 0, 1, 1},
    {&__pyx_n_s_Iwrite_all, __pyx_k_Iwrite_all, sizeof(__pyx_k_Iwrite_all), 0, 0, 1, 1},
    {&__pyx_n_s_Iwrite_at, __pyx_k_Iwrite_at, sizeof(__pyx_k_Iwrite_at), 0, 0, 1, 1},
    {&__pyx_n_s_Iwrite_at_all, __pyx_k_Iwrite_at_all, sizeof(__pyx_k_Iwrite_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_Iwrite_shared, __pyx_k_Iwrite_shared, sizeof(__pyx_k_Iwrite_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Join, __pyx_k_Join, sizeof(__pyx_k_Join), 0, 0, 1, 1},
    {&__pyx_n_s_KEYVAL_INVALID, __pyx_k_KEYVAL_INVALID, sizeof(__pyx_k_KEYVAL_INVALID), 0, 0, 1, 1},
    {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
    {&__pyx_n_s_LAND, __pyx_k_LAND, sizeof(__pyx_k_LAND), 0, 0, 1, 1},
    {&__pyx_n_s_LASTUSEDCODE, __pyx_k_LASTUSEDCODE, sizeof(__pyx_k_LASTUSEDCODE), 0, 0, 1, 1},
    {&__pyx_n_s_LOCK_EXCLUSIVE, __pyx_k_LOCK_EXCLUSIVE, sizeof(__pyx_k_LOCK_EXCLUSIVE), 0, 0, 1, 1},
    {&__pyx_n_s_LOCK_SHARED, __pyx_k_LOCK_SHARED, sizeof(__pyx_k_LOCK_SHARED), 0, 0, 1, 1},
    {&__pyx_n_s_LOGICAL, __pyx_k_LOGICAL, sizeof(__pyx_k_LOGICAL), 0, 0, 1, 1},
    {&__pyx_n_s_LOGICAL1, __pyx_k_LOGICAL1, sizeof(__pyx_k_LOGICAL1), 0, 0, 1, 1},
    {&__pyx_n_s_LOGICAL2, __pyx_k_LOGICAL2, sizeof(__pyx_k_LOGICAL2), 0, 0, 1, 1},
    {&__pyx_n_s_LOGICAL4, __pyx_k_LOGICAL4, sizeof(__pyx_k_LOGICAL4), 0, 0, 1, 1},
    {&__pyx_n_s_LOGICAL8, __pyx_k_LOGICAL8, sizeof(__pyx_k_LOGICAL8), 0, 0, 1, 1},
    {&__pyx_n_s_LONG, __pyx_k_LONG, sizeof(__pyx_k_LONG), 0, 0, 1, 1},
    {&__pyx_n_s_LONG_DOUBLE, __pyx_k_LONG_DOUBLE, sizeof(__pyx_k_LONG_DOUBLE), 0, 0, 1, 1},
    {&__pyx_n_s_LONG_DOUBLE_INT, __pyx_k_LONG_DOUBLE_INT, sizeof(__pyx_k_LONG_DOUBLE_INT), 0, 0, 1, 1},
    {&__pyx_n_s_LONG_INT, __pyx_k_LONG_INT, sizeof(__pyx_k_LONG_INT), 0, 0, 1, 1},
    {&__pyx_n_s_LONG_LONG, __pyx_k_LONG_LONG, sizeof(__pyx_k_LONG_LONG), 0, 0, 1, 1},
    {&__pyx_n_s_LOR, __pyx_k_LOR, sizeof(__pyx_k_LOR), 0, 0, 1, 1},
    {&__pyx_n_s_LXOR, __pyx_k_LXOR, sizeof(__pyx_k_LXOR), 0, 0, 1, 1},
    {&__pyx_kp_s_Literal_True, __pyx_k_Literal_True, sizeof(__pyx_k_Literal_True), 0, 0, 1, 0},
    {&__pyx_n_s_Lock, __pyx_k_Lock, sizeof(__pyx_k_Lock), 0, 0, 1, 1},
    {&__pyx_n_s_Lock_all, __pyx_k_Lock_all, sizeof(__pyx_k_Lock_all), 0, 0, 1, 1},
    {&__pyx_n_s_Lookup_name, __pyx_k_Lookup_name, sizeof(__pyx_k_Lookup_name), 0, 0, 1, 1},
    {&__pyx_n_s_MAX, __pyx_k_MAX, sizeof(__pyx_k_MAX), 0, 0, 1, 1},
    {&__pyx_n_s_MAXLOC, __pyx_k_MAXLOC, sizeof(__pyx_k_MAXLOC), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_DATAREP_STRING, __pyx_k_MAX_DATAREP_STRING, sizeof(__pyx_k_MAX_DATAREP_STRING), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_ERROR_STRING, __pyx_k_MAX_ERROR_STRING, sizeof(__pyx_k_MAX_ERROR_STRING), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_INFO_KEY, __pyx_k_MAX_INFO_KEY, sizeof(__pyx_k_MAX_INFO_KEY), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_INFO_VAL, __pyx_k_MAX_INFO_VAL, sizeof(__pyx_k_MAX_INFO_VAL), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_LIBRARY_VERSION_STRING, __pyx_k_MAX_LIBRARY_VERSION_STRING, sizeof(__pyx_k_MAX_LIBRARY_VERSION_STRING), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_OBJECT_NAME, __pyx_k_MAX_OBJECT_NAME, sizeof(__pyx_k_MAX_OBJECT_NAME), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_PORT_NAME, __pyx_k_MAX_PORT_NAME, sizeof(__pyx_k_MAX_PORT_NAME), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_PROCESSOR_NAME, __pyx_k_MAX_PROCESSOR_NAME, sizeof(__pyx_k_MAX_PROCESSOR_NAME), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_PSET_NAME_LEN, __pyx_k_MAX_PSET_NAME_LEN, sizeof(__pyx_k_MAX_PSET_NAME_LEN), 0, 0, 1, 1},
    {&__pyx_n_s_MAX_STRINGTAG_LEN, __pyx_k_MAX_STRINGTAG_LEN, sizeof(__pyx_k_MAX_STRINGTAG_LEN), 0, 0, 1, 1},
    {&__pyx_n_s_MESSAGE_NO_PROC, __pyx_k_MESSAGE_NO_PROC, sizeof(__pyx_k_MESSAGE_NO_PROC), 0, 0, 1, 1},
    {&__pyx_n_s_MESSAGE_NULL, __pyx_k_MESSAGE_NULL, sizeof(__pyx_k_MESSAGE_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_MIN, __pyx_k_MIN, sizeof(__pyx_k_MIN), 0, 0, 1, 1},
    {&__pyx_n_s_MINLOC, __pyx_k_MINLOC, sizeof(__pyx_k_MINLOC), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_APPEND, __pyx_k_MODE_APPEND, sizeof(__pyx_k_MODE_APPEND), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_CREATE, __pyx_k_MODE_CREATE, sizeof(__pyx_k_MODE_CREATE), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_DELETE_ON_CLOSE, __pyx_k_MODE_DELETE_ON_CLOSE, sizeof(__pyx_k_MODE_DELETE_ON_CLOSE), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_EXCL, __pyx_k_MODE_EXCL, sizeof(__pyx_k_MODE_EXCL), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_NOCHECK, __pyx_k_MODE_NOCHECK, sizeof(__pyx_k_MODE_NOCHECK), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_NOPRECEDE, __pyx_k_MODE_NOPRECEDE, sizeof(__pyx_k_MODE_NOPRECEDE), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_NOPUT, __pyx_k_MODE_NOPUT, sizeof(__pyx_k_MODE_NOPUT), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_NOSTORE, __pyx_k_MODE_NOSTORE, sizeof(__pyx_k_MODE_NOSTORE), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_NOSUCCEED, __pyx_k_MODE_NOSUCCEED, sizeof(__pyx_k_MODE_NOSUCCEED), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_RDONLY, __pyx_k_MODE_RDONLY, sizeof(__pyx_k_MODE_RDONLY), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_RDWR, __pyx_k_MODE_RDWR, sizeof(__pyx_k_MODE_RDWR), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_SEQUENTIAL, __pyx_k_MODE_SEQUENTIAL, sizeof(__pyx_k_MODE_SEQUENTIAL), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_UNIQUE_OPEN, __pyx_k_MODE_UNIQUE_OPEN, sizeof(__pyx_k_MODE_UNIQUE_OPEN), 0, 0, 1, 1},
    {&__pyx_n_s_MODE_WRONLY, __pyx_k_MODE_WRONLY, sizeof(__pyx_k_MODE_WRONLY), 0, 0, 1, 1},
    {&__pyx_n_b_MPI4PY_RC, __pyx_k_MPI4PY_RC, sizeof(__pyx_k_MPI4PY_RC), 0, 0, 0, 1},
    {&__pyx_n_s_MPI_Comm, __pyx_k_MPI_Comm, sizeof(__pyx_k_MPI_Comm), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Datatype, __pyx_k_MPI_Datatype, sizeof(__pyx_k_MPI_Datatype), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Errhandler, __pyx_k_MPI_Errhandler, sizeof(__pyx_k_MPI_Errhandler), 0, 0, 1, 1},
    {&__pyx_kp_u_MPI_Exception, __pyx_k_MPI_Exception, sizeof(__pyx_k_MPI_Exception), 0, 1, 0, 0},
    {&__pyx_n_s_MPI_File, __pyx_k_MPI_File, sizeof(__pyx_k_MPI_File), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Group, __pyx_k_MPI_Group, sizeof(__pyx_k_MPI_Group), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Info, __pyx_k_MPI_Info, sizeof(__pyx_k_MPI_Info), 0, 0, 1, 1},
    {&__pyx_kp_u_MPI_Init_failed_error_code, __pyx_k_MPI_Init_failed_error_code, sizeof(__pyx_k_MPI_Init_failed_error_code), 0, 1, 0, 0},
    {&__pyx_kp_u_MPI_Init_thread_failed_error_cod, __pyx_k_MPI_Init_thread_failed_error_cod, sizeof(__pyx_k_MPI_Init_thread_failed_error_cod), 0, 1, 0, 0},
    {&__pyx_n_s_MPI_Message, __pyx_k_MPI_Message, sizeof(__pyx_k_MPI_Message), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Op, __pyx_k_MPI_Op, sizeof(__pyx_k_MPI_Op), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Request, __pyx_k_MPI_Request, sizeof(__pyx_k_MPI_Request), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Session, __pyx_k_MPI_Session, sizeof(__pyx_k_MPI_Session), 0, 0, 1, 1},
    {&__pyx_n_s_MPI_Win, __pyx_k_MPI_Win, sizeof(__pyx_k_MPI_Win), 0, 0, 1, 1},
    {&__pyx_n_s_Match_size, __pyx_k_Match_size, sizeof(__pyx_k_Match_size), 0, 0, 1, 1},
    {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
    {&__pyx_n_s_Merge, __pyx_k_Merge, sizeof(__pyx_k_Merge), 0, 0, 1, 1},
    {&__pyx_n_s_Message, __pyx_k_Message, sizeof(__pyx_k_Message), 0, 0, 1, 1},
    {&__pyx_n_s_Message_Iprobe, __pyx_k_Message_Iprobe, sizeof(__pyx_k_Message_Iprobe), 0, 0, 1, 1},
    {&__pyx_n_s_Message_Irecv, __pyx_k_Message_Irecv, sizeof(__pyx_k_Message_Irecv), 0, 0, 1, 1},
    {&__pyx_kp_s_Message_None, __pyx_k_Message_None, sizeof(__pyx_k_Message_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Message_Passing_Interface, __pyx_k_Message_Passing_Interface, sizeof(__pyx_k_Message_Passing_Interface), 0, 0, 1, 0},
    {&__pyx_n_s_Message_Probe, __pyx_k_Message_Probe, sizeof(__pyx_k_Message_Probe), 0, 0, 1, 1},
    {&__pyx_n_s_Message_Recv, __pyx_k_Message_Recv, sizeof(__pyx_k_Message_Recv), 0, 0, 1, 1},
    {&__pyx_n_s_Message___reduce, __pyx_k_Message___reduce, sizeof(__pyx_k_Message___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Message_f2py, __pyx_k_Message_f2py, sizeof(__pyx_k_Message_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Message_free, __pyx_k_Message_free, sizeof(__pyx_k_Message_free), 0, 0, 1, 1},
    {&__pyx_n_s_Message_fromhandle, __pyx_k_Message_fromhandle, sizeof(__pyx_k_Message_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Message_iprobe, __pyx_k_Message_iprobe, sizeof(__pyx_k_Message_iprobe), 0, 0, 1, 1},
    {&__pyx_n_s_Message_irecv, __pyx_k_Message_irecv, sizeof(__pyx_k_Message_irecv), 0, 0, 1, 1},
    {&__pyx_n_s_Message_probe, __pyx_k_Message_probe, sizeof(__pyx_k_Message_probe), 0, 0, 1, 1},
    {&__pyx_n_s_Message_py2f, __pyx_k_Message_py2f, sizeof(__pyx_k_Message_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Message_recv, __pyx_k_Message_recv, sizeof(__pyx_k_Message_recv), 0, 0, 1, 1},
    {&__pyx_n_s_Mprobe, __pyx_k_Mprobe, sizeof(__pyx_k_Mprobe), 0, 0, 1, 1},
    {&__pyx_n_s_NAMED, __pyx_k_NAMED, sizeof(__pyx_k_NAMED), 0, 0, 1, 1},
    {&__pyx_n_s_NO_OP, __pyx_k_NO_OP, sizeof(__pyx_k_NO_OP), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_allgather, __pyx_k_Neighbor_allgather, sizeof(__pyx_k_Neighbor_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_allgather_init, __pyx_k_Neighbor_allgather_init, sizeof(__pyx_k_Neighbor_allgather_init), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_allgatherv, __pyx_k_Neighbor_allgatherv, sizeof(__pyx_k_Neighbor_allgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_allgatherv_init, __pyx_k_Neighbor_allgatherv_init, sizeof(__pyx_k_Neighbor_allgatherv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_alltoall, __pyx_k_Neighbor_alltoall, sizeof(__pyx_k_Neighbor_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_alltoall_init, __pyx_k_Neighbor_alltoall_init, sizeof(__pyx_k_Neighbor_alltoall_init), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_alltoallv, __pyx_k_Neighbor_alltoallv, sizeof(__pyx_k_Neighbor_alltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_alltoallv_init, __pyx_k_Neighbor_alltoallv_init, sizeof(__pyx_k_Neighbor_alltoallv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_alltoallw, __pyx_k_Neighbor_alltoallw, sizeof(__pyx_k_Neighbor_alltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Neighbor_alltoallw_init, __pyx_k_Neighbor_alltoallw_init, sizeof(__pyx_k_Neighbor_alltoallw_init), 0, 0, 1, 1},
    {&__pyx_n_s_NoReturn, __pyx_k_NoReturn, sizeof(__pyx_k_NoReturn), 0, 0, 1, 1},
    {&__pyx_n_s_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 0, 1, 1},
    {&__pyx_n_s_NotImplemented, __pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 0, 1, 1},
    {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
    {&__pyx_n_s_OFFSET, __pyx_k_OFFSET, sizeof(__pyx_k_OFFSET), 0, 0, 1, 1},
    {&__pyx_n_s_OP_NULL, __pyx_k_OP_NULL, sizeof(__pyx_k_OP_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_ORDER_C, __pyx_k_ORDER_C, sizeof(__pyx_k_ORDER_C), 0, 0, 1, 1},
    {&__pyx_n_s_ORDER_F, __pyx_k_ORDER_F, sizeof(__pyx_k_ORDER_F), 0, 0, 1, 1},
    {&__pyx_n_s_ORDER_FORTRAN, __pyx_k_ORDER_FORTRAN, sizeof(__pyx_k_ORDER_FORTRAN), 0, 0, 1, 1},
    {&__pyx_kp_s_Object_is_not_writable, __pyx_k_Object_is_not_writable, sizeof(__pyx_k_Object_is_not_writable), 0, 0, 1, 0},
    {&__pyx_n_s_Op, __pyx_k_Op, sizeof(__pyx_k_Op), 0, 0, 1, 1},
    {&__pyx_kp_s_Op_Callable_Any_Any_Any, __pyx_k_Op_Callable_Any_Any_Any, sizeof(__pyx_k_Op_Callable_Any_Any_Any), 0, 0, 1, 0},
    {&__pyx_n_s_Op_Create, __pyx_k_Op_Create, sizeof(__pyx_k_Op_Create), 0, 0, 1, 1},
    {&__pyx_n_s_Op_Free, __pyx_k_Op_Free, sizeof(__pyx_k_Op_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Op_Is_commutative, __pyx_k_Op_Is_commutative, sizeof(__pyx_k_Op_Is_commutative), 0, 0, 1, 1},
    {&__pyx_n_s_Op_Reduce_local, __pyx_k_Op_Reduce_local, sizeof(__pyx_k_Op_Reduce_local), 0, 0, 1, 1},
    {&__pyx_n_s_Op___reduce, __pyx_k_Op___reduce, sizeof(__pyx_k_Op___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Op_f2py, __pyx_k_Op_f2py, sizeof(__pyx_k_Op_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Op_free, __pyx_k_Op_free, sizeof(__pyx_k_Op_free), 0, 0, 1, 1},
    {&__pyx_n_s_Op_fromhandle, __pyx_k_Op_fromhandle, sizeof(__pyx_k_Op_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Op_py2f, __pyx_k_Op_py2f, sizeof(__pyx_k_Op_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Open, __pyx_k_Open, sizeof(__pyx_k_Open), 0, 0, 1, 1},
    {&__pyx_n_s_Open_port, __pyx_k_Open_port, sizeof(__pyx_k_Open_port), 0, 0, 1, 1},
    {&__pyx_n_s_OverflowError, __pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 0, 1, 1},
    {&__pyx_n_s_PACKED, __pyx_k_PACKED, sizeof(__pyx_k_PACKED), 0, 0, 1, 1},
    {&__pyx_n_s_PROC_NULL, __pyx_k_PROC_NULL, sizeof(__pyx_k_PROC_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_PROD, __pyx_k_PROD, sizeof(__pyx_k_PROD), 0, 0, 1, 1},
    {&__pyx_n_s_Pack, __pyx_k_Pack, sizeof(__pyx_k_Pack), 0, 0, 1, 1},
    {&__pyx_n_s_Pack_external, __pyx_k_Pack_external, sizeof(__pyx_k_Pack_external), 0, 0, 1, 1},
    {&__pyx_n_s_Pack_external_size, __pyx_k_Pack_external_size, sizeof(__pyx_k_Pack_external_size), 0, 0, 1, 1},
    {&__pyx_n_s_Pack_size, __pyx_k_Pack_size, sizeof(__pyx_k_Pack_size), 0, 0, 1, 1},
    {&__pyx_n_s_Parrived, __pyx_k_Parrived, sizeof(__pyx_k_Parrived), 0, 0, 1, 1},
    {&__pyx_kp_s_PathLike_AnyStr_str_bytes, __pyx_k_PathLike_AnyStr_str_bytes, sizeof(__pyx_k_PathLike_AnyStr_str_bytes), 0, 0, 1, 0},
    {&__pyx_n_s_Pcontrol, __pyx_k_Pcontrol, sizeof(__pyx_k_Pcontrol), 0, 0, 1, 1},
    {&__pyx_n_s_Pickle, __pyx_k_Pickle, sizeof(__pyx_k_Pickle), 0, 0, 1, 1},
    {&__pyx_n_s_Pickle_dumps, __pyx_k_Pickle_dumps, sizeof(__pyx_k_Pickle_dumps), 0, 0, 1, 1},
    {&__pyx_n_s_Pickle_dumps_oob, __pyx_k_Pickle_dumps_oob, sizeof(__pyx_k_Pickle_dumps_oob), 0, 0, 1, 1},
    {&__pyx_n_s_Pickle_loads, __pyx_k_Pickle_loads, sizeof(__pyx_k_Pickle_loads), 0, 0, 1, 1},
    {&__pyx_n_s_Pickle_loads_oob, __pyx_k_Pickle_loads_oob, sizeof(__pyx_k_Pickle_loads_oob), 0, 0, 1, 1},
    {&__pyx_n_s_Post, __pyx_k_Post, sizeof(__pyx_k_Post), 0, 0, 1, 1},
    {&__pyx_n_s_Pready, __pyx_k_Pready, sizeof(__pyx_k_Pready), 0, 0, 1, 1},
    {&__pyx_n_s_Pready_list, __pyx_k_Pready_list, sizeof(__pyx_k_Pready_list), 0, 0, 1, 1},
    {&__pyx_n_s_Pready_range, __pyx_k_Pready_range, sizeof(__pyx_k_Pready_range), 0, 0, 1, 1},
    {&__pyx_n_s_Preallocate, __pyx_k_Preallocate, sizeof(__pyx_k_Preallocate), 0, 0, 1, 1},
    {&__pyx_n_s_Precv_init, __pyx_k_Precv_init, sizeof(__pyx_k_Precv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Prequest, __pyx_k_Prequest, sizeof(__pyx_k_Prequest), 0, 0, 1, 1},
    {&__pyx_n_s_Prequest_Parrived, __pyx_k_Prequest_Parrived, sizeof(__pyx_k_Prequest_Parrived), 0, 0, 1, 1},
    {&__pyx_n_s_Prequest_Pready, __pyx_k_Prequest_Pready, sizeof(__pyx_k_Prequest_Pready), 0, 0, 1, 1},
    {&__pyx_n_s_Prequest_Pready_list, __pyx_k_Prequest_Pready_list, sizeof(__pyx_k_Prequest_Pready_list), 0, 0, 1, 1},
    {&__pyx_n_s_Prequest_Pready_range, __pyx_k_Prequest_Pready_range, sizeof(__pyx_k_Prequest_Pready_range), 0, 0, 1, 1},
    {&__pyx_n_s_Prequest_Start, __pyx_k_Prequest_Start, sizeof(__pyx_k_Prequest_Start), 0, 0, 1, 1},
    {&__pyx_n_s_Prequest_Startall, __pyx_k_Prequest_Startall, sizeof(__pyx_k_Prequest_Startall), 0, 0, 1, 1},
    {&__pyx_n_s_Probe, __pyx_k_Probe, sizeof(__pyx_k_Probe), 0, 0, 1, 1},
    {&__pyx_n_s_Psend_init, __pyx_k_Psend_init, sizeof(__pyx_k_Psend_init), 0, 0, 1, 1},
    {&__pyx_n_s_Publish_name, __pyx_k_Publish_name, sizeof(__pyx_k_Publish_name), 0, 0, 1, 1},
    {&__pyx_n_s_Put, __pyx_k_Put, sizeof(__pyx_k_Put), 0, 0, 1, 1},
    {&__pyx_n_s_Query_thread, __pyx_k_Query_thread, sizeof(__pyx_k_Query_thread), 0, 0, 1, 1},
    {&__pyx_n_s_REAL, __pyx_k_REAL, sizeof(__pyx_k_REAL), 0, 0, 1, 1},
    {&__pyx_n_s_REAL16, __pyx_k_REAL16, sizeof(__pyx_k_REAL16), 0, 0, 1, 1},
    {&__pyx_n_s_REAL2, __pyx_k_REAL2, sizeof(__pyx_k_REAL2), 0, 0, 1, 1},
    {&__pyx_n_s_REAL4, __pyx_k_REAL4, sizeof(__pyx_k_REAL4), 0, 0, 1, 1},
    {&__pyx_n_s_REAL8, __pyx_k_REAL8, sizeof(__pyx_k_REAL8), 0, 0, 1, 1},
    {&__pyx_n_s_REPLACE, __pyx_k_REPLACE, sizeof(__pyx_k_REPLACE), 0, 0, 1, 1},
    {&__pyx_n_s_REQUEST_NULL, __pyx_k_REQUEST_NULL, sizeof(__pyx_k_REQUEST_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_RESIZED, __pyx_k_RESIZED, sizeof(__pyx_k_RESIZED), 0, 0, 1, 1},
    {&__pyx_n_s_RLock, __pyx_k_RLock, sizeof(__pyx_k_RLock), 0, 0, 1, 1},
    {&__pyx_n_s_ROOT, __pyx_k_ROOT, sizeof(__pyx_k_ROOT), 0, 0, 1, 1},
    {&__pyx_n_s_Raccumulate, __pyx_k_Raccumulate, sizeof(__pyx_k_Raccumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Range_excl, __pyx_k_Range_excl, sizeof(__pyx_k_Range_excl), 0, 0, 1, 1},
    {&__pyx_n_s_Range_incl, __pyx_k_Range_incl, sizeof(__pyx_k_Range_incl), 0, 0, 1, 1},
    {&__pyx_n_s_Read, __pyx_k_Read, sizeof(__pyx_k_Read), 0, 0, 1, 1},
    {&__pyx_n_s_Read_all, __pyx_k_Read_all, sizeof(__pyx_k_Read_all), 0, 0, 1, 1},
    {&__pyx_n_s_Read_all_begin, __pyx_k_Read_all_begin, sizeof(__pyx_k_Read_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_Read_all_end, __pyx_k_Read_all_end, sizeof(__pyx_k_Read_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_Read_at, __pyx_k_Read_at, sizeof(__pyx_k_Read_at), 0, 0, 1, 1},
    {&__pyx_n_s_Read_at_all, __pyx_k_Read_at_all, sizeof(__pyx_k_Read_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_Read_at_all_begin, __pyx_k_Read_at_all_begin, sizeof(__pyx_k_Read_at_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_Read_at_all_end, __pyx_k_Read_at_all_end, sizeof(__pyx_k_Read_at_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_Read_ordered, __pyx_k_Read_ordered, sizeof(__pyx_k_Read_ordered), 0, 0, 1, 1},
    {&__pyx_n_s_Read_ordered_begin, __pyx_k_Read_ordered_begin, sizeof(__pyx_k_Read_ordered_begin), 0, 0, 1, 1},
    {&__pyx_n_s_Read_ordered_end, __pyx_k_Read_ordered_end, sizeof(__pyx_k_Read_ordered_end), 0, 0, 1, 1},
    {&__pyx_n_s_Read_shared, __pyx_k_Read_shared, sizeof(__pyx_k_Read_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Recv, __pyx_k_Recv, sizeof(__pyx_k_Recv), 0, 0, 1, 1},
    {&__pyx_n_s_Recv_init, __pyx_k_Recv_init, sizeof(__pyx_k_Recv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Reduce, __pyx_k_Reduce, sizeof(__pyx_k_Reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Reduce_init, __pyx_k_Reduce_init, sizeof(__pyx_k_Reduce_init), 0, 0, 1, 1},
    {&__pyx_n_s_Reduce_local, __pyx_k_Reduce_local, sizeof(__pyx_k_Reduce_local), 0, 0, 1, 1},
    {&__pyx_n_s_Reduce_scatter, __pyx_k_Reduce_scatter, sizeof(__pyx_k_Reduce_scatter), 0, 0, 1, 1},
    {&__pyx_n_s_Reduce_scatter_block, __pyx_k_Reduce_scatter_block, sizeof(__pyx_k_Reduce_scatter_block), 0, 0, 1, 1},
    {&__pyx_n_s_Reduce_scatter_block_init, __pyx_k_Reduce_scatter_block_init, sizeof(__pyx_k_Reduce_scatter_block_init), 0, 0, 1, 1},
    {&__pyx_n_s_Reduce_scatter_init, __pyx_k_Reduce_scatter_init, sizeof(__pyx_k_Reduce_scatter_init), 0, 0, 1, 1},
    {&__pyx_n_s_Register_datarep, __pyx_k_Register_datarep, sizeof(__pyx_k_Register_datarep), 0, 0, 1, 1},
    {&__pyx_n_s_Remove_error_class, __pyx_k_Remove_error_class, sizeof(__pyx_k_Remove_error_class), 0, 0, 1, 1},
    {&__pyx_n_s_Remove_error_code, __pyx_k_Remove_error_code, sizeof(__pyx_k_Remove_error_code), 0, 0, 1, 1},
    {&__pyx_n_s_Remove_error_string, __pyx_k_Remove_error_string, sizeof(__pyx_k_Remove_error_string), 0, 0, 1, 1},
    {&__pyx_n_s_Request, __pyx_k_Request, sizeof(__pyx_k_Request), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Cancel, __pyx_k_Request_Cancel, sizeof(__pyx_k_Request_Cancel), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Free, __pyx_k_Request_Free, sizeof(__pyx_k_Request_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Get_status, __pyx_k_Request_Get_status, sizeof(__pyx_k_Request_Get_status), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Get_status_all, __pyx_k_Request_Get_status_all, sizeof(__pyx_k_Request_Get_status_all), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Get_status_any, __pyx_k_Request_Get_status_any, sizeof(__pyx_k_Request_Get_status_any), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Get_status_some, __pyx_k_Request_Get_status_some, sizeof(__pyx_k_Request_Get_status_some), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Test, __pyx_k_Request_Test, sizeof(__pyx_k_Request_Test), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Testall, __pyx_k_Request_Testall, sizeof(__pyx_k_Request_Testall), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Testany, __pyx_k_Request_Testany, sizeof(__pyx_k_Request_Testany), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Testsome, __pyx_k_Request_Testsome, sizeof(__pyx_k_Request_Testsome), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Wait, __pyx_k_Request_Wait, sizeof(__pyx_k_Request_Wait), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Waitall, __pyx_k_Request_Waitall, sizeof(__pyx_k_Request_Waitall), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Waitany, __pyx_k_Request_Waitany, sizeof(__pyx_k_Request_Waitany), 0, 0, 1, 1},
    {&__pyx_n_s_Request_Waitsome, __pyx_k_Request_Waitsome, sizeof(__pyx_k_Request_Waitsome), 0, 0, 1, 1},
    {&__pyx_n_s_Request___reduce, __pyx_k_Request___reduce, sizeof(__pyx_k_Request___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Request_cancel, __pyx_k_Request_cancel, sizeof(__pyx_k_Request_cancel), 0, 0, 1, 1},
    {&__pyx_n_s_Request_f2py, __pyx_k_Request_f2py, sizeof(__pyx_k_Request_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Request_free, __pyx_k_Request_free, sizeof(__pyx_k_Request_free), 0, 0, 1, 1},
    {&__pyx_n_s_Request_fromhandle, __pyx_k_Request_fromhandle, sizeof(__pyx_k_Request_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Request_get_status, __pyx_k_Request_get_status, sizeof(__pyx_k_Request_get_status), 0, 0, 1, 1},
    {&__pyx_n_s_Request_get_status_all, __pyx_k_Request_get_status_all, sizeof(__pyx_k_Request_get_status_all), 0, 0, 1, 1},
    {&__pyx_n_s_Request_get_status_any, __pyx_k_Request_get_status_any, sizeof(__pyx_k_Request_get_status_any), 0, 0, 1, 1},
    {&__pyx_n_s_Request_get_status_some, __pyx_k_Request_get_status_some, sizeof(__pyx_k_Request_get_status_some), 0, 0, 1, 1},
    {&__pyx_n_s_Request_py2f, __pyx_k_Request_py2f, sizeof(__pyx_k_Request_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Request_test, __pyx_k_Request_test, sizeof(__pyx_k_Request_test), 0, 0, 1, 1},
    {&__pyx_n_s_Request_testall, __pyx_k_Request_testall, sizeof(__pyx_k_Request_testall), 0, 0, 1, 1},
    {&__pyx_n_s_Request_testany, __pyx_k_Request_testany, sizeof(__pyx_k_Request_testany), 0, 0, 1, 1},
    {&__pyx_n_s_Request_testsome, __pyx_k_Request_testsome, sizeof(__pyx_k_Request_testsome), 0, 0, 1, 1},
    {&__pyx_n_s_Request_wait, __pyx_k_Request_wait, sizeof(__pyx_k_Request_wait), 0, 0, 1, 1},
    {&__pyx_n_s_Request_waitall, __pyx_k_Request_waitall, sizeof(__pyx_k_Request_waitall), 0, 0, 1, 1},
    {&__pyx_n_s_Request_waitany, __pyx_k_Request_waitany, sizeof(__pyx_k_Request_waitany), 0, 0, 1, 1},
    {&__pyx_n_s_Request_waitsome, __pyx_k_Request_waitsome, sizeof(__pyx_k_Request_waitsome), 0, 0, 1, 1},
    {&__pyx_n_s_Resized, __pyx_k_Resized, sizeof(__pyx_k_Resized), 0, 0, 1, 1},
    {&__pyx_n_s_Revoke, __pyx_k_Revoke, sizeof(__pyx_k_Revoke), 0, 0, 1, 1},
    {&__pyx_n_s_Rget, __pyx_k_Rget, sizeof(__pyx_k_Rget), 0, 0, 1, 1},
    {&__pyx_n_s_Rget_accumulate, __pyx_k_Rget_accumulate, sizeof(__pyx_k_Rget_accumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Rput, __pyx_k_Rput, sizeof(__pyx_k_Rput), 0, 0, 1, 1},
    {&__pyx_n_s_Rsend, __pyx_k_Rsend, sizeof(__pyx_k_Rsend), 0, 0, 1, 1},
    {&__pyx_n_s_Rsend_init, __pyx_k_Rsend_init, sizeof(__pyx_k_Rsend_init), 0, 0, 1, 1},
    {&__pyx_n_s_RuntimeWarning, __pyx_k_RuntimeWarning, sizeof(__pyx_k_RuntimeWarning), 0, 0, 1, 1},
    {&__pyx_n_s_SEEK_CUR, __pyx_k_SEEK_CUR, sizeof(__pyx_k_SEEK_CUR), 0, 0, 1, 1},
    {&__pyx_n_s_SEEK_END, __pyx_k_SEEK_END, sizeof(__pyx_k_SEEK_END), 0, 0, 1, 1},
    {&__pyx_n_s_SEEK_SET, __pyx_k_SEEK_SET, sizeof(__pyx_k_SEEK_SET), 0, 0, 1, 1},
    {&__pyx_n_s_SESSION_NULL, __pyx_k_SESSION_NULL, sizeof(__pyx_k_SESSION_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_SHORT, __pyx_k_SHORT, sizeof(__pyx_k_SHORT), 0, 0, 1, 1},
    {&__pyx_n_s_SHORT_INT, __pyx_k_SHORT_INT, sizeof(__pyx_k_SHORT_INT), 0, 0, 1, 1},
    {&__pyx_n_s_SIGNED_CHAR, __pyx_k_SIGNED_CHAR, sizeof(__pyx_k_SIGNED_CHAR), 0, 0, 1, 1},
    {&__pyx_n_s_SIGNED_INT, __pyx_k_SIGNED_INT, sizeof(__pyx_k_SIGNED_INT), 0, 0, 1, 1},
    {&__pyx_n_s_SIGNED_LONG, __pyx_k_SIGNED_LONG, sizeof(__pyx_k_SIGNED_LONG), 0, 0, 1, 1},
    {&__pyx_n_s_SIGNED_LONG_LONG, __pyx_k_SIGNED_LONG_LONG, sizeof(__pyx_k_SIGNED_LONG_LONG), 0, 0, 1, 1},
    {&__pyx_n_s_SIGNED_SHORT, __pyx_k_SIGNED_SHORT, sizeof(__pyx_k_SIGNED_SHORT), 0, 0, 1, 1},
    {&__pyx_n_s_SIMILAR, __pyx_k_SIMILAR, sizeof(__pyx_k_SIMILAR), 0, 0, 1, 1},
    {&__pyx_n_s_SINT16_T, __pyx_k_SINT16_T, sizeof(__pyx_k_SINT16_T), 0, 0, 1, 1},
    {&__pyx_n_s_SINT32_T, __pyx_k_SINT32_T, sizeof(__pyx_k_SINT32_T), 0, 0, 1, 1},
    {&__pyx_n_s_SINT64_T, __pyx_k_SINT64_T, sizeof(__pyx_k_SINT64_T), 0, 0, 1, 1},
    {&__pyx_n_s_SINT8_T, __pyx_k_SINT8_T, sizeof(__pyx_k_SINT8_T), 0, 0, 1, 1},
    {&__pyx_n_s_STRUCT, __pyx_k_STRUCT, sizeof(__pyx_k_STRUCT), 0, 0, 1, 1},
    {&__pyx_n_s_SUBARRAY, __pyx_k_SUBARRAY, sizeof(__pyx_k_SUBARRAY), 0, 0, 1, 1},
    {&__pyx_n_s_SUBVERSION, __pyx_k_SUBVERSION, sizeof(__pyx_k_SUBVERSION), 0, 0, 1, 1},
    {&__pyx_n_s_SUCCESS, __pyx_k_SUCCESS, sizeof(__pyx_k_SUCCESS), 0, 0, 1, 1},
    {&__pyx_n_s_SUM, __pyx_k_SUM, sizeof(__pyx_k_SUM), 0, 0, 1, 1},
    {&__pyx_n_s_Scan, __pyx_k_Scan, sizeof(__pyx_k_Scan), 0, 0, 1, 1},
    {&__pyx_n_s_Scan_init, __pyx_k_Scan_init, sizeof(__pyx_k_Scan_init), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter, __pyx_k_Scatter, sizeof(__pyx_k_Scatter), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter_init, __pyx_k_Scatter_init, sizeof(__pyx_k_Scatter_init), 0, 0, 1, 1},
    {&__pyx_n_s_Scatterv, __pyx_k_Scatterv, sizeof(__pyx_k_Scatterv), 0, 0, 1, 1},
    {&__pyx_n_s_Scatterv_init, __pyx_k_Scatterv_init, sizeof(__pyx_k_Scatterv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Seek, __pyx_k_Seek, sizeof(__pyx_k_Seek), 0, 0, 1, 1},
    {&__pyx_n_s_Seek_shared, __pyx_k_Seek_shared, sizeof(__pyx_k_Seek_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Self, __pyx_k_Self, sizeof(__pyx_k_Self), 0, 0, 1, 1},
    {&__pyx_kp_s_Self_None, __pyx_k_Self_None, sizeof(__pyx_k_Self_None), 0, 0, 1, 0},
    {&__pyx_n_s_Send, __pyx_k_Send, sizeof(__pyx_k_Send), 0, 0, 1, 1},
    {&__pyx_n_s_Send_init, __pyx_k_Send_init, sizeof(__pyx_k_Send_init), 0, 0, 1, 1},
    {&__pyx_n_s_Sendrecv, __pyx_k_Sendrecv, sizeof(__pyx_k_Sendrecv), 0, 0, 1, 1},
    {&__pyx_n_s_Sendrecv_replace, __pyx_k_Sendrecv_replace, sizeof(__pyx_k_Sendrecv_replace), 0, 0, 1, 1},
    {&__pyx_kp_s_Sequence_Any, __pyx_k_Sequence_Any, sizeof(__pyx_k_Sequence_Any), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_Any_None, __pyx_k_Sequence_Any_None, sizeof(__pyx_k_Sequence_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_Datatype, __pyx_k_Sequence_Datatype, sizeof(__pyx_k_Sequence_Datatype), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_Info_Info, __pyx_k_Sequence_Info_Info, sizeof(__pyx_k_Sequence_Info_Info), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_Request, __pyx_k_Sequence_Request, sizeof(__pyx_k_Sequence_Request), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_Sequence_str_None, __pyx_k_Sequence_Sequence_str_None, sizeof(__pyx_k_Sequence_Sequence_str_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_bool, __pyx_k_Sequence_bool, sizeof(__pyx_k_Sequence_bool), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_bool_None, __pyx_k_Sequence_bool_None, sizeof(__pyx_k_Sequence_bool_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_int, __pyx_k_Sequence_int, sizeof(__pyx_k_Sequence_int), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_int_None, __pyx_k_Sequence_int_None, sizeof(__pyx_k_Sequence_int_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_str, __pyx_k_Sequence_str, sizeof(__pyx_k_Sequence_str), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_str_None, __pyx_k_Sequence_str_None, sizeof(__pyx_k_Sequence_str_None), 0, 0, 1, 0},
    {&__pyx_kp_s_Sequence_tuple_int_int_int, __pyx_k_Sequence_tuple_int_int_int, sizeof(__pyx_k_Sequence_tuple_int_int_int), 0, 0, 1, 0},
    {&__pyx_n_s_Session, __pyx_k_Session, sizeof(__pyx_k_Session), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Attach_buffer, __pyx_k_Session_Attach_buffer, sizeof(__pyx_k_Session_Attach_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Call_errhandler, __pyx_k_Session_Call_errhandler, sizeof(__pyx_k_Session_Call_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Create_errhandler, __pyx_k_Session_Create_errhandler, sizeof(__pyx_k_Session_Create_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Create_group, __pyx_k_Session_Create_group, sizeof(__pyx_k_Session_Create_group), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Detach_buffer, __pyx_k_Session_Detach_buffer, sizeof(__pyx_k_Session_Detach_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Finalize, __pyx_k_Session_Finalize, sizeof(__pyx_k_Session_Finalize), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Flush_buffer, __pyx_k_Session_Flush_buffer, sizeof(__pyx_k_Session_Flush_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Get_errhandler, __pyx_k_Session_Get_errhandler, sizeof(__pyx_k_Session_Get_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Get_info, __pyx_k_Session_Get_info, sizeof(__pyx_k_Session_Get_info), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Get_nth_pset, __pyx_k_Session_Get_nth_pset, sizeof(__pyx_k_Session_Get_nth_pset), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Get_num_psets, __pyx_k_Session_Get_num_psets, sizeof(__pyx_k_Session_Get_num_psets), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Get_pset_info, __pyx_k_Session_Get_pset_info, sizeof(__pyx_k_Session_Get_pset_info), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Iflush_buffer, __pyx_k_Session_Iflush_buffer, sizeof(__pyx_k_Session_Iflush_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Init, __pyx_k_Session_Init, sizeof(__pyx_k_Session_Init), 0, 0, 1, 1},
    {&__pyx_n_s_Session_Set_errhandler, __pyx_k_Session_Set_errhandler, sizeof(__pyx_k_Session_Set_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Session___reduce, __pyx_k_Session___reduce, sizeof(__pyx_k_Session___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Session_f2py, __pyx_k_Session_f2py, sizeof(__pyx_k_Session_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Session_free, __pyx_k_Session_free, sizeof(__pyx_k_Session_free), 0, 0, 1, 1},
    {&__pyx_n_s_Session_fromhandle, __pyx_k_Session_fromhandle, sizeof(__pyx_k_Session_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Session_py2f, __pyx_k_Session_py2f, sizeof(__pyx_k_Session_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Set, __pyx_k_Set, sizeof(__pyx_k_Set), 0, 0, 1, 1},
    {&__pyx_n_s_Set_atomicity, __pyx_k_Set_atomicity, sizeof(__pyx_k_Set_atomicity), 0, 0, 1, 1},
    {&__pyx_n_s_Set_attr, __pyx_k_Set_attr, sizeof(__pyx_k_Set_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Set_cancelled, __pyx_k_Set_cancelled, sizeof(__pyx_k_Set_cancelled), 0, 0, 1, 1},
    {&__pyx_n_s_Set_elements, __pyx_k_Set_elements, sizeof(__pyx_k_Set_elements), 0, 0, 1, 1},
    {&__pyx_n_s_Set_errhandler, __pyx_k_Set_errhandler, sizeof(__pyx_k_Set_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Set_error, __pyx_k_Set_error, sizeof(__pyx_k_Set_error), 0, 0, 1, 1},
    {&__pyx_n_s_Set_info, __pyx_k_Set_info, sizeof(__pyx_k_Set_info), 0, 0, 1, 1},
    {&__pyx_n_s_Set_name, __pyx_k_Set_name, sizeof(__pyx_k_Set_name), 0, 0, 1, 1},
    {&__pyx_n_s_Set_size, __pyx_k_Set_size, sizeof(__pyx_k_Set_size), 0, 0, 1, 1},
    {&__pyx_n_s_Set_source, __pyx_k_Set_source, sizeof(__pyx_k_Set_source), 0, 0, 1, 1},
    {&__pyx_n_s_Set_tag, __pyx_k_Set_tag, sizeof(__pyx_k_Set_tag), 0, 0, 1, 1},
    {&__pyx_n_s_Set_view, __pyx_k_Set_view, sizeof(__pyx_k_Set_view), 0, 0, 1, 1},
    {&__pyx_n_s_Shared_query, __pyx_k_Shared_query, sizeof(__pyx_k_Shared_query), 0, 0, 1, 1},
    {&__pyx_n_s_Shift, __pyx_k_Shift, sizeof(__pyx_k_Shift), 0, 0, 1, 1},
    {&__pyx_n_s_Shrink, __pyx_k_Shrink, sizeof(__pyx_k_Shrink), 0, 0, 1, 1},
    {&__pyx_n_s_Spawn, __pyx_k_Spawn, sizeof(__pyx_k_Spawn), 0, 0, 1, 1},
    {&__pyx_n_s_Spawn_multiple, __pyx_k_Spawn_multiple, sizeof(__pyx_k_Spawn_multiple), 0, 0, 1, 1},
    {&__pyx_n_s_Split, __pyx_k_Split, sizeof(__pyx_k_Split), 0, 0, 1, 1},
    {&__pyx_n_s_Split_type, __pyx_k_Split_type, sizeof(__pyx_k_Split_type), 0, 0, 1, 1},
    {&__pyx_n_s_Ssend, __pyx_k_Ssend, sizeof(__pyx_k_Ssend), 0, 0, 1, 1},
    {&__pyx_n_s_Ssend_init, __pyx_k_Ssend_init, sizeof(__pyx_k_Ssend_init), 0, 0, 1, 1},
    {&__pyx_n_s_Start, __pyx_k_Start, sizeof(__pyx_k_Start), 0, 0, 1, 1},
    {&__pyx_n_s_Startall, __pyx_k_Startall, sizeof(__pyx_k_Startall), 0, 0, 1, 1},
    {&__pyx_n_s_Status, __pyx_k_Status, sizeof(__pyx_k_Status), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Get_count, __pyx_k_Status_Get_count, sizeof(__pyx_k_Status_Get_count), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Get_elements, __pyx_k_Status_Get_elements, sizeof(__pyx_k_Status_Get_elements), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Get_error, __pyx_k_Status_Get_error, sizeof(__pyx_k_Status_Get_error), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Get_source, __pyx_k_Status_Get_source, sizeof(__pyx_k_Status_Get_source), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Get_tag, __pyx_k_Status_Get_tag, sizeof(__pyx_k_Status_Get_tag), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Is_cancelled, __pyx_k_Status_Is_cancelled, sizeof(__pyx_k_Status_Is_cancelled), 0, 0, 1, 1},
    {&__pyx_kp_s_Status_None, __pyx_k_Status_None, sizeof(__pyx_k_Status_None), 0, 0, 1, 0},
    {&__pyx_n_s_Status_Set_cancelled, __pyx_k_Status_Set_cancelled, sizeof(__pyx_k_Status_Set_cancelled), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Set_elements, __pyx_k_Status_Set_elements, sizeof(__pyx_k_Status_Set_elements), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Set_error, __pyx_k_Status_Set_error, sizeof(__pyx_k_Status_Set_error), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Set_source, __pyx_k_Status_Set_source, sizeof(__pyx_k_Status_Set_source), 0, 0, 1, 1},
    {&__pyx_n_s_Status_Set_tag, __pyx_k_Status_Set_tag, sizeof(__pyx_k_Status_Set_tag), 0, 0, 1, 1},
    {&__pyx_n_s_Status___getstate, __pyx_k_Status___getstate, sizeof(__pyx_k_Status___getstate), 0, 0, 1, 1},
    {&__pyx_n_s_Status___reduce, __pyx_k_Status___reduce, sizeof(__pyx_k_Status___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Status___setstate, __pyx_k_Status___setstate, sizeof(__pyx_k_Status___setstate), 0, 0, 1, 1},
    {&__pyx_n_s_Status_f2py, __pyx_k_Status_f2py, sizeof(__pyx_k_Status_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Status_py2f, __pyx_k_Status_py2f, sizeof(__pyx_k_Status_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Sub, __pyx_k_Sub, sizeof(__pyx_k_Sub), 0, 0, 1, 1},
    {&__pyx_n_s_Sync, __pyx_k_Sync, sizeof(__pyx_k_Sync), 0, 0, 1, 1},
    {&__pyx_n_s_TAG_UB, __pyx_k_TAG_UB, sizeof(__pyx_k_TAG_UB), 0, 0, 1, 1},
    {&__pyx_n_s_THREAD_FUNNELED, __pyx_k_THREAD_FUNNELED, sizeof(__pyx_k_THREAD_FUNNELED), 0, 0, 1, 1},
    {&__pyx_n_s_THREAD_MULTIPLE, __pyx_k_THREAD_MULTIPLE, sizeof(__pyx_k_THREAD_MULTIPLE), 0, 0, 1, 1},
    {&__pyx_n_s_THREAD_SERIALIZED, __pyx_k_THREAD_SERIALIZED, sizeof(__pyx_k_THREAD_SERIALIZED), 0, 0, 1, 1},
    {&__pyx_n_s_THREAD_SINGLE, __pyx_k_THREAD_SINGLE, sizeof(__pyx_k_THREAD_SINGLE), 0, 0, 1, 1},
    {&__pyx_n_s_TWOINT, __pyx_k_TWOINT, sizeof(__pyx_k_TWOINT), 0, 0, 1, 1},
    {&__pyx_n_s_TYPECLASS_COMPLEX, __pyx_k_TYPECLASS_COMPLEX, sizeof(__pyx_k_TYPECLASS_COMPLEX), 0, 0, 1, 1},
    {&__pyx_n_s_TYPECLASS_INTEGER, __pyx_k_TYPECLASS_INTEGER, sizeof(__pyx_k_TYPECLASS_INTEGER), 0, 0, 1, 1},
    {&__pyx_n_s_TYPECLASS_REAL, __pyx_k_TYPECLASS_REAL, sizeof(__pyx_k_TYPECLASS_REAL), 0, 0, 1, 1},
    {&__pyx_kp_s_TargetSpec_None, __pyx_k_TargetSpec_None, sizeof(__pyx_k_TargetSpec_None), 0, 0, 1, 0},
    {&__pyx_n_s_Test, __pyx_k_Test, sizeof(__pyx_k_Test), 0, 0, 1, 1},
    {&__pyx_n_s_Testall, __pyx_k_Testall, sizeof(__pyx_k_Testall), 0, 0, 1, 1},
    {&__pyx_n_s_Testany, __pyx_k_Testany, sizeof(__pyx_k_Testany), 0, 0, 1, 1},
    {&__pyx_n_s_Testsome, __pyx_k_Testsome, sizeof(__pyx_k_Testsome), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm, __pyx_k_Topocomm, sizeof(__pyx_k_Topocomm), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Ineighbor_allgather, __pyx_k_Topocomm_Ineighbor_allgather, sizeof(__pyx_k_Topocomm_Ineighbor_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Ineighbor_allgatherv, __pyx_k_Topocomm_Ineighbor_allgatherv, sizeof(__pyx_k_Topocomm_Ineighbor_allgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Ineighbor_alltoall, __pyx_k_Topocomm_Ineighbor_alltoall, sizeof(__pyx_k_Topocomm_Ineighbor_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Ineighbor_alltoallv, __pyx_k_Topocomm_Ineighbor_alltoallv, sizeof(__pyx_k_Topocomm_Ineighbor_alltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Ineighbor_alltoallw, __pyx_k_Topocomm_Ineighbor_alltoallw, sizeof(__pyx_k_Topocomm_Ineighbor_alltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_allgather, __pyx_k_Topocomm_Neighbor_allgather, sizeof(__pyx_k_Topocomm_Neighbor_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_allgather_init, __pyx_k_Topocomm_Neighbor_allgather_init, sizeof(__pyx_k_Topocomm_Neighbor_allgather_init), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_allgatherv, __pyx_k_Topocomm_Neighbor_allgatherv, sizeof(__pyx_k_Topocomm_Neighbor_allgatherv), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_allgatherv_ini, __pyx_k_Topocomm_Neighbor_allgatherv_ini, sizeof(__pyx_k_Topocomm_Neighbor_allgatherv_ini), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_alltoall, __pyx_k_Topocomm_Neighbor_alltoall, sizeof(__pyx_k_Topocomm_Neighbor_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_alltoall_init, __pyx_k_Topocomm_Neighbor_alltoall_init, sizeof(__pyx_k_Topocomm_Neighbor_alltoall_init), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_alltoallv, __pyx_k_Topocomm_Neighbor_alltoallv, sizeof(__pyx_k_Topocomm_Neighbor_alltoallv), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_alltoallv_init, __pyx_k_Topocomm_Neighbor_alltoallv_init, sizeof(__pyx_k_Topocomm_Neighbor_alltoallv_init), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_alltoallw, __pyx_k_Topocomm_Neighbor_alltoallw, sizeof(__pyx_k_Topocomm_Neighbor_alltoallw), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_Neighbor_alltoallw_init, __pyx_k_Topocomm_Neighbor_alltoallw_init, sizeof(__pyx_k_Topocomm_Neighbor_alltoallw_init), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_neighbor_allgather, __pyx_k_Topocomm_neighbor_allgather, sizeof(__pyx_k_Topocomm_neighbor_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_Topocomm_neighbor_alltoall, __pyx_k_Topocomm_neighbor_alltoall, sizeof(__pyx_k_Topocomm_neighbor_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_Translate_ranks, __pyx_k_Translate_ranks, sizeof(__pyx_k_Translate_ranks), 0, 0, 1, 1},
    {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
    {&__pyx_n_s_UINT16_T, __pyx_k_UINT16_T, sizeof(__pyx_k_UINT16_T), 0, 0, 1, 1},
    {&__pyx_n_s_UINT32_T, __pyx_k_UINT32_T, sizeof(__pyx_k_UINT32_T), 0, 0, 1, 1},
    {&__pyx_n_s_UINT64_T, __pyx_k_UINT64_T, sizeof(__pyx_k_UINT64_T), 0, 0, 1, 1},
    {&__pyx_n_s_UINT8_T, __pyx_k_UINT8_T, sizeof(__pyx_k_UINT8_T), 0, 0, 1, 1},
    {&__pyx_n_s_UNDEFINED, __pyx_k_UNDEFINED, sizeof(__pyx_k_UNDEFINED), 0, 0, 1, 1},
    {&__pyx_n_s_UNEQUAL, __pyx_k_UNEQUAL, sizeof(__pyx_k_UNEQUAL), 0, 0, 1, 1},
    {&__pyx_n_s_UNIVERSE_SIZE, __pyx_k_UNIVERSE_SIZE, sizeof(__pyx_k_UNIVERSE_SIZE), 0, 0, 1, 1},
    {&__pyx_n_s_UNSIGNED, __pyx_k_UNSIGNED, sizeof(__pyx_k_UNSIGNED), 0, 0, 1, 1},
    {&__pyx_n_s_UNSIGNED_CHAR, __pyx_k_UNSIGNED_CHAR, sizeof(__pyx_k_UNSIGNED_CHAR), 0, 0, 1, 1},
    {&__pyx_n_s_UNSIGNED_INT, __pyx_k_UNSIGNED_INT, sizeof(__pyx_k_UNSIGNED_INT), 0, 0, 1, 1},
    {&__pyx_n_s_UNSIGNED_LONG, __pyx_k_UNSIGNED_LONG, sizeof(__pyx_k_UNSIGNED_LONG), 0, 0, 1, 1},
    {&__pyx_n_s_UNSIGNED_LONG_LONG, __pyx_k_UNSIGNED_LONG_LONG, sizeof(__pyx_k_UNSIGNED_LONG_LONG), 0, 0, 1, 1},
    {&__pyx_n_s_UNSIGNED_SHORT, __pyx_k_UNSIGNED_SHORT, sizeof(__pyx_k_UNSIGNED_SHORT), 0, 0, 1, 1},
    {&__pyx_n_s_UNWEIGHTED, __pyx_k_UNWEIGHTED, sizeof(__pyx_k_UNWEIGHTED), 0, 0, 1, 1},
    {&__pyx_n_s_Union, __pyx_k_Union, sizeof(__pyx_k_Union), 0, 0, 1, 1},
    {&__pyx_n_s_Unlock, __pyx_k_Unlock, sizeof(__pyx_k_Unlock), 0, 0, 1, 1},
    {&__pyx_n_s_Unlock_all, __pyx_k_Unlock_all, sizeof(__pyx_k_Unlock_all), 0, 0, 1, 1},
    {&__pyx_n_s_Unpack, __pyx_k_Unpack, sizeof(__pyx_k_Unpack), 0, 0, 1, 1},
    {&__pyx_n_s_Unpack_external, __pyx_k_Unpack_external, sizeof(__pyx_k_Unpack_external), 0, 0, 1, 1},
    {&__pyx_n_s_Unpublish_name, __pyx_k_Unpublish_name, sizeof(__pyx_k_Unpublish_name), 0, 0, 1, 1},
    {&__pyx_n_s_UserWarning, __pyx_k_UserWarning, sizeof(__pyx_k_UserWarning), 0, 0, 1, 1},
    {&__pyx_n_s_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 0, 1, 1},
    {&__pyx_n_u_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 1, 0, 1},
    {&__pyx_n_s_VALUE_INDEX, __pyx_k_VALUE_INDEX, sizeof(__pyx_k_VALUE_INDEX), 0, 0, 1, 1},
    {&__pyx_n_s_VECTOR, __pyx_k_VECTOR, sizeof(__pyx_k_VECTOR), 0, 0, 1, 1},
    {&__pyx_n_s_VERSION, __pyx_k_VERSION, sizeof(__pyx_k_VERSION), 0, 0, 1, 1},
    {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
    {&__pyx_n_s_WCHAR, __pyx_k_WCHAR, sizeof(__pyx_k_WCHAR), 0, 0, 1, 1},
    {&__pyx_n_s_WEIGHTS_EMPTY, __pyx_k_WEIGHTS_EMPTY, sizeof(__pyx_k_WEIGHTS_EMPTY), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_BASE, __pyx_k_WIN_BASE, sizeof(__pyx_k_WIN_BASE), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_CREATE_FLAVOR, __pyx_k_WIN_CREATE_FLAVOR, sizeof(__pyx_k_WIN_CREATE_FLAVOR), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_DISP_UNIT, __pyx_k_WIN_DISP_UNIT, sizeof(__pyx_k_WIN_DISP_UNIT), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_FLAVOR, __pyx_k_WIN_FLAVOR, sizeof(__pyx_k_WIN_FLAVOR), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_FLAVOR_ALLOCATE, __pyx_k_WIN_FLAVOR_ALLOCATE, sizeof(__pyx_k_WIN_FLAVOR_ALLOCATE), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_FLAVOR_CREATE, __pyx_k_WIN_FLAVOR_CREATE, sizeof(__pyx_k_WIN_FLAVOR_CREATE), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_FLAVOR_DYNAMIC, __pyx_k_WIN_FLAVOR_DYNAMIC, sizeof(__pyx_k_WIN_FLAVOR_DYNAMIC), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_FLAVOR_SHARED, __pyx_k_WIN_FLAVOR_SHARED, sizeof(__pyx_k_WIN_FLAVOR_SHARED), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_MODEL, __pyx_k_WIN_MODEL, sizeof(__pyx_k_WIN_MODEL), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_NULL, __pyx_k_WIN_NULL, sizeof(__pyx_k_WIN_NULL), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_SEPARATE, __pyx_k_WIN_SEPARATE, sizeof(__pyx_k_WIN_SEPARATE), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_SIZE, __pyx_k_WIN_SIZE, sizeof(__pyx_k_WIN_SIZE), 0, 0, 1, 1},
    {&__pyx_n_s_WIN_UNIFIED, __pyx_k_WIN_UNIFIED, sizeof(__pyx_k_WIN_UNIFIED), 0, 0, 1, 1},
    {&__pyx_n_s_WTIME_IS_GLOBAL, __pyx_k_WTIME_IS_GLOBAL, sizeof(__pyx_k_WTIME_IS_GLOBAL), 0, 0, 1, 1},
    {&__pyx_n_s_Wait, __pyx_k_Wait, sizeof(__pyx_k_Wait), 0, 0, 1, 1},
    {&__pyx_n_s_Waitall, __pyx_k_Waitall, sizeof(__pyx_k_Waitall), 0, 0, 1, 1},
    {&__pyx_n_s_Waitany, __pyx_k_Waitany, sizeof(__pyx_k_Waitany), 0, 0, 1, 1},
    {&__pyx_n_s_Waitsome, __pyx_k_Waitsome, sizeof(__pyx_k_Waitsome), 0, 0, 1, 1},
    {&__pyx_n_s_Win, __pyx_k_Win, sizeof(__pyx_k_Win), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Accumulate, __pyx_k_Win_Accumulate, sizeof(__pyx_k_Win_Accumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Allocate, __pyx_k_Win_Allocate, sizeof(__pyx_k_Win_Allocate), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Allocate_shared, __pyx_k_Win_Allocate_shared, sizeof(__pyx_k_Win_Allocate_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Attach, __pyx_k_Win_Attach, sizeof(__pyx_k_Win_Attach), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Call_errhandler, __pyx_k_Win_Call_errhandler, sizeof(__pyx_k_Win_Call_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Compare_and_swap, __pyx_k_Win_Compare_and_swap, sizeof(__pyx_k_Win_Compare_and_swap), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Complete, __pyx_k_Win_Complete, sizeof(__pyx_k_Win_Complete), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Create, __pyx_k_Win_Create, sizeof(__pyx_k_Win_Create), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Create_dynamic, __pyx_k_Win_Create_dynamic, sizeof(__pyx_k_Win_Create_dynamic), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Create_errhandler, __pyx_k_Win_Create_errhandler, sizeof(__pyx_k_Win_Create_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Create_keyval, __pyx_k_Win_Create_keyval, sizeof(__pyx_k_Win_Create_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Delete_attr, __pyx_k_Win_Delete_attr, sizeof(__pyx_k_Win_Delete_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Detach, __pyx_k_Win_Detach, sizeof(__pyx_k_Win_Detach), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Fence, __pyx_k_Win_Fence, sizeof(__pyx_k_Win_Fence), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Fetch_and_op, __pyx_k_Win_Fetch_and_op, sizeof(__pyx_k_Win_Fetch_and_op), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Flush, __pyx_k_Win_Flush, sizeof(__pyx_k_Win_Flush), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Flush_all, __pyx_k_Win_Flush_all, sizeof(__pyx_k_Win_Flush_all), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Flush_local, __pyx_k_Win_Flush_local, sizeof(__pyx_k_Win_Flush_local), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Flush_local_all, __pyx_k_Win_Flush_local_all, sizeof(__pyx_k_Win_Flush_local_all), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Free, __pyx_k_Win_Free, sizeof(__pyx_k_Win_Free), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Free_keyval, __pyx_k_Win_Free_keyval, sizeof(__pyx_k_Win_Free_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Get, __pyx_k_Win_Get, sizeof(__pyx_k_Win_Get), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Get_accumulate, __pyx_k_Win_Get_accumulate, sizeof(__pyx_k_Win_Get_accumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Get_attr, __pyx_k_Win_Get_attr, sizeof(__pyx_k_Win_Get_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Get_errhandler, __pyx_k_Win_Get_errhandler, sizeof(__pyx_k_Win_Get_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Get_group, __pyx_k_Win_Get_group, sizeof(__pyx_k_Win_Get_group), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Get_info, __pyx_k_Win_Get_info, sizeof(__pyx_k_Win_Get_info), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Get_name, __pyx_k_Win_Get_name, sizeof(__pyx_k_Win_Get_name), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Lock, __pyx_k_Win_Lock, sizeof(__pyx_k_Win_Lock), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Lock_all, __pyx_k_Win_Lock_all, sizeof(__pyx_k_Win_Lock_all), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Post, __pyx_k_Win_Post, sizeof(__pyx_k_Win_Post), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Put, __pyx_k_Win_Put, sizeof(__pyx_k_Win_Put), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Raccumulate, __pyx_k_Win_Raccumulate, sizeof(__pyx_k_Win_Raccumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Rget, __pyx_k_Win_Rget, sizeof(__pyx_k_Win_Rget), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Rget_accumulate, __pyx_k_Win_Rget_accumulate, sizeof(__pyx_k_Win_Rget_accumulate), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Rput, __pyx_k_Win_Rput, sizeof(__pyx_k_Win_Rput), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Set_attr, __pyx_k_Win_Set_attr, sizeof(__pyx_k_Win_Set_attr), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Set_errhandler, __pyx_k_Win_Set_errhandler, sizeof(__pyx_k_Win_Set_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Set_info, __pyx_k_Win_Set_info, sizeof(__pyx_k_Win_Set_info), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Set_name, __pyx_k_Win_Set_name, sizeof(__pyx_k_Win_Set_name), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Shared_query, __pyx_k_Win_Shared_query, sizeof(__pyx_k_Win_Shared_query), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Start, __pyx_k_Win_Start, sizeof(__pyx_k_Win_Start), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Sync, __pyx_k_Win_Sync, sizeof(__pyx_k_Win_Sync), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Test, __pyx_k_Win_Test, sizeof(__pyx_k_Win_Test), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Unlock, __pyx_k_Win_Unlock, sizeof(__pyx_k_Win_Unlock), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Unlock_all, __pyx_k_Win_Unlock_all, sizeof(__pyx_k_Win_Unlock_all), 0, 0, 1, 1},
    {&__pyx_n_s_Win_Wait, __pyx_k_Win_Wait, sizeof(__pyx_k_Win_Wait), 0, 0, 1, 1},
    {&__pyx_n_s_Win___reduce, __pyx_k_Win___reduce, sizeof(__pyx_k_Win___reduce), 0, 0, 1, 1},
    {&__pyx_n_s_Win_f2py, __pyx_k_Win_f2py, sizeof(__pyx_k_Win_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_Win_free, __pyx_k_Win_free, sizeof(__pyx_k_Win_free), 0, 0, 1, 1},
    {&__pyx_n_s_Win_fromhandle, __pyx_k_Win_fromhandle, sizeof(__pyx_k_Win_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_Win_py2f, __pyx_k_Win_py2f, sizeof(__pyx_k_Win_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_Win_tomemory, __pyx_k_Win_tomemory, sizeof(__pyx_k_Win_tomemory), 0, 0, 1, 1},
    {&__pyx_n_s_Write, __pyx_k_Write, sizeof(__pyx_k_Write), 0, 0, 1, 1},
    {&__pyx_n_s_Write_all, __pyx_k_Write_all, sizeof(__pyx_k_Write_all), 0, 0, 1, 1},
    {&__pyx_n_s_Write_all_begin, __pyx_k_Write_all_begin, sizeof(__pyx_k_Write_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_Write_all_end, __pyx_k_Write_all_end, sizeof(__pyx_k_Write_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_Write_at, __pyx_k_Write_at, sizeof(__pyx_k_Write_at), 0, 0, 1, 1},
    {&__pyx_n_s_Write_at_all, __pyx_k_Write_at_all, sizeof(__pyx_k_Write_at_all), 0, 0, 1, 1},
    {&__pyx_n_s_Write_at_all_begin, __pyx_k_Write_at_all_begin, sizeof(__pyx_k_Write_at_all_begin), 0, 0, 1, 1},
    {&__pyx_n_s_Write_at_all_end, __pyx_k_Write_at_all_end, sizeof(__pyx_k_Write_at_all_end), 0, 0, 1, 1},
    {&__pyx_n_s_Write_ordered, __pyx_k_Write_ordered, sizeof(__pyx_k_Write_ordered), 0, 0, 1, 1},
    {&__pyx_n_s_Write_ordered_begin, __pyx_k_Write_ordered_begin, sizeof(__pyx_k_Write_ordered_begin), 0, 0, 1, 1},
    {&__pyx_n_s_Write_ordered_end, __pyx_k_Write_ordered_end, sizeof(__pyx_k_Write_ordered_end), 0, 0, 1, 1},
    {&__pyx_n_s_Write_shared, __pyx_k_Write_shared, sizeof(__pyx_k_Write_shared), 0, 0, 1, 1},
    {&__pyx_n_s_Wtick, __pyx_k_Wtick, sizeof(__pyx_k_Wtick), 0, 0, 1, 1},
    {&__pyx_n_s_Wtime, __pyx_k_Wtime, sizeof(__pyx_k_Wtime), 0, 0, 1, 1},
    {&__pyx_kp_u__17, __pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0, 0},
    {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0},
    {&__pyx_n_s__205, __pyx_k__205, sizeof(__pyx_k__205), 0, 0, 1, 1},
    {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0},
    {&__pyx_kp_u__30, __pyx_k__30, sizeof(__pyx_k__30), 0, 1, 0, 0},
    {&__pyx_kp_u__57, __pyx_k__57, sizeof(__pyx_k__57), 0, 1, 0, 0},
    {&__pyx_n_s__809, __pyx_k__809, sizeof(__pyx_k__809), 0, 0, 1, 1},
    {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
    {&__pyx_n_s_abort, __pyx_k_abort, sizeof(__pyx_k_abort), 0, 0, 1, 1},
    {&__pyx_n_s_addr, __pyx_k_addr, sizeof(__pyx_k_addr), 0, 0, 1, 1},
    {&__pyx_n_s_addr1, __pyx_k_addr1, sizeof(__pyx_k_addr1), 0, 0, 1, 1},
    {&__pyx_n_s_addr2, __pyx_k_addr2, sizeof(__pyx_k_addr2), 0, 0, 1, 1},
    {&__pyx_n_s_address, __pyx_k_address, sizeof(__pyx_k_address), 0, 0, 1, 1},
    {&__pyx_n_s_addresses, __pyx_k_addresses, sizeof(__pyx_k_addresses), 0, 0, 1, 1},
    {&__pyx_n_s_addressof, __pyx_k_addressof, sizeof(__pyx_k_addressof), 0, 0, 1, 1},
    {&__pyx_n_s_align, __pyx_k_align, sizeof(__pyx_k_align), 0, 0, 1, 1},
    {&__pyx_n_s_allgather, __pyx_k_allgather, sizeof(__pyx_k_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_allocate, __pyx_k_allocate, sizeof(__pyx_k_allocate), 0, 0, 1, 1},
    {&__pyx_n_s_allocate_lock, __pyx_k_allocate_lock, sizeof(__pyx_k_allocate_lock), 0, 0, 1, 1},
    {&__pyx_n_s_allreduce, __pyx_k_allreduce, sizeof(__pyx_k_allreduce), 0, 0, 1, 1},
    {&__pyx_n_s_alltoall, __pyx_k_alltoall, sizeof(__pyx_k_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_amode, __pyx_k_amode, sizeof(__pyx_k_amode), 0, 0, 1, 1},
    {&__pyx_kp_u_and_counts, __pyx_k_and_counts, sizeof(__pyx_k_and_counts), 0, 1, 0, 0},
    {&__pyx_kp_u_and_receive_count, __pyx_k_and_receive_count, sizeof(__pyx_k_and_receive_count), 0, 1, 0, 0},
    {&__pyx_kp_u_and_sum_counts, __pyx_k_and_sum_counts, sizeof(__pyx_k_and_sum_counts), 0, 1, 0, 0},
    {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
    {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1},
    {&__pyx_n_s_argc, __pyx_k_argc, sizeof(__pyx_k_argc), 0, 0, 1, 1},
    {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
    {&__pyx_n_s_argv, __pyx_k_argv, sizeof(__pyx_k_argv), 0, 0, 1, 1},
    {&__pyx_n_s_argvs, __pyx_k_argvs, sizeof(__pyx_k_argvs), 0, 0, 1, 1},
    {&__pyx_n_s_array_of_partitions, __pyx_k_array_of_partitions, sizeof(__pyx_k_array_of_partitions), 0, 0, 1, 1},
    {&__pyx_n_s_assertion, __pyx_k_assertion, sizeof(__pyx_k_assertion), 0, 0, 1, 1},
    {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
    {&__pyx_n_s_attrval, __pyx_k_attrval, sizeof(__pyx_k_attrval), 0, 0, 1, 1},
    {&__pyx_n_s_barrier, __pyx_k_barrier, sizeof(__pyx_k_barrier), 0, 0, 1, 1},
    {&__pyx_n_s_base, __pyx_k_base, sizeof(__pyx_k_base), 0, 0, 1, 1},
    {&__pyx_n_s_baseptr, __pyx_k_baseptr, sizeof(__pyx_k_baseptr), 0, 0, 1, 1},
    {&__pyx_n_s_bcast, __pyx_k_bcast, sizeof(__pyx_k_bcast), 0, 0, 1, 1},
    {&__pyx_kp_s_bcast_p2p, __pyx_k_bcast_p2p, sizeof(__pyx_k_bcast_p2p), 0, 0, 1, 0},
    {&__pyx_n_s_blocklength, __pyx_k_blocklength, sizeof(__pyx_k_blocklength), 0, 0, 1, 1},
    {&__pyx_n_s_blocklengths, __pyx_k_blocklengths, sizeof(__pyx_k_blocklengths), 0, 0, 1, 1},
    {&__pyx_n_s_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 1, 1},
    {&__pyx_n_s_bsend, __pyx_k_bsend, sizeof(__pyx_k_bsend), 0, 0, 1, 1},
    {&__pyx_n_s_buf, __pyx_k_buf, sizeof(__pyx_k_buf), 0, 0, 1, 1},
    {&__pyx_n_s_buffer, __pyx_k_buffer, sizeof(__pyx_k_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_buffer_allocate, __pyx_k_buffer_allocate, sizeof(__pyx_k_buffer_allocate), 0, 0, 1, 1},
    {&__pyx_n_s_buffer_callback, __pyx_k_buffer_callback, sizeof(__pyx_k_buffer_callback), 0, 0, 1, 1},
    {&__pyx_n_s_buffer_cast, __pyx_k_buffer_cast, sizeof(__pyx_k_buffer_cast), 0, 0, 1, 1},
    {&__pyx_n_s_buffer_fromaddress, __pyx_k_buffer_fromaddress, sizeof(__pyx_k_buffer_fromaddress), 0, 0, 1, 1},
    {&__pyx_n_s_buffer_frombuffer, __pyx_k_buffer_frombuffer, sizeof(__pyx_k_buffer_frombuffer), 0, 0, 1, 1},
    {&__pyx_kp_s_buffer_is_not_CPU_accessible, __pyx_k_buffer_is_not_CPU_accessible, sizeof(__pyx_k_buffer_is_not_CPU_accessible), 0, 0, 1, 0},
    {&__pyx_kp_s_buffer_is_read_only, __pyx_k_buffer_is_read_only, sizeof(__pyx_k_buffer_is_read_only), 0, 0, 1, 0},
    {&__pyx_n_s_buffer_release, __pyx_k_buffer_release, sizeof(__pyx_k_buffer_release), 0, 0, 1, 1},
    {&__pyx_n_s_buffer_tobytes, __pyx_k_buffer_tobytes, sizeof(__pyx_k_buffer_tobytes), 0, 0, 1, 1},
    {&__pyx_n_s_buffer_toreadonly, __pyx_k_buffer_toreadonly, sizeof(__pyx_k_buffer_toreadonly), 0, 0, 1, 1},
    {&__pyx_n_s_buffers, __pyx_k_buffers, sizeof(__pyx_k_buffers), 0, 0, 1, 1},
    {&__pyx_n_s_buflen, __pyx_k_buflen, sizeof(__pyx_k_buflen), 0, 0, 1, 1},
    {&__pyx_n_s_bytes, __pyx_k_bytes, sizeof(__pyx_k_bytes), 0, 0, 1, 1},
    {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1},
    {&__pyx_n_s_c_num_to_ack, __pyx_k_c_num_to_ack, sizeof(__pyx_k_c_num_to_ack), 0, 0, 1, 1},
    {&__pyx_n_s_c_status, __pyx_k_c_status, sizeof(__pyx_k_c_status), 0, 0, 1, 1},
    {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1},
    {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1},
    {&__pyx_n_s_cancel_fn, __pyx_k_cancel_fn, sizeof(__pyx_k_cancel_fn), 0, 0, 1, 1},
    {&__pyx_n_s_cancelled, __pyx_k_cancelled, sizeof(__pyx_k_cancelled), 0, 0, 1, 1},
    {&__pyx_kp_s_cannot_call_user_defined_operati, __pyx_k_cannot_call_user_defined_operati, sizeof(__pyx_k_cannot_call_user_defined_operati), 0, 0, 1, 0},
    {&__pyx_kp_s_cannot_create_instance, __pyx_k_cannot_create_instance, sizeof(__pyx_k_cannot_create_instance), 0, 0, 1, 0},
    {&__pyx_kp_s_cannot_create_too_many_user_defi, __pyx_k_cannot_create_too_many_user_defi, sizeof(__pyx_k_cannot_create_too_many_user_defi), 0, 0, 1, 0},
    {&__pyx_kp_s_cannot_create_too_many_user_defi_2, __pyx_k_cannot_create_too_many_user_defi_2, sizeof(__pyx_k_cannot_create_too_many_user_defi_2), 0, 0, 1, 0},
    {&__pyx_kp_u_cannot_map, __pyx_k_cannot_map, sizeof(__pyx_k_cannot_map), 0, 1, 0, 0},
    {&__pyx_kp_u_cannot_map_code, __pyx_k_cannot_map_code, sizeof(__pyx_k_cannot_map_code), 0, 1, 0, 0},
    {&__pyx_kp_s_cannot_map_to_character_code_or, __pyx_k_cannot_map_to_character_code_or, sizeof(__pyx_k_cannot_map_to_character_code_or), 0, 0, 1, 0},
    {&__pyx_kp_s_cannot_pickle_user_defined_reduc, __pyx_k_cannot_pickle_user_defined_reduc, sizeof(__pyx_k_cannot_pickle_user_defined_reduc), 0, 0, 1, 0},
    {&__pyx_kp_u_cannot_serialize, __pyx_k_cannot_serialize, sizeof(__pyx_k_cannot_serialize), 0, 1, 0, 0},
    {&__pyx_n_s_cast, __pyx_k_cast, sizeof(__pyx_k_cast), 0, 0, 1, 1},
    {&__pyx_n_s_cdatarep, __pyx_k_cdatarep, sizeof(__pyx_k_cdatarep), 0, 0, 1, 1},
    {&__pyx_n_s_cerrhdl, __pyx_k_cerrhdl, sizeof(__pyx_k_cerrhdl), 0, 0, 1, 1},
    {&__pyx_n_s_cetype, __pyx_k_cetype, sizeof(__pyx_k_cetype), 0, 0, 1, 1},
    {&__pyx_n_s_cfilename, __pyx_k_cfilename, sizeof(__pyx_k_cfilename), 0, 0, 1, 1},
    {&__pyx_n_s_cftype, __pyx_k_cftype, sizeof(__pyx_k_cftype), 0, 0, 1, 1},
    {&__pyx_n_s_cinfo, __pyx_k_cinfo, sizeof(__pyx_k_cinfo), 0, 0, 1, 1},
    {&__pyx_n_s_ckey, __pyx_k_ckey, sizeof(__pyx_k_ckey), 0, 0, 1, 1},
    {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1},
    {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1},
    {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
    {&__pyx_n_s_cls, __pyx_k_cls, sizeof(__pyx_k_cls), 0, 0, 1, 1},
    {&__pyx_n_s_cmd, __pyx_k_cmd, sizeof(__pyx_k_cmd), 0, 0, 1, 1},
    {&__pyx_n_s_cmds, __pyx_k_cmds, sizeof(__pyx_k_cmds), 0, 0, 1, 1},
    {&__pyx_n_s_cmessage, __pyx_k_cmessage, sizeof(__pyx_k_cmessage), 0, 0, 1, 1},
    {&__pyx_n_s_cname, __pyx_k_cname, sizeof(__pyx_k_cname), 0, 0, 1, 1},
    {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1},
    {&__pyx_n_s_color, __pyx_k_color, sizeof(__pyx_k_color), 0, 0, 1, 1},
    {&__pyx_n_s_combiner, __pyx_k_combiner, sizeof(__pyx_k_combiner), 0, 0, 1, 1},
    {&__pyx_n_s_comm, __pyx_k_comm, sizeof(__pyx_k_comm), 0, 0, 1, 1},
    {&__pyx_n_s_comm_lock, __pyx_k_comm_lock, sizeof(__pyx_k_comm_lock), 0, 0, 1, 1},
    {&__pyx_n_s_comm_lock_table, __pyx_k_comm_lock_table, sizeof(__pyx_k_comm_lock_table), 0, 0, 1, 1},
    {&__pyx_n_s_command, __pyx_k_command, sizeof(__pyx_k_command), 0, 0, 1, 1},
    {&__pyx_kp_s_commctx_inter, __pyx_k_commctx_inter, sizeof(__pyx_k_commctx_inter), 0, 0, 1, 0},
    {&__pyx_n_s_commctx_inter_2, __pyx_k_commctx_inter_2, sizeof(__pyx_k_commctx_inter_2), 0, 0, 1, 1},
    {&__pyx_kp_s_commctx_intra, __pyx_k_commctx_intra, sizeof(__pyx_k_commctx_intra), 0, 0, 1, 0},
    {&__pyx_n_s_commctx_intra_2, __pyx_k_commctx_intra_2, sizeof(__pyx_k_commctx_intra_2), 0, 0, 1, 1},
    {&__pyx_n_s_commute, __pyx_k_commute, sizeof(__pyx_k_commute), 0, 0, 1, 1},
    {&__pyx_n_s_compare, __pyx_k_compare, sizeof(__pyx_k_compare), 0, 0, 1, 1},
    {&__pyx_kp_u_compare_expecting_a_single_eleme, __pyx_k_compare_expecting_a_single_eleme, sizeof(__pyx_k_compare_expecting_a_single_eleme), 0, 1, 0, 0},
    {&__pyx_n_s_complete, __pyx_k_complete, sizeof(__pyx_k_complete), 0, 0, 1, 1},
    {&__pyx_n_s_coords, __pyx_k_coords, sizeof(__pyx_k_coords), 0, 0, 1, 1},
    {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
    {&__pyx_n_s_copy_2, __pyx_k_copy_2, sizeof(__pyx_k_copy_2), 0, 0, 1, 1},
    {&__pyx_n_s_copy_fn, __pyx_k_copy_fn, sizeof(__pyx_k_copy_fn), 0, 0, 1, 1},
    {&__pyx_n_s_copyreg, __pyx_k_copyreg, sizeof(__pyx_k_copyreg), 0, 0, 1, 1},
    {&__pyx_n_s_count, __pyx_k_count, sizeof(__pyx_k_count), 0, 0, 1, 1},
    {&__pyx_n_s_counts, __pyx_k_counts, sizeof(__pyx_k_counts), 0, 0, 1, 1},
    {&__pyx_n_s_cportname, __pyx_k_cportname, sizeof(__pyx_k_cportname), 0, 0, 1, 1},
    {&__pyx_n_s_csrvcname, __pyx_k_csrvcname, sizeof(__pyx_k_csrvcname), 0, 0, 1, 1},
    {&__pyx_n_s_cstring, __pyx_k_cstring, sizeof(__pyx_k_cstring), 0, 0, 1, 1},
    {&__pyx_n_s_cstringtag, __pyx_k_cstringtag, sizeof(__pyx_k_cstringtag), 0, 0, 1, 1},
    {&__pyx_n_s_cuda_array_interface, __pyx_k_cuda_array_interface, sizeof(__pyx_k_cuda_array_interface), 0, 0, 1, 1},
    {&__pyx_kp_u_cuda_array_interface___buffer, __pyx_k_cuda_array_interface___buffer, sizeof(__pyx_k_cuda_array_interface___buffer), 0, 1, 0, 0},
    {&__pyx_kp_u_cuda_array_interface___buffer_2, __pyx_k_cuda_array_interface___buffer_2, sizeof(__pyx_k_cuda_array_interface___buffer_2), 0, 1, 0, 0},
    {&__pyx_kp_s_cuda_array_interface___cannot, __pyx_k_cuda_array_interface___cannot, sizeof(__pyx_k_cuda_array_interface___cannot), 0, 0, 1, 0},
    {&__pyx_kp_u_cuda_array_interface___typestr, __pyx_k_cuda_array_interface___typestr, sizeof(__pyx_k_cuda_array_interface___typestr), 0, 1, 0, 0},
    {&__pyx_n_s_cvalue, __pyx_k_cvalue, sizeof(__pyx_k_cvalue), 0, 0, 1, 1},
    {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1},
    {&__pyx_n_s_dargs, __pyx_k_dargs, sizeof(__pyx_k_dargs), 0, 0, 1, 1},
    {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
    {&__pyx_n_s_datarep, __pyx_k_datarep, sizeof(__pyx_k_datarep), 0, 0, 1, 1},
    {&__pyx_n_s_datatype, __pyx_k_datatype, sizeof(__pyx_k_datatype), 0, 0, 1, 1},
    {&__pyx_n_s_datatype_create, __pyx_k_datatype_create, sizeof(__pyx_k_datatype_create), 0, 0, 1, 1},
    {&__pyx_n_s_datatype_decode, __pyx_k_datatype_decode, sizeof(__pyx_k_datatype_decode), 0, 0, 1, 1},
    {&__pyx_n_s_datatypes, __pyx_k_datatypes, sizeof(__pyx_k_datatypes), 0, 0, 1, 1},
    {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1},
    {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1},
    {&__pyx_n_s_degrees, __pyx_k_degrees, sizeof(__pyx_k_degrees), 0, 0, 1, 1},
    {&__pyx_n_s_del, __pyx_k_del, sizeof(__pyx_k_del), 0, 0, 1, 1},
    {&__pyx_n_s_delete_fn, __pyx_k_delete_fn, sizeof(__pyx_k_delete_fn), 0, 0, 1, 1},
    {&__pyx_n_s_descr, __pyx_k_descr, sizeof(__pyx_k_descr), 0, 0, 1, 1},
    {&__pyx_n_s_dest, __pyx_k_dest, sizeof(__pyx_k_dest), 0, 0, 1, 1},
    {&__pyx_n_s_destinations, __pyx_k_destinations, sizeof(__pyx_k_destinations), 0, 0, 1, 1},
    {&__pyx_n_s_destweights, __pyx_k_destweights, sizeof(__pyx_k_destweights), 0, 0, 1, 1},
    {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
    {&__pyx_kp_s_dict_Hashable_Lock, __pyx_k_dict_Hashable_Lock, sizeof(__pyx_k_dict_Hashable_Lock), 0, 0, 1, 0},
    {&__pyx_kp_s_dict_str_Any, __pyx_k_dict_str_Any, sizeof(__pyx_k_dict_str_Any), 0, 0, 1, 0},
    {&__pyx_kp_s_dict_str_Any_None, __pyx_k_dict_str_Any_None, sizeof(__pyx_k_dict_str_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_dict_str_int, __pyx_k_dict_str_int, sizeof(__pyx_k_dict_str_int), 0, 0, 1, 0},
    {&__pyx_n_s_dim, __pyx_k_dim, sizeof(__pyx_k_dim), 0, 0, 1, 1},
    {&__pyx_n_s_dims, __pyx_k_dims, sizeof(__pyx_k_dims), 0, 0, 1, 1},
    {&__pyx_n_s_direction, __pyx_k_direction, sizeof(__pyx_k_direction), 0, 0, 1, 1},
    {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
    {&__pyx_n_s_disp, __pyx_k_disp, sizeof(__pyx_k_disp), 0, 0, 1, 1},
    {&__pyx_n_s_disp_unit, __pyx_k_disp_unit, sizeof(__pyx_k_disp_unit), 0, 0, 1, 1},
    {&__pyx_n_s_displacements, __pyx_k_displacements, sizeof(__pyx_k_displacements), 0, 0, 1, 1},
    {&__pyx_n_s_distribs, __pyx_k_distribs, sizeof(__pyx_k_distribs), 0, 0, 1, 1},
    {&__pyx_n_s_dlpack, __pyx_k_dlpack, sizeof(__pyx_k_dlpack), 0, 0, 1, 1},
    {&__pyx_kp_s_dlpack_buffer_is_not_contiguous, __pyx_k_dlpack_buffer_is_not_contiguous, sizeof(__pyx_k_dlpack_buffer_is_not_contiguous), 0, 0, 1, 0},
    {&__pyx_n_s_dlpack_device, __pyx_k_dlpack_device, sizeof(__pyx_k_dlpack_device), 0, 0, 1, 1},
    {&__pyx_kp_s_dlpack_invalid_capsule_object, __pyx_k_dlpack_invalid_capsule_object, sizeof(__pyx_k_dlpack_invalid_capsule_object), 0, 0, 1, 0},
    {&__pyx_kp_s_dlpack_missing_support, __pyx_k_dlpack_missing_support, sizeof(__pyx_k_dlpack_missing_support), 0, 0, 1, 0},
    {&__pyx_kp_s_dlpack_number_of_dimensions_is_n, __pyx_k_dlpack_number_of_dimensions_is_n, sizeof(__pyx_k_dlpack_number_of_dimensions_is_n), 0, 0, 1, 0},
    {&__pyx_kp_s_dlpack_shape_is_NULL, __pyx_k_dlpack_shape_is_NULL, sizeof(__pyx_k_dlpack_shape_is_NULL), 0, 0, 1, 0},
    {&__pyx_kp_s_dlpack_shape_item_is_negative, __pyx_k_dlpack_shape_item_is_negative, sizeof(__pyx_k_dlpack_shape_item_is_negative), 0, 0, 1, 0},
    {&__pyx_kp_s_dlpack_strides_item_is_negative, __pyx_k_dlpack_strides_item_is_negative, sizeof(__pyx_k_dlpack_strides_item_is_negative), 0, 0, 1, 0},
    {&__pyx_kp_s_dlpack_unexpected_version, __pyx_k_dlpack_unexpected_version, sizeof(__pyx_k_dlpack_unexpected_version), 0, 0, 1, 0},
    {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
    {&__pyx_n_s_dst, __pyx_k_dst, sizeof(__pyx_k_dst), 0, 0, 1, 1},
    {&__pyx_n_s_dtype, __pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 0, 1, 1},
    {&__pyx_n_s_dummy_thread, __pyx_k_dummy_thread, sizeof(__pyx_k_dummy_thread), 0, 0, 1, 1},
    {&__pyx_n_s_dumps, __pyx_k_dumps, sizeof(__pyx_k_dumps), 0, 0, 1, 1},
    {&__pyx_n_s_dumps_oob, __pyx_k_dumps_oob, sizeof(__pyx_k_dumps_oob), 0, 0, 1, 1},
    {&__pyx_n_s_dupcomm, __pyx_k_dupcomm, sizeof(__pyx_k_dupcomm), 0, 0, 1, 1},
    {&__pyx_n_s_dw, __pyx_k_dw, sizeof(__pyx_k_dw), 0, 0, 1, 1},
    {&__pyx_n_s_edges, __pyx_k_edges, sizeof(__pyx_k_edges), 0, 0, 1, 1},
    {&__pyx_n_s_elements, __pyx_k_elements, sizeof(__pyx_k_elements), 0, 0, 1, 1},
    {&__pyx_kp_s_empty_weights_but_nonzero_degree, __pyx_k_empty_weights_but_nonzero_degree, sizeof(__pyx_k_empty_weights_but_nonzero_degree), 0, 0, 1, 0},
    {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
    {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
    {&__pyx_n_s_errcodes, __pyx_k_errcodes, sizeof(__pyx_k_errcodes), 0, 0, 1, 1},
    {&__pyx_n_s_errhandler, __pyx_k_errhandler, sizeof(__pyx_k_errhandler), 0, 0, 1, 1},
    {&__pyx_n_s_errhandler_fn, __pyx_k_errhandler_fn, sizeof(__pyx_k_errhandler_fn), 0, 0, 1, 1},
    {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
    {&__pyx_kp_u_error_code, __pyx_k_error_code, sizeof(__pyx_k_error_code), 0, 1, 0, 0},
    {&__pyx_n_s_errorclass, __pyx_k_errorclass, sizeof(__pyx_k_errorclass), 0, 0, 1, 1},
    {&__pyx_n_s_errorcode, __pyx_k_errorcode, sizeof(__pyx_k_errorcode), 0, 0, 1, 1},
    {&__pyx_n_s_etype, __pyx_k_etype, sizeof(__pyx_k_etype), 0, 0, 1, 1},
    {&__pyx_n_s_ex, __pyx_k_ex, sizeof(__pyx_k_ex), 0, 0, 1, 1},
    {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1},
    {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
    {&__pyx_kp_u_expecting, __pyx_k_expecting, sizeof(__pyx_k_expecting), 0, 1, 0, 0},
    {&__pyx_kp_s_expecting_a_Cartesian_communicat, __pyx_k_expecting_a_Cartesian_communicat, sizeof(__pyx_k_expecting_a_Cartesian_communicat), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_a_distributed_graph_co, __pyx_k_expecting_a_distributed_graph_co, sizeof(__pyx_k_expecting_a_distributed_graph_co), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_a_general_graph_commun, __pyx_k_expecting_a_general_graph_commun, sizeof(__pyx_k_expecting_a_general_graph_commun), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_a_sequence_of_strings, __pyx_k_expecting_a_sequence_of_strings, sizeof(__pyx_k_expecting_a_sequence_of_strings), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_a_topology_communicato, __pyx_k_expecting_a_topology_communicato, sizeof(__pyx_k_expecting_a_topology_communicato), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_an_MPI_instance, __pyx_k_expecting_an_MPI_instance, sizeof(__pyx_k_expecting_an_MPI_instance), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_an_MPI_type_or_instanc, __pyx_k_expecting_an_MPI_type_or_instanc, sizeof(__pyx_k_expecting_an_MPI_type_or_instanc), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_an_intercommunicator, __pyx_k_expecting_an_intercommunicator, sizeof(__pyx_k_expecting_an_intercommunicator), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_an_intracommunicator, __pyx_k_expecting_an_intracommunicator, sizeof(__pyx_k_expecting_an_intracommunicator), 0, 0, 1, 0},
    {&__pyx_kp_u_expecting_buffer_with_format, __pyx_k_expecting_buffer_with_format, sizeof(__pyx_k_expecting_buffer_with_format), 0, 1, 0, 0},
    {&__pyx_kp_s_expecting_non_NULL_address, __pyx_k_expecting_non_NULL_address, sizeof(__pyx_k_expecting_non_NULL_address), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_non_negative_buffer_le, __pyx_k_expecting_non_negative_buffer_le, sizeof(__pyx_k_expecting_non_negative_buffer_le), 0, 0, 1, 0},
    {&__pyx_kp_s_expecting_non_negative_size, __pyx_k_expecting_non_negative_size, sizeof(__pyx_k_expecting_non_negative_size), 0, 0, 1, 0},
    {&__pyx_n_s_exscan, __pyx_k_exscan, sizeof(__pyx_k_exscan), 0, 0, 1, 1},
    {&__pyx_n_s_extent, __pyx_k_extent, sizeof(__pyx_k_extent), 0, 0, 1, 1},
    {&__pyx_n_s_extent_fn, __pyx_k_extent_fn, sizeof(__pyx_k_extent_fn), 0, 0, 1, 1},
    {&__pyx_n_s_f2py, __pyx_k_f2py, sizeof(__pyx_k_f2py), 0, 0, 1, 1},
    {&__pyx_n_s_f_status, __pyx_k_f_status, sizeof(__pyx_k_f_status), 0, 0, 1, 1},
    {&__pyx_n_s_fatal, __pyx_k_fatal, sizeof(__pyx_k_fatal), 0, 0, 1, 1},
    {&__pyx_n_s_fd, __pyx_k_fd, sizeof(__pyx_k_fd), 0, 0, 1, 1},
    {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 0, 0, 1, 1},
    {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1},
    {&__pyx_n_s_filetype, __pyx_k_filetype, sizeof(__pyx_k_filetype), 0, 0, 1, 1},
    {&__pyx_n_s_flag, __pyx_k_flag, sizeof(__pyx_k_flag), 0, 0, 1, 1},
    {&__pyx_kp_s_flag_expecting_int_buffer_of_len, __pyx_k_flag_expecting_int_buffer_of_len, sizeof(__pyx_k_flag_expecting_int_buffer_of_len), 0, 0, 1, 0},
    {&__pyx_n_s_flag_len, __pyx_k_flag_len, sizeof(__pyx_k_flag_len), 0, 0, 1, 1},
    {&__pyx_n_s_flag_ptr, __pyx_k_flag_ptr, sizeof(__pyx_k_flag_ptr), 0, 0, 1, 1},
    {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
    {&__pyx_n_s_float, __pyx_k_float, sizeof(__pyx_k_float), 0, 0, 1, 1},
    {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1},
    {&__pyx_n_s_fn_c, __pyx_k_fn_c, sizeof(__pyx_k_fn_c), 0, 0, 1, 1},
    {&__pyx_n_s_fn_i, __pyx_k_fn_i, sizeof(__pyx_k_fn_i), 0, 0, 1, 1},
    {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
    {&__pyx_kp_u_format_string, __pyx_k_format_string, sizeof(__pyx_k_format_string), 0, 1, 0, 0},
    {&__pyx_n_s_free, __pyx_k_free, sizeof(__pyx_k_free), 0, 0, 1, 1},
    {&__pyx_n_s_free_fn, __pyx_k_free_fn, sizeof(__pyx_k_free_fn), 0, 0, 1, 1},
    {&__pyx_n_s_fromaddress, __pyx_k_fromaddress, sizeof(__pyx_k_fromaddress), 0, 0, 1, 1},
    {&__pyx_n_s_frombuffer, __pyx_k_frombuffer, sizeof(__pyx_k_frombuffer), 0, 0, 1, 1},
    {&__pyx_n_s_fromcode, __pyx_k_fromcode, sizeof(__pyx_k_fromcode), 0, 0, 1, 1},
    {&__pyx_n_s_fromhandle, __pyx_k_fromhandle, sizeof(__pyx_k_fromhandle), 0, 0, 1, 1},
    {&__pyx_n_s_ftype, __pyx_k_ftype, sizeof(__pyx_k_ftype), 0, 0, 1, 1},
    {&__pyx_n_s_function, __pyx_k_function, sizeof(__pyx_k_function), 0, 0, 1, 1},
    {&__pyx_n_s_funneled, __pyx_k_funneled, sizeof(__pyx_k_funneled), 0, 0, 1, 1},
    {&__pyx_n_s_gather, __pyx_k_gather, sizeof(__pyx_k_gather), 0, 0, 1, 1},
    {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
    {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
    {&__pyx_n_s_get_buffer_callback_locals_buffe, __pyx_k_get_buffer_callback_locals_buffe, sizeof(__pyx_k_get_buffer_callback_locals_buffe), 0, 0, 1, 1},
    {&__pyx_n_s_get_status, __pyx_k_get_status, sizeof(__pyx_k_get_status), 0, 0, 1, 1},
    {&__pyx_n_s_get_status_all, __pyx_k_get_status_all, sizeof(__pyx_k_get_status_all), 0, 0, 1, 1},
    {&__pyx_n_s_get_status_any, __pyx_k_get_status_any, sizeof(__pyx_k_get_status_any), 0, 0, 1, 1},
    {&__pyx_n_s_get_status_some, __pyx_k_get_status_some, sizeof(__pyx_k_get_status_some), 0, 0, 1, 1},
    {&__pyx_n_s_get_vendor, __pyx_k_get_vendor, sizeof(__pyx_k_get_vendor), 0, 0, 1, 1},
    {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
    {&__pyx_kp_u_got, __pyx_k_got, sizeof(__pyx_k_got), 0, 1, 0, 0},
    {&__pyx_n_s_grequest, __pyx_k_grequest, sizeof(__pyx_k_grequest), 0, 0, 1, 1},
    {&__pyx_n_s_group, __pyx_k_group, sizeof(__pyx_k_group), 0, 0, 1, 1},
    {&__pyx_n_s_group1, __pyx_k_group1, sizeof(__pyx_k_group1), 0, 0, 1, 1},
    {&__pyx_n_s_group2, __pyx_k_group2, sizeof(__pyx_k_group2), 0, 0, 1, 1},
    {&__pyx_n_s_gsizes, __pyx_k_gsizes, sizeof(__pyx_k_gsizes), 0, 0, 1, 1},
    {&__pyx_n_s_handle, __pyx_k_handle, sizeof(__pyx_k_handle), 0, 0, 1, 1},
    {&__pyx_n_s_handleof, __pyx_k_handleof, sizeof(__pyx_k_handleof), 0, 0, 1, 1},
    {&__pyx_n_s_high, __pyx_k_high, sizeof(__pyx_k_high), 0, 0, 1, 1},
    {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
    {&__pyx_n_s_iblen, __pyx_k_iblen, sizeof(__pyx_k_iblen), 0, 0, 1, 1},
    {&__pyx_n_s_ibptr, __pyx_k_ibptr, sizeof(__pyx_k_ibptr), 0, 0, 1, 1},
    {&__pyx_n_s_ibsend, __pyx_k_ibsend, sizeof(__pyx_k_ibsend), 0, 0, 1, 1},
    {&__pyx_n_s_icoords, __pyx_k_icoords, sizeof(__pyx_k_icoords), 0, 0, 1, 1},
    {&__pyx_n_s_icount, __pyx_k_icount, sizeof(__pyx_k_icount), 0, 0, 1, 1},
    {&__pyx_n_s_idargs, __pyx_k_idargs, sizeof(__pyx_k_idargs), 0, 0, 1, 1},
    {&__pyx_n_s_idegree, __pyx_k_idegree, sizeof(__pyx_k_idegree), 0, 0, 1, 1},
    {&__pyx_n_s_idest, __pyx_k_idest, sizeof(__pyx_k_idest), 0, 0, 1, 1},
    {&__pyx_n_s_idestweight, __pyx_k_idestweight, sizeof(__pyx_k_idestweight), 0, 0, 1, 1},
    {&__pyx_n_s_idims, __pyx_k_idims, sizeof(__pyx_k_idims), 0, 0, 1, 1},
    {&__pyx_n_s_idisp, __pyx_k_idisp, sizeof(__pyx_k_idisp), 0, 0, 1, 1},
    {&__pyx_n_s_idistribs, __pyx_k_idistribs, sizeof(__pyx_k_idistribs), 0, 0, 1, 1},
    {&__pyx_n_s_iedges, __pyx_k_iedges, sizeof(__pyx_k_iedges), 0, 0, 1, 1},
    {&__pyx_n_s_ierr, __pyx_k_ierr, sizeof(__pyx_k_ierr), 0, 0, 1, 1},
    {&__pyx_n_s_ierrcodes, __pyx_k_ierrcodes, sizeof(__pyx_k_ierrcodes), 0, 0, 1, 1},
    {&__pyx_n_s_igsizes, __pyx_k_igsizes, sizeof(__pyx_k_igsizes), 0, 0, 1, 1},
    {&__pyx_n_s_iindex, __pyx_k_iindex, sizeof(__pyx_k_iindex), 0, 0, 1, 1},
    {&__pyx_n_s_imaxprocs, __pyx_k_imaxprocs, sizeof(__pyx_k_imaxprocs), 0, 0, 1, 1},
    {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
    {&__pyx_n_s_improbe, __pyx_k_improbe, sizeof(__pyx_k_improbe), 0, 0, 1, 1},
    {&__pyx_n_s_inbuf, __pyx_k_inbuf, sizeof(__pyx_k_inbuf), 0, 0, 1, 1},
    {&__pyx_n_s_indegree, __pyx_k_indegree, sizeof(__pyx_k_indegree), 0, 0, 1, 1},
    {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1},
    {&__pyx_kp_s_index_must_be_integer_or_slice, __pyx_k_index_must_be_integer_or_slice, sizeof(__pyx_k_index_must_be_integer_or_slice), 0, 0, 1, 0},
    {&__pyx_kp_s_index_out_of_range, __pyx_k_index_out_of_range, sizeof(__pyx_k_index_out_of_range), 0, 0, 1, 0},
    {&__pyx_n_s_indices, __pyx_k_indices, sizeof(__pyx_k_indices), 0, 0, 1, 1},
    {&__pyx_n_s_ineighbors, __pyx_k_ineighbors, sizeof(__pyx_k_ineighbors), 0, 0, 1, 1},
    {&__pyx_n_s_info, __pyx_k_info, sizeof(__pyx_k_info), 0, 0, 1, 1},
    {&__pyx_n_s_infos, __pyx_k_infos, sizeof(__pyx_k_infos), 0, 0, 1, 1},
    {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
    {&__pyx_n_s_inoutbuf, __pyx_k_inoutbuf, sizeof(__pyx_k_inoutbuf), 0, 0, 1, 1},
    {&__pyx_n_s_inoutedges, __pyx_k_inoutedges, sizeof(__pyx_k_inoutedges), 0, 0, 1, 1},
    {&__pyx_n_s_insert, __pyx_k_insert, sizeof(__pyx_k_insert), 0, 0, 1, 1},
    {&__pyx_kp_u_instance, __pyx_k_instance, sizeof(__pyx_k_instance), 0, 1, 0, 0},
    {&__pyx_n_s_int, __pyx_k_int, sizeof(__pyx_k_int), 0, 0, 1, 1},
    {&__pyx_kp_s_int_Any_None, __pyx_k_int_Any_None, sizeof(__pyx_k_int_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_int_None, __pyx_k_int_None, sizeof(__pyx_k_int_None), 0, 0, 1, 0},
    {&__pyx_kp_s_int_Sequence_int, __pyx_k_int_Sequence_int, sizeof(__pyx_k_int_Sequence_int), 0, 0, 1, 0},
    {&__pyx_n_s_integers, __pyx_k_integers, sizeof(__pyx_k_integers), 0, 0, 1, 1},
    {&__pyx_n_s_iperiods, __pyx_k_iperiods, sizeof(__pyx_k_iperiods), 0, 0, 1, 1},
    {&__pyx_n_s_iprobe, __pyx_k_iprobe, sizeof(__pyx_k_iprobe), 0, 0, 1, 1},
    {&__pyx_n_s_ipsizes, __pyx_k_ipsizes, sizeof(__pyx_k_ipsizes), 0, 0, 1, 1},
    {&__pyx_n_s_iranks, __pyx_k_iranks, sizeof(__pyx_k_iranks), 0, 0, 1, 1},
    {&__pyx_n_s_iranks1, __pyx_k_iranks1, sizeof(__pyx_k_iranks1), 0, 0, 1, 1},
    {&__pyx_n_s_iranks2, __pyx_k_iranks2, sizeof(__pyx_k_iranks2), 0, 0, 1, 1},
    {&__pyx_n_s_irecv, __pyx_k_irecv, sizeof(__pyx_k_irecv), 0, 0, 1, 1},
    {&__pyx_n_s_iremdims, __pyx_k_iremdims, sizeof(__pyx_k_iremdims), 0, 0, 1, 1},
    {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
    {&__pyx_kp_u_is_not_a_multiple_of_datatype_e, __pyx_k_is_not_a_multiple_of_datatype_e, sizeof(__pyx_k_is_not_a_multiple_of_datatype_e), 0, 1, 0, 0},
    {&__pyx_kp_u_is_not_a_multiple_of_required_n, __pyx_k_is_not_a_multiple_of_required_n, sizeof(__pyx_k_is_not_a_multiple_of_required_n), 0, 1, 0, 0},
    {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
    {&__pyx_n_s_isend, __pyx_k_isend, sizeof(__pyx_k_isend), 0, 0, 1, 1},
    {&__pyx_n_s_isizes, __pyx_k_isizes, sizeof(__pyx_k_isizes), 0, 0, 1, 1},
    {&__pyx_n_s_isource, __pyx_k_isource, sizeof(__pyx_k_isource), 0, 0, 1, 1},
    {&__pyx_n_s_isourceweight, __pyx_k_isourceweight, sizeof(__pyx_k_isourceweight), 0, 0, 1, 1},
    {&__pyx_n_s_issend, __pyx_k_issend, sizeof(__pyx_k_issend), 0, 0, 1, 1},
    {&__pyx_n_s_istarts, __pyx_k_istarts, sizeof(__pyx_k_istarts), 0, 0, 1, 1},
    {&__pyx_n_s_isubsizes, __pyx_k_isubsizes, sizeof(__pyx_k_isubsizes), 0, 0, 1, 1},
    {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
    {&__pyx_kp_u_items_got, __pyx_k_items_got, sizeof(__pyx_k_items_got), 0, 1, 0, 0},
    {&__pyx_kp_u_itemsize, __pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 1, 0, 0},
    {&__pyx_n_s_iweight, __pyx_k_iweight, sizeof(__pyx_k_iweight), 0, 0, 1, 1},
    {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1},
    {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1},
    {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
    {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
    {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1},
    {&__pyx_n_s_keyval, __pyx_k_keyval, sizeof(__pyx_k_keyval), 0, 0, 1, 1},
    {&__pyx_n_s_keyval_registry, __pyx_k_keyval_registry, sizeof(__pyx_k_keyval_registry), 0, 0, 1, 1},
    {&__pyx_n_s_keyval_save, __pyx_k_keyval_save, sizeof(__pyx_k_keyval_save), 0, 0, 1, 1},
    {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1},
    {&__pyx_n_s_kwds, __pyx_k_kwds, sizeof(__pyx_k_kwds), 0, 0, 1, 1},
    {&__pyx_kp_u_lb, __pyx_k_lb, sizeof(__pyx_k_lb), 0, 1, 0, 0},
    {&__pyx_n_s_lb_2, __pyx_k_lb_2, sizeof(__pyx_k_lb_2), 0, 0, 1, 1},
    {&__pyx_n_s_length, __pyx_k_length, sizeof(__pyx_k_length), 0, 0, 1, 1},
    {&__pyx_kp_s_length_count_does_not_fit_in_MPI, __pyx_k_length_count_does_not_fit_in_MPI, sizeof(__pyx_k_length_count_does_not_fit_in_MPI), 0, 0, 1, 0},
    {&__pyx_kp_s_length_size_larger_than_INT_MAX, __pyx_k_length_size_larger_than_INT_MAX, sizeof(__pyx_k_length_size_larger_than_INT_MAX), 0, 0, 1, 0},
    {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1},
    {&__pyx_kp_s_list_Any, __pyx_k_list_Any, sizeof(__pyx_k_list_Any), 0, 0, 1, 0},
    {&__pyx_kp_s_list_Any_None, __pyx_k_list_Any_None, sizeof(__pyx_k_list_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_list_Prequest, __pyx_k_list_Prequest, sizeof(__pyx_k_list_Prequest), 0, 0, 1, 0},
    {&__pyx_kp_s_list_Status_None, __pyx_k_list_Status_None, sizeof(__pyx_k_list_Status_None), 0, 0, 1, 0},
    {&__pyx_kp_s_list_int, __pyx_k_list_int, sizeof(__pyx_k_list_int), 0, 0, 1, 0},
    {&__pyx_kp_s_list_int_None, __pyx_k_list_int_None, sizeof(__pyx_k_list_int_None), 0, 0, 1, 0},
    {&__pyx_kp_s_list_int_tuple_int, __pyx_k_list_int_tuple_int, sizeof(__pyx_k_list_int_tuple_int), 0, 0, 1, 0},
    {&__pyx_kp_s_list_list_int_None, __pyx_k_list_list_int_None, sizeof(__pyx_k_list_list_int_None), 0, 0, 1, 0},
    {&__pyx_kp_s_list_str, __pyx_k_list_str, sizeof(__pyx_k_list_str), 0, 0, 1, 0},
    {&__pyx_kp_s_list_tuple_str_str, __pyx_k_list_tuple_str_str, sizeof(__pyx_k_list_tuple_str_str), 0, 0, 1, 0},
    {&__pyx_n_s_loads, __pyx_k_loads, sizeof(__pyx_k_loads), 0, 0, 1, 1},
    {&__pyx_n_s_loads_oob, __pyx_k_loads_oob, sizeof(__pyx_k_loads_oob), 0, 0, 1, 1},
    {&__pyx_n_s_local_group, __pyx_k_local_group, sizeof(__pyx_k_local_group), 0, 0, 1, 1},
    {&__pyx_n_s_local_leader, __pyx_k_local_leader, sizeof(__pyx_k_local_leader), 0, 0, 1, 1},
    {&__pyx_n_s_localcomm, __pyx_k_localcomm, sizeof(__pyx_k_localcomm), 0, 0, 1, 1},
    {&__pyx_n_s_location, __pyx_k_location, sizeof(__pyx_k_location), 0, 0, 1, 1},
    {&__pyx_n_s_lock_type, __pyx_k_lock_type, sizeof(__pyx_k_lock_type), 0, 0, 1, 1},
    {&__pyx_n_s_low_group, __pyx_k_low_group, sizeof(__pyx_k_low_group), 0, 0, 1, 1},
    {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
    {&__pyx_n_s_m, __pyx_k_m, sizeof(__pyx_k_m), 0, 0, 1, 1},
    {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
    {&__pyx_n_s_major, __pyx_k_major, sizeof(__pyx_k_major), 0, 0, 1, 1},
    {&__pyx_n_s_mark, __pyx_k_mark, sizeof(__pyx_k_mark), 0, 0, 1, 1},
    {&__pyx_n_s_mask, __pyx_k_mask, sizeof(__pyx_k_mask), 0, 0, 1, 1},
    {&__pyx_n_s_max_version, __pyx_k_max_version, sizeof(__pyx_k_max_version), 0, 0, 1, 1},
    {&__pyx_n_s_maxindegree, __pyx_k_maxindegree, sizeof(__pyx_k_maxindegree), 0, 0, 1, 1},
    {&__pyx_n_s_maxoutdegree, __pyx_k_maxoutdegree, sizeof(__pyx_k_maxoutdegree), 0, 0, 1, 1},
    {&__pyx_n_s_maxprocs, __pyx_k_maxprocs, sizeof(__pyx_k_maxprocs), 0, 0, 1, 1},
    {&__pyx_n_s_mem, __pyx_k_mem, sizeof(__pyx_k_mem), 0, 0, 1, 1},
    {&__pyx_n_s_memory, __pyx_k_memory, sizeof(__pyx_k_memory), 0, 0, 1, 1},
    {&__pyx_kp_s_memory_allocation_size_too_large, __pyx_k_memory_allocation_size_too_large, sizeof(__pyx_k_memory_allocation_size_too_large), 0, 0, 1, 0},
    {&__pyx_kp_s_memory_allocation_with_negative, __pyx_k_memory_allocation_with_negative, sizeof(__pyx_k_memory_allocation_with_negative), 0, 0, 1, 0},
    {&__pyx_n_s_memoryview, __pyx_k_memoryview, sizeof(__pyx_k_memoryview), 0, 0, 1, 1},
    {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1},
    {&__pyx_kp_s_message_BOTTOM_requires_counts, __pyx_k_message_BOTTOM_requires_counts, sizeof(__pyx_k_message_BOTTOM_requires_counts), 0, 0, 1, 0},
    {&__pyx_kp_s_message_BOTTOM_requires_displs, __pyx_k_message_BOTTOM_requires_displs, sizeof(__pyx_k_message_BOTTOM_requires_displs), 0, 0, 1, 0},
    {&__pyx_kp_u_message_buffer_is_None_but_count, __pyx_k_message_buffer_is_None_but_count, sizeof(__pyx_k_message_buffer_is_None_but_count), 0, 1, 0, 0},
    {&__pyx_kp_u_message_cannot_handle_displaceme, __pyx_k_message_cannot_handle_displaceme, sizeof(__pyx_k_message_cannot_handle_displaceme), 0, 1, 0, 0},
    {&__pyx_kp_u_message_cannot_handle_displaceme_2, __pyx_k_message_cannot_handle_displaceme_2, sizeof(__pyx_k_message_cannot_handle_displaceme_2), 0, 1, 0, 0},
    {&__pyx_kp_u_message_cannot_infer_count_buffe, __pyx_k_message_cannot_infer_count_buffe, sizeof(__pyx_k_message_cannot_infer_count_buffe), 0, 1, 0, 0},
    {&__pyx_kp_u_message_cannot_infer_count_datat, __pyx_k_message_cannot_infer_count_datat, sizeof(__pyx_k_message_cannot_infer_count_datat), 0, 1, 0, 0},
    {&__pyx_kp_u_message_cannot_infer_count_datat_2, __pyx_k_message_cannot_infer_count_datat_2, sizeof(__pyx_k_message_cannot_infer_count_datat_2), 0, 1, 0, 0},
    {&__pyx_kp_u_message_cannot_infer_count_numbe, __pyx_k_message_cannot_infer_count_numbe, sizeof(__pyx_k_message_cannot_infer_count_numbe), 0, 1, 0, 0},
    {&__pyx_kp_u_message_displacement, __pyx_k_message_displacement, sizeof(__pyx_k_message_displacement), 0, 1, 0, 0},
    {&__pyx_kp_s_message_expecting_2_to_4_items, __pyx_k_message_expecting_2_to_4_items, sizeof(__pyx_k_message_expecting_2_to_4_items), 0, 0, 1, 0},
    {&__pyx_kp_s_message_expecting_buffer_or_list, __pyx_k_message_expecting_buffer_or_list, sizeof(__pyx_k_message_expecting_buffer_or_list), 0, 0, 1, 0},
    {&__pyx_kp_u_message_negative_count, __pyx_k_message_negative_count, sizeof(__pyx_k_message_negative_count), 0, 1, 0, 0},
    {&__pyx_kp_u_message_negative_displacement, __pyx_k_message_negative_displacement, sizeof(__pyx_k_message_negative_displacement), 0, 1, 0, 0},
    {&__pyx_n_s_micro, __pyx_k_micro, sizeof(__pyx_k_micro), 0, 0, 1, 1},
    {&__pyx_n_s_minor, __pyx_k_minor, sizeof(__pyx_k_minor), 0, 0, 1, 1},
    {&__pyx_kp_u_mismatch_in_origin_and_compare_M, __pyx_k_mismatch_in_origin_and_compare_M, sizeof(__pyx_k_mismatch_in_origin_and_compare_M), 0, 1, 0, 0},
    {&__pyx_kp_u_mismatch_in_origin_and_result_MP, __pyx_k_mismatch_in_origin_and_result_MP, sizeof(__pyx_k_mismatch_in_origin_and_result_MP), 0, 1, 0, 0},
    {&__pyx_kp_u_mismatch_in_receive_count, __pyx_k_mismatch_in_receive_count, sizeof(__pyx_k_mismatch_in_receive_count), 0, 1, 0, 0},
    {&__pyx_kp_u_mismatch_in_send_and_receive_MPI, __pyx_k_mismatch_in_send_and_receive_MPI, sizeof(__pyx_k_mismatch_in_send_and_receive_MPI), 0, 1, 0, 0},
    {&__pyx_kp_u_mismatch_in_send_count, __pyx_k_mismatch_in_send_count, sizeof(__pyx_k_mismatch_in_send_count), 0, 1, 0, 0},
    {&__pyx_kp_s_missing_CUDA_array_interface, __pyx_k_missing_CUDA_array_interface, sizeof(__pyx_k_missing_CUDA_array_interface), 0, 0, 1, 0},
    {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
    {&__pyx_n_s_mpi4py_MPI, __pyx_k_mpi4py_MPI, sizeof(__pyx_k_mpi4py_MPI), 0, 0, 1, 1},
    {&__pyx_n_s_mprobe, __pyx_k_mprobe, sizeof(__pyx_k_mprobe), 0, 0, 1, 1},
    {&__pyx_n_s_msg, __pyx_k_msg, sizeof(__pyx_k_msg), 0, 0, 1, 1},
    {&__pyx_n_s_multiple, __pyx_k_multiple, sizeof(__pyx_k_multiple), 0, 0, 1, 1},
    {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
    {&__pyx_n_s_na, __pyx_k_na, sizeof(__pyx_k_na), 0, 0, 1, 1},
    {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
    {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
    {&__pyx_n_s_native, __pyx_k_native, sizeof(__pyx_k_native), 0, 0, 1, 1},
    {&__pyx_n_s_nbytes, __pyx_k_nbytes, sizeof(__pyx_k_nbytes), 0, 0, 1, 1},
    {&__pyx_n_s_nc, __pyx_k_nc, sizeof(__pyx_k_nc), 0, 0, 1, 1},
    {&__pyx_n_s_nd, __pyx_k_nd, sizeof(__pyx_k_nd), 0, 0, 1, 1},
    {&__pyx_n_s_ndim, __pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 0, 1, 1},
    {&__pyx_n_s_ndims, __pyx_k_ndims, sizeof(__pyx_k_ndims), 0, 0, 1, 1},
    {&__pyx_n_s_ne, __pyx_k_ne, sizeof(__pyx_k_ne), 0, 0, 1, 1},
    {&__pyx_n_s_nedges, __pyx_k_nedges, sizeof(__pyx_k_nedges), 0, 0, 1, 1},
    {&__pyx_n_s_neighbor_allgather, __pyx_k_neighbor_allgather, sizeof(__pyx_k_neighbor_allgather), 0, 0, 1, 1},
    {&__pyx_n_s_neighbor_alltoall, __pyx_k_neighbor_alltoall, sizeof(__pyx_k_neighbor_alltoall), 0, 0, 1, 1},
    {&__pyx_n_s_neighbors, __pyx_k_neighbors, sizeof(__pyx_k_neighbors), 0, 0, 1, 1},
    {&__pyx_n_s_newobj, __pyx_k_newobj, sizeof(__pyx_k_newobj), 0, 0, 1, 1},
    {&__pyx_n_s_ni, __pyx_k_ni, sizeof(__pyx_k_ni), 0, 0, 1, 1},
    {&__pyx_n_s_nindex, __pyx_k_nindex, sizeof(__pyx_k_nindex), 0, 0, 1, 1},
    {&__pyx_n_s_nkeys, __pyx_k_nkeys, sizeof(__pyx_k_nkeys), 0, 0, 1, 1},
    {&__pyx_n_s_nlen, __pyx_k_nlen, sizeof(__pyx_k_nlen), 0, 0, 1, 1},
    {&__pyx_n_s_nneighbors, __pyx_k_nneighbors, sizeof(__pyx_k_nneighbors), 0, 0, 1, 1},
    {&__pyx_n_s_nnodes, __pyx_k_nnodes, sizeof(__pyx_k_nnodes), 0, 0, 1, 1},
    {&__pyx_n_s_no, __pyx_k_no, sizeof(__pyx_k_no), 0, 0, 1, 1},
    {&__pyx_n_s_nopython, __pyx_k_nopython, sizeof(__pyx_k_nopython), 0, 0, 1, 1},
    {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
    {&__pyx_n_s_num_acked, __pyx_k_num_acked, sizeof(__pyx_k_num_acked), 0, 0, 1, 1},
    {&__pyx_n_s_num_psets, __pyx_k_num_psets, sizeof(__pyx_k_num_psets), 0, 0, 1, 1},
    {&__pyx_n_s_num_to_ack, __pyx_k_num_to_ack, sizeof(__pyx_k_num_to_ack), 0, 0, 1, 1},
    {&__pyx_n_s_nv, __pyx_k_nv, sizeof(__pyx_k_nv), 0, 0, 1, 1},
    {&__pyx_n_s_ob, __pyx_k_ob, sizeof(__pyx_k_ob), 0, 0, 1, 1},
    {&__pyx_n_s_obj, __pyx_k_obj, sizeof(__pyx_k_obj), 0, 0, 1, 1},
    {&__pyx_n_s_oblen, __pyx_k_oblen, sizeof(__pyx_k_oblen), 0, 0, 1, 1},
    {&__pyx_n_s_obptr, __pyx_k_obptr, sizeof(__pyx_k_obptr), 0, 0, 1, 1},
    {&__pyx_n_s_ocount, __pyx_k_ocount, sizeof(__pyx_k_ocount), 0, 0, 1, 1},
    {&__pyx_n_s_offset, __pyx_k_offset, sizeof(__pyx_k_offset), 0, 0, 1, 1},
    {&__pyx_n_s_op, __pyx_k_op, sizeof(__pyx_k_op), 0, 0, 1, 1},
    {&__pyx_n_s_order, __pyx_k_order, sizeof(__pyx_k_order), 0, 0, 1, 1},
    {&__pyx_kp_s_org_mpi4py, __pyx_k_org_mpi4py, sizeof(__pyx_k_org_mpi4py), 0, 0, 1, 0},
    {&__pyx_n_s_origin, __pyx_k_origin, sizeof(__pyx_k_origin), 0, 0, 1, 1},
    {&__pyx_kp_u_origin_expecting_a_single_elemen, __pyx_k_origin_expecting_a_single_elemen, sizeof(__pyx_k_origin_expecting_a_single_elemen), 0, 1, 0, 0},
    {&__pyx_kp_u_out_of_bounds_number_of_datatyp, __pyx_k_out_of_bounds_number_of_datatyp, sizeof(__pyx_k_out_of_bounds_number_of_datatyp), 0, 1, 0, 0},
    {&__pyx_n_s_outbuf, __pyx_k_outbuf, sizeof(__pyx_k_outbuf), 0, 0, 1, 1},
    {&__pyx_n_s_outdegree, __pyx_k_outdegree, sizeof(__pyx_k_outdegree), 0, 0, 1, 1},
    {&__pyx_n_s_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1},
    {&__pyx_n_s_params, __pyx_k_params, sizeof(__pyx_k_params), 0, 0, 1, 1},
    {&__pyx_n_s_partition, __pyx_k_partition, sizeof(__pyx_k_partition), 0, 0, 1, 1},
    {&__pyx_n_s_partition_high, __pyx_k_partition_high, sizeof(__pyx_k_partition_high), 0, 0, 1, 1},
    {&__pyx_n_s_partition_low, __pyx_k_partition_low, sizeof(__pyx_k_partition_low), 0, 0, 1, 1},
    {&__pyx_n_s_partitions, __pyx_k_partitions, sizeof(__pyx_k_partitions), 0, 0, 1, 1},
    {&__pyx_n_s_peer_comm, __pyx_k_peer_comm, sizeof(__pyx_k_peer_comm), 0, 0, 1, 1},
    {&__pyx_n_s_periods, __pyx_k_periods, sizeof(__pyx_k_periods), 0, 0, 1, 1},
    {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
    {&__pyx_n_s_pickle5, __pyx_k_pickle5, sizeof(__pyx_k_pickle5), 0, 0, 1, 1},
    {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
    {&__pyx_n_s_popitem, __pyx_k_popitem, sizeof(__pyx_k_popitem), 0, 0, 1, 1},
    {&__pyx_n_s_port_name, __pyx_k_port_name, sizeof(__pyx_k_port_name), 0, 0, 1, 1},
    {&__pyx_n_s_position, __pyx_k_position, sizeof(__pyx_k_position), 0, 0, 1, 1},
    {&__pyx_n_s_probe, __pyx_k_probe, sizeof(__pyx_k_probe), 0, 0, 1, 1},
    {&__pyx_n_s_protocol, __pyx_k_protocol, sizeof(__pyx_k_protocol), 0, 0, 1, 1},
    {&__pyx_n_s_provided, __pyx_k_provided, sizeof(__pyx_k_provided), 0, 0, 1, 1},
    {&__pyx_n_s_pset_name, __pyx_k_pset_name, sizeof(__pyx_k_pset_name), 0, 0, 1, 1},
    {&__pyx_n_s_psizes, __pyx_k_psizes, sizeof(__pyx_k_psizes), 0, 0, 1, 1},
    {&__pyx_n_s_ptr, __pyx_k_ptr, sizeof(__pyx_k_ptr), 0, 0, 1, 1},
    {&__pyx_n_s_ptype, __pyx_k_ptype, sizeof(__pyx_k_ptype), 0, 0, 1, 1},
    {&__pyx_n_s_py2f, __pyx_k_py2f, sizeof(__pyx_k_py2f), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
    {&__pyx_n_s_q, __pyx_k_q, sizeof(__pyx_k_q), 0, 0, 1, 1},
    {&__pyx_n_s_query_fn, __pyx_k_query_fn, sizeof(__pyx_k_query_fn), 0, 0, 1, 1},
    {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1},
    {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
    {&__pyx_n_s_ranges, __pyx_k_ranges, sizeof(__pyx_k_ranges), 0, 0, 1, 1},
    {&__pyx_n_s_rank, __pyx_k_rank, sizeof(__pyx_k_rank), 0, 0, 1, 1},
    {&__pyx_n_s_ranks, __pyx_k_ranks, sizeof(__pyx_k_ranks), 0, 0, 1, 1},
    {&__pyx_n_s_ranks2, __pyx_k_ranks2, sizeof(__pyx_k_ranks2), 0, 0, 1, 1},
    {&__pyx_n_s_rc, __pyx_k_rc, sizeof(__pyx_k_rc), 0, 0, 1, 1},
    {&__pyx_n_s_rd, __pyx_k_rd, sizeof(__pyx_k_rd), 0, 0, 1, 1},
    {&__pyx_n_s_read_fn, __pyx_k_read_fn, sizeof(__pyx_k_read_fn), 0, 0, 1, 1},
    {&__pyx_n_s_readonly, __pyx_k_readonly, sizeof(__pyx_k_readonly), 0, 0, 1, 1},
    {&__pyx_n_s_recv, __pyx_k_recv, sizeof(__pyx_k_recv), 0, 0, 1, 1},
    {&__pyx_n_s_recvbuf, __pyx_k_recvbuf, sizeof(__pyx_k_recvbuf), 0, 0, 1, 1},
    {&__pyx_n_s_recvcounts, __pyx_k_recvcounts, sizeof(__pyx_k_recvcounts), 0, 0, 1, 1},
    {&__pyx_n_s_recvtag, __pyx_k_recvtag, sizeof(__pyx_k_recvtag), 0, 0, 1, 1},
    {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
    {&__pyx_n_s_reduce_2, __pyx_k_reduce_2, sizeof(__pyx_k_reduce_2), 0, 0, 1, 1},
    {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1},
    {&__pyx_n_s_remain_dims, __pyx_k_remain_dims, sizeof(__pyx_k_remain_dims), 0, 0, 1, 1},
    {&__pyx_n_s_remote_group, __pyx_k_remote_group, sizeof(__pyx_k_remote_group), 0, 0, 1, 1},
    {&__pyx_n_s_remote_leader, __pyx_k_remote_leader, sizeof(__pyx_k_remote_leader), 0, 0, 1, 1},
    {&__pyx_n_s_reorder, __pyx_k_reorder, sizeof(__pyx_k_reorder), 0, 0, 1, 1},
    {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1},
    {&__pyx_n_s_requests, __pyx_k_requests, sizeof(__pyx_k_requests), 0, 0, 1, 1},
    {&__pyx_n_s_required, __pyx_k_required, sizeof(__pyx_k_required), 0, 0, 1, 1},
    {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
    {&__pyx_kp_u_result_expecting_a_single_elemen, __pyx_k_result_expecting_a_single_elemen, sizeof(__pyx_k_result_expecting_a_single_elemen), 0, 1, 0, 0},
    {&__pyx_n_s_resultlen, __pyx_k_resultlen, sizeof(__pyx_k_resultlen), 0, 0, 1, 1},
    {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1},
    {&__pyx_n_s_rmsg, __pyx_k_rmsg, sizeof(__pyx_k_rmsg), 0, 0, 1, 1},
    {&__pyx_n_s_root, __pyx_k_root, sizeof(__pyx_k_root), 0, 0, 1, 1},
    {&__pyx_n_s_rs, __pyx_k_rs, sizeof(__pyx_k_rs), 0, 0, 1, 1},
    {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
    {&__pyx_n_s_scan, __pyx_k_scan, sizeof(__pyx_k_scan), 0, 0, 1, 1},
    {&__pyx_n_s_scatter, __pyx_k_scatter, sizeof(__pyx_k_scatter), 0, 0, 1, 1},
    {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
    {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
    {&__pyx_n_s_sendbuf, __pyx_k_sendbuf, sizeof(__pyx_k_sendbuf), 0, 0, 1, 1},
    {&__pyx_n_s_sendobj, __pyx_k_sendobj, sizeof(__pyx_k_sendobj), 0, 0, 1, 1},
    {&__pyx_n_s_sendrecv, __pyx_k_sendrecv, sizeof(__pyx_k_sendrecv), 0, 0, 1, 1},
    {&__pyx_n_s_sendtag, __pyx_k_sendtag, sizeof(__pyx_k_sendtag), 0, 0, 1, 1},
    {&__pyx_n_s_serialized, __pyx_k_serialized, sizeof(__pyx_k_serialized), 0, 0, 1, 1},
    {&__pyx_n_s_service_name, __pyx_k_service_name, sizeof(__pyx_k_service_name), 0, 0, 1, 1},
    {&__pyx_n_s_session, __pyx_k_session, sizeof(__pyx_k_session), 0, 0, 1, 1},
    {&__pyx_n_s_set_abort_status, __pyx_k_set_abort_status, sizeof(__pyx_k_set_abort_status), 0, 0, 1, 1},
    {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
    {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
    {&__pyx_n_s_single, __pyx_k_single, sizeof(__pyx_k_single), 0, 0, 1, 1},
    {&__pyx_kp_u_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 1, 0, 0},
    {&__pyx_n_s_size_2, __pyx_k_size_2, sizeof(__pyx_k_size_2), 0, 0, 1, 1},
    {&__pyx_n_s_sizeof, __pyx_k_sizeof, sizeof(__pyx_k_sizeof), 0, 0, 1, 1},
    {&__pyx_n_s_sizes, __pyx_k_sizes, sizeof(__pyx_k_sizes), 0, 0, 1, 1},
    {&__pyx_kp_s_slice_length_does_not_match_buff, __pyx_k_slice_length_does_not_match_buff, sizeof(__pyx_k_slice_length_does_not_match_buff), 0, 0, 1, 0},
    {&__pyx_kp_s_slice_with_step_not_supported, __pyx_k_slice_with_step_not_supported, sizeof(__pyx_k_slice_with_step_not_supported), 0, 0, 1, 0},
    {&__pyx_n_s_smsg, __pyx_k_smsg, sizeof(__pyx_k_smsg), 0, 0, 1, 1},
    {&__pyx_n_s_source, __pyx_k_source, sizeof(__pyx_k_source), 0, 0, 1, 1},
    {&__pyx_n_s_sources, __pyx_k_sources, sizeof(__pyx_k_sources), 0, 0, 1, 1},
    {&__pyx_n_s_sourceweights, __pyx_k_sourceweights, sizeof(__pyx_k_sourceweights), 0, 0, 1, 1},
    {&__pyx_n_s_split_type, __pyx_k_split_type, sizeof(__pyx_k_split_type), 0, 0, 1, 1},
    {&__pyx_n_s_src, __pyx_k_src, sizeof(__pyx_k_src), 0, 0, 1, 1},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_k_src_mpi4py_MPI_src_Comm_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Comm_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_k_src_mpi4py_MPI_src_Datatype_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Datatype_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py, __pyx_k_src_mpi4py_MPI_src_Errhandler_py, sizeof(__pyx_k_src_mpi4py_MPI_src_Errhandler_py), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_k_src_mpi4py_MPI_src_ErrorCode_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_ErrorCode_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx, __pyx_k_src_mpi4py_MPI_src_Exception_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Exception_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_k_src_mpi4py_MPI_src_File_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_File_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_k_src_mpi4py_MPI_src_Group_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Group_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_k_src_mpi4py_MPI_src_Info_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Info_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_k_src_mpi4py_MPI_src_MPI_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_MPI_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_k_src_mpi4py_MPI_src_Message_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Message_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_k_src_mpi4py_MPI_src_Op_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Op_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_k_src_mpi4py_MPI_src_Request_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Request_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_k_src_mpi4py_MPI_src_Session_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Session_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_k_src_mpi4py_MPI_src_Status_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Status_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_k_src_mpi4py_MPI_src_Win_pyx, sizeof(__pyx_k_src_mpi4py_MPI_src_Win_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_k_src_mpi4py_MPI_src_asbuffer_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_asbuffer_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_atimport_pxi, __pyx_k_src_mpi4py_MPI_src_atimport_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_atimport_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_bufaimpl_pxi, __pyx_k_src_mpi4py_MPI_src_bufaimpl_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_bufaimpl_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi, __pyx_k_src_mpi4py_MPI_src_commimpl_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_commimpl_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi, __pyx_k_src_mpi4py_MPI_src_msgbuffer_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_msgbuffer_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_k_src_mpi4py_MPI_src_msgpickle_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_msgpickle_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi, __pyx_k_src_mpi4py_MPI_src_typedec_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_typedec_pxi), 0, 0, 1, 0},
    {&__pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi, __pyx_k_src_mpi4py_MPI_src_typestr_pxi, sizeof(__pyx_k_src_mpi4py_MPI_src_typestr_pxi), 0, 0, 1, 0},
    {&__pyx_n_s_ssend, __pyx_k_ssend, sizeof(__pyx_k_ssend), 0, 0, 1, 1},
    {&__pyx_n_s_starts, __pyx_k_starts, sizeof(__pyx_k_starts), 0, 0, 1, 1},
    {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
    {&__pyx_n_s_staticmethod, __pyx_k_staticmethod, sizeof(__pyx_k_staticmethod), 0, 0, 1, 1},
    {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1},
    {&__pyx_n_s_statuses, __pyx_k_statuses, sizeof(__pyx_k_statuses), 0, 0, 1, 1},
    {&__pyx_n_s_statusp, __pyx_k_statusp, sizeof(__pyx_k_statusp), 0, 0, 1, 1},
    {&__pyx_n_s_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 0, 1, 1},
    {&__pyx_kp_s_str_None, __pyx_k_str_None, sizeof(__pyx_k_str_None), 0, 0, 1, 0},
    {&__pyx_kp_s_str_tuple_Any, __pyx_k_str_tuple_Any, sizeof(__pyx_k_str_tuple_Any), 0, 0, 1, 0},
    {&__pyx_n_s_stream, __pyx_k_stream, sizeof(__pyx_k_stream), 0, 0, 1, 1},
    {&__pyx_n_s_stride, __pyx_k_stride, sizeof(__pyx_k_stride), 0, 0, 1, 1},
    {&__pyx_n_s_strides, __pyx_k_strides, sizeof(__pyx_k_strides), 0, 0, 1, 1},
    {&__pyx_kp_u_strides_2, __pyx_k_strides_2, sizeof(__pyx_k_strides_2), 0, 1, 0, 0},
    {&__pyx_n_s_string, __pyx_k_string, sizeof(__pyx_k_string), 0, 0, 1, 1},
    {&__pyx_n_s_stringtag, __pyx_k_stringtag, sizeof(__pyx_k_stringtag), 0, 0, 1, 1},
    {&__pyx_n_s_subsizes, __pyx_k_subsizes, sizeof(__pyx_k_subsizes), 0, 0, 1, 1},
    {&__pyx_n_s_subversion, __pyx_k_subversion, sizeof(__pyx_k_subversion), 0, 0, 1, 1},
    {&__pyx_n_s_sw, __pyx_k_sw, sizeof(__pyx_k_sw), 0, 0, 1, 1},
    {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
    {&__pyx_n_s_tag, __pyx_k_tag, sizeof(__pyx_k_tag), 0, 0, 1, 1},
    {&__pyx_n_s_target, __pyx_k_target, sizeof(__pyx_k_target), 0, 0, 1, 1},
    {&__pyx_n_s_target_disp, __pyx_k_target_disp, sizeof(__pyx_k_target_disp), 0, 0, 1, 1},
    {&__pyx_kp_s_target_expecting_3_items_at_most, __pyx_k_target_expecting_3_items_at_most, sizeof(__pyx_k_target_expecting_3_items_at_most), 0, 0, 1, 0},
    {&__pyx_kp_s_target_expecting_integral_or_lis, __pyx_k_target_expecting_integral_or_lis, sizeof(__pyx_k_target_expecting_integral_or_lis), 0, 0, 1, 0},
    {&__pyx_n_s_target_rank, __pyx_k_target_rank, sizeof(__pyx_k_target_rank), 0, 0, 1, 1},
    {&__pyx_n_s_tc, __pyx_k_tc, sizeof(__pyx_k_tc), 0, 0, 1, 1},
    {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
    {&__pyx_n_s_testall, __pyx_k_testall, sizeof(__pyx_k_testall), 0, 0, 1, 1},
    {&__pyx_n_s_testany, __pyx_k_testany, sizeof(__pyx_k_testany), 0, 0, 1, 1},
    {&__pyx_n_s_testsome, __pyx_k_testsome, sizeof(__pyx_k_testsome), 0, 0, 1, 1},
    {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1},
    {&__pyx_n_s_threshold, __pyx_k_threshold, sizeof(__pyx_k_threshold), 0, 0, 1, 1},
    {&__pyx_kp_u_to_MPI_datatype, __pyx_k_to_MPI_datatype, sizeof(__pyx_k_to_MPI_datatype), 0, 1, 0, 0},
    {&__pyx_n_s_tobytes, __pyx_k_tobytes, sizeof(__pyx_k_tobytes), 0, 0, 1, 1},
    {&__pyx_n_s_tocode, __pyx_k_tocode, sizeof(__pyx_k_tocode), 0, 0, 1, 1},
    {&__pyx_n_s_tomemory, __pyx_k_tomemory, sizeof(__pyx_k_tomemory), 0, 0, 1, 1},
    {&__pyx_n_s_topo, __pyx_k_topo, sizeof(__pyx_k_topo), 0, 0, 1, 1},
    {&__pyx_n_s_toreadonly, __pyx_k_toreadonly, sizeof(__pyx_k_toreadonly), 0, 0, 1, 1},
    {&__pyx_kp_s_tuple_Any_None, __pyx_k_tuple_Any_None, sizeof(__pyx_k_tuple_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_Any_tuple_Any_dict_str_Any, __pyx_k_tuple_Any_tuple_Any_dict_str_Any, sizeof(__pyx_k_tuple_Any_tuple_Any_dict_str_Any), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_Comm_Request, __pyx_k_tuple_Comm_Request, sizeof(__pyx_k_tuple_Comm_Request), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_Datatype_str_dict_str_Any, __pyx_k_tuple_Datatype_str_dict_str_Any, sizeof(__pyx_k_tuple_Datatype_str_dict_str_Any), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_Intercomm_int_Intracomm_bo, __pyx_k_tuple_Intercomm_int_Intracomm_bo, sizeof(__pyx_k_tuple_Intercomm_int_Intracomm_bo), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_Intracomm_int, __pyx_k_tuple_Intracomm_int, sizeof(__pyx_k_tuple_Intracomm_int), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_Self_Request, __pyx_k_tuple_Self_Request, sizeof(__pyx_k_tuple_Self_Request), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_bool_Any_None, __pyx_k_tuple_bool_Any_None, sizeof(__pyx_k_tuple_bool_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_bool_list_Any_None, __pyx_k_tuple_bool_list_Any_None, sizeof(__pyx_k_tuple_bool_list_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_buffer_int, __pyx_k_tuple_buffer_int, sizeof(__pyx_k_tuple_buffer_int), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_bytes_list_buffer, __pyx_k_tuple_bytes_list_buffer, sizeof(__pyx_k_tuple_bytes_list_buffer), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_int_Any, __pyx_k_tuple_int_Any, sizeof(__pyx_k_tuple_int_Any), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_int_Datatype_Datatype_str, __pyx_k_tuple_int_Datatype_Datatype_str, sizeof(__pyx_k_tuple_int_Datatype_Datatype_str), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_int_bool, __pyx_k_tuple_int_bool, sizeof(__pyx_k_tuple_int_bool), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_int_bool_Any_None, __pyx_k_tuple_int_bool_Any_None, sizeof(__pyx_k_tuple_int_bool_Any_None), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_int_int, __pyx_k_tuple_int_int, sizeof(__pyx_k_tuple_int_int), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_int_int_int_int_int, __pyx_k_tuple_int_int_int_int_int, sizeof(__pyx_k_tuple_int_int_int_int_int), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_list_int_None_list_Any_Non, __pyx_k_tuple_list_int_None_list_Any_Non, sizeof(__pyx_k_tuple_list_int_None_list_Any_Non), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_list_int_list_int, __pyx_k_tuple_list_int_list_int, sizeof(__pyx_k_tuple_list_int_list_int), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_list_int_list_int_list_int, __pyx_k_tuple_list_int_list_int_list_int, sizeof(__pyx_k_tuple_list_int_list_int_list_int), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_list_int_list_int_list_int_2, __pyx_k_tuple_list_int_list_int_list_int_2, sizeof(__pyx_k_tuple_list_int_list_int_list_int_2), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_list_int_list_int_tuple_li, __pyx_k_tuple_list_int_list_int_tuple_li, sizeof(__pyx_k_tuple_list_int_list_int_tuple_li), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_str_str, __pyx_k_tuple_str_str, sizeof(__pyx_k_tuple_str_str), 0, 0, 1, 0},
    {&__pyx_kp_s_tuple_str_tuple_int_int_int, __pyx_k_tuple_str_tuple_int_int_int, sizeof(__pyx_k_tuple_str_tuple_int_int_int), 0, 0, 1, 0},
    {&__pyx_n_s_typealign, __pyx_k_typealign, sizeof(__pyx_k_typealign), 0, 0, 1, 1},
    {&__pyx_n_s_typeclass, __pyx_k_typeclass, sizeof(__pyx_k_typeclass), 0, 0, 1, 1},
    {&__pyx_n_s_typecode, __pyx_k_typecode, sizeof(__pyx_k_typecode), 0, 0, 1, 1},
    {&__pyx_n_s_typedict, __pyx_k_typedict, sizeof(__pyx_k_typedict), 0, 0, 1, 1},
    {&__pyx_n_s_typedict_c, __pyx_k_typedict_c, sizeof(__pyx_k_typedict_c), 0, 0, 1, 1},
    {&__pyx_n_s_typedict_f, __pyx_k_typedict_f, sizeof(__pyx_k_typedict_f), 0, 0, 1, 1},
    {&__pyx_n_s_typestr, __pyx_k_typestr, sizeof(__pyx_k_typestr), 0, 0, 1, 1},
    {&__pyx_kp_u_ub, __pyx_k_ub, sizeof(__pyx_k_ub), 0, 1, 0, 0},
    {&__pyx_kp_u_unknown_combiner_value, __pyx_k_unknown_combiner_value, sizeof(__pyx_k_unknown_combiner_value), 0, 1, 0, 0},
    {&__pyx_kp_u_unorderable_type, __pyx_k_unorderable_type, sizeof(__pyx_k_unorderable_type), 0, 1, 0, 0},
    {&__pyx_n_s_unused, __pyx_k_unused, sizeof(__pyx_k_unused), 0, 0, 1, 1},
    {&__pyx_n_s_unused1, __pyx_k_unused1, sizeof(__pyx_k_unused1), 0, 0, 1, 1},
    {&__pyx_n_s_unused2, __pyx_k_unused2, sizeof(__pyx_k_unused2), 0, 0, 1, 1},
    {&__pyx_n_s_unused3, __pyx_k_unused3, sizeof(__pyx_k_unused3), 0, 0, 1, 1},
    {&__pyx_n_s_unused4, __pyx_k_unused4, sizeof(__pyx_k_unused4), 0, 0, 1, 1},
    {&__pyx_n_s_unused5, __pyx_k_unused5, sizeof(__pyx_k_unused5), 0, 0, 1, 1},
    {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
    {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 0, 0, 1, 1},
    {&__pyx_n_s_val, __pyx_k_val, sizeof(__pyx_k_val), 0, 0, 1, 1},
    {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
    {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
    {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1},
    {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1},
    {&__pyx_n_s_waitall, __pyx_k_waitall, sizeof(__pyx_k_waitall), 0, 0, 1, 1},
    {&__pyx_n_s_waitany, __pyx_k_waitany, sizeof(__pyx_k_waitany), 0, 0, 1, 1},
    {&__pyx_n_s_waitsome, __pyx_k_waitsome, sizeof(__pyx_k_waitsome), 0, 0, 1, 1},
    {&__pyx_n_s_weighted, __pyx_k_weighted, sizeof(__pyx_k_weighted), 0, 0, 1, 1},
    {&__pyx_n_s_weights, __pyx_k_weights, sizeof(__pyx_k_weights), 0, 0, 1, 1},
    {&__pyx_n_s_whence, __pyx_k_whence, sizeof(__pyx_k_whence), 0, 0, 1, 1},
    {&__pyx_n_s_win, __pyx_k_win, sizeof(__pyx_k_win), 0, 0, 1, 1},
    {&__pyx_kp_u_with_non_native_byte_order, __pyx_k_with_non_native_byte_order, sizeof(__pyx_k_with_non_native_byte_order), 0, 1, 0, 0},
    {&__pyx_kp_u_with_unrecognized_byte_order, __pyx_k_with_unrecognized_byte_order, sizeof(__pyx_k_with_unrecognized_byte_order), 0, 1, 0, 0},
    {&__pyx_n_s_wr, __pyx_k_wr, sizeof(__pyx_k_wr), 0, 0, 1, 1},
    {&__pyx_n_s_write_fn, __pyx_k_write_fn, sizeof(__pyx_k_write_fn), 0, 0, 1, 1},
    {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
    {&__pyx_n_s_xs, __pyx_k_xs, sizeof(__pyx_k_xs), 0, 0, 1, 1},
    {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1},
    {&__pyx_n_s_yes, __pyx_k_yes, sizeof(__pyx_k_yes), 0, 0, 1, 1},
    {0, 0, 0, 0, 0, 0, 0}
  };
  return __Pyx_InitStrings(__pyx_string_tab);
}
/* #### Code section: cached_builtins ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_staticmethod = __Pyx_GetBuiltinName(__pyx_n_s_staticmethod); if (!__pyx_builtin_staticmethod) __PYX_ERR(0, 129, __pyx_L1_error)
  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 13, __pyx_L1_error)
  __pyx_builtin_RuntimeWarning = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeWarning); if (!__pyx_builtin_RuntimeWarning) __PYX_ERR(2, 125, __pyx_L1_error)
  __pyx_builtin_ImportWarning = __Pyx_GetBuiltinName(__pyx_n_s_ImportWarning); if (!__pyx_builtin_ImportWarning) __PYX_ERR(2, 144, __pyx_L1_error)
  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(3, 40, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(4, 68, __pyx_L1_error)
  __pyx_builtin_BufferError = __Pyx_GetBuiltinName(__pyx_n_s_BufferError); if (!__pyx_builtin_BufferError) __PYX_ERR(5, 92, __pyx_L1_error)
  __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(5, 240, __pyx_L1_error)
  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(5, 241, __pyx_L1_error)
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(5, 252, __pyx_L1_error)
  __pyx_builtin_BaseException = __Pyx_GetBuiltinName(__pyx_n_s_BaseException); if (!__pyx_builtin_BaseException) __PYX_ERR(0, 63, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 138, __pyx_L1_error)
  __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_n_s_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(0, 223, __pyx_L1_error)
  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 269, __pyx_L1_error)
  __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_n_s_OverflowError); if (!__pyx_builtin_OverflowError) __PYX_ERR(0, 355, __pyx_L1_error)
  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(6, 97, __pyx_L1_error)
  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(6, 253, __pyx_L1_error)
  __pyx_builtin_UserWarning = __Pyx_GetBuiltinName(__pyx_n_s_UserWarning); if (!__pyx_builtin_UserWarning) __PYX_ERR(7, 326, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cached_constants ### */

static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "src/mpi4py/MPI.src/allocate.pxi":40
 * cdef inline _PyMem allocate(Py_ssize_t m, size_t b, void *buf):
 *     if m > PY_SSIZE_T_MAX // <Py_ssize_t>b:
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered             # <<<<<<<<<<<<<<
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered
 */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_memory_allocation_size_too_large); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(3, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);

  /* "src/mpi4py/MPI.src/allocate.pxi":42
 *         raise MemoryError("memory allocation size too large")  # ~> uncovered
 *     if m < 0:
 *         raise RuntimeError("memory allocation with negative size")  # ~> uncovered             # <<<<<<<<<<<<<<
 *     cdef _PyMem ob = <_PyMem>New(_PyMem)
 *     ob.len  = m * <Py_ssize_t>b
 */
  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_memory_allocation_with_negative); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(3, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__5);
  __Pyx_GIVEREF(__pyx_tuple__5);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":92
 *     if version == NULL: return 0
 *     if version.major >= version_major: return 0
 *     raise BufferError("dlpack: unexpected version")             # <<<<<<<<<<<<<<
 * 
 * cdef inline int dlpack_is_contig(
 */
  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_dlpack_unexpected_version); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(5, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":121
 *     cdef int i, ndim = dltensor.ndim
 *     if ndim < 0:
 *         raise BufferError("dlpack: number of dimensions is negative")             # <<<<<<<<<<<<<<
 *     if ndim > 0 and dltensor.shape == NULL:
 *         raise BufferError("dlpack: shape is NULL")
 */
  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_dlpack_number_of_dimensions_is_n); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(5, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":123
 *         raise BufferError("dlpack: number of dimensions is negative")
 *     if ndim > 0 and dltensor.shape == NULL:
 *         raise BufferError("dlpack: shape is NULL")             # <<<<<<<<<<<<<<
 *     for i in range(ndim):
 *         if dltensor.shape[i] < 0:
 */
  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_dlpack_shape_is_NULL); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(5, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__8);
  __Pyx_GIVEREF(__pyx_tuple__8);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":126
 *     for i in range(ndim):
 *         if dltensor.shape[i] < 0:
 *             raise BufferError("dlpack: shape item is negative")             # <<<<<<<<<<<<<<
 *     if dltensor.strides != NULL:
 *         for i in range(ndim):
 */
  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_dlpack_shape_item_is_negative); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(5, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":130
 *         for i in range(ndim):
 *             if dltensor.strides[i] < 0:
 *                 raise BufferError("dlpack: strides item is negative")             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_dlpack_strides_item_is_negative); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(5, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":136
 *     if dlpack_is_contig(dltensor, c'C'): return 0
 *     if dlpack_is_contig(dltensor, c'F'): return 0
 *     raise BufferError("dlpack: buffer is not contiguous")             # <<<<<<<<<<<<<<
 * 
 * cdef inline void *dlpack_get_data(
 */
  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_dlpack_buffer_is_not_contiguous); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(5, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":241
 *         dlpack_device = obj.__dlpack_device__
 *     except AttributeError:
 *         raise NotImplementedError("dlpack: missing support")             # <<<<<<<<<<<<<<
 * 
 *     device_type, device_id = dlpack_device()
 */
  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_dlpack_missing_support); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(5, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":262
 * 
 *     if not PyCapsule_IsValid(capsule, capsulename):
 *         raise BufferError("dlpack: invalid capsule object")             # <<<<<<<<<<<<<<
 *     pointer = PyCapsule_GetPointer(capsule, capsulename)
 *     if version_major >= 1:
 */
  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_dlpack_invalid_capsule_object); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(5, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);

  /* "src/mpi4py/MPI.src/asdlpack.pxi":294
 * 
 *     if PYPY and readonly and ((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE):
 *         raise BufferError("Object is not writable")  # ~> pypy             # <<<<<<<<<<<<<<
 * 
 *     PyBuffer_FillInfo(view, obj, buf, size, readonly, flags)
 */
  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Object_is_not_writable); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(5, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":83
 *         cuda_array_interface = obj.__cuda_array_interface__
 *     except AttributeError:
 *         raise NotImplementedError("missing CUDA array interface")             # <<<<<<<<<<<<<<
 * 
 *     # mandatory
 */
  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_missing_CUDA_array_interface); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(9, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);

  /* "src/mpi4py/MPI.src/ascaibuf.pxi":123
 *                 f"with unrecognized byte order")
 *     if mask is not None:
 *         raise BufferError(             # <<<<<<<<<<<<<<
 *             "__cuda_array_interface__: "
 *             "cannot handle masked arrays"
 */
  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_cuda_array_interface___cannot); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(9, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":107
 *     if device_type == kDLROCMHost    : return 0  # ~> uncovered
 *     if device_type == kDLCUDAManaged : return 0  # ~> uncovered
 *     raise BufferError("buffer is not CPU-accessible")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_buffer_is_not_CPU_accessible); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":138
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:
 *             raise ValueError("expecting non-negative size")             # <<<<<<<<<<<<<<
 *         cdef object ob = rawalloc(size, 1, clear, &addr)
 *         cdef buffer buf = <buffer>New(buffer)
 */
  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_expecting_non_negative_size); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":167
 *         cdef Py_ssize_t size = nbytes
 *         if size < 0:
 *             raise ValueError("expecting non-negative buffer length")             # <<<<<<<<<<<<<<
 *         elif size > 0 and addr == NULL:
 *             raise ValueError("expecting non-NULL address")
 */
  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_expecting_non_negative_buffer_le); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__20);
  __Pyx_GIVEREF(__pyx_tuple__20);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":169
 *             raise ValueError("expecting non-negative buffer length")
 *         elif size > 0 and addr == NULL:
 *             raise ValueError("expecting non-NULL address")             # <<<<<<<<<<<<<<
 *         cdef buffer buf = <buffer>New(buffer)
 *         PyBuffer_FillInfo(&buf.view, <object>NULL,
 */
  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_expecting_non_NULL_address); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":272
 *             if start < 0: start += blen
 *             if start < 0 or start >= blen:
 *                 raise IndexError("index out of range")             # <<<<<<<<<<<<<<
 *             return <long>buf[start]
 *         elif PySlice_Check(item):
 */
  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_index_out_of_range); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":278
 *             # slen = PySlice_AdjustIndices(blen, &start, &stop, step)
 *             PySlice_GetIndicesEx(item, blen, &start, &stop, &step, &slen)
 *             if step != 1: raise IndexError("slice with step not supported")             # <<<<<<<<<<<<<<
 *             return tobuffer(self, buf+start, slen, self.view.readonly)
 *         else:
 */
  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_slice_with_step_not_supported); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":281
 *             return tobuffer(self, buf+start, slen, self.view.readonly)
 *         else:
 *             raise TypeError("index must be integer or slice")             # <<<<<<<<<<<<<<
 * 
 *     def __setitem__(self, object item, object value):
 */
  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_index_must_be_integer_or_slice); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":286
 *         check_cpu_accessible(self.kind)
 *         if self.view.readonly:
 *             raise TypeError("buffer is read-only")             # <<<<<<<<<<<<<<
 *         cdef Py_ssize_t start=0, stop=0, step=1, slen=0
 *         cdef unsigned char *buf = <unsigned char*>self.view.buf
 */
  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_buffer_is_read_only); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":305
 *                 inbuf = getbuffer(value, 1, 0)
 *                 if inbuf.view.len != slen:
 *                     raise ValueError("slice length does not match buffer")             # <<<<<<<<<<<<<<
 *                 <void>memmove(buf+start, inbuf.view.buf, <size_t>slen)
 *         else:
 */
  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_slice_length_does_not_match_buff); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":355
 *     cdef MPI_Aint size = <MPI_Aint>count
 *     cdef int neq = (count != <MPI_Count>size)
 *     if neq: raise OverflowError("length {count} does not fit in 'MPI_Aint'")             # <<<<<<<<<<<<<<
 *     return tobuffer(<object>NULL, base, size, 0)
 * 
 */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_length_count_does_not_fit_in_MPI); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);

  /* "src/mpi4py/MPI.src/asarray.pxi":35
 * cdef inline int chklength(Py_ssize_t size) except -1:
 *     cdef int overflow = (size > (<Py_ssize_t>INT_MAX))
 *     if overflow: raise OverflowError("length {size} larger than {INT_MAX}")             # <<<<<<<<<<<<<<
 *     return 0
 * 
 */
  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_length_size_larger_than_INT_MAX); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(10, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);

  /* "src/mpi4py/MPI.src/asarray.pxi":132
 * cdef inline object asarray_cmds(object sequence, int *count, char ***p):
 *     if is_string(sequence):
 *         raise ValueError("expecting a sequence of strings")             # <<<<<<<<<<<<<<
 *     sequence = list(sequence)
 *     count[0] = <int>len(sequence)
 */
  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_expecting_a_sequence_of_strings); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(10, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__29);
  __Pyx_GIVEREF(__pyx_tuple__29);

  /* "src/mpi4py/MPI.src/objmodel.pxi":518
 *     cdef int index = op_user_id_get(self)
 *     if index == 0:
 *         raise ValueError("cannot pickle user-defined reduction operation")             # <<<<<<<<<<<<<<
 *     cdef object function = op_user_registry[index]
 *     cdef object commute = self.Is_commutative()
 */
  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_cannot_pickle_user_defined_reduc); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__31);
  __Pyx_GIVEREF(__pyx_tuple__31);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":210
 *     <void> hdl  # unused
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_type.get(keyval)
 *     if PyMPI_attr_type is MPI_Comm:
 */
  __pyx_tuple__32 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(6, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);
  __pyx_tuple__33 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(6, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":213
 *             return <_p_keyval>keyval_registry_type.get(keyval)
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_comm.get(keyval)
 *     if PyMPI_attr_type is MPI_Win:
 */
  __pyx_tuple__34 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(6, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);
  __pyx_tuple__35 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(6, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__35);
  __Pyx_GIVEREF(__pyx_tuple__35);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":216
 *             return <_p_keyval>keyval_registry_comm.get(keyval)
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:             # <<<<<<<<<<<<<<
 *             return <_p_keyval>keyval_registry_win.get(keyval)
 * 
 */
  __pyx_tuple__36 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(6, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);
  __pyx_tuple__37 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(6, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__37);
  __Pyx_GIVEREF(__pyx_tuple__37);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":227
 *     <void> hdl  # unused
 *     if PyMPI_attr_type is MPI_Datatype:
 *         with keyval_lock_type:             # <<<<<<<<<<<<<<
 *             keyval_registry_type[keyval] = state
 *     if PyMPI_attr_type is MPI_Comm:
 */
  __pyx_tuple__38 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(6, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":230
 *             keyval_registry_type[keyval] = state
 *     if PyMPI_attr_type is MPI_Comm:
 *         with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *             keyval_registry_comm[keyval] = state
 *     if PyMPI_attr_type is MPI_Win:
 */
  __pyx_tuple__39 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(6, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":233
 *             keyval_registry_comm[keyval] = state
 *     if PyMPI_attr_type is MPI_Win:
 *         with keyval_lock_win:             # <<<<<<<<<<<<<<
 *             keyval_registry_win[keyval] = state
 *     return 0
 */
  __pyx_tuple__40 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(6, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":245
 *     try:
 *         if PyMPI_attr_type is MPI_Datatype:
 *             with keyval_lock_type:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_type[keyval]
 *         if PyMPI_attr_type is MPI_Comm:
 */
  __pyx_tuple__41 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(6, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":248
 *                 del keyval_registry_type[keyval]
 *         if PyMPI_attr_type is MPI_Comm:
 *             with keyval_lock_comm:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_comm[keyval]
 *         if PyMPI_attr_type is MPI_Win:
 */
  __pyx_tuple__42 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(6, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__42);
  __Pyx_GIVEREF(__pyx_tuple__42);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":251
 *                 del keyval_registry_comm[keyval]
 *         if PyMPI_attr_type is MPI_Win:
 *             with keyval_lock_win:             # <<<<<<<<<<<<<<
 *                 del keyval_registry_win[keyval]
 *     except KeyError:  # ~> uncovered
 */
  __pyx_tuple__43 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(6, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);

  /* "src/mpi4py/MPI.src/attrimpl.pxi":321
 *     cdef _p_keyval state = PyMPI_attr_state_get(hdl, keyval)
 *     if state is None: return PyMPI_delete_attr(hdl, keyval)
 *     with state.lock:             # <<<<<<<<<<<<<<
 *         PyMPI_delete_attr(hdl, keyval)
 *         ierr, state.ierr = state.ierr, ierr
 */
  __pyx_tuple__44 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(6, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__44);
  __Pyx_GIVEREF(__pyx_tuple__44);

  /* "src/mpi4py/MPI.src/errhimpl.pxi":294
 *             registry[index] = function
 *     except ValueError:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "cannot create too many user-defined error handlers",
 *         )
 */
  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_cannot_create_too_many_user_defi); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(11, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);

  /* "src/mpi4py/MPI.src/opimpl.pxi":363
 *             op_user_registry[index] = function
 *     except ValueError:
 *         raise RuntimeError(             # <<<<<<<<<<<<<<
 *             "cannot create too many user-defined reduction operations",
 *         )
 */
  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_cannot_create_too_many_user_defi_2); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(13, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__46);
  __Pyx_GIVEREF(__pyx_tuple__46);

  /* "src/mpi4py/MPI.src/opimpl.pxi":409
 *     if op == MPI_NO_OP   : return op_NO_OP(x, y)
 *     if index > 0         : return op_user_call_py(index, x, y, None)
 *     raise ValueError("cannot call user-defined operation")             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_cannot_call_user_defined_operati); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(13, 409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":12
 *         cdef MPI_Aint a = self, b = <MPI_Aint>MPI_BUFFER_AUTOMATIC
 *         if a != b:
 *             raise ValueError("cannot create instance")             # <<<<<<<<<<<<<<
 * 
 *     def __getbuffer__(self, Py_buffer *view, int flags):
 */
  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_cannot_create_instance); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(14, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);

  /* "src/mpi4py/MPI.src/commimpl.pxi":24
 *     if is_WEIGHTS_EMPTY(weights):
 *         if nweight > 0:
 *             raise ValueError("empty weights but nonzero degree")             # <<<<<<<<<<<<<<
 *         iweight[0] = MPI_WEIGHTS_EMPTY
 *         return None
 */
  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_empty_weights_but_nonzero_degree); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(15, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":200
 *             (o_buf, o_count, o_displ, o_type) = msg
 *         else:
 *             raise ValueError("message: expecting 2 to 4 items")             # <<<<<<<<<<<<<<
 *     elif is_dlpack_buffer(msg):
 *         o_buf = msg
 */
  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_message_expecting_2_to_4_items); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(18, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_GIVEREF(__pyx_tuple__50);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":206
 *         o_buf = msg
 *     else:
 *         raise TypeError("message: expecting buffer or list/tuple")             # <<<<<<<<<<<<<<
 *     # buffer: address, length, and datatype
 *     cdef void *baddr = NULL
 */
  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_message_expecting_buffer_or_list); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(18, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":226
 *         if displ > 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot handle displacement, "
 *                     f"datatype is null")
 */
  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_u_message_cannot_handle_displaceme); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(18, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__52);
  __Pyx_GIVEREF(__pyx_tuple__52);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":251
 *         if extent == 0:
 *             if btype == MPI_DATATYPE_NULL:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     f"message: cannot infer count, "
 *                     f"datatype is null")
 */
  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_u_message_cannot_infer_count_datat); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(18, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":413
 *     if is_BOTTOM(o_buffer):
 *         if o_counts is None:
 *             raise ValueError("message: BOTTOM requires counts")             # <<<<<<<<<<<<<<
 *         if o_displs is None:
 *             raise ValueError("message: BOTTOM requires displs")
 */
  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_message_BOTTOM_requires_counts); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(18, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__54);
  __Pyx_GIVEREF(__pyx_tuple__54);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":415
 *             raise ValueError("message: BOTTOM requires counts")
 *         if o_displs is None:
 *             raise ValueError("message: BOTTOM requires displs")             # <<<<<<<<<<<<<<
 *         _addr[0] = MPI_BOTTOM
 *     elif readonly:
 */
  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_message_BOTTOM_requires_displs); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(18, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":742
 *         if self.sbuf == MPI_IN_PLACE: return 0
 *         if self.stype != self.rtype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in send and receive MPI datatypes")
 *         if self.scount != self.rcount:
 */
  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_u_mismatch_in_send_and_receive_MPI); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(18, 742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__56);
  __Pyx_GIVEREF(__pyx_tuple__56);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1040
 *                 self.ttype  = asdatatype(target[2]).ob_mpi
 *             if nargs >= 4:
 *                 raise ValueError("target: expecting 3 items at most")             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")
 */
  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_target_expecting_3_items_at_most); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(18, 1040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__58);
  __Pyx_GIVEREF(__pyx_tuple__58);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1042
 *                 raise ValueError("target: expecting 3 items at most")
 *         else:
 *             raise ValueError("target: expecting integral or list/tuple")             # <<<<<<<<<<<<<<
 *         self._target = target
 *         return 0
 */
  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_target_expecting_integral_or_lis); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(18, 1042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1096
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.rtype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in origin and result MPI datatypes")
 *         return 0
 */
  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_u_mismatch_in_origin_and_result_MP); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(18, 1096, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__60);
  __Pyx_GIVEREF(__pyx_tuple__60);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":1118
 *                 f"result: expecting a single element, got {self.rcount}")
 *         if self.otype != self.ctype:
 *             raise ValueError(             # <<<<<<<<<<<<<<
 *                 f"mismatch in origin and compare MPI datatypes")
 *         if self.otype != self.rtype:
 */
  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_u_mismatch_in_origin_and_compare_M); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(18, 1118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":150
 * 
 * cdef object get_buffer_callback(list buffers, Py_ssize_t threshold):
 *     def buffer_callback(ob):             # <<<<<<<<<<<<<<
 *         cdef buffer buf = getbuffer(ob, 1, 0)
 *         if buf.view.len >= threshold:
 */
  __pyx_tuple__62 = PyTuple_Pack(2, __pyx_n_s_ob, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(7, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__62);
  __Pyx_GIVEREF(__pyx_tuple__62);
  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_n_s_buffer_callback, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(7, 150, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1057
 *     seq = _py_scan(seq, op)
 *     seq.pop(-1)
 *     seq.insert(0, None)             # <<<<<<<<<<<<<<
 *     return seq
 * 
 */
  __pyx_tuple__64 = PyTuple_Pack(2, __pyx_int_0, Py_None); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(7, 1057, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__64);
  __Pyx_GIVEREF(__pyx_tuple__64);

  /* "src/mpi4py/MPI.src/Datatype.pyx":866
 *         cdef const char *s = DatatypeCode(self.ob_mpi)
 *         if s != NULL: return pystr(s)
 *         raise ValueError("cannot map to character code or type string")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s_cannot_map_to_character_code_or); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(22, 866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);

  /* "src/mpi4py/MPI.src/Comm.pyx":302
 *         cdef MPI_Aint flag_len = 0
 *         flag = aspybuffer(flag, <void **>&flag_ptr, &flag_len, 0, b"i")
 *         if flag_len != 1: raise ValueError(             # <<<<<<<<<<<<<<
 *             "flag: expecting int buffer of length one")
 *         cdef Request request = <Request>New(Request)
 */
  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_kp_s_flag_expecting_int_buffer_of_len); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(31, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__81);
  __Pyx_GIVEREF(__pyx_tuple__81);

  /* "src/mpi4py/MPI.src/Comm.pyx":2180
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if inter:
 *             raise TypeError("expecting an intracommunicator")             # <<<<<<<<<<<<<<
 * 
 *     # Communicator Constructors
 */
  __pyx_tuple__151 = PyTuple_Pack(1, __pyx_kp_s_expecting_an_intracommunicator); if (unlikely(!__pyx_tuple__151)) __PYX_ERR(31, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__151);
  __Pyx_GIVEREF(__pyx_tuple__151);

  /* "src/mpi4py/MPI.src/Comm.pyx":2549
 *         #
 *         if errcodes is not None:
 *             errcodes[:] = [ierrcodes[i] for i in range(maxprocs)]             # <<<<<<<<<<<<<<
 *         #
 *         comm_set_eh(comm.ob_mpi)
 */
  __pyx_slice__166 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__166)) __PYX_ERR(31, 2549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__166);
  __Pyx_GIVEREF(__pyx_slice__166);

  /* "src/mpi4py/MPI.src/Comm.pyx":2664
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo == MPI_UNDEFINED:
 *             raise TypeError("expecting a topology communicator")             # <<<<<<<<<<<<<<
 * 
 *     property degrees:
 */
  __pyx_tuple__170 = PyTuple_Pack(1, __pyx_kp_s_expecting_a_topology_communicato); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(31, 2664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__170);
  __Pyx_GIVEREF(__pyx_tuple__170);

  /* "src/mpi4py/MPI.src/Comm.pyx":2679
 *                 return (nneighbors, nneighbors)
 *             if isinstance(self, Distgraphcomm):
 *                 nneighbors = self.Get_dist_neighbors_count()[:2]             # <<<<<<<<<<<<<<
 *                 return nneighbors
 *             raise TypeError("expecting a topology communicator")  # ~> unreachable
 */
  __pyx_slice__171 = PySlice_New(Py_None, __pyx_int_2, Py_None); if (unlikely(!__pyx_slice__171)) __PYX_ERR(31, 2679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__171);
  __Pyx_GIVEREF(__pyx_slice__171);

  /* "src/mpi4py/MPI.src/Comm.pyx":3017
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_CART:
 *             raise TypeError("expecting a Cartesian communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Cartesian Inquiry Functions
 */
  __pyx_tuple__177 = PyTuple_Pack(1, __pyx_kp_s_expecting_a_Cartesian_communicat); if (unlikely(!__pyx_tuple__177)) __PYX_ERR(31, 3017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__177);
  __Pyx_GIVEREF(__pyx_tuple__177);

  /* "src/mpi4py/MPI.src/Comm.pyx":3159
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_GRAPH:
 *             raise TypeError("expecting a general graph communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Graph Inquiry Functions
 */
  __pyx_tuple__178 = PyTuple_Pack(1, __pyx_kp_s_expecting_a_general_graph_commun); if (unlikely(!__pyx_tuple__178)) __PYX_ERR(31, 3159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__178);
  __Pyx_GIVEREF(__pyx_tuple__178);

  /* "src/mpi4py/MPI.src/Comm.pyx":3265
 *         CHKERR( MPI_Topo_test(self.ob_mpi, &topo) )
 *         if topo != MPI_DIST_GRAPH:
 *             raise TypeError("expecting a distributed graph communicator")             # <<<<<<<<<<<<<<
 * 
 *     # Topology Inquiry Functions
 */
  __pyx_tuple__179 = PyTuple_Pack(1, __pyx_kp_s_expecting_a_distributed_graph_co); if (unlikely(!__pyx_tuple__179)) __PYX_ERR(31, 3265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__179);
  __Pyx_GIVEREF(__pyx_tuple__179);

  /* "src/mpi4py/MPI.src/Comm.pyx":3329
 *         CHKERR( MPI_Comm_test_inter(self.ob_mpi, &inter) )
 *         if not inter:
 *             raise TypeError("expecting an intercommunicator")             # <<<<<<<<<<<<<<
 * 
 *     # Intercommunicator Constructors
 */
  __pyx_tuple__180 = PyTuple_Pack(1, __pyx_kp_s_expecting_an_intercommunicator); if (unlikely(!__pyx_tuple__180)) __PYX_ERR(31, 3329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__180);
  __Pyx_GIVEREF(__pyx_tuple__180);

  /* "src/mpi4py/MPI.src/MPI.pyx":349
 *     if _mpi_type(arg, Win):        return sizeof(MPI_Win)
 *     if _mpi_type(arg, File):       return sizeof(MPI_File)
 *     raise TypeError("expecting an MPI type or instance")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__203 = PyTuple_Pack(1, __pyx_kp_s_expecting_an_MPI_type_or_instanc); if (unlikely(!__pyx_tuple__203)) __PYX_ERR(34, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__203);
  __Pyx_GIVEREF(__pyx_tuple__203);

  /* "src/mpi4py/MPI.src/MPI.pyx":382
 *         ptr = <void*>&(<File>arg).ob_mpi
 *     else:
 *         raise TypeError("expecting an MPI instance")             # <<<<<<<<<<<<<<
 *     return PyLong_FromVoidPtr(ptr)
 * 
 */
  __pyx_tuple__204 = PyTuple_Pack(1, __pyx_kp_s_expecting_an_MPI_instance); if (unlikely(!__pyx_tuple__204)) __PYX_ERR(34, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__204);
  __Pyx_GIVEREF(__pyx_tuple__204);

  /* "src/mpi4py/MPI.src/atimport.pxi":388
 * 
 * 
 * def _set_abort_status(int status: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Helper for ``python -m mpi4py.run ...``.
 */
  __pyx_tuple__206 = PyTuple_Pack(1, __pyx_n_s_status); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(2, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__206);
  __Pyx_GIVEREF(__pyx_tuple__206);
  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__206, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_atimport_pxi, __pyx_n_s_set_abort_status, 388, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(2, 388, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":129
 *         PyBuffer_Release(&self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
 */
  __pyx_tuple__208 = PyTuple_Pack(6, __pyx_n_s_nbytes, __pyx_n_s_clear, __pyx_n_s_addr, __pyx_n_s_size_2, __pyx_n_s_ob, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__208);
  __Pyx_GIVEREF(__pyx_tuple__208);
  __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__208, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_n_s_allocate, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(0, 129, __pyx_L1_error)
  __pyx_tuple__210 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__210)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__210);
  __Pyx_GIVEREF(__pyx_tuple__210);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":144
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def frombuffer(
 *         obj: Buffer,
 */
  __pyx_tuple__211 = PyTuple_Pack(4, __pyx_n_s_obj, __pyx_n_s_readonly, __pyx_n_s_flags, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__211)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__211);
  __Pyx_GIVEREF(__pyx_tuple__211);
  __pyx_codeobj__212 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__211, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_n_s_frombuffer, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) __PYX_ERR(0, 144, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":157
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
 */
  __pyx_tuple__213 = PyTuple_Pack(6, __pyx_n_s_address, __pyx_n_s_nbytes, __pyx_n_s_readonly, __pyx_n_s_addr, __pyx_n_s_size_2, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__213)) __PYX_ERR(0, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__213);
  __Pyx_GIVEREF(__pyx_tuple__213);
  __pyx_codeobj__214 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__213, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_n_s_fromaddress, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__214)) __PYX_ERR(0, 157, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":214
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
 */
  __pyx_tuple__215 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_format, __pyx_n_s_shape); if (unlikely(!__pyx_tuple__215)) __PYX_ERR(0, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__215);
  __Pyx_GIVEREF(__pyx_tuple__215);
  __pyx_codeobj__216 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__215, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_n_s_cast, 214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__216)) __PYX_ERR(0, 214, __pyx_L1_error)
  __pyx_tuple__217 = PyTuple_Pack(1, Py_Ellipsis); if (unlikely(!__pyx_tuple__217)) __PYX_ERR(0, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__217);
  __Pyx_GIVEREF(__pyx_tuple__217);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":228
 *             return PyMemoryView_FromObject(self).cast(format, shape)
 * 
 *     def tobytes(self, order: str | None = None) -> bytes:             # <<<<<<<<<<<<<<
 *         """Return the data in the buffer as a byte string."""
 *         <void> order  # unused
 */
  __pyx_tuple__218 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_order); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__218);
  __Pyx_GIVEREF(__pyx_tuple__218);
  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_n_s_tobytes, 228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(0, 228, __pyx_L1_error)
  __pyx_tuple__220 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__220);
  __Pyx_GIVEREF(__pyx_tuple__220);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":234
 *         return PyBytes_FromStringAndSize(<char*>self.view.buf, self.view.len)
 * 
 *     def toreadonly(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """Return a readonly version of the buffer object."""
 *         cdef object obj = self
 */
  __pyx_tuple__221 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_obj, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__221)) __PYX_ERR(0, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__221);
  __Pyx_GIVEREF(__pyx_tuple__221);
  __pyx_codeobj__222 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__221, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_n_s_toreadonly, 234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__222)) __PYX_ERR(0, 234, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":244
 *         return buf
 * 
 *     def release(self) -> None:             # <<<<<<<<<<<<<<
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyBuffer_Release(&self.view)
 */
  __pyx_tuple__223 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__223)) __PYX_ERR(0, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__223);
  __Pyx_GIVEREF(__pyx_tuple__223);
  __pyx_codeobj__224 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_asbuffer_pxi, __pyx_n_s_release, 244, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__224)) __PYX_ERR(0, 244, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":22
 *         return 'BUFFER_AUTOMATIC'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'
 */
  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_bufaimpl_pxi, __pyx_n_s_reduce, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(14, 22, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/commimpl.pxi":137
 * 
 * 
 * def _comm_lock(Comm comm: Comm, object key: Hashable | None = None) -> Lock:             # <<<<<<<<<<<<<<
 *     """
 *     Create/get communicator lock.
 */
  __pyx_tuple__226 = PyTuple_Pack(2, __pyx_n_s_comm, __pyx_n_s_key); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(15, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__226);
  __Pyx_GIVEREF(__pyx_tuple__226);
  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__226, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi, __pyx_n_s_comm_lock, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(15, 137, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/commimpl.pxi":144
 * 
 * 
 * def _comm_lock_table(Comm comm: Comm) -> dict[Hashable, Lock]:             # <<<<<<<<<<<<<<
 *     """
 *     Internal communicator lock table.
 */
  __pyx_tuple__228 = PyTuple_Pack(1, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(15, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__228);
  __Pyx_GIVEREF(__pyx_tuple__228);
  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_commimpl_pxi, __pyx_n_s_comm_lock_table, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(15, 144, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":46
 *         return 'BOTTOM'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BOTTOM'
 */
  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi, __pyx_n_s_reduce, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) __PYX_ERR(18, 46, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":69
 *         return 'IN_PLACE'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'IN_PLACE'
 */
  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgbuffer_pxi, __pyx_n_s_reduce, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(18, 69, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":65
 *         self.ob_THRES = threshold
 * 
 *     def dumps(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_tuple__232 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(7, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__232);
  __Pyx_GIVEREF(__pyx_tuple__232);
  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_n_s_dumps, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(7, 65, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":74
 *         return cdumps(self, obj)
 * 
 *     def loads(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */
  __pyx_tuple__234 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_data); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__234);
  __Pyx_GIVEREF(__pyx_tuple__234);
  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__234, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_n_s_loads, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(7, 74, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":83
 *         return cloads(self, data)
 * 
 *     def dumps_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_codeobj__236 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_n_s_dumps_oob, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__236)) __PYX_ERR(7, 83, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":92
 *         return cdumps_oob(self, obj)
 * 
 *     def loads_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */
  __pyx_tuple__237 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_data, __pyx_n_s_buffers); if (unlikely(!__pyx_tuple__237)) __PYX_ERR(7, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__237);
  __Pyx_GIVEREF(__pyx_tuple__237);
  __pyx_codeobj__238 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__237, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_n_s_loads_oob, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__238)) __PYX_ERR(7, 92, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1278
 * 
 * 
 * def _commctx_intra(             # <<<<<<<<<<<<<<
 *     Intracomm comm: Intracomm,
 * ) -> tuple[Intracomm, int]:
 */
  __pyx_tuple__239 = PyTuple_Pack(3, __pyx_n_s_comm, __pyx_n_s_tag, __pyx_n_s_dupcomm); if (unlikely(!__pyx_tuple__239)) __PYX_ERR(7, 1278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__239);
  __Pyx_GIVEREF(__pyx_tuple__239);
  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_n_s_commctx_intra_2, 1278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(7, 1278, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1290
 * 
 * 
 * def _commctx_inter(             # <<<<<<<<<<<<<<
 *     Intercomm comm: Intercomm,
 * ) -> tuple[Intercomm, int, Intracomm, bool]:
 */
  __pyx_tuple__241 = PyTuple_Pack(5, __pyx_n_s_comm, __pyx_n_s_tag, __pyx_n_s_low_group, __pyx_n_s_dupcomm, __pyx_n_s_localcomm); if (unlikely(!__pyx_tuple__241)) __PYX_ERR(7, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__241);
  __Pyx_GIVEREF(__pyx_tuple__241);
  __pyx_codeobj__242 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__241, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_msgpickle_pxi, __pyx_n_s_commctx_inter_2, 1290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__242)) __PYX_ERR(7, 1290, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":86
 * 
 * 
 * def Get_error_class(int errorcode: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Convert an *error code* into an *error class*.
 */
  __pyx_tuple__243 = PyTuple_Pack(2, __pyx_n_s_errorcode, __pyx_n_s_errorclass); if (unlikely(!__pyx_tuple__243)) __PYX_ERR(20, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__243);
  __Pyx_GIVEREF(__pyx_tuple__243);
  __pyx_codeobj__244 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__243, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Get_error_class, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__244)) __PYX_ERR(20, 86, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":95
 * 
 * 
 * def Get_error_string(int errorcode: int) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return the *error string* for a given *error class* or *error code*.
 */
  __pyx_tuple__245 = PyTuple_Pack(3, __pyx_n_s_errorcode, __pyx_n_s_string, __pyx_n_s_resultlen); if (unlikely(!__pyx_tuple__245)) __PYX_ERR(20, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__245);
  __Pyx_GIVEREF(__pyx_tuple__245);
  __pyx_codeobj__246 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__245, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Get_error_string, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(20, 95, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":105
 * 
 * 
 * def Add_error_class() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error class* to the known error classes.
 */
  __pyx_tuple__247 = PyTuple_Pack(1, __pyx_n_s_errorclass); if (unlikely(!__pyx_tuple__247)) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__247);
  __Pyx_GIVEREF(__pyx_tuple__247);
  __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__247, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Add_error_class, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(20, 105, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":114
 * 
 * 
 * def Remove_error_class(int errorclass: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error class* from the known error classes.
 */
  __pyx_codeobj__249 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__247, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Remove_error_class, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(20, 114, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":121
 * 
 * 
 * def Add_error_code(int errorclass: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error code* to an *error class*.
 */
  __pyx_tuple__250 = PyTuple_Pack(2, __pyx_n_s_errorclass, __pyx_n_s_errorcode); if (unlikely(!__pyx_tuple__250)) __PYX_ERR(20, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__250);
  __Pyx_GIVEREF(__pyx_tuple__250);
  __pyx_codeobj__251 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__250, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Add_error_code, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(20, 121, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":130
 * 
 * 
 * def Remove_error_code(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error code* from the known error codes.
 */
  __pyx_tuple__252 = PyTuple_Pack(1, __pyx_n_s_errorcode); if (unlikely(!__pyx_tuple__252)) __PYX_ERR(20, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__252);
  __Pyx_GIVEREF(__pyx_tuple__252);
  __pyx_codeobj__253 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__252, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Remove_error_code, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(20, 130, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":137
 * 
 * 
 * def Add_error_string(int errorcode: int, string: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Associate an *error string* with an *error class* or *error code*.
 */
  __pyx_tuple__254 = PyTuple_Pack(3, __pyx_n_s_errorcode, __pyx_n_s_string, __pyx_n_s_cstring); if (unlikely(!__pyx_tuple__254)) __PYX_ERR(20, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__254);
  __Pyx_GIVEREF(__pyx_tuple__254);
  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__254, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Add_error_string, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(20, 137, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":146
 * 
 * 
 * def Remove_error_string(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove *error string* association from *error class* or *error code*.
 */
  __pyx_codeobj__256 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__252, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_ErrorCode_pyx, __pyx_n_s_Remove_error_string, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(20, 146, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Exception.pyx":46
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error code.
 */
  __pyx_tuple__257 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_errorcode); if (unlikely(!__pyx_tuple__257)) __PYX_ERR(21, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__257);
  __Pyx_GIVEREF(__pyx_tuple__257);
  __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx, __pyx_n_s_Get_error_code, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(21, 46, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Exception.pyx":59
 *             return self.Get_error_code()
 * 
 *     def Get_error_class(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error class.
 */
  __pyx_tuple__259 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_errorclass); if (unlikely(!__pyx_tuple__259)) __PYX_ERR(21, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__259);
  __Pyx_GIVEREF(__pyx_tuple__259);
  __pyx_codeobj__260 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__259, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx, __pyx_n_s_Get_error_class, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__260)) __PYX_ERR(21, 59, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Exception.pyx":72
 *             return self.Get_error_class()
 * 
 *     def Get_error_string(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Error string.
 */
  __pyx_tuple__261 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_string, __pyx_n_s_resultlen); if (unlikely(!__pyx_tuple__261)) __PYX_ERR(21, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__261);
  __Pyx_GIVEREF(__pyx_tuple__261);
  __pyx_codeobj__262 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__261, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Exception_pyx, __pyx_n_s_Get_error_string, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__262)) __PYX_ERR(21, 72, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":62
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Datatype(self)
 * 
 */
  __pyx_codeobj__263 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_reduce, 62, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(22, 62, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":70
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Datatype:
 *         """
 */
  __pyx_tuple__264 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_handle); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(22, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__264);
  __Pyx_GIVEREF(__pyx_tuple__264);
  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_fromhandle, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(22, 70, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":77
 *         return fromhandle(<MPI_Datatype> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_codeobj__266 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_free, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__266)) __PYX_ERR(22, 77, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":86
 *     # ------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of bytes occupied by entries in the datatype.
 */
  __pyx_tuple__267 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__267)) __PYX_ERR(22, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__267);
  __Pyx_GIVEREF(__pyx_tuple__267);
  __pyx_codeobj__268 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_size, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__268)) __PYX_ERR(22, 86, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":101
 *             return size
 * 
 *     def Get_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return lower bound and extent of datatype.
 */
  __pyx_tuple__269 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_lb_2, __pyx_n_s_extent); if (unlikely(!__pyx_tuple__269)) __PYX_ERR(22, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__269);
  __Pyx_GIVEREF(__pyx_tuple__269);
  __pyx_codeobj__270 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__269, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_extent, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__270)) __PYX_ERR(22, 101, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":133
 *     # ---------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a datatype.
 */
  __pyx_tuple__271 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__271)) __PYX_ERR(22, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__271);
  __Pyx_GIVEREF(__pyx_tuple__271);
  __pyx_codeobj__272 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__271, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Dup, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__272)) __PYX_ERR(22, 133, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":143
 *     Create_dup = Dup  #: convenience alias
 * 
 *     def Create_contiguous(self, Count count: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a contiguous datatype.
 */
  __pyx_tuple__273 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_count, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__273)) __PYX_ERR(22, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__273);
  __Pyx_GIVEREF(__pyx_tuple__273);
  __pyx_codeobj__274 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__273, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_contiguous, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__274)) __PYX_ERR(22, 143, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":153
 *         return datatype
 * 
 *     def Create_vector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */
  __pyx_tuple__275 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_count, __pyx_n_s_blocklength, __pyx_n_s_stride, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__275)) __PYX_ERR(22, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__275);
  __Pyx_GIVEREF(__pyx_tuple__275);
  __pyx_codeobj__276 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__275, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_vector, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__276)) __PYX_ERR(22, 153, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":168
 *         return datatype
 * 
 *     def Create_hvector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */
  __pyx_codeobj__277 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__275, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_hvector, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(22, 168, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":183
 *         return datatype
 * 
 *     def Create_indexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */
  __pyx_tuple__278 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_blocklengths, __pyx_n_s_displacements, __pyx_n_s_count, __pyx_n_s_iblen, __pyx_n_s_idisp, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(22, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__278);
  __Pyx_GIVEREF(__pyx_tuple__278);
  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__278, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_indexed, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(22, 183, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":201
 *         return datatype
 * 
 *     def Create_hindexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */
  __pyx_codeobj__280 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__278, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_hindexed, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__280)) __PYX_ERR(22, 201, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":222
 *         return datatype
 * 
 *     def Create_indexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */
  __pyx_tuple__281 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_blocklength, __pyx_n_s_displacements, __pyx_n_s_count, __pyx_n_s_idisp, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__281)) __PYX_ERR(22, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__281);
  __Pyx_GIVEREF(__pyx_tuple__281);
  __pyx_codeobj__282 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__281, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_indexed_block, 222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__282)) __PYX_ERR(22, 222, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":239
 *         return datatype
 * 
 *     def Create_hindexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */
  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__281, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_hindexed_block, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(22, 239, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":258
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_struct(
 *         cls,
 */
  __pyx_tuple__284 = PyTuple_Pack(9, __pyx_n_s_cls, __pyx_n_s_blocklengths, __pyx_n_s_displacements, __pyx_n_s_datatypes, __pyx_n_s_count, __pyx_n_s_iblen, __pyx_n_s_idisp, __pyx_n_s_ptype, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__284)) __PYX_ERR(22, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__284);
  __Pyx_GIVEREF(__pyx_tuple__284);
  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__284, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_struct, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(22, 258, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":285
 *     # -----------------------------
 * 
 *     def Create_subarray(             # <<<<<<<<<<<<<<
 *         self,
 *         sizes: Sequence[int],
 */
  __pyx_tuple__286 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_sizes, __pyx_n_s_subsizes, __pyx_n_s_starts, __pyx_n_s_order, __pyx_n_s_ndims, __pyx_n_s_isizes, __pyx_n_s_isubsizes, __pyx_n_s_istarts, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__286)) __PYX_ERR(22, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__286);
  __Pyx_GIVEREF(__pyx_tuple__286);
  __pyx_codeobj__287 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__286, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_subarray, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(22, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":312
 *     # --------------------------------------
 * 
 *     def Create_darray(             # <<<<<<<<<<<<<<
 *         self,
 *         int size: int,
 */
  __pyx_tuple__288 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_size_2, __pyx_n_s_rank, __pyx_n_s_gsizes, __pyx_n_s_distribs, __pyx_n_s_dargs, __pyx_n_s_psizes, __pyx_n_s_order, __pyx_n_s_ndims, __pyx_n_s_igsizes, __pyx_n_s_idistribs, __pyx_n_s_idargs, __pyx_n_s_ipsizes, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__288)) __PYX_ERR(22, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__288);
  __Pyx_GIVEREF(__pyx_tuple__288);
  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(8, 0, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__288, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_darray, 312, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(22, 312, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":343
 *     # -------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_value_index(
 *         cls,
 */
  __pyx_tuple__290 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_value, __pyx_n_s_index, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(22, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__290);
  __Pyx_GIVEREF(__pyx_tuple__290);
  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_value_index, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(22, 343, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":360
 *     # ------------------------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_integer(cls, int r: int) -> Self:
 *         """
 */
  __pyx_tuple__292 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_r, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__292)) __PYX_ERR(22, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__292);
  __Pyx_GIVEREF(__pyx_tuple__292);
  __pyx_codeobj__293 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__292, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_f90_integer, 360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(22, 360, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":369
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_real(cls, int p: int, int r: int) -> Self:
 *         """
 */
  __pyx_tuple__294 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_p, __pyx_n_s_r, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__294);
  __Pyx_GIVEREF(__pyx_tuple__294);
  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_f90_real, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(22, 369, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":378
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_complex(cls, int p: int, int r: int) -> Self:
 *         """
 */
  __pyx_codeobj__296 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_f90_complex, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__296)) __PYX_ERR(22, 378, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":387
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Match_size(cls, int typeclass: int, int size: int) -> Self:
 *         """
 */
  __pyx_tuple__297 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_typeclass, __pyx_n_s_size_2, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__297)) __PYX_ERR(22, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__297);
  __Pyx_GIVEREF(__pyx_tuple__297);
  __pyx_codeobj__298 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__297, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Match_size, 387, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__298)) __PYX_ERR(22, 387, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":399
 *     # ------------------------
 * 
 *     def Commit(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Commit the datatype.
 */
  __pyx_codeobj__299 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Commit, 399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(22, 399, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":406
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free the datatype.
 */
  __pyx_tuple__300 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_t, __pyx_n_s_p); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(22, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__300);
  __Pyx_GIVEREF(__pyx_tuple__300);
  __pyx_codeobj__301 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__300, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Free, 406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(22, 406, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":485
 *     # -----------------
 * 
 *     def Create_resized(self, Count lb: int, Count extent: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype with a new lower bound and extent.
 */
  __pyx_tuple__302 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_lb_2, __pyx_n_s_extent, __pyx_n_s_datatype); if (unlikely(!__pyx_tuple__302)) __PYX_ERR(22, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__302);
  __Pyx_GIVEREF(__pyx_tuple__302);
  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__302, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_resized, 485, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(22, 485, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":496
 *     Resized = Create_resized  #: compatibility alias
 * 
 *     def Get_true_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the true lower bound and extent of a datatype.
 */
  __pyx_codeobj__304 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__269, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_true_extent, 496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__304)) __PYX_ERR(22, 496, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":532
 *     # -------------------
 * 
 *     def Get_envelope(self) -> tuple[int, int, int, int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of input arguments used to create a datatype.
 */
  __pyx_tuple__305 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_combiner, __pyx_n_s_ni, __pyx_n_s_na, __pyx_n_s_nc, __pyx_n_s_nd); if (unlikely(!__pyx_tuple__305)) __PYX_ERR(22, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__305);
  __Pyx_GIVEREF(__pyx_tuple__305);
  __pyx_codeobj__306 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__305, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_envelope, 532, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__306)) __PYX_ERR(22, 532, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":547
 *             return self.Get_envelope()
 * 
 *     def Get_contents(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], list[int], list[Datatype]]:
 *         """
 */
  __pyx_tuple__307 = PyTuple_Pack(22, __pyx_n_s_self, __pyx_n_s_combiner, __pyx_n_s_ni, __pyx_n_s_na, __pyx_n_s_nc, __pyx_n_s_nd, __pyx_n_s_i, __pyx_n_s_a, __pyx_n_s_c, __pyx_n_s_d, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_unused3, __pyx_n_s_unused4, __pyx_n_s_integers, __pyx_n_s_addresses, __pyx_n_s_counts, __pyx_n_s_datatypes, __pyx_n_s_k, __pyx_n_s_k, __pyx_n_s_k, __pyx_n_s_k); if (unlikely(!__pyx_tuple__307)) __PYX_ERR(22, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__307);
  __Pyx_GIVEREF(__pyx_tuple__307);
  __pyx_codeobj__308 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 22, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__307, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_contents, 547, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__308)) __PYX_ERR(22, 547, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":578
 *             return self.Get_contents()
 * 
 *     def decode(self) -> tuple[Datatype, str, dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         """
 *         Convenience method for decoding a datatype.
 */
  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_decode, 578, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(22, 578, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":610
 *     # ---------------
 * 
 *     def Pack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */
  __pyx_tuple__310 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_inbuf, __pyx_n_s_outbuf, __pyx_n_s_position, __pyx_n_s_comm, __pyx_n_s_lb_2, __pyx_n_s_extent, __pyx_n_s_ibptr, __pyx_n_s_obptr, __pyx_n_s_iblen, __pyx_n_s_oblen, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_icount, __pyx_n_s_ocount); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(22, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__310);
  __Pyx_GIVEREF(__pyx_tuple__310);
  __pyx_codeobj__311 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Pack, 610, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(22, 610, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":636
 *         return position
 * 
 *     def Unpack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */
  __pyx_tuple__312 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_inbuf, __pyx_n_s_position, __pyx_n_s_outbuf, __pyx_n_s_comm, __pyx_n_s_lb_2, __pyx_n_s_extent, __pyx_n_s_ibptr, __pyx_n_s_obptr, __pyx_n_s_iblen, __pyx_n_s_oblen, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_icount, __pyx_n_s_ocount); if (unlikely(!__pyx_tuple__312)) __PYX_ERR(22, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__312);
  __Pyx_GIVEREF(__pyx_tuple__312);
  __pyx_codeobj__313 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__312, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Unpack, 636, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__313)) __PYX_ERR(22, 636, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":662
 *         return position
 * 
 *     def Pack_size(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */
  __pyx_tuple__314 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_count, __pyx_n_s_comm, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__314)) __PYX_ERR(22, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__314);
  __Pyx_GIVEREF(__pyx_tuple__314);
  __pyx_codeobj__315 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__314, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Pack_size, 662, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__315)) __PYX_ERR(22, 662, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":681
 *     # -------------------------
 * 
 *     def Pack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */
  __pyx_tuple__316 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_datarep, __pyx_n_s_inbuf, __pyx_n_s_outbuf, __pyx_n_s_position, __pyx_n_s_cdatarep, __pyx_n_s_lb_2, __pyx_n_s_extent, __pyx_n_s_ibptr, __pyx_n_s_obptr, __pyx_n_s_iblen, __pyx_n_s_oblen, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_icount, __pyx_n_s_ocount); if (unlikely(!__pyx_tuple__316)) __PYX_ERR(22, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__316);
  __Pyx_GIVEREF(__pyx_tuple__316);
  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 16, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__316, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Pack_external, 681, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(22, 681, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":711
 *         return position
 * 
 *     def Unpack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */
  __pyx_tuple__318 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_datarep, __pyx_n_s_inbuf, __pyx_n_s_position, __pyx_n_s_outbuf, __pyx_n_s_cdatarep, __pyx_n_s_lb_2, __pyx_n_s_extent, __pyx_n_s_ibptr, __pyx_n_s_obptr, __pyx_n_s_iblen, __pyx_n_s_oblen, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_icount, __pyx_n_s_ocount); if (unlikely(!__pyx_tuple__318)) __PYX_ERR(22, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__318);
  __Pyx_GIVEREF(__pyx_tuple__318);
  __pyx_codeobj__319 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 16, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__318, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Unpack_external, 711, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__319)) __PYX_ERR(22, 711, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":741
 *         return position
 * 
 *     def Pack_external_size(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */
  __pyx_tuple__320 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_datarep, __pyx_n_s_count, __pyx_n_s_cdatarep, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__320)) __PYX_ERR(22, 741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__320);
  __Pyx_GIVEREF(__pyx_tuple__320);
  __pyx_codeobj__321 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__320, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Pack_external_size, 741, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__321)) __PYX_ERR(22, 741, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":763
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */
  __pyx_tuple__322 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_keyval, __pyx_n_s_attrval, __pyx_n_s_flag); if (unlikely(!__pyx_tuple__322)) __PYX_ERR(22, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__322);
  __Pyx_GIVEREF(__pyx_tuple__322);
  __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__322, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_attr, 763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(22, 763, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":775
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */
  __pyx_tuple__324 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_keyval, __pyx_n_s_attrval); if (unlikely(!__pyx_tuple__324)) __PYX_ERR(22, 775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__324);
  __Pyx_GIVEREF(__pyx_tuple__324);
  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Set_attr, 775, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(22, 775, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":781
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */
  __pyx_tuple__326 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_keyval); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(22, 781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__326);
  __Pyx_GIVEREF(__pyx_tuple__326);
  __pyx_codeobj__327 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__326, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Delete_attr, 781, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(22, 781, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":787
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */
  __pyx_tuple__328 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_copy_fn, __pyx_n_s_delete_fn, __pyx_n_s_nopython, __pyx_n_s_keyval, __pyx_n_s_copy_2, __pyx_n_s_del, __pyx_n_s_state); if (unlikely(!__pyx_tuple__328)) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__328);
  __Pyx_GIVEREF(__pyx_tuple__328);
  __pyx_codeobj__329 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__328, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Create_keyval, 787, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__329)) __PYX_ERR(22, 787, __pyx_L1_error)
  __pyx_tuple__330 = PyTuple_Pack(3, Py_None, Py_None, Py_False); if (unlikely(!__pyx_tuple__330)) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__330);
  __Pyx_GIVEREF(__pyx_tuple__330);

  /* "src/mpi4py/MPI.src/Datatype.pyx":805
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */
  __pyx_tuple__331 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_keyval, __pyx_n_s_keyval_save); if (unlikely(!__pyx_tuple__331)) __PYX_ERR(22, 805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__331);
  __Pyx_GIVEREF(__pyx_tuple__331);
  __pyx_codeobj__332 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__331, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Free_keyval, 805, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__332)) __PYX_ERR(22, 805, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":818
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this datatype.
 */
  __pyx_tuple__333 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_name_2, __pyx_n_s_nlen); if (unlikely(!__pyx_tuple__333)) __PYX_ERR(22, 818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__333);
  __Pyx_GIVEREF(__pyx_tuple__333);
  __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_name, 818, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(22, 818, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":827
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this datatype.
 */
  __pyx_tuple__335 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_name_2, __pyx_n_s_cname); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(22, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__335);
  __Pyx_GIVEREF(__pyx_tuple__335);
  __pyx_codeobj__336 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Set_name, 827, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__336)) __PYX_ERR(22, 827, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":846
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_py2f, 846, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(22, 846, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":851
 *         return MPI_Type_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Datatype:
 *         """
 */
  __pyx_tuple__338 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__338)) __PYX_ERR(22, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__338);
  __Pyx_GIVEREF(__pyx_tuple__338);
  __pyx_codeobj__339 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_f2py, 851, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__339)) __PYX_ERR(22, 851, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":860
 *     # -----------------------------
 * 
 *     def tocode(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get character code or type string from predefined MPI datatype.
 */
  __pyx_tuple__340 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_s); if (unlikely(!__pyx_tuple__340)) __PYX_ERR(22, 860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__340);
  __Pyx_GIVEREF(__pyx_tuple__340);
  __pyx_codeobj__341 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__340, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_tocode, 860, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__341)) __PYX_ERR(22, 860, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":868
 *         raise ValueError("cannot map to character code or type string")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromcode(cls, code: str) -> Datatype:
 *         """
 */
  __pyx_tuple__342 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_code); if (unlikely(!__pyx_tuple__342)) __PYX_ERR(22, 868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__342);
  __Pyx_GIVEREF(__pyx_tuple__342);
  __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_fromcode, 868, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(22, 868, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":898
 * # -----------------
 * 
 * def Get_address(location: Buffer | Bottom) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory.
 */
  __pyx_tuple__344 = PyTuple_Pack(3, __pyx_n_s_location, __pyx_n_s_baseptr, __pyx_n_s_address); if (unlikely(!__pyx_tuple__344)) __PYX_ERR(22, 898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__344);
  __Pyx_GIVEREF(__pyx_tuple__344);
  __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__344, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Get_address, 898, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(22, 898, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":910
 * 
 * 
 * def Aint_add(Aint base: int, Aint disp: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the sum of base address and displacement.
 */
  __pyx_tuple__346 = PyTuple_Pack(2, __pyx_n_s_base, __pyx_n_s_disp); if (unlikely(!__pyx_tuple__346)) __PYX_ERR(22, 910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__346);
  __Pyx_GIVEREF(__pyx_tuple__346);
  __pyx_codeobj__347 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__346, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Aint_add, 910, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__347)) __PYX_ERR(22, 910, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":917
 * 
 * 
 * def Aint_diff(Aint addr1: int, Aint addr2: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the difference between absolute addresses.
 */
  __pyx_tuple__348 = PyTuple_Pack(2, __pyx_n_s_addr1, __pyx_n_s_addr2); if (unlikely(!__pyx_tuple__348)) __PYX_ERR(22, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__348);
  __Pyx_GIVEREF(__pyx_tuple__348);
  __pyx_codeobj__349 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__348, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Datatype_pyx, __pyx_n_s_Aint_diff, 917, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__349)) __PYX_ERR(22, 917, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":24
 *         raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 *     def __reduce__(self) -> tuple[Any, tuple[Any, ...], dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 */
  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_reduce, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(23, 24, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":27
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 *     def __getstate__(self) -> dict[str, int]:             # <<<<<<<<<<<<<<
 *         cdef dict state = {
 *             'source': self.Get_source(),
 */
  __pyx_tuple__351 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_state); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(23, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__351);
  __Pyx_GIVEREF(__pyx_tuple__351);
  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_getstate, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(23, 27, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":43
 *         return state
 * 
 *     def __setstate__(self, state: dict[str, int]) -> None:             # <<<<<<<<<<<<<<
 *         self.Set_source(state['source'])
 *         self.Set_tag(state['tag'])
 */
  __pyx_codeobj__353 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_setstate, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__353)) __PYX_ERR(23, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":52
 *             self.Set_cancelled(state['cancelled'])
 * 
 *     def Get_source(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message source.
 */
  __pyx_tuple__354 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_source); if (unlikely(!__pyx_tuple__354)) __PYX_ERR(23, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__354);
  __Pyx_GIVEREF(__pyx_tuple__354);
  __pyx_codeobj__355 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__354, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Get_source, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__355)) __PYX_ERR(23, 52, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":60
 *         return source
 * 
 *     def Set_source(self, int source: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message source.
 */
  __pyx_codeobj__356 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__354, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Set_source, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__356)) __PYX_ERR(23, 60, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":74
 *             self.Set_source(value)
 * 
 *     def Get_tag(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message tag.
 */
  __pyx_tuple__357 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__357)) __PYX_ERR(23, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__357);
  __Pyx_GIVEREF(__pyx_tuple__357);
  __pyx_codeobj__358 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__357, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Get_tag, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__358)) __PYX_ERR(23, 74, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":82
 *         return tag
 * 
 *     def Set_tag(self, int tag: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message tag.
 */
  __pyx_codeobj__359 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__357, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Set_tag, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(23, 82, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":96
 *             self.Set_tag(value)
 * 
 *     def Get_error(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message error.
 */
  __pyx_tuple__360 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_error); if (unlikely(!__pyx_tuple__360)) __PYX_ERR(23, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__360);
  __Pyx_GIVEREF(__pyx_tuple__360);
  __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__360, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Get_error, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(23, 96, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":104
 *         return error
 * 
 *     def Set_error(self, int error: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message error.
 */
  __pyx_codeobj__362 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__360, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Set_error, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__362)) __PYX_ERR(23, 104, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":118
 *             self.Set_error(value)
 * 
 *     def Get_count(self, Datatype datatype: Datatype = BYTE) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of *top level* elements.
 */
  __pyx_tuple__363 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_datatype, __pyx_n_s_dtype, __pyx_n_s_count); if (unlikely(!__pyx_tuple__363)) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__363);
  __Pyx_GIVEREF(__pyx_tuple__363);
  __pyx_codeobj__364 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__363, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Get_count, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__364)) __PYX_ERR(23, 118, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":135
 *             self.Set_elements(__BYTE__, value)
 * 
 *     def Get_elements(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of basic elements in a datatype.
 */
  __pyx_tuple__365 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_datatype, __pyx_n_s_dtype, __pyx_n_s_elements); if (unlikely(!__pyx_tuple__365)) __PYX_ERR(23, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__365);
  __Pyx_GIVEREF(__pyx_tuple__365);
  __pyx_codeobj__366 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__365, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Get_elements, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__366)) __PYX_ERR(23, 135, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":144
 *         return elements
 * 
 *     def Set_elements(             # <<<<<<<<<<<<<<
 *         self,
 *         Datatype datatype: Datatype,
 */
  __pyx_tuple__367 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_datatype, __pyx_n_s_count, __pyx_n_s_dtype); if (unlikely(!__pyx_tuple__367)) __PYX_ERR(23, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__367);
  __Pyx_GIVEREF(__pyx_tuple__367);
  __pyx_codeobj__368 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__367, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Set_elements, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__368)) __PYX_ERR(23, 144, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":158
 *         CHKERR( MPI_Status_set_elements_c(&self.ob_mpi, dtype, count) )
 * 
 *     def Is_cancelled(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a request was cancelled.
 */
  __pyx_tuple__369 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_flag); if (unlikely(!__pyx_tuple__369)) __PYX_ERR(23, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__369);
  __Pyx_GIVEREF(__pyx_tuple__369);
  __pyx_codeobj__370 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Is_cancelled, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__370)) __PYX_ERR(23, 158, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":166
 *         return <bint>flag
 * 
 *     def Set_cancelled(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the cancelled state associated with a status.
 */
  __pyx_codeobj__371 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_Set_cancelled, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__371)) __PYX_ERR(23, 166, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":186
 *     # --------------
 * 
 *     def py2f(self) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_tuple__372 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_status, __pyx_n_s_n, __pyx_n_s_c_status, __pyx_n_s_f_status, __pyx_n_s_unused, __pyx_n_s_i); if (unlikely(!__pyx_tuple__372)) __PYX_ERR(23, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__372);
  __Pyx_GIVEREF(__pyx_tuple__372);
  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__372, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_py2f, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(23, 186, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":197
 *         return [f_status[i] for i in range(n)]
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: list[int]) -> Self:
 *         """
 */
  __pyx_tuple__374 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_arg, __pyx_n_s_status, __pyx_n_s_c_status, __pyx_n_s_n, __pyx_n_s_f_status, __pyx_n_s_unused, __pyx_n_s_i); if (unlikely(!__pyx_tuple__374)) __PYX_ERR(23, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__374);
  __Pyx_GIVEREF(__pyx_tuple__374);
  __pyx_codeobj__375 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__374, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Status_pyx, __pyx_n_s_f2py, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__375)) __PYX_ERR(23, 197, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__376 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_reduce, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__376)) __PYX_ERR(24, 19, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Request:
 *         """
 */
  __pyx_codeobj__377 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_fromhandle, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(24, 27, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":38
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */
  __pyx_codeobj__378 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_free, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__378)) __PYX_ERR(24, 38, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":47
 *     # ---------------------
 * 
 *     def Wait(self, Status status: Status | None = None) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Wait for a non-blocking operation to complete.
 */
  __pyx_tuple__379 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_status, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__379)) __PYX_ERR(24, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__379);
  __Pyx_GIVEREF(__pyx_tuple__379);
  __pyx_codeobj__380 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__379, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Wait, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__380)) __PYX_ERR(24, 47, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":58
 *         return True
 * 
 *     def Test(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test for the completion of a non-blocking operation.
 */
  __pyx_tuple__381 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_status, __pyx_n_s_flag, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__381)) __PYX_ERR(24, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__381);
  __Pyx_GIVEREF(__pyx_tuple__381);
  __pyx_codeobj__382 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__381, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Test, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__382)) __PYX_ERR(24, 58, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":70
 *         return <bint>flag
 * 
 *     def Get_status(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Non-destructive test for the completion of a request.
 */
  __pyx_codeobj__383 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__381, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Get_status, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__383)) __PYX_ERR(24, 70, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":83
 *     # --------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitany(
 *         cls,
 */
  __pyx_tuple__384 = PyTuple_Pack(6, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_status, __pyx_n_s_index, __pyx_n_s_statusp, __pyx_n_s_rs); if (unlikely(!__pyx_tuple__384)) __PYX_ERR(24, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__384);
  __Pyx_GIVEREF(__pyx_tuple__384);
  __pyx_codeobj__385 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__384, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Waitany, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__385)) __PYX_ERR(24, 83, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":103
 *         return index
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testany(
 *         cls,
 */
  __pyx_tuple__386 = PyTuple_Pack(7, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_status, __pyx_n_s_index, __pyx_n_s_flag, __pyx_n_s_statusp, __pyx_n_s_rs); if (unlikely(!__pyx_tuple__386)) __PYX_ERR(24, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__386);
  __Pyx_GIVEREF(__pyx_tuple__386);
  __pyx_codeobj__387 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__386, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Testany, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__387)) __PYX_ERR(24, 103, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":124
 *         return (index, <bint>flag)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_any(
 *         cls,
 */
  __pyx_codeobj__388 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__386, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Get_status_any, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__388)) __PYX_ERR(24, 124, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":145
 *         return (index, <bint>flag)  # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitall(
 *         cls,
 */
  __pyx_tuple__389 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_statuses, __pyx_n_s_rs); if (unlikely(!__pyx_tuple__389)) __PYX_ERR(24, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__389);
  __Pyx_GIVEREF(__pyx_tuple__389);
  __pyx_codeobj__390 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__389, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Waitall, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__390)) __PYX_ERR(24, 145, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":163
 *         return True
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testall(
 *         cls,
 */
  __pyx_tuple__391 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_statuses, __pyx_n_s_flag, __pyx_n_s_rs); if (unlikely(!__pyx_tuple__391)) __PYX_ERR(24, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__391);
  __Pyx_GIVEREF(__pyx_tuple__391);
  __pyx_codeobj__392 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Testall, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__392)) __PYX_ERR(24, 163, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":182
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_all(
 *         cls,
 */
  __pyx_codeobj__393 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__391, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Get_status_all, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__393)) __PYX_ERR(24, 182, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":201
 *         return <bint>flag         # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitsome(
 *         cls,
 */
  __pyx_tuple__394 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_statuses, __pyx_n_s_indices, __pyx_n_s_rs); if (unlikely(!__pyx_tuple__394)) __PYX_ERR(24, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__394);
  __Pyx_GIVEREF(__pyx_tuple__394);
  __pyx_codeobj__395 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__394, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Waitsome, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__395)) __PYX_ERR(24, 201, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":222
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testsome(
 *         cls,
 */
  __pyx_codeobj__396 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__394, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Testsome, 222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__396)) __PYX_ERR(24, 222, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":243
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_some(
 *         cls,
 */
  __pyx_codeobj__397 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__394, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Get_status_some, 243, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__397)) __PYX_ERR(24, 243, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":267
 *     # ------
 * 
 *     def Cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */
  __pyx_codeobj__398 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Cancel, 267, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__398)) __PYX_ERR(24, 267, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":276
 *     # ------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communication request.
 */
  __pyx_codeobj__399 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Free, 276, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__399)) __PYX_ERR(24, 276, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":285
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__400 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_py2f, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__400)) __PYX_ERR(24, 285, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":290
 *         return MPI_Request_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Request:
 *         """
 */
  __pyx_codeobj__401 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_f2py, 290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__401)) __PYX_ERR(24, 290, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":303
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */
  __pyx_tuple__402 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_status, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__402)) __PYX_ERR(24, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__402);
  __Pyx_GIVEREF(__pyx_tuple__402);
  __pyx_codeobj__403 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__402, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_wait, 303, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__403)) __PYX_ERR(24, 303, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":313
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
 */
  __pyx_tuple__404 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_status, __pyx_n_s_flag, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__404)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__404);
  __Pyx_GIVEREF(__pyx_tuple__404);
  __pyx_codeobj__405 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__404, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_test, 313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__405)) __PYX_ERR(24, 313, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":324
 *         return (<bint>flag, msg)
 * 
 *     def get_status(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */
  __pyx_codeobj__406 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__381, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_get_status, 324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__406)) __PYX_ERR(24, 324, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":337
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
 */
  __pyx_tuple__407 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_status, __pyx_n_s_index, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__407)) __PYX_ERR(24, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__407);
  __Pyx_GIVEREF(__pyx_tuple__407);
  __pyx_codeobj__408 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__407, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_waitany, 337, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__408)) __PYX_ERR(24, 337, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":350
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
 */
  __pyx_tuple__409 = PyTuple_Pack(6, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_status, __pyx_n_s_index, __pyx_n_s_flag, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__409)) __PYX_ERR(24, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__409);
  __Pyx_GIVEREF(__pyx_tuple__409);
  __pyx_codeobj__410 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_testany, 350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__410)) __PYX_ERR(24, 350, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":364
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
 */
  __pyx_tuple__411 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_status); if (unlikely(!__pyx_tuple__411)) __PYX_ERR(24, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__411);
  __Pyx_GIVEREF(__pyx_tuple__411);
  __pyx_codeobj__412 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__411, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_get_status_any, 364, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__412)) __PYX_ERR(24, 364, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":375
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
 */
  __pyx_tuple__413 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_statuses, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__413)) __PYX_ERR(24, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__413);
  __Pyx_GIVEREF(__pyx_tuple__413);
  __pyx_codeobj__414 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__413, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_waitall, 375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__414)) __PYX_ERR(24, 375, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":387
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
 */
  __pyx_tuple__415 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_statuses, __pyx_n_s_flag, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__415)) __PYX_ERR(24, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__415);
  __Pyx_GIVEREF(__pyx_tuple__415);
  __pyx_codeobj__416 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__415, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_testall, 387, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__416)) __PYX_ERR(24, 387, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":400
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
 */
  __pyx_tuple__417 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_statuses); if (unlikely(!__pyx_tuple__417)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__417);
  __Pyx_GIVEREF(__pyx_tuple__417);
  __pyx_codeobj__418 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__417, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_get_status_all, 400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__418)) __PYX_ERR(24, 400, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":411
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
 */
  __pyx_codeobj__419 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__417, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_waitsome, 411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__419)) __PYX_ERR(24, 411, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":422
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
 */
  __pyx_codeobj__420 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__417, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_testsome, 422, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__420)) __PYX_ERR(24, 422, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":433
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
 */
  __pyx_codeobj__421 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__417, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_get_status_some, 433, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__421)) __PYX_ERR(24, 433, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":444
 *         return Request.Get_status_some(requests, statuses)
 * 
 *     def cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */
  __pyx_codeobj__422 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_cancel, 444, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__422)) __PYX_ERR(24, 444, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":460
 *         <void>(<Prequest?>request)
 * 
 *     def Start(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Initiate a communication with a persistent request.
 */
  __pyx_codeobj__423 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Start, 460, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__423)) __PYX_ERR(24, 460, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":466
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Startall(cls, requests: list[Prequest]) -> None:
 *         """
 */
  __pyx_tuple__424 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_requests, __pyx_n_s_rs); if (unlikely(!__pyx_tuple__424)) __PYX_ERR(24, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__424);
  __Pyx_GIVEREF(__pyx_tuple__424);
  __pyx_codeobj__425 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__424, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Startall, 466, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__425)) __PYX_ERR(24, 466, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":481
 *     # ----------------------
 * 
 *     def Pready(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */
  __pyx_tuple__426 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_partition); if (unlikely(!__pyx_tuple__426)) __PYX_ERR(24, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__426);
  __Pyx_GIVEREF(__pyx_tuple__426);
  __pyx_codeobj__427 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__426, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Pready, 481, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__427)) __PYX_ERR(24, 481, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":490
 *         CHKERR( MPI_Pready(partition, self.ob_mpi) )
 * 
 *     def Pready_range(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition_low: int,
 */
  __pyx_tuple__428 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_partition_low, __pyx_n_s_partition_high); if (unlikely(!__pyx_tuple__428)) __PYX_ERR(24, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__428);
  __Pyx_GIVEREF(__pyx_tuple__428);
  __pyx_codeobj__429 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__428, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Pready_range, 490, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__429)) __PYX_ERR(24, 490, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":500
 *         CHKERR( MPI_Pready_range(partition_low, partition_high, self.ob_mpi) )
 * 
 *     def Pready_list(             # <<<<<<<<<<<<<<
 *         self,
 *         partitions: Sequence[int],
 */
  __pyx_tuple__430 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_partitions, __pyx_n_s_length, __pyx_n_s_array_of_partitions); if (unlikely(!__pyx_tuple__430)) __PYX_ERR(24, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__430);
  __Pyx_GIVEREF(__pyx_tuple__430);
  __pyx_codeobj__431 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__430, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Pready_list, 500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__431)) __PYX_ERR(24, 500, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":511
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )
 * 
 *     def Parrived(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */
  __pyx_tuple__432 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_partition, __pyx_n_s_flag); if (unlikely(!__pyx_tuple__432)) __PYX_ERR(24, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__432);
  __Pyx_GIVEREF(__pyx_tuple__432);
  __pyx_codeobj__433 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__432, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Parrived, 511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__433)) __PYX_ERR(24, 511, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":533
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
 */
  __pyx_tuple__434 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_query_fn, __pyx_n_s_free_fn, __pyx_n_s_cancel_fn, __pyx_n_s_args, __pyx_n_s_kwargs, __pyx_n_s_request, __pyx_n_s_state); if (unlikely(!__pyx_tuple__434)) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__434);
  __Pyx_GIVEREF(__pyx_tuple__434);
  __pyx_codeobj__435 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__434, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Start, 533, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__435)) __PYX_ERR(24, 533, __pyx_L1_error)
  __pyx_tuple__436 = PyTuple_Pack(5, Py_None, Py_None, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__436)) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__436);
  __Pyx_GIVEREF(__pyx_tuple__436);

  /* "src/mpi4py/MPI.src/Request.pyx":555
 *         return request
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */
  __pyx_tuple__437 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_grequest); if (unlikely(!__pyx_tuple__437)) __PYX_ERR(24, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__437);
  __Pyx_GIVEREF(__pyx_tuple__437);
  __pyx_codeobj__438 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__437, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_Complete, 555, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__438)) __PYX_ERR(24, 555, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Request.pyx":567
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 * 
 *     def complete(self, obj: Any = None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */
  __pyx_codeobj__439 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Request_pyx, __pyx_n_s_complete, 567, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__439)) __PYX_ERR(24, 567, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__440 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_reduce, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__440)) __PYX_ERR(25, 19, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Message:
 *         """
 */
  __pyx_codeobj__441 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_fromhandle, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__441)) __PYX_ERR(25, 27, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":34
 *         return fromhandle(<MPI_Message> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Do nothing.
 */
  __pyx_codeobj__442 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_free, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__442)) __PYX_ERR(25, 34, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":43
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Probe(
 *         cls,
 */
  __pyx_tuple__443 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_comm, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_cmessage, __pyx_n_s_statusp, __pyx_n_s_message); if (unlikely(!__pyx_tuple__443)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__443);
  __Pyx_GIVEREF(__pyx_tuple__443);
  __pyx_codeobj__444 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__443, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_Probe, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__444)) __PYX_ERR(25, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":62
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Iprobe(
 *         cls,
 */
  __pyx_tuple__445 = PyTuple_Pack(9, __pyx_n_s_cls, __pyx_n_s_comm, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_flag, __pyx_n_s_cmessage, __pyx_n_s_statusp, __pyx_n_s_message); if (unlikely(!__pyx_tuple__445)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__445);
  __Pyx_GIVEREF(__pyx_tuple__445);
  __pyx_codeobj__446 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__445, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_Iprobe, 62, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__446)) __PYX_ERR(25, 62, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":86
 *     # ----------------
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__447 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_status, __pyx_n_s_message, __pyx_n_s_source, __pyx_n_s_rmsg, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__447)) __PYX_ERR(25, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__447);
  __Pyx_GIVEREF(__pyx_tuple__447);
  __pyx_codeobj__448 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__447, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_Recv, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__448)) __PYX_ERR(25, 86, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":106
 *             self.ob_mpi = message
 * 
 *     def Irecv(self, buf: BufSpec) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */
  __pyx_tuple__449 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_message, __pyx_n_s_source, __pyx_n_s_rmsg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__449)) __PYX_ERR(25, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__449);
  __Pyx_GIVEREF(__pyx_tuple__449);
  __pyx_codeobj__450 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__449, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_Irecv, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__450)) __PYX_ERR(25, 106, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":127
 *     # --------------------
 *     #
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def probe(
 *         cls,
 */
  __pyx_tuple__451 = PyTuple_Pack(7, __pyx_n_s_cls, __pyx_n_s_comm, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_message, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__451)) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__451);
  __Pyx_GIVEREF(__pyx_tuple__451);
  __pyx_codeobj__452 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__451, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_probe, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__452)) __PYX_ERR(25, 127, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":144
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def iprobe(
 *         cls,
 */
  __pyx_tuple__453 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_comm, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_flag, __pyx_n_s_message, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__453)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__453);
  __Pyx_GIVEREF(__pyx_tuple__453);
  __pyx_codeobj__454 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_iprobe, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__454)) __PYX_ERR(25, 144, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":163
 *         return message
 * 
 *     def recv(self, Status status: Status | None = None) -> Any:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking receive of matched message.
 */
  __pyx_tuple__455 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_status, __pyx_n_s_rmsg, __pyx_n_s_message, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__455)) __PYX_ERR(25, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__455);
  __Pyx_GIVEREF(__pyx_tuple__455);
  __pyx_codeobj__456 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__455, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_recv, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__456)) __PYX_ERR(25, 163, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":175
 *         return rmsg
 * 
 *     def irecv(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */
  __pyx_tuple__457 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_rmsg, __pyx_n_s_message, __pyx_n_s_request); if (unlikely(!__pyx_tuple__457)) __PYX_ERR(25, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__457);
  __Pyx_GIVEREF(__pyx_tuple__457);
  __pyx_codeobj__458 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__457, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_irecv, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__458)) __PYX_ERR(25, 175, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":190
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__459 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_py2f, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__459)) __PYX_ERR(25, 190, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":195
 *         return MPI_Message_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Message:
 *         """
 */
  __pyx_codeobj__460 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Message_pyx, __pyx_n_s_f2py, 195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__460)) __PYX_ERR(25, 195, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Op(self)
 * 
 */
  __pyx_codeobj__461 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_reduce, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__461)) __PYX_ERR(26, 19, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":31
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Op:
 *         """
 */
  __pyx_codeobj__462 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_fromhandle, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__462)) __PYX_ERR(26, 31, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":38
 *         return fromhandle(<MPI_Op> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_codeobj__463 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_free, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__463)) __PYX_ERR(26, 38, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":47
 *     # ---------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */
  __pyx_tuple__464 = PyTuple_Pack(6, __pyx_n_s_cls, __pyx_n_s_function, __pyx_n_s_commute, __pyx_n_s_self, __pyx_n_s_fn_i, __pyx_n_s_fn_c); if (unlikely(!__pyx_tuple__464)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__464);
  __Pyx_GIVEREF(__pyx_tuple__464);
  __pyx_codeobj__465 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__464, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_Create, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__465)) __PYX_ERR(26, 47, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":70
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a user-defined reduction operation.
 */
  __pyx_codeobj__466 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_Free, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__466)) __PYX_ERR(26, 70, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":94
 *     # -----------------------
 * 
 *     def Is_commutative(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Query reduction operations for their commutativity.
 */
  __pyx_codeobj__467 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_Is_commutative, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__467)) __PYX_ERR(26, 94, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":107
 *             return self.Is_commutative()
 * 
 *     def Reduce_local(self, inbuf: BufSpec, inoutbuf: BufSpec) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Apply a reduction operation to local data.
 */
  __pyx_tuple__468 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_inbuf, __pyx_n_s_inoutbuf, __pyx_n_s_m); if (unlikely(!__pyx_tuple__468)) __PYX_ERR(26, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__468);
  __Pyx_GIVEREF(__pyx_tuple__468);
  __pyx_codeobj__469 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__468, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_Reduce_local, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__469)) __PYX_ERR(26, 107, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":145
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__470 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_py2f, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__470)) __PYX_ERR(26, 145, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":150
 *         return MPI_Op_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Op:
 *         """
 */
  __pyx_codeobj__471 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Op_pyx, __pyx_n_s_f2py, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__471)) __PYX_ERR(26, 150, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__472 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_reduce, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__472)) __PYX_ERR(27, 19, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Group:
 *         """
 */
  __pyx_codeobj__473 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_fromhandle, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__473)) __PYX_ERR(27, 27, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":34
 *         return fromhandle(<MPI_Group> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_codeobj__474 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_free, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__474)) __PYX_ERR(27, 34, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":43
 *     # ---------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a group.
 */
  __pyx_codeobj__475 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Get_size, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__475)) __PYX_ERR(27, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":56
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a group.
 */
  __pyx_tuple__476 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_rank); if (unlikely(!__pyx_tuple__476)) __PYX_ERR(27, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__476);
  __Pyx_GIVEREF(__pyx_tuple__476);
  __pyx_codeobj__477 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Get_rank, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__477)) __PYX_ERR(27, 56, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":69
 *             return self.Get_rank()
 * 
 *     def Translate_ranks(             # <<<<<<<<<<<<<<
 *         self,
 *         ranks: Sequence[int] | None = None,
 */
  __pyx_tuple__478 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_ranks, __pyx_n_s_group, __pyx_n_s_group1, __pyx_n_s_group2, __pyx_n_s_n, __pyx_n_s_iranks1, __pyx_n_s_iranks2, __pyx_n_s_unused1, __pyx_n_s_i, __pyx_n_s_unused2, __pyx_n_s_ranks2, __pyx_n_s_i); if (unlikely(!__pyx_tuple__478)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__478);
  __Pyx_GIVEREF(__pyx_tuple__478);
  __pyx_codeobj__479 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__478, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Translate_ranks, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__479)) __PYX_ERR(27, 69, __pyx_L1_error)
  __pyx_tuple__480 = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_tuple__480)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__480);
  __Pyx_GIVEREF(__pyx_tuple__480);

  /* "src/mpi4py/MPI.src/Group.pyx":105
 *         return ranks2
 * 
 *     def Compare(self, Group group: Group) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two groups.
 */
  __pyx_tuple__481 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_group, __pyx_n_s_flag); if (unlikely(!__pyx_tuple__481)) __PYX_ERR(27, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__481);
  __Pyx_GIVEREF(__pyx_tuple__481);
  __pyx_codeobj__482 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__481, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Compare, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__482)) __PYX_ERR(27, 105, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":117
 *     # ------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a group.
 */
  __pyx_tuple__483 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_group); if (unlikely(!__pyx_tuple__483)) __PYX_ERR(27, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__483);
  __Pyx_GIVEREF(__pyx_tuple__483);
  __pyx_codeobj__484 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Dup, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__484)) __PYX_ERR(27, 117, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":125
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Union(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */
  __pyx_tuple__485 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_group1, __pyx_n_s_group2, __pyx_n_s_group); if (unlikely(!__pyx_tuple__485)) __PYX_ERR(27, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__485);
  __Pyx_GIVEREF(__pyx_tuple__485);
  __pyx_codeobj__486 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Union, 125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__486)) __PYX_ERR(27, 125, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":135
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Intersection(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */
  __pyx_codeobj__487 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Intersection, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__487)) __PYX_ERR(27, 135, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":147
 *     Intersect = Intersection
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Difference(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */
  __pyx_codeobj__488 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Difference, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__488)) __PYX_ERR(27, 147, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":157
 *         return group
 * 
 *     def Incl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including listed members.
 */
  __pyx_tuple__489 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_ranks, __pyx_n_s_n, __pyx_n_s_iranks, __pyx_n_s_group); if (unlikely(!__pyx_tuple__489)) __PYX_ERR(27, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__489);
  __Pyx_GIVEREF(__pyx_tuple__489);
  __pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__489, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Incl, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(27, 157, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":167
 *         return group
 * 
 *     def Excl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding listed members.
 */
  __pyx_codeobj__491 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__489, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Excl, 167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__491)) __PYX_ERR(27, 167, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":177
 *         return group
 * 
 *     def Range_incl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including ranges of members.
 */
  __pyx_tuple__492 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_ranks, __pyx_n_s_p, __pyx_n_s_ranges, __pyx_n_s_n, __pyx_n_s_unused1, __pyx_n_s_i, __pyx_n_s_group); if (unlikely(!__pyx_tuple__492)) __PYX_ERR(27, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__492);
  __Pyx_GIVEREF(__pyx_tuple__492);
  __pyx_codeobj__493 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__492, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Range_incl, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__493)) __PYX_ERR(27, 177, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":192
 *         return group
 * 
 *     def Range_excl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding ranges of members.
 */
  __pyx_codeobj__494 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__492, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Range_excl, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__494)) __PYX_ERR(27, 192, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":207
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_session_pset(
 *         cls,
 */
  __pyx_tuple__495 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_session, __pyx_n_s_pset_name, __pyx_n_s_cname, __pyx_n_s_group); if (unlikely(!__pyx_tuple__495)) __PYX_ERR(27, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__495);
  __Pyx_GIVEREF(__pyx_tuple__495);
  __pyx_codeobj__496 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__495, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Create_from_session_pset, 207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__496)) __PYX_ERR(27, 207, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":226
 *     # ----------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a group.
 */
  __pyx_codeobj__497 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_Free, 226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__497)) __PYX_ERR(27, 226, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":236
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__498 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_py2f, 236, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__498)) __PYX_ERR(27, 236, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":241
 *         return MPI_Group_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Group:
 *         """
 */
  __pyx_codeobj__499 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Group_pyx, __pyx_n_s_f2py, 241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__499)) __PYX_ERR(27, 241, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Info(self)
 * 
 */
  __pyx_codeobj__500 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_reduce, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__500)) __PYX_ERR(28, 19, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Info:
 *         """
 */
  __pyx_codeobj__501 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_fromhandle, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__501)) __PYX_ERR(28, 27, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":34
 *         return fromhandle(<MPI_Info> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_codeobj__502 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_free, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__502)) __PYX_ERR(28, 34, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":43
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */
  __pyx_tuple__503 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_items, __pyx_n_s_info, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__503)) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__503);
  __Pyx_GIVEREF(__pyx_tuple__503);
  __pyx_codeobj__504 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__503, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Create, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__504)) __PYX_ERR(28, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":72
 *         return info
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:
 *         """
 */
  __pyx_tuple__505 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_args, __pyx_n_s_argc, __pyx_n_s_argv, __pyx_n_s_info); if (unlikely(!__pyx_tuple__505)) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__505);
  __Pyx_GIVEREF(__pyx_tuple__505);
  __pyx_codeobj__506 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__505, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Create_env, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__506)) __PYX_ERR(28, 72, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":85
 *         return info
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an info object.
 */
  __pyx_codeobj__507 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Free, 85, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__507)) __PYX_ERR(28, 85, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":92
 *         if self is __INFO_ENV__: self.ob_mpi = MPI_INFO_ENV
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing info object.
 */
  __pyx_tuple__508 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_info); if (unlikely(!__pyx_tuple__508)) __PYX_ERR(28, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__508);
  __Pyx_GIVEREF(__pyx_tuple__508);
  __pyx_codeobj__509 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Dup, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__509)) __PYX_ERR(28, 92, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":100
 *         return info
 * 
 *     def Get(self, key: str) -> str | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the value associated with a key.
 */
  __pyx_tuple__510 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_ckey, __pyx_n_s_cvalue, __pyx_n_s_buflen, __pyx_n_s_flag, __pyx_n_s_unused); if (unlikely(!__pyx_tuple__510)) __PYX_ERR(28, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__510);
  __Pyx_GIVEREF(__pyx_tuple__510);
  __pyx_codeobj__511 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__510, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Get, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__511)) __PYX_ERR(28, 100, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":114
 *         return mpistr(cvalue)
 * 
 *     def Set(self, key: str, value: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store a value associated with a key.
 */
  __pyx_tuple__512 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value, __pyx_n_s_ckey, __pyx_n_s_cvalue); if (unlikely(!__pyx_tuple__512)) __PYX_ERR(28, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__512);
  __Pyx_GIVEREF(__pyx_tuple__512);
  __pyx_codeobj__513 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__512, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Set, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(28, 114, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":124
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 *     def Delete(self, key: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove a (key, value) pair from info.
 */
  __pyx_tuple__514 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_ckey); if (unlikely(!__pyx_tuple__514)) __PYX_ERR(28, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__514);
  __Pyx_GIVEREF(__pyx_tuple__514);
  __pyx_codeobj__515 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__514, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Delete, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__515)) __PYX_ERR(28, 124, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":132
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 *     def Get_nkeys(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of currently defined keys in info.
 */
  __pyx_tuple__516 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_nkeys); if (unlikely(!__pyx_tuple__516)) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__516);
  __Pyx_GIVEREF(__pyx_tuple__516);
  __pyx_codeobj__517 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__516, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Get_nkeys, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__517)) __PYX_ERR(28, 132, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":140
 *         return nkeys
 * 
 *     def Get_nthkey(self, int n: int) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Return the *n*-th defined key in info.
 */
  __pyx_tuple__518 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_n, __pyx_n_s_ckey); if (unlikely(!__pyx_tuple__518)) __PYX_ERR(28, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__518);
  __Pyx_GIVEREF(__pyx_tuple__518);
  __pyx_codeobj__519 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__518, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_Get_nthkey, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__519)) __PYX_ERR(28, 140, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":153
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__520 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_py2f, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__520)) __PYX_ERR(28, 153, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":158
 *         return MPI_Info_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Info:
 *         """
 */
  __pyx_codeobj__521 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_f2py, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__521)) __PYX_ERR(28, 158, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":199
 *         self.Delete(key)
 * 
 *     def get(self, key: str, default: str | None = None) -> str | None:             # <<<<<<<<<<<<<<
 *         """Retrieve value by key."""
 *         if not self: return default
 */
  __pyx_tuple__522 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default, __pyx_n_s_value); if (unlikely(!__pyx_tuple__522)) __PYX_ERR(28, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__522);
  __Pyx_GIVEREF(__pyx_tuple__522);
  __pyx_codeobj__523 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__522, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_get, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__523)) __PYX_ERR(28, 199, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":206
 *         return value
 * 
 *     def keys(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of keys."""
 *         if not self: return []
 */
  __pyx_tuple__524 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_keys, __pyx_n_s_nkeys, __pyx_n_s_key, __pyx_n_s_k); if (unlikely(!__pyx_tuple__524)) __PYX_ERR(28, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__524);
  __Pyx_GIVEREF(__pyx_tuple__524);
  __pyx_codeobj__525 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__524, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_keys, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__525)) __PYX_ERR(28, 206, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":217
 *         return keys
 * 
 *     def values(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of values."""
 *         if not self: return []
 */
  __pyx_tuple__526 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_values, __pyx_n_s_nkeys, __pyx_n_s_key, __pyx_n_s_val, __pyx_n_s_k); if (unlikely(!__pyx_tuple__526)) __PYX_ERR(28, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__526);
  __Pyx_GIVEREF(__pyx_tuple__526);
  __pyx_codeobj__527 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__526, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_values, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__527)) __PYX_ERR(28, 217, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":229
 *         return values
 * 
 *     def items(self) -> list[tuple[str, str]]:             # <<<<<<<<<<<<<<
 *         """Return list of items."""
 *         if not self: return []
 */
  __pyx_tuple__528 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_items, __pyx_n_s_nkeys, __pyx_n_s_key, __pyx_n_s_value, __pyx_n_s_k); if (unlikely(!__pyx_tuple__528)) __PYX_ERR(28, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__528);
  __Pyx_GIVEREF(__pyx_tuple__528);
  __pyx_codeobj__529 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__528, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_items, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__529)) __PYX_ERR(28, 229, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":241
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
 */
  __pyx_tuple__530 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_items, __pyx_n_s_kwds, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__530)) __PYX_ERR(28, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__530);
  __Pyx_GIVEREF(__pyx_tuple__530);
  __pyx_codeobj__531 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__530, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_update, 241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__531)) __PYX_ERR(28, 241, __pyx_L1_error)
  __pyx_tuple__532 = PyTuple_Pack(1, __pyx_empty_tuple); if (unlikely(!__pyx_tuple__532)) __PYX_ERR(28, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__532);
  __Pyx_GIVEREF(__pyx_tuple__532);

  /* "src/mpi4py/MPI.src/Info.pyx":258
 *             self.Set(key, value)
 * 
 *     def pop(self, key: str, *default: str) -> str:             # <<<<<<<<<<<<<<
 *         """Pop value by key."""
 *         cdef object value = None
 */
  __pyx_codeobj__533 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__522, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_pop, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__533)) __PYX_ERR(28, 258, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":271
 *         raise KeyError(key)
 * 
 *     def popitem(self) -> tuple[str, str]:             # <<<<<<<<<<<<<<
 *         """Pop first item."""
 *         if not self: raise KeyError
 */
  __pyx_tuple__534 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value, __pyx_n_s_nkeys); if (unlikely(!__pyx_tuple__534)) __PYX_ERR(28, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__534);
  __Pyx_GIVEREF(__pyx_tuple__534);
  __pyx_codeobj__535 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__534, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_popitem, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__535)) __PYX_ERR(28, 271, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":282
 *         return (key, value)
 * 
 *     def copy(self) -> Self:             # <<<<<<<<<<<<<<
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))
 */
  __pyx_codeobj__536 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_copy, 282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__536)) __PYX_ERR(28, 282, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":287
 *         return self.Dup()
 * 
 *     def clear(self) -> None:             # <<<<<<<<<<<<<<
 *         """Clear contents."""
 *         if not self: return None
 */
  __pyx_tuple__537 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_k, __pyx_n_s_nkeys); if (unlikely(!__pyx_tuple__537)) __PYX_ERR(28, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__537);
  __Pyx_GIVEREF(__pyx_tuple__537);
  __pyx_codeobj__538 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Info_pyx, __pyx_n_s_clear, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__538)) __PYX_ERR(28, 287, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__539 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py, __pyx_n_s_reduce, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__539)) __PYX_ERR(29, 19, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Errhandler:
 *         """
 */
  __pyx_codeobj__540 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py, __pyx_n_s_fromhandle, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__540)) __PYX_ERR(29, 27, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":34
 *         return fromhandle(<MPI_Errhandler> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */
  __pyx_codeobj__541 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py, __pyx_n_s_free, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(29, 34, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":43
 *     # ---------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an error handler.
 */
  __pyx_codeobj__542 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py, __pyx_n_s_Free, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__542)) __PYX_ERR(29, 43, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":55
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__543 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py, __pyx_n_s_py2f, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__543)) __PYX_ERR(29, 55, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":60
 *         return MPI_Errhandler_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Errhandler:
 *         """
 */
  __pyx_codeobj__544 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Errhandler_py, __pyx_n_s_f2py, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__544)) __PYX_ERR(29, 60, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__545 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_reduce, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__545)) __PYX_ERR(30, 19, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Session:
 *         """
 */
  __pyx_codeobj__546 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_fromhandle, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__546)) __PYX_ERR(30, 27, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":34
 *         return fromhandle(<MPI_Session> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Finalize` if not null.
 */
  __pyx_codeobj__547 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_free, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__547)) __PYX_ERR(30, 34, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
 */
  __pyx_tuple__548 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_info, __pyx_n_s_errhandler, __pyx_n_s_cerrhdl, __pyx_n_s_session); if (unlikely(!__pyx_tuple__548)) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__548);
  __Pyx_GIVEREF(__pyx_tuple__548);
  __pyx_codeobj__549 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__548, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Init, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__549)) __PYX_ERR(30, 42, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":58
 *         return session
 * 
 *     def Finalize(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Finalize a session.
 */
  __pyx_codeobj__550 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Finalize, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__550)) __PYX_ERR(30, 58, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":64
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )
 * 
 *     def Get_num_psets(self, Info info: Info = INFO_NULL) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Number of available process sets.
 */
  __pyx_tuple__551 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_info, __pyx_n_s_num_psets); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__551);
  __Pyx_GIVEREF(__pyx_tuple__551);
  __pyx_codeobj__552 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__551, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Get_num_psets, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__552)) __PYX_ERR(30, 64, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":73
 *         return num_psets
 * 
 *     def Get_nth_pset(self, int n: int, Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Name of the *n*-th process set.
 */
  __pyx_tuple__553 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_n, __pyx_n_s_info, __pyx_n_s_nlen, __pyx_n_s_pset_name, __pyx_n_s_unused); if (unlikely(!__pyx_tuple__553)) __PYX_ERR(30, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__553);
  __Pyx_GIVEREF(__pyx_tuple__553);
  __pyx_codeobj__554 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__553, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Get_nth_pset, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__554)) __PYX_ERR(30, 73, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":84
 *         return mpistr(pset_name)
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session.
 */
  __pyx_codeobj__555 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Get_info, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__555)) __PYX_ERR(30, 84, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":93
 *         return info
 * 
 *     def Get_pset_info(self, pset_name: str) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session and process set.
 */
  __pyx_tuple__556 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_pset_name, __pyx_n_s_cname, __pyx_n_s_info); if (unlikely(!__pyx_tuple__556)) __PYX_ERR(30, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__556);
  __Pyx_GIVEREF(__pyx_tuple__556);
  __pyx_codeobj__557 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Get_pset_info, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__557)) __PYX_ERR(30, 93, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":104
 *         return info
 * 
 *     def Create_group(self, pset_name: str) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group from session and process set.
 */
  __pyx_tuple__558 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_pset_name, __pyx_n_s_cname, __pyx_n_s_group); if (unlikely(!__pyx_tuple__558)) __PYX_ERR(30, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__558);
  __Pyx_GIVEREF(__pyx_tuple__558);
  __pyx_codeobj__559 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__558, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Create_group, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__559)) __PYX_ERR(30, 104, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":118
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */
  __pyx_tuple__560 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_base, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__560)) __PYX_ERR(30, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__560);
  __Pyx_GIVEREF(__pyx_tuple__560);
  __pyx_codeobj__561 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__560, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Attach_buffer, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__561)) __PYX_ERR(30, 118, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":129
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */
  __pyx_tuple__562 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_base, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__562)) __PYX_ERR(30, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__562);
  __Pyx_GIVEREF(__pyx_tuple__562);
  __pyx_codeobj__563 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__562, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Detach_buffer, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__563)) __PYX_ERR(30, 129, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":139
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */
  __pyx_codeobj__564 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Flush_buffer, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__564)) __PYX_ERR(30, 139, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":145
 *         with nogil: CHKERR( MPI_Session_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */
  __pyx_tuple__565 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_request); if (unlikely(!__pyx_tuple__565)) __PYX_ERR(30, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__565);
  __Pyx_GIVEREF(__pyx_tuple__565);
  __pyx_codeobj__566 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__565, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Iflush_buffer, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__566)) __PYX_ERR(30, 145, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":157
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_tuple__567 = PyTuple_Pack(5, __pyx_n_s_cls, __pyx_n_s_errhandler_fn, __pyx_n_s_errhandler, __pyx_n_s_fn, __pyx_n_s_index); if (unlikely(!__pyx_tuple__567)) __PYX_ERR(30, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__567);
  __Pyx_GIVEREF(__pyx_tuple__567);
  __pyx_codeobj__568 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__567, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Create_errhandler, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__568)) __PYX_ERR(30, 157, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":175
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a session.
 */
  __pyx_tuple__569 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_errhandler); if (unlikely(!__pyx_tuple__569)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__569);
  __Pyx_GIVEREF(__pyx_tuple__569);
  __pyx_codeobj__570 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Get_errhandler, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__570)) __PYX_ERR(30, 175, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":183
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a session.
 */
  __pyx_codeobj__571 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Set_errhandler, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__571)) __PYX_ERR(30, 183, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":189
 *         CHKERR( MPI_Session_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a session.
 */
  __pyx_codeobj__572 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_Call_errhandler, 189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__572)) __PYX_ERR(30, 189, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":198
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__573 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_py2f, 198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__573)) __PYX_ERR(30, 198, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":203
 *         return MPI_Session_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Session:
 *         """
 */
  __pyx_codeobj__574 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Session_pyx, __pyx_n_s_f2py, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__574)) __PYX_ERR(30, 203, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":52
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__575 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_reduce, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__575)) __PYX_ERR(31, 52, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":60
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Comm:
 *         """
 */
  __pyx_codeobj__576 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_fromhandle, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__576)) __PYX_ERR(31, 60, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":67
 *         return fromhandle(<MPI_Comm> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_codeobj__577 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_free, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__577)) __PYX_ERR(31, 67, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":76
 *     # -----
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group associated with a communicator.
 */
  __pyx_codeobj__578 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_group, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__578)) __PYX_ERR(31, 76, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":92
 *     # ----------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a communicator.
 */
  __pyx_codeobj__579 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_size, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__579)) __PYX_ERR(31, 92, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":105
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a communicator.
 */
  __pyx_codeobj__580 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_rank, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__580)) __PYX_ERR(31, 105, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":118
 *             return self.Get_rank()
 * 
 *     def Compare(self, Comm comm: Comm) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators.
 */
  __pyx_tuple__581 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_comm, __pyx_n_s_flag); if (unlikely(!__pyx_tuple__581)) __PYX_ERR(31, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__581);
  __Pyx_GIVEREF(__pyx_tuple__581);
  __pyx_codeobj__582 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__581, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Compare, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__582)) __PYX_ERR(31, 118, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":130
 *     # -------------------------
 * 
 *     def Clone(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Clone an existing communicator.
 */
  __pyx_tuple__583 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__583)) __PYX_ERR(31, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__583);
  __Pyx_GIVEREF(__pyx_tuple__583);
  __pyx_codeobj__584 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__583, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Clone, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__584)) __PYX_ERR(31, 130, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":139
 *         return comm
 * 
 *     def Dup(self, Info info: Info | None = None) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator.
 */
  __pyx_tuple__585 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_info, __pyx_n_s_cinfo, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__585)) __PYX_ERR(31, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__585);
  __Pyx_GIVEREF(__pyx_tuple__585);
  __pyx_codeobj__586 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__585, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Dup, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__586)) __PYX_ERR(31, 139, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":154
 *         return comm
 * 
 *     def Dup_with_info(self, Info info: Info) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator with hints.
 */
  __pyx_tuple__587 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_info, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__587)) __PYX_ERR(31, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__587);
  __Pyx_GIVEREF(__pyx_tuple__587);
  __pyx_codeobj__588 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__587, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Dup_with_info, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__588)) __PYX_ERR(31, 154, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":164
 *         return comm
 * 
 *     def Idup(self, Info info: Info | None = None) -> tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator.
 */
  __pyx_tuple__589 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_info, __pyx_n_s_cinfo, __pyx_n_s_comm, __pyx_n_s_request); if (unlikely(!__pyx_tuple__589)) __PYX_ERR(31, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__589);
  __Pyx_GIVEREF(__pyx_tuple__589);
  __pyx_codeobj__590 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__589, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Idup, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__590)) __PYX_ERR(31, 164, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":182
 *         return (comm, request)
 * 
 *     def Idup_with_info(self, Info info: Info) ->  tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator with hints.
 */
  __pyx_tuple__591 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_info, __pyx_n_s_comm, __pyx_n_s_request); if (unlikely(!__pyx_tuple__591)) __PYX_ERR(31, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__591);
  __Pyx_GIVEREF(__pyx_tuple__591);
  __pyx_codeobj__592 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__591, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Idup_with_info, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__592)) __PYX_ERR(31, 182, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":194
 *         return (comm, request)
 * 
 *     def Create(self, Group group: Group) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */
  __pyx_tuple__593 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_group, __pyx_n_s_cls, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__593)) __PYX_ERR(31, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__593);
  __Pyx_GIVEREF(__pyx_tuple__593);
  __pyx_codeobj__594 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__593, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__594)) __PYX_ERR(31, 194, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":207
 *         return comm
 * 
 *     def Split(self, int color: int = 0, int key: int = 0) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Split communicator by color and key.
 */
  __pyx_tuple__595 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_key, __pyx_n_s_cls, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__595)) __PYX_ERR(31, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__595);
  __Pyx_GIVEREF(__pyx_tuple__595);
  __pyx_codeobj__596 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__595, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Split, 207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__596)) __PYX_ERR(31, 207, __pyx_L1_error)
  __pyx_tuple__597 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__597)) __PYX_ERR(31, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__597);
  __Pyx_GIVEREF(__pyx_tuple__597);

  /* "src/mpi4py/MPI.src/Comm.pyx":220
 *         return comm
 * 
 *     def Split_type(             # <<<<<<<<<<<<<<
 *         self,
 *         int split_type: int,
 */
  __pyx_tuple__598 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_split_type, __pyx_n_s_key, __pyx_n_s_info, __pyx_n_s_cls, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__598)) __PYX_ERR(31, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__598);
  __Pyx_GIVEREF(__pyx_tuple__598);
  __pyx_codeobj__599 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__598, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Split_type, 220, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__599)) __PYX_ERR(31, 220, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":241
 *     # -----------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communicator.
 */
  __pyx_codeobj__600 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Free, 241, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__600)) __PYX_ERR(31, 241, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":252
 *     # -----------------------
 * 
 *     def Revoke(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Revoke a communicator.
 */
  __pyx_codeobj__601 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Revoke, 252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__601)) __PYX_ERR(31, 252, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":258
 *         with nogil: CHKERR( MPI_Comm_revoke(self.ob_mpi) )
 * 
 *     def Is_revoked(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Indicate whether the communicator has been revoked.
 */
  __pyx_codeobj__602 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Is_revoked, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__602)) __PYX_ERR(31, 258, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":266
 *         return <bint>flag
 * 
 *     def Get_failed(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Extract the group of failed processes.
 */
  __pyx_codeobj__603 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_failed, 266, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__603)) __PYX_ERR(31, 266, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":274
 *         return group
 * 
 *     def Ack_failed(self, num_to_ack: int | None = None) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Acknowledge failures on a communicator.
 */
  __pyx_tuple__604 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_num_to_ack, __pyx_n_s_num_acked, __pyx_n_s_c_num_to_ack); if (unlikely(!__pyx_tuple__604)) __PYX_ERR(31, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__604);
  __Pyx_GIVEREF(__pyx_tuple__604);
  __pyx_codeobj__605 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__604, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ack_failed, 274, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__605)) __PYX_ERR(31, 274, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":288
 *         return num_acked
 * 
 *     def Agree(self, int flag: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking agreement.
 */
  __pyx_codeobj__606 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Agree, 288, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__606)) __PYX_ERR(31, 288, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":295
 *         return flag
 * 
 *     def Iagree(self, flag: Buffer) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking agreement.
 */
  __pyx_tuple__607 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_flag, __pyx_n_s_flag_ptr, __pyx_n_s_flag_len, __pyx_n_s_request); if (unlikely(!__pyx_tuple__607)) __PYX_ERR(31, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__607);
  __Pyx_GIVEREF(__pyx_tuple__607);
  __pyx_codeobj__608 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__607, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iagree, 295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__608)) __PYX_ERR(31, 295, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":310
 *         return request
 * 
 *     def Shrink(self) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Shrink a communicator to remove all failed processes.
 */
  __pyx_tuple__609 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_cls, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__609)) __PYX_ERR(31, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__609);
  __Pyx_GIVEREF(__pyx_tuple__609);
  __pyx_codeobj__610 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__609, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Shrink, 310, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__610)) __PYX_ERR(31, 310, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":322
 *         return comm
 * 
 *     def Ishrink(self) -> tuple[Comm, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking shrink a communicator to remove all failed processes.
 */
  __pyx_tuple__611 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_cls, __pyx_n_s_comm, __pyx_n_s_request); if (unlikely(!__pyx_tuple__611)) __PYX_ERR(31, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__611);
  __Pyx_GIVEREF(__pyx_tuple__611);
  __pyx_codeobj__612 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__611, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ishrink, 322, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__612)) __PYX_ERR(31, 322, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":339
 *     # -----------------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a communicator.
 */
  __pyx_codeobj__613 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Set_info, 339, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__613)) __PYX_ERR(31, 339, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":346
 *             self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a communicator.
 */
  __pyx_codeobj__614 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_info, 346, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__614)) __PYX_ERR(31, 346, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":369
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */
  __pyx_codeobj__615 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__560, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Attach_buffer, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__615)) __PYX_ERR(31, 369, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":380
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */
  __pyx_codeobj__616 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__562, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Detach_buffer, 380, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__616)) __PYX_ERR(31, 380, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":390
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */
  __pyx_codeobj__617 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Flush_buffer, 390, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__617)) __PYX_ERR(31, 390, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":396
 *         with nogil: CHKERR( MPI_Comm_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */
  __pyx_codeobj__618 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__565, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iflush_buffer, 396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__618)) __PYX_ERR(31, 396, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":408
 *     # ------------------------------------
 * 
 *     def Send(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__619 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_dest, __pyx_n_s_tag, __pyx_n_s_smsg); if (unlikely(!__pyx_tuple__619)) __PYX_ERR(31, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__619);
  __Pyx_GIVEREF(__pyx_tuple__619);
  __pyx_codeobj__620 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Send, 408, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__620)) __PYX_ERR(31, 408, __pyx_L1_error)
  __pyx_tuple__621 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__621)) __PYX_ERR(31, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__621);
  __Pyx_GIVEREF(__pyx_tuple__621);

  /* "src/mpi4py/MPI.src/Comm.pyx":426
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__622 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_rmsg, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__622)) __PYX_ERR(31, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__622);
  __Pyx_GIVEREF(__pyx_tuple__622);
  __pyx_codeobj__623 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__622, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Recv, 426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__623)) __PYX_ERR(31, 426, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":447
 *     # ------------
 * 
 *     def Sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_tuple__624 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_dest, __pyx_n_s_sendtag, __pyx_n_s_recvbuf, __pyx_n_s_source, __pyx_n_s_recvtag, __pyx_n_s_status, __pyx_n_s_smsg, __pyx_n_s_rmsg, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__624)) __PYX_ERR(31, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__624);
  __Pyx_GIVEREF(__pyx_tuple__624);
  __pyx_codeobj__625 = (PyObject*)__Pyx_PyCode_New(8, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__624, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Sendrecv, 447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__625)) __PYX_ERR(31, 447, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":475
 *             self.ob_mpi, statusp) )
 * 
 *     def Sendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__626 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_dest, __pyx_n_s_sendtag, __pyx_n_s_source, __pyx_n_s_recvtag, __pyx_n_s_status, __pyx_n_s_rank, __pyx_n_s_rmsg, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__626)) __PYX_ERR(31, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__626);
  __Pyx_GIVEREF(__pyx_tuple__626);
  __pyx_codeobj__627 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__626, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Sendrecv_replace, 475, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__627)) __PYX_ERR(31, 475, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":507
 *     # --------------------------
 * 
 *     def Isend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__628 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_dest, __pyx_n_s_tag, __pyx_n_s_smsg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__628)) __PYX_ERR(31, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__628);
  __Pyx_GIVEREF(__pyx_tuple__628);
  __pyx_codeobj__629 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Isend, 507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__629)) __PYX_ERR(31, 507, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":524
 *         return request
 * 
 *     def Irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__630 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_rmsg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__630)) __PYX_ERR(31, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__630);
  __Pyx_GIVEREF(__pyx_tuple__630);
  __pyx_codeobj__631 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__630, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Irecv, 524, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__631)) __PYX_ERR(31, 524, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":541
 *         return request
 * 
 *     def Isendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_tuple__632 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_dest, __pyx_n_s_sendtag, __pyx_n_s_recvbuf, __pyx_n_s_source, __pyx_n_s_recvtag, __pyx_n_s_smsg, __pyx_n_s_rmsg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__632)) __PYX_ERR(31, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__632);
  __Pyx_GIVEREF(__pyx_tuple__632);
  __pyx_codeobj__633 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__632, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Isendrecv, 541, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__633)) __PYX_ERR(31, 541, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":563
 *         return request
 * 
 *     def Isendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__634 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_dest, __pyx_n_s_sendtag, __pyx_n_s_source, __pyx_n_s_recvtag, __pyx_n_s_rank, __pyx_n_s_rmsg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__634)) __PYX_ERR(31, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__634);
  __Pyx_GIVEREF(__pyx_tuple__634);
  __pyx_codeobj__635 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__634, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Isendrecv_replace, 563, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__635)) __PYX_ERR(31, 563, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":596
 *     # -----
 * 
 *     def Probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_tuple__636 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__636)) __PYX_ERR(31, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__636);
  __Pyx_GIVEREF(__pyx_tuple__636);
  __pyx_codeobj__637 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__636, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Probe, 596, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__637)) __PYX_ERR(31, 596, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":612
 *         return True
 * 
 *     def Iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_tuple__638 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_flag, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__638)) __PYX_ERR(31, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__638);
  __Pyx_GIVEREF(__pyx_tuple__638);
  __pyx_codeobj__639 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__638, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iprobe, 612, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__639)) __PYX_ERR(31, 612, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":630
 *     # --------------
 * 
 *     def Mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_tuple__640 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_cmessage, __pyx_n_s_statusp, __pyx_n_s_message); if (unlikely(!__pyx_tuple__640)) __PYX_ERR(31, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__640);
  __Pyx_GIVEREF(__pyx_tuple__640);
  __pyx_codeobj__641 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__640, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Mprobe, 630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__641)) __PYX_ERR(31, 630, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":647
 *         return message
 * 
 *     def Improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_tuple__642 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_flag, __pyx_n_s_cmessage, __pyx_n_s_statusp, __pyx_n_s_message); if (unlikely(!__pyx_tuple__642)) __PYX_ERR(31, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__642);
  __Pyx_GIVEREF(__pyx_tuple__642);
  __pyx_codeobj__643 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__642, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Improbe, 647, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__643)) __PYX_ERR(31, 647, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":669
 *     # ------------------------
 * 
 *     def Send_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__644 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Send_init, 669, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__644)) __PYX_ERR(31, 669, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":686
 *         return request
 * 
 *     def Recv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__645 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__630, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Recv_init, 686, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__645)) __PYX_ERR(31, 686, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":706
 *     # -------------------------
 * 
 *     def Psend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__646 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_partitions, __pyx_n_s_dest, __pyx_n_s_tag, __pyx_n_s_info, __pyx_n_s_smsg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__646)) __PYX_ERR(31, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__646);
  __Pyx_GIVEREF(__pyx_tuple__646);
  __pyx_codeobj__647 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__646, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Psend_init, 706, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__647)) __PYX_ERR(31, 706, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":725
 *         return request
 * 
 *     def Precv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__648 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_partitions, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_info, __pyx_n_s_rmsg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__648)) __PYX_ERR(31, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__648);
  __Pyx_GIVEREF(__pyx_tuple__648);
  __pyx_codeobj__649 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__648, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Precv_init, 725, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__649)) __PYX_ERR(31, 725, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":749
 *     # Blocking calls
 * 
 *     def Bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__650 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Bsend, 749, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__650)) __PYX_ERR(31, 749, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":763
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__651 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ssend, 763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__651)) __PYX_ERR(31, 763, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":777
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Rsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__652 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__619, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Rsend, 777, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__652)) __PYX_ERR(31, 777, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":793
 *     # Nonblocking calls
 * 
 *     def Ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__653 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ibsend, 793, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__653)) __PYX_ERR(31, 793, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":810
 *         return request
 * 
 *     def Issend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__654 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Issend, 810, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__654)) __PYX_ERR(31, 810, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":827
 *         return request
 * 
 *     def Irsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__655 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Irsend, 827, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__655)) __PYX_ERR(31, 827, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":846
 *     # Persistent Requests
 * 
 *     def Bsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__656 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Bsend_init, 846, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__656)) __PYX_ERR(31, 846, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":863
 *         return request
 * 
 *     def Ssend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__657 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ssend_init, 863, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__657)) __PYX_ERR(31, 863, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":880
 *         return request
 * 
 *     def Rsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__658 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__628, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Rsend_init, 880, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__658)) __PYX_ERR(31, 880, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":903
 *     # -----------------------
 * 
 *     def Barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */
  __pyx_codeobj__659 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Barrier, 903, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__659)) __PYX_ERR(31, 903, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":912
 *     # ------------------------------
 * 
 *     def Bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__660 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_root, __pyx_n_s_m); if (unlikely(!__pyx_tuple__660)) __PYX_ERR(31, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__660);
  __Pyx_GIVEREF(__pyx_tuple__660);
  __pyx_codeobj__661 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__660, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Bcast, 912, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__661)) __PYX_ERR(31, 912, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":926
 *             root, self.ob_mpi) )
 * 
 *     def Gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__662 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_root, __pyx_n_s_m); if (unlikely(!__pyx_tuple__662)) __PYX_ERR(31, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__662);
  __Pyx_GIVEREF(__pyx_tuple__662);
  __pyx_codeobj__663 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Gather, 926, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__663)) __PYX_ERR(31, 926, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":942
 *             root, self.ob_mpi) )
 * 
 *     def Gatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__664 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Gatherv, 942, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__664)) __PYX_ERR(31, 942, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":961
 *             root, self.ob_mpi) )
 * 
 *     def Scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */
  __pyx_codeobj__665 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Scatter, 961, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__665)) __PYX_ERR(31, 961, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":977
 *             root, self.ob_mpi) )
 * 
 *     def Scatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */
  __pyx_codeobj__666 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Scatterv, 977, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__666)) __PYX_ERR(31, 977, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":996
 *             root, self.ob_mpi) )
 * 
 *     def Allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__667 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_m); if (unlikely(!__pyx_tuple__667)) __PYX_ERR(31, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__667);
  __Pyx_GIVEREF(__pyx_tuple__667);
  __pyx_codeobj__668 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Allgather, 996, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__668)) __PYX_ERR(31, 996, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1014
 *             self.ob_mpi) )
 * 
 *     def Allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__669 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Allgatherv, 1014, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__669)) __PYX_ERR(31, 1014, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1032
 *             self.ob_mpi) )
 * 
 *     def Alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_codeobj__670 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Alltoall, 1032, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__670)) __PYX_ERR(31, 1032, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1049
 *             self.ob_mpi) )
 * 
 *     def Alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */
  __pyx_codeobj__671 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Alltoallv, 1049, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__671)) __PYX_ERR(31, 1049, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1067
 *             self.ob_mpi) )
 * 
 *     def Alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */
  __pyx_codeobj__672 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Alltoallw, 1067, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__672)) __PYX_ERR(31, 1067, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1088
 *     # ---------------------------
 * 
 *     def Reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__673 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_op, __pyx_n_s_root, __pyx_n_s_m); if (unlikely(!__pyx_tuple__673)) __PYX_ERR(31, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__673);
  __Pyx_GIVEREF(__pyx_tuple__673);
  __pyx_codeobj__674 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__673, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Reduce, 1088, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__674)) __PYX_ERR(31, 1088, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1104
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__675 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_op, __pyx_n_s_m); if (unlikely(!__pyx_tuple__675)) __PYX_ERR(31, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__675);
  __Pyx_GIVEREF(__pyx_tuple__675);
  __pyx_codeobj__676 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Allreduce, 1104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__676)) __PYX_ERR(31, 1104, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1119
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_codeobj__677 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Reduce_scatter_block, 1119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__677)) __PYX_ERR(31, 1119, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1134
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__678 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_recvcounts, __pyx_n_s_op, __pyx_n_s_m); if (unlikely(!__pyx_tuple__678)) __PYX_ERR(31, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__678);
  __Pyx_GIVEREF(__pyx_tuple__678);
  __pyx_codeobj__679 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__678, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Reduce_scatter, 1134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__679)) __PYX_ERR(31, 1134, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1154
 *     # -----------------------
 * 
 *     def Ibarrier(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking Barrier.
 */
  __pyx_codeobj__680 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__565, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ibarrier, 1154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__680)) __PYX_ERR(31, 1154, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1162
 *         return request
 * 
 *     def Ibcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__681 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_root, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__681)) __PYX_ERR(31, 1162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__681);
  __Pyx_GIVEREF(__pyx_tuple__681);
  __pyx_codeobj__682 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__681, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ibcast, 1162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__682)) __PYX_ERR(31, 1162, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1179
 *         return request
 * 
 *     def Igather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__683 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_root, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__683)) __PYX_ERR(31, 1179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__683);
  __Pyx_GIVEREF(__pyx_tuple__683);
  __pyx_codeobj__684 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__683, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Igather, 1179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__684)) __PYX_ERR(31, 1179, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1198
 *         return request
 * 
 *     def Igatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__685 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__683, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Igatherv, 1198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__685)) __PYX_ERR(31, 1198, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1217
 *         return request
 * 
 *     def Iscatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */
  __pyx_codeobj__686 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__683, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iscatter, 1217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__686)) __PYX_ERR(31, 1217, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1236
 *         return request
 * 
 *     def Iscatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */
  __pyx_codeobj__687 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__683, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iscatterv, 1236, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__687)) __PYX_ERR(31, 1236, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1255
 *         return request
 * 
 *     def Iallgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__688 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__688)) __PYX_ERR(31, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__688);
  __Pyx_GIVEREF(__pyx_tuple__688);
  __pyx_codeobj__689 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iallgather, 1255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__689)) __PYX_ERR(31, 1255, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1273
 *         return request
 * 
 *     def Iallgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__690 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iallgatherv, 1273, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__690)) __PYX_ERR(31, 1273, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1290
 *         return request
 * 
 *     def Ialltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_codeobj__691 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ialltoall, 1290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__691)) __PYX_ERR(31, 1290, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1308
 *         return request
 * 
 *     def Ialltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */
  __pyx_codeobj__692 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ialltoallv, 1308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__692)) __PYX_ERR(31, 1308, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1326
 *         return request
 * 
 *     def Ialltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */
  __pyx_codeobj__693 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ialltoallw, 1326, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__693)) __PYX_ERR(31, 1326, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1344
 *         return request
 * 
 *     def Ireduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__694 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_op, __pyx_n_s_root, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__694)) __PYX_ERR(31, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__694);
  __Pyx_GIVEREF(__pyx_tuple__694);
  __pyx_codeobj__695 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__694, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ireduce, 1344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__695)) __PYX_ERR(31, 1344, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1362
 *         return request
 * 
 *     def Iallreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__696 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_op, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__696)) __PYX_ERR(31, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__696);
  __Pyx_GIVEREF(__pyx_tuple__696);
  __pyx_codeobj__697 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__696, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iallreduce, 1362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__697)) __PYX_ERR(31, 1362, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1379
 *         return request
 * 
 *     def Ireduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_codeobj__698 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__696, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ireduce_scatter_block, 1379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__698)) __PYX_ERR(31, 1379, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1396
 *         return request
 * 
 *     def Ireduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__699 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_recvcounts, __pyx_n_s_op, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__699)) __PYX_ERR(31, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__699);
  __Pyx_GIVEREF(__pyx_tuple__699);
  __pyx_codeobj__700 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__699, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ireduce_scatter, 1396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__700)) __PYX_ERR(31, 1396, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1418
 *     # ----------------------
 * 
 *     def Barrier_init(             # <<<<<<<<<<<<<<
 *         self,
 *         Info info: Info = INFO_NULL,
 */
  __pyx_tuple__701 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_info, __pyx_n_s_request); if (unlikely(!__pyx_tuple__701)) __PYX_ERR(31, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__701);
  __Pyx_GIVEREF(__pyx_tuple__701);
  __pyx_codeobj__702 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__701, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Barrier_init, 1418, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__702)) __PYX_ERR(31, 1418, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1431
 *         return request
 * 
 *     def Bcast_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__703 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_root, __pyx_n_s_info, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__703)) __PYX_ERR(31, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__703);
  __Pyx_GIVEREF(__pyx_tuple__703);
  __pyx_codeobj__704 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__703, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Bcast_init, 1431, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__704)) __PYX_ERR(31, 1431, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1449
 *         return request
 * 
 *     def Gather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__705 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_root, __pyx_n_s_info, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__705)) __PYX_ERR(31, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__705);
  __Pyx_GIVEREF(__pyx_tuple__705);
  __pyx_codeobj__706 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__705, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Gather_init, 1449, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__706)) __PYX_ERR(31, 1449, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1469
 *         return request
 * 
 *     def Gatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__707 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__705, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Gatherv_init, 1469, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__707)) __PYX_ERR(31, 1469, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1489
 *         return request
 * 
 *     def Scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */
  __pyx_codeobj__708 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__705, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Scatter_init, 1489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__708)) __PYX_ERR(31, 1489, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1509
 *         return request
 * 
 *     def Scatterv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */
  __pyx_codeobj__709 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__705, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Scatterv_init, 1509, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__709)) __PYX_ERR(31, 1509, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1529
 *         return request
 * 
 *     def Allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__710 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_info, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__710)) __PYX_ERR(31, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__710);
  __Pyx_GIVEREF(__pyx_tuple__710);
  __pyx_codeobj__711 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Allgather_init, 1529, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__711)) __PYX_ERR(31, 1529, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1548
 *         return request
 * 
 *     def Allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__712 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Allgatherv_init, 1548, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__712)) __PYX_ERR(31, 1548, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1566
 *         return request
 * 
 *     def Alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_codeobj__713 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Alltoall_init, 1566, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__713)) __PYX_ERR(31, 1566, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1585
 *         return request
 * 
 *     def Alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */
  __pyx_codeobj__714 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Alltoallv_init, 1585, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__714)) __PYX_ERR(31, 1585, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1604
 *         return request
 * 
 *     def Alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */
  __pyx_codeobj__715 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Alltoallw_init, 1604, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__715)) __PYX_ERR(31, 1604, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1623
 *         return request
 * 
 *     def Reduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__716 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_op, __pyx_n_s_root, __pyx_n_s_info, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__716)) __PYX_ERR(31, 1623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__716);
  __Pyx_GIVEREF(__pyx_tuple__716);
  __pyx_codeobj__717 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__716, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Reduce_init, 1623, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__717)) __PYX_ERR(31, 1623, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1642
 *         return request
 * 
 *     def Allreduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__718 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_op, __pyx_n_s_info, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__718)) __PYX_ERR(31, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__718);
  __Pyx_GIVEREF(__pyx_tuple__718);
  __pyx_codeobj__719 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Allreduce_init, 1642, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__719)) __PYX_ERR(31, 1642, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1660
 *         return request
 * 
 *     def Reduce_scatter_block_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_codeobj__720 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Reduce_scatter_block_init, 1660, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__720)) __PYX_ERR(31, 1660, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1678
 *         return request
 * 
 *     def Reduce_scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_tuple__721 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_sendbuf, __pyx_n_s_recvbuf, __pyx_n_s_recvcounts, __pyx_n_s_op, __pyx_n_s_info, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__721)) __PYX_ERR(31, 1678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__721);
  __Pyx_GIVEREF(__pyx_tuple__721);
  __pyx_codeobj__722 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__721, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Reduce_scatter_init, 1678, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__722)) __PYX_ERR(31, 1678, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1701
 *     # -----
 * 
 *     def Is_inter(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intercommunicator.
 */
  __pyx_codeobj__723 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Is_inter, 1701, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__723)) __PYX_ERR(31, 1701, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1714
 *             return self.Is_inter()
 * 
 *     def Is_intra(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intracommunicator.
 */
  __pyx_codeobj__724 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Is_intra, 1714, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__724)) __PYX_ERR(31, 1714, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1725
 *             return self.Is_intra()
 * 
 *     def Get_topology(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the type of topology (if any) associated with a communicator.
 */
  __pyx_tuple__725 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_topo); if (unlikely(!__pyx_tuple__725)) __PYX_ERR(31, 1725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__725);
  __Pyx_GIVEREF(__pyx_tuple__725);
  __pyx_codeobj__726 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__725, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_topology, 1725, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__726)) __PYX_ERR(31, 1725, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1746
 *     # -------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_parent(cls) -> Intercomm:
 *         """
 */
  __pyx_tuple__727 = PyTuple_Pack(2, __pyx_n_s_cls, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__727)) __PYX_ERR(31, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__727);
  __Pyx_GIVEREF(__pyx_tuple__727);
  __pyx_codeobj__728 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__727, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_parent, 1746, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__728)) __PYX_ERR(31, 1746, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1756
 *         return comm
 * 
 *     def Disconnect(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Disconnect from a communicator.
 */
  __pyx_codeobj__729 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Disconnect, 1756, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__729)) __PYX_ERR(31, 1756, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1762
 *         with nogil: CHKERR( MPI_Comm_disconnect(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Join(cls, int fd: int) -> Intercomm:
 *         """
 */
  __pyx_tuple__730 = PyTuple_Pack(3, __pyx_n_s_cls, __pyx_n_s_fd, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__730)) __PYX_ERR(31, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__730);
  __Pyx_GIVEREF(__pyx_tuple__730);
  __pyx_codeobj__731 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__730, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Join, 1762, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__731)) __PYX_ERR(31, 1762, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1775
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */
  __pyx_codeobj__732 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__322, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_attr, 1775, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__732)) __PYX_ERR(31, 1775, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1801
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */
  __pyx_codeobj__733 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Set_attr, 1801, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__733)) __PYX_ERR(31, 1801, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1807
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */
  __pyx_codeobj__734 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__326, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Delete_attr, 1807, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__734)) __PYX_ERR(31, 1807, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1813
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */
  __pyx_codeobj__735 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__328, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_keyval, 1813, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__735)) __PYX_ERR(31, 1813, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1831
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */
  __pyx_codeobj__736 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__331, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Free_keyval, 1831, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__736)) __PYX_ERR(31, 1831, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1844
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_codeobj__737 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__567, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_errhandler, 1844, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__737)) __PYX_ERR(31, 1844, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1862
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a communicator.
 */
  __pyx_codeobj__738 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_errhandler, 1862, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__738)) __PYX_ERR(31, 1862, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1870
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a communicator.
 */
  __pyx_codeobj__739 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Set_errhandler, 1870, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__739)) __PYX_ERR(31, 1870, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1876
 *         CHKERR( MPI_Comm_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a communicator.
 */
  __pyx_codeobj__740 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Call_errhandler, 1876, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__740)) __PYX_ERR(31, 1876, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1882
 *         CHKERR( MPI_Comm_call_errhandler(self.ob_mpi, errorcode) )
 * 
 *     def Abort(self, int errorcode: int = 0) -> NoReturn:             # <<<<<<<<<<<<<<
 *         """
 *         Terminate the MPI execution environment.
 */
  __pyx_codeobj__741 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Abort, 1882, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__741)) __PYX_ERR(31, 1882, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1896
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this communicator.
 */
  __pyx_codeobj__742 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_name, 1896, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__742)) __PYX_ERR(31, 1896, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1905
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this communicator.
 */
  __pyx_codeobj__743 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Set_name, 1905, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__743)) __PYX_ERR(31, 1905, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1924
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__744 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_py2f, 1924, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__744)) __PYX_ERR(31, 1924, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1929
 *         return MPI_Comm_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Comm:
 *         """
 */
  __pyx_codeobj__745 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_f2py, 1929, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__745)) __PYX_ERR(31, 1929, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1938
 *     # --------------------
 * 
 *     def send(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_tuple__746 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_obj, __pyx_n_s_dest, __pyx_n_s_tag, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__746)) __PYX_ERR(31, 1938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__746);
  __Pyx_GIVEREF(__pyx_tuple__746);
  __pyx_codeobj__747 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__746, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_send, 1938, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__747)) __PYX_ERR(31, 1938, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1948
 *         return PyMPI_send(obj, dest, tag, comm)
 * 
 *     def bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_codeobj__748 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__746, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_bsend, 1948, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__748)) __PYX_ERR(31, 1948, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1958
 *         return PyMPI_bsend(obj, dest, tag, comm)
 * 
 *     def ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_codeobj__749 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__746, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_ssend, 1958, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__749)) __PYX_ERR(31, 1958, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1968
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 *     def recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */
  __pyx_tuple__750 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_comm, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__750)) __PYX_ERR(31, 1968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__750);
  __Pyx_GIVEREF(__pyx_tuple__750);
  __pyx_codeobj__751 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__750, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_recv, 1968, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__751)) __PYX_ERR(31, 1968, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1980
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 *     def sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_tuple__752 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_sendobj, __pyx_n_s_dest, __pyx_n_s_sendtag, __pyx_n_s_recvbuf, __pyx_n_s_source, __pyx_n_s_recvtag, __pyx_n_s_status, __pyx_n_s_comm, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__752)) __PYX_ERR(31, 1980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__752);
  __Pyx_GIVEREF(__pyx_tuple__752);
  __pyx_codeobj__753 = (PyObject*)__Pyx_PyCode_New(8, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__752, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_sendrecv, 1980, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__753)) __PYX_ERR(31, 1980, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1997
 *                               comm, statusp)
 * 
 *     def isend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_tuple__754 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_obj, __pyx_n_s_dest, __pyx_n_s_tag, __pyx_n_s_comm, __pyx_n_s_request); if (unlikely(!__pyx_tuple__754)) __PYX_ERR(31, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__754);
  __Pyx_GIVEREF(__pyx_tuple__754);
  __pyx_codeobj__755 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__754, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_isend, 1997, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__755)) __PYX_ERR(31, 1997, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2009
 *         return request
 * 
 *     def ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_codeobj__756 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__754, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_ibsend, 2009, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__756)) __PYX_ERR(31, 2009, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2021
 *         return request
 * 
 *     def issend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_codeobj__757 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__754, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_issend, 2021, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__757)) __PYX_ERR(31, 2021, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2033
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */
  __pyx_tuple__758 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_comm, __pyx_n_s_request); if (unlikely(!__pyx_tuple__758)) __PYX_ERR(31, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__758);
  __Pyx_GIVEREF(__pyx_tuple__758);
  __pyx_codeobj__759 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__758, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_irecv, 2033, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__759)) __PYX_ERR(31, 2033, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2045
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_tuple__760 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_comm, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__760)) __PYX_ERR(31, 2045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__760);
  __Pyx_GIVEREF(__pyx_tuple__760);
  __pyx_codeobj__761 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__760, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_probe, 2045, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__761)) __PYX_ERR(31, 2045, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2056
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 *     def iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_codeobj__762 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__760, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_iprobe, 2056, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__762)) __PYX_ERR(31, 2056, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2067
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 *     def mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_tuple__763 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_comm, __pyx_n_s_statusp, __pyx_n_s_message); if (unlikely(!__pyx_tuple__763)) __PYX_ERR(31, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__763);
  __Pyx_GIVEREF(__pyx_tuple__763);
  __pyx_codeobj__764 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__763, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_mprobe, 2067, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__764)) __PYX_ERR(31, 2067, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2081
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_tuple__765 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_source, __pyx_n_s_tag, __pyx_n_s_status, __pyx_n_s_flag, __pyx_n_s_comm, __pyx_n_s_statusp, __pyx_n_s_message); if (unlikely(!__pyx_tuple__765)) __PYX_ERR(31, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__765);
  __Pyx_GIVEREF(__pyx_tuple__765);
  __pyx_codeobj__766 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__765, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_improbe, 2081, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__766)) __PYX_ERR(31, 2081, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2097
 *         return message
 * 
 *     def barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */
  __pyx_codeobj__767 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__583, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_barrier, 2097, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__767)) __PYX_ERR(31, 2097, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2106
 *         return PyMPI_barrier(comm)
 * 
 *     def bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_tuple__768 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_obj, __pyx_n_s_root, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__768)) __PYX_ERR(31, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__768);
  __Pyx_GIVEREF(__pyx_tuple__768);
  __pyx_codeobj__769 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__768, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_bcast, 2106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__769)) __PYX_ERR(31, 2106, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2115
 *         return PyMPI_bcast(obj, root, comm)
 * 
 *     def gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_tuple__770 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_sendobj, __pyx_n_s_root, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__770)) __PYX_ERR(31, 2115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__770);
  __Pyx_GIVEREF(__pyx_tuple__770);
  __pyx_codeobj__771 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__770, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_gather, 2115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__771)) __PYX_ERR(31, 2115, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2124
 *         return PyMPI_gather(sendobj, root, comm)
 * 
 *     def scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any] | None,
 */
  __pyx_codeobj__772 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__770, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_scatter, 2124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__772)) __PYX_ERR(31, 2124, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2133
 *         return PyMPI_scatter(sendobj, root, comm)
 * 
 *     def allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_tuple__773 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_sendobj, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__773)) __PYX_ERR(31, 2133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__773);
  __Pyx_GIVEREF(__pyx_tuple__773);
  __pyx_codeobj__774 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__773, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_allgather, 2133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__774)) __PYX_ERR(31, 2133, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2141
 *         return PyMPI_allgather(sendobj, comm)
 * 
 *     def alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any],
 */
  __pyx_codeobj__775 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__773, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_alltoall, 2141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__775)) __PYX_ERR(31, 2141, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2149
 *         return PyMPI_alltoall(sendobj, comm)
 * 
 *     def reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_tuple__776 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_sendobj, __pyx_n_s_op, __pyx_n_s_root, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__776)) __PYX_ERR(31, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__776);
  __Pyx_GIVEREF(__pyx_tuple__776);
  __pyx_codeobj__777 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__776, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_reduce_2, 2149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__777)) __PYX_ERR(31, 2149, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2159
 *         return PyMPI_reduce(sendobj, op, root, comm)
 * 
 *     def allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_tuple__778 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_sendobj, __pyx_n_s_op, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__778)) __PYX_ERR(31, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__778);
  __Pyx_GIVEREF(__pyx_tuple__778);
  __pyx_codeobj__779 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__778, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_allreduce, 2159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__779)) __PYX_ERR(31, 2159, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2185
 *     # -------------------------
 * 
 *     def Create_group(self, Group group: Group, int tag: int = 0) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */
  __pyx_tuple__780 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_group, __pyx_n_s_tag, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__780)) __PYX_ERR(31, 2185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__780);
  __Pyx_GIVEREF(__pyx_tuple__780);
  __pyx_codeobj__781 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__780, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_group, 2185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__781)) __PYX_ERR(31, 2185, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
 */
  __pyx_tuple__782 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_group, __pyx_n_s_stringtag, __pyx_n_s_info, __pyx_n_s_errhandler, __pyx_n_s_cstringtag, __pyx_n_s_cerrhdl, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__782)) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__782);
  __Pyx_GIVEREF(__pyx_tuple__782);
  __pyx_codeobj__783 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__782, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_from_group, 2195, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__783)) __PYX_ERR(31, 2195, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2214
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */
  __pyx_tuple__784 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_dims, __pyx_n_s_periods, __pyx_n_s_reorder, __pyx_n_s_ndims, __pyx_n_s_idims, __pyx_n_s_iperiods, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__784)) __PYX_ERR(31, 2214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__784);
  __Pyx_GIVEREF(__pyx_tuple__784);
  __pyx_codeobj__785 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__784, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_cart, 2214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__785)) __PYX_ERR(31, 2214, __pyx_L1_error)
  __pyx_tuple__786 = PyTuple_Pack(2, Py_None, Py_False); if (unlikely(!__pyx_tuple__786)) __PYX_ERR(31, 2214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__786);
  __Pyx_GIVEREF(__pyx_tuple__786);

  /* "src/mpi4py/MPI.src/Comm.pyx":2235
 *         return comm
 * 
 *     def Create_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */
  __pyx_tuple__787 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_edges, __pyx_n_s_reorder, __pyx_n_s_nnodes, __pyx_n_s_iindex, __pyx_n_s_nedges, __pyx_n_s_iedges, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__787)) __PYX_ERR(31, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__787);
  __Pyx_GIVEREF(__pyx_tuple__787);
  __pyx_codeobj__788 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__787, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_graph, 2235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__788)) __PYX_ERR(31, 2235, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2259
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */
  __pyx_tuple__789 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_sources, __pyx_n_s_destinations, __pyx_n_s_sourceweights, __pyx_n_s_destweights, __pyx_n_s_info, __pyx_n_s_reorder, __pyx_n_s_indegree, __pyx_n_s_isource, __pyx_n_s_outdegree, __pyx_n_s_idest, __pyx_n_s_isourceweight, __pyx_n_s_idestweight, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__789)) __PYX_ERR(31, 2259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__789);
  __Pyx_GIVEREF(__pyx_tuple__789);
  __pyx_codeobj__790 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__789, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_dist_graph_adjacent, 2259, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__790)) __PYX_ERR(31, 2259, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2293
 *         return comm
 * 
 *     def Create_dist_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */
  __pyx_tuple__791 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_sources, __pyx_n_s_degrees, __pyx_n_s_destinations, __pyx_n_s_weights, __pyx_n_s_info, __pyx_n_s_reorder, __pyx_n_s_nv, __pyx_n_s_ne, __pyx_n_s_isource, __pyx_n_s_idegree, __pyx_n_s_idest, __pyx_n_s_iweight, __pyx_n_s_i, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__791)) __PYX_ERR(31, 2293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__791);
  __Pyx_GIVEREF(__pyx_tuple__791);
  __pyx_codeobj__792 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 15, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__791, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_dist_graph, 2293, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__792)) __PYX_ERR(31, 2293, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2322
 *         return comm
 * 
 *     def Create_intercomm(             # <<<<<<<<<<<<<<
 *         self,
 *         int local_leader: int,
 */
  __pyx_tuple__793 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_local_leader, __pyx_n_s_peer_comm, __pyx_n_s_remote_leader, __pyx_n_s_tag, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__793)) __PYX_ERR(31, 2322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__793);
  __Pyx_GIVEREF(__pyx_tuple__793);
  __pyx_codeobj__794 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__793, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_intercomm, 2322, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__794)) __PYX_ERR(31, 2322, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2343
 *     # ----------------------------
 * 
 *     def Cart_map(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */
  __pyx_tuple__795 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_dims, __pyx_n_s_periods, __pyx_n_s_ndims, __pyx_n_s_idims, __pyx_n_s_iperiods, __pyx_n_s_rank); if (unlikely(!__pyx_tuple__795)) __PYX_ERR(31, 2343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__795);
  __Pyx_GIVEREF(__pyx_tuple__795);
  __pyx_codeobj__796 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__795, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Cart_map, 2343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__796)) __PYX_ERR(31, 2343, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2360
 *         return rank
 * 
 *     def Graph_map(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */
  __pyx_tuple__797 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_edges, __pyx_n_s_nnodes, __pyx_n_s_iindex, __pyx_n_s_nedges, __pyx_n_s_iedges, __pyx_n_s_rank); if (unlikely(!__pyx_tuple__797)) __PYX_ERR(31, 2360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__797);
  __Pyx_GIVEREF(__pyx_tuple__797);
  __pyx_codeobj__798 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__797, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Graph_map, 2360, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__798)) __PYX_ERR(31, 2360, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2385
 *     # Inclusive Scan
 * 
 *     def Scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__799 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Scan, 2385, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__799)) __PYX_ERR(31, 2385, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2402
 *     # Exclusive Scan
 * 
 *     def Exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__800 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Exscan, 2402, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__800)) __PYX_ERR(31, 2402, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2419
 *     # Nonblocking
 * 
 *     def Iscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__801 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__696, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iscan, 2419, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__801)) __PYX_ERR(31, 2419, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2436
 *         return request
 * 
 *     def Iexscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__802 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__696, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iexscan, 2436, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__802)) __PYX_ERR(31, 2436, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2455
 *     # Persistent
 * 
 *     def Scan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__803 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Scan_init, 2455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__803)) __PYX_ERR(31, 2455, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2474
 *         return request
 * 
 *     def Exscan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_codeobj__804 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Exscan_init, 2474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__804)) __PYX_ERR(31, 2474, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2495
 *     # Python Communication
 * 
 *     def scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_codeobj__805 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__778, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_scan, 2495, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__805)) __PYX_ERR(31, 2495, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2504
 *         return PyMPI_scan(sendobj, op, comm)
 * 
 *     def exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_codeobj__806 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__778, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_exscan, 2504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__806)) __PYX_ERR(31, 2504, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2518
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: str,
 */
  __pyx_tuple__807 = PyTuple_Pack(16, __pyx_n_s_self, __pyx_n_s_command, __pyx_n_s_args, __pyx_n_s_maxprocs, __pyx_n_s_info, __pyx_n_s_root, __pyx_n_s_errcodes, __pyx_n_s_cmd, __pyx_n_s_argv, __pyx_n_s_ierrcodes, __pyx_n_s_rank, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_unused3, __pyx_n_s_comm, __pyx_n_s_i); if (unlikely(!__pyx_tuple__807)) __PYX_ERR(31, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__807);
  __Pyx_GIVEREF(__pyx_tuple__807);
  __pyx_codeobj__808 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 16, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__807, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Spawn, 2518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__808)) __PYX_ERR(31, 2518, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2554
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[str],
 */
  __pyx_tuple__810 = PyTuple_Pack(26, __pyx_n_s_self, __pyx_n_s_command, __pyx_n_s_args, __pyx_n_s_maxprocs, __pyx_n_s_info, __pyx_n_s_root, __pyx_n_s_errcodes, __pyx_n_s_count, __pyx_n_s_cmds, __pyx_n_s_argvs, __pyx_n_s_infos, __pyx_n_s_imaxprocs, __pyx_n_s_ierrcodes, __pyx_n_s_rank, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_unused3, __pyx_n_s_unused4, __pyx_n_s_unused5, __pyx_n_s_np, __pyx_n_s_i, __pyx_n_s_comm, __pyx_n_s_p, __pyx_n_s_q, __pyx_n_s__809, __pyx_n_s_j); if (unlikely(!__pyx_tuple__810)) __PYX_ERR(31, 2554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__810);
  __Pyx_GIVEREF(__pyx_tuple__810);
  __pyx_codeobj__811 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 26, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__810, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Spawn_multiple, 2554, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__811)) __PYX_ERR(31, 2554, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2608
 *     # Server Routines
 * 
 *     def Accept(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */
  __pyx_tuple__812 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_port_name, __pyx_n_s_info, __pyx_n_s_root, __pyx_n_s_cportname, __pyx_n_s_rank, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__812)) __PYX_ERR(31, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__812);
  __Pyx_GIVEREF(__pyx_tuple__812);
  __pyx_codeobj__813 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__812, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Accept, 2608, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__813)) __PYX_ERR(31, 2608, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2631
 *     # Client Routines
 * 
 *     def Connect(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */
  __pyx_codeobj__814 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__812, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Connect, 2631, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__814)) __PYX_ERR(31, 2631, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2727
 *     # ------------------------
 * 
 *     def Neighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_codeobj__815 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_allgather, 2727, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__815)) __PYX_ERR(31, 2727, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2742
 *             self.ob_mpi) )
 * 
 *     def Neighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_codeobj__816 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_allgatherv, 2742, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__816)) __PYX_ERR(31, 2742, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2757
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */
  __pyx_codeobj__817 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_alltoall, 2757, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__817)) __PYX_ERR(31, 2757, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2772
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */
  __pyx_codeobj__818 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_alltoallv, 2772, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__818)) __PYX_ERR(31, 2772, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2787
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */
  __pyx_codeobj__819 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__667, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_alltoallw, 2787, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__819)) __PYX_ERR(31, 2787, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2805
 *     # ------------------------------------
 * 
 *     def Ineighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_codeobj__820 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ineighbor_allgather, 2805, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__820)) __PYX_ERR(31, 2805, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2823
 *         return request
 * 
 *     def Ineighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_codeobj__821 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ineighbor_allgatherv, 2823, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__821)) __PYX_ERR(31, 2823, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2841
 *         return request
 * 
 *     def Ineighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */
  __pyx_codeobj__822 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ineighbor_alltoall, 2841, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__822)) __PYX_ERR(31, 2841, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2859
 *         return request
 * 
 *     def Ineighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */
  __pyx_codeobj__823 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ineighbor_alltoallv, 2859, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__823)) __PYX_ERR(31, 2859, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2877
 *         return request
 * 
 *     def Ineighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */
  __pyx_codeobj__824 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__688, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Ineighbor_alltoallw, 2877, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__824)) __PYX_ERR(31, 2877, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2898
 *     # -----------------------------------
 * 
 *     def Neighbor_allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_codeobj__825 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_allgather_init, 2898, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__825)) __PYX_ERR(31, 2898, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2917
 *         return request
 * 
 *     def Neighbor_allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_codeobj__826 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_allgatherv_init, 2917, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__826)) __PYX_ERR(31, 2917, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2936
 *         return request
 * 
 *     def Neighbor_alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */
  __pyx_codeobj__827 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_alltoall_init, 2936, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__827)) __PYX_ERR(31, 2936, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2955
 *         return request
 * 
 *     def Neighbor_alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */
  __pyx_codeobj__828 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_alltoallv_init, 2955, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__828)) __PYX_ERR(31, 2955, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2974
 *         return request
 * 
 *     def Neighbor_alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */
  __pyx_codeobj__829 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__710, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Neighbor_alltoallw_init, 2974, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__829)) __PYX_ERR(31, 2974, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2995
 *     # Python Communication
 * 
 *     def neighbor_allgather(self, sendobj: Any) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */
  __pyx_codeobj__830 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__773, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_neighbor_allgather, 2995, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__830)) __PYX_ERR(31, 2995, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3000
 *         return PyMPI_neighbor_allgather(sendobj, comm)
 * 
 *     def neighbor_alltoall(self, sendobj: list[Any]) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor All to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */
  __pyx_codeobj__831 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__773, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_neighbor_alltoall, 3000, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__831)) __PYX_ERR(31, 3000, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3022
 *     # ---------------------------
 * 
 *     def Get_dim(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of dimensions.
 */
  __pyx_tuple__832 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_dim); if (unlikely(!__pyx_tuple__832)) __PYX_ERR(31, 3022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__832);
  __Pyx_GIVEREF(__pyx_tuple__832);
  __pyx_codeobj__833 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__832, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_dim, 3022, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__833)) __PYX_ERR(31, 3022, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3040
 *             return self.Get_dim()
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the cartesian topology.
 */
  __pyx_tuple__834 = PyTuple_Pack(14, __pyx_n_s_self, __pyx_n_s_ndim, __pyx_n_s_idims, __pyx_n_s_unused1, __pyx_n_s_iperiods, __pyx_n_s_unused2, __pyx_n_s_icoords, __pyx_n_s_unused3, __pyx_n_s_dims, __pyx_n_s_periods, __pyx_n_s_coords, __pyx_n_s_i, __pyx_n_s_i, __pyx_n_s_i); if (unlikely(!__pyx_tuple__834)) __PYX_ERR(31, 3040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__834);
  __Pyx_GIVEREF(__pyx_tuple__834);
  __pyx_codeobj__835 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__834, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_topo, 3040, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__835)) __PYX_ERR(31, 3040, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3081
 *     # ------------------------------
 * 
 *     def Get_cart_rank(self, coords: Sequence[int]) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate logical coordinates to ranks.
 */
  __pyx_tuple__836 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_coords, __pyx_n_s_ndim, __pyx_n_s_icoords, __pyx_n_s_rank); if (unlikely(!__pyx_tuple__836)) __PYX_ERR(31, 3081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__836);
  __Pyx_GIVEREF(__pyx_tuple__836);
  __pyx_codeobj__837 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__836, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_cart_rank, 3081, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__837)) __PYX_ERR(31, 3081, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3092
 *         return rank
 * 
 *     def Get_coords(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Translate ranks to logical coordinates.
 */
  __pyx_tuple__838 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_rank, __pyx_n_s_ndim, __pyx_n_s_icoords, __pyx_n_s_unused, __pyx_n_s_coords, __pyx_n_s_i); if (unlikely(!__pyx_tuple__838)) __PYX_ERR(31, 3092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__838);
  __Pyx_GIVEREF(__pyx_tuple__838);
  __pyx_codeobj__839 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__838, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_coords, 3092, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__839)) __PYX_ERR(31, 3092, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3106
 *     # ------------------------
 * 
 *     def Shift(self, int direction: int, int disp: int) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return a process ranks for data shifting with `Sendrecv`.
 */
  __pyx_tuple__840 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_direction, __pyx_n_s_disp, __pyx_n_s_source, __pyx_n_s_dest); if (unlikely(!__pyx_tuple__840)) __PYX_ERR(31, 3106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__840);
  __Pyx_GIVEREF(__pyx_tuple__840);
  __pyx_codeobj__841 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__840, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Shift, 3106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__841)) __PYX_ERR(31, 3106, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3117
 *     # ----------------------------
 * 
 *     def Sub(self, remain_dims: Sequence[bool]) -> Cartcomm:             # <<<<<<<<<<<<<<
 *         """
 *         Return a lower-dimensional Cartesian topology.
 */
  __pyx_tuple__842 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_remain_dims, __pyx_n_s_ndim, __pyx_n_s_iremdims, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__842)) __PYX_ERR(31, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__842);
  __Pyx_GIVEREF(__pyx_tuple__842);
  __pyx_codeobj__843 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__842, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Sub, 3117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__843)) __PYX_ERR(31, 3117, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3132
 * # Cartesian Convenience Function
 * 
 * def Compute_dims(int nnodes: int, dims: int | Sequence[int]) -> list[int]:             # <<<<<<<<<<<<<<
 *     """
 *     Return a balanced distribution of processes per coordinate direction.
 */
  __pyx_tuple__844 = PyTuple_Pack(6, __pyx_n_s_nnodes, __pyx_n_s_dims, __pyx_n_s_ndims, __pyx_n_s_idims, __pyx_n_s_unused, __pyx_n_s_i); if (unlikely(!__pyx_tuple__844)) __PYX_ERR(31, 3132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__844);
  __Pyx_GIVEREF(__pyx_tuple__844);
  __pyx_codeobj__845 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__844, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Compute_dims, 3132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__845)) __PYX_ERR(31, 3132, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3164
 *     # -----------------------
 * 
 *     def Get_dims(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of nodes and edges.
 */
  __pyx_tuple__846 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_nnodes, __pyx_n_s_nedges); if (unlikely(!__pyx_tuple__846)) __PYX_ERR(31, 3164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__846);
  __Pyx_GIVEREF(__pyx_tuple__846);
  __pyx_codeobj__847 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__846, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_dims, 3164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__847)) __PYX_ERR(31, 3164, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3187
 *             return self.Get_dims()[1]
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return index and edges.
 */
  __pyx_tuple__848 = PyTuple_Pack(11, __pyx_n_s_self, __pyx_n_s_nindex, __pyx_n_s_nedges, __pyx_n_s_iindex, __pyx_n_s_unused1, __pyx_n_s_iedges, __pyx_n_s_unused2, __pyx_n_s_index, __pyx_n_s_edges, __pyx_n_s_i, __pyx_n_s_i); if (unlikely(!__pyx_tuple__848)) __PYX_ERR(31, 3187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__848);
  __Pyx_GIVEREF(__pyx_tuple__848);
  __pyx_codeobj__849 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__848, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_topo, 3187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__849)) __PYX_ERR(31, 3187, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3220
 *     # ---------------------------
 * 
 *     def Get_neighbors_count(self, int rank: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of neighbors of a process.
 */
  __pyx_tuple__850 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_rank, __pyx_n_s_nneighbors); if (unlikely(!__pyx_tuple__850)) __PYX_ERR(31, 3220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__850);
  __Pyx_GIVEREF(__pyx_tuple__850);
  __pyx_codeobj__851 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__850, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_neighbors_count, 3220, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__851)) __PYX_ERR(31, 3220, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3234
 *             return self.Get_neighbors_count(rank)
 * 
 *     def Get_neighbors(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return list of neighbors of a process.
 */
  __pyx_tuple__852 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_rank, __pyx_n_s_nneighbors, __pyx_n_s_ineighbors, __pyx_n_s_unused, __pyx_n_s_neighbors, __pyx_n_s_i); if (unlikely(!__pyx_tuple__852)) __PYX_ERR(31, 3234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__852);
  __Pyx_GIVEREF(__pyx_tuple__852);
  __pyx_codeobj__853 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__852, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_neighbors, 3234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__853)) __PYX_ERR(31, 3234, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3270
 *     # --------------------------
 * 
 *     def Get_dist_neighbors_count(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return adjacency information for a distributed graph topology.
 */
  __pyx_tuple__854 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_indegree, __pyx_n_s_outdegree, __pyx_n_s_weighted); if (unlikely(!__pyx_tuple__854)) __PYX_ERR(31, 3270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__854);
  __Pyx_GIVEREF(__pyx_tuple__854);
  __pyx_codeobj__855 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__854, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_dist_neighbors_count, 3270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__855)) __PYX_ERR(31, 3270, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3281
 *         return (indegree, outdegree, <bint>weighted)
 * 
 *     def Get_dist_neighbors(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], tuple[list[int], list[int]] | None]:
 *         """
 */
  __pyx_tuple__856 = PyTuple_Pack(21, __pyx_n_s_self, __pyx_n_s_maxindegree, __pyx_n_s_maxoutdegree, __pyx_n_s_weighted, __pyx_n_s_sources, __pyx_n_s_destinations, __pyx_n_s_sourceweights, __pyx_n_s_destweights, __pyx_n_s_unused1, __pyx_n_s_unused2, __pyx_n_s_unused3, __pyx_n_s_unused4, __pyx_n_s_i, __pyx_n_s_src, __pyx_n_s_dst, __pyx_n_s_sw, __pyx_n_s_dw, __pyx_n_s_i, __pyx_n_s_i, __pyx_n_s_i, __pyx_n_s_i); if (unlikely(!__pyx_tuple__856)) __PYX_ERR(31, 3281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__856);
  __Pyx_GIVEREF(__pyx_tuple__856);
  __pyx_codeobj__857 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 21, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__856, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_dist_neighbors, 3281, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__857)) __PYX_ERR(31, 3281, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3334
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
 */
  __pyx_tuple__858 = PyTuple_Pack(11, __pyx_n_s_cls, __pyx_n_s_local_group, __pyx_n_s_local_leader, __pyx_n_s_remote_group, __pyx_n_s_remote_leader, __pyx_n_s_stringtag, __pyx_n_s_info, __pyx_n_s_errhandler, __pyx_n_s_cstringtag, __pyx_n_s_cerrhdl, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__858)) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__858);
  __Pyx_GIVEREF(__pyx_tuple__858);
  __pyx_codeobj__859 = (PyObject*)__Pyx_PyCode_New(8, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__858, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Create_from_groups, 3334, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__859)) __PYX_ERR(31, 3334, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3361
 *     # ---------------------------
 * 
 *     def Get_remote_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the remote group associated with the inter-communicator.
 */
  __pyx_codeobj__860 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_remote_group, 3361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__860)) __PYX_ERR(31, 3361, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3375
 *             return self.Get_remote_group()
 * 
 *     def Get_remote_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Intercommunicator remote size.
 */
  __pyx_codeobj__861 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Get_remote_size, 3375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__861)) __PYX_ERR(31, 3375, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3391
 *     # -------------------------
 * 
 *     def Merge(self, bint high: bool = False) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Merge intercommunicator into an intracommunicator.
 */
  __pyx_tuple__862 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_high, __pyx_n_s_comm); if (unlikely(!__pyx_tuple__862)) __PYX_ERR(31, 3391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__862);
  __Pyx_GIVEREF(__pyx_tuple__862);
  __pyx_codeobj__863 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__862, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Merge, 3391, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__863)) __PYX_ERR(31, 3391, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3426
 * 
 * 
 * def Attach_buffer(buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Attach a user-provided buffer for sending in buffered mode.
 */
  __pyx_tuple__864 = PyTuple_Pack(3, __pyx_n_s_buf, __pyx_n_s_base, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__864)) __PYX_ERR(31, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__864);
  __Pyx_GIVEREF(__pyx_tuple__864);
  __pyx_codeobj__865 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__864, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Attach_buffer, 3426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__865)) __PYX_ERR(31, 3426, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3437
 * 
 * 
 * def Detach_buffer() -> Buffer | None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer.
 */
  __pyx_tuple__866 = PyTuple_Pack(2, __pyx_n_s_base, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__866)) __PYX_ERR(31, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__866);
  __Pyx_GIVEREF(__pyx_tuple__866);
  __pyx_codeobj__867 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__866, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Detach_buffer, 3437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__867)) __PYX_ERR(31, 3437, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3447
 * 
 * 
 * def Flush_buffer() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Block until all buffered messages have been transmitted.
 */
  __pyx_codeobj__868 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Flush_buffer, 3447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__868)) __PYX_ERR(31, 3447, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3454
 * 
 * 
 * def Iflush_buffer() -> Request:             # <<<<<<<<<<<<<<
 *     """
 *     Nonblocking flush for buffered messages.
 */
  __pyx_tuple__869 = PyTuple_Pack(1, __pyx_n_s_request); if (unlikely(!__pyx_tuple__869)) __PYX_ERR(31, 3454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__869);
  __Pyx_GIVEREF(__pyx_tuple__869);
  __pyx_codeobj__870 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__869, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Iflush_buffer, 3454, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__870)) __PYX_ERR(31, 3454, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3469
 * # ---------------
 * 
 * def Open_port(Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return an address used to connect group of processes.
 */
  __pyx_tuple__871 = PyTuple_Pack(2, __pyx_n_s_info, __pyx_n_s_cportname); if (unlikely(!__pyx_tuple__871)) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__871);
  __Pyx_GIVEREF(__pyx_tuple__871);
  __pyx_codeobj__872 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__871, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Open_port, 3469, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__872)) __PYX_ERR(31, 3469, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3480
 * 
 * 
 * def Close_port(port_name: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Close a port.
 */
  __pyx_tuple__873 = PyTuple_Pack(2, __pyx_n_s_port_name, __pyx_n_s_cportname); if (unlikely(!__pyx_tuple__873)) __PYX_ERR(31, 3480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__873);
  __Pyx_GIVEREF(__pyx_tuple__873);
  __pyx_codeobj__874 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__873, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Close_port, 3480, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__874)) __PYX_ERR(31, 3480, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3492
 * # ---------------
 * 
 * def Publish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */
  __pyx_tuple__875 = PyTuple_Pack(6, __pyx_n_s_service_name, __pyx_n_s_port_name, __pyx_n_s_info, __pyx_n_s_csrvcname, __pyx_n_s_cportname, __pyx_n_s_cinfo); if (unlikely(!__pyx_tuple__875)) __PYX_ERR(31, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__875);
  __Pyx_GIVEREF(__pyx_tuple__875);
  __pyx_codeobj__876 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__875, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Publish_name, 3492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__876)) __PYX_ERR(31, 3492, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3508
 * 
 * 
 * def Unpublish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */
  __pyx_codeobj__877 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__875, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Unpublish_name, 3508, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__877)) __PYX_ERR(31, 3508, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3524
 * 
 * 
 * def Lookup_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     info: Info = INFO_NULL,
 */
  __pyx_tuple__878 = PyTuple_Pack(5, __pyx_n_s_service_name, __pyx_n_s_info, __pyx_n_s_csrvcname, __pyx_n_s_cinfo, __pyx_n_s_cportname); if (unlikely(!__pyx_tuple__878)) __PYX_ERR(31, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__878);
  __Pyx_GIVEREF(__pyx_tuple__878);
  __pyx_codeobj__879 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__878, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Comm_pyx, __pyx_n_s_Lookup_name, 3524, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__879)) __PYX_ERR(31, 3524, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":45
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__880 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_reduce, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__880)) __PYX_ERR(32, 45, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":53
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Win:
 *         """
 */
  __pyx_codeobj__881 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_fromhandle, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__881)) __PYX_ERR(32, 53, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":60
 *         return fromhandle(<MPI_Win> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */
  __pyx_codeobj__882 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_free, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__882)) __PYX_ERR(32, 60, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":69
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */
  __pyx_tuple__883 = PyTuple_Pack(8, __pyx_n_s_cls, __pyx_n_s_memory, __pyx_n_s_disp_unit, __pyx_n_s_info, __pyx_n_s_comm, __pyx_n_s_base, __pyx_n_s_size_2, __pyx_n_s_win); if (unlikely(!__pyx_tuple__883)) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__883);
  __Pyx_GIVEREF(__pyx_tuple__883);
  __pyx_codeobj__884 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__883, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Create, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__884)) __PYX_ERR(32, 69, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":94
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate(
 *         cls,
 */
  __pyx_tuple__885 = PyTuple_Pack(7, __pyx_n_s_cls, __pyx_n_s_size_2, __pyx_n_s_disp_unit, __pyx_n_s_info, __pyx_n_s_comm, __pyx_n_s_base, __pyx_n_s_win); if (unlikely(!__pyx_tuple__885)) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__885);
  __Pyx_GIVEREF(__pyx_tuple__885);
  __pyx_codeobj__886 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__885, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Allocate, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__886)) __PYX_ERR(32, 94, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":113
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate_shared(
 *         cls,
 */
  __pyx_codeobj__887 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__885, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Allocate_shared, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__887)) __PYX_ERR(32, 113, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":132
 *         return win
 * 
 *     def Shared_query(self, int rank: int) -> tuple[buffer, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Query the process-local address for remote memory segments.
 */
  __pyx_tuple__888 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_rank, __pyx_n_s_base, __pyx_n_s_size_2, __pyx_n_s_disp_unit); if (unlikely(!__pyx_tuple__888)) __PYX_ERR(32, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__888);
  __Pyx_GIVEREF(__pyx_tuple__888);
  __pyx_codeobj__889 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__888, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Shared_query, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__889)) __PYX_ERR(32, 132, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":144
 *         return (tobuffer(self, base, size, 0), disp_unit)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_dynamic(
 *         cls,
 */
  __pyx_tuple__890 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_info, __pyx_n_s_comm, __pyx_n_s_win); if (unlikely(!__pyx_tuple__890)) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__890);
  __Pyx_GIVEREF(__pyx_tuple__890);
  __pyx_codeobj__891 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__890, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Create_dynamic, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__891)) __PYX_ERR(32, 144, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":160
 *         return win
 * 
 *     def Attach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a local memory region.
 */
  __pyx_tuple__892 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_memory, __pyx_n_s_base, __pyx_n_s_size_2); if (unlikely(!__pyx_tuple__892)) __PYX_ERR(32, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__892);
  __Pyx_GIVEREF(__pyx_tuple__892);
  __pyx_codeobj__893 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__892, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Attach, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__893)) __PYX_ERR(32, 160, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":174
 *             pass  # ~> uncovered
 * 
 *     def Detach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Detach a local memory region.
 */
  __pyx_tuple__894 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_memory, __pyx_n_s_base); if (unlikely(!__pyx_tuple__894)) __PYX_ERR(32, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__894);
  __Pyx_GIVEREF(__pyx_tuple__894);
  __pyx_codeobj__895 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__894, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Detach, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__895)) __PYX_ERR(32, 174, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":187
 *             pass  # ~> uncovered
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a window.
 */
  __pyx_codeobj__896 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Free, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__896)) __PYX_ERR(32, 187, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":197
 *     # -----------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a window.
 */
  __pyx_codeobj__897 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Set_info, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__897)) __PYX_ERR(32, 197, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":203
 *         with nogil: CHKERR( MPI_Win_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a window.
 */
  __pyx_codeobj__898 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Get_info, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__898)) __PYX_ERR(32, 203, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":222
 *     # -------------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that created the window.
 */
  __pyx_codeobj__899 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Get_group, 222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__899)) __PYX_ERR(32, 222, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":262
 *     # -----------------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */
  __pyx_codeobj__900 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__322, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Get_attr, 262, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__900)) __PYX_ERR(32, 262, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":286
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */
  __pyx_codeobj__901 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Set_attr, 286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__901)) __PYX_ERR(32, 286, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":292
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */
  __pyx_codeobj__902 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__326, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Delete_attr, 292, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__902)) __PYX_ERR(32, 292, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":298
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */
  __pyx_codeobj__903 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__328, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Create_keyval, 298, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__903)) __PYX_ERR(32, 298, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":316
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */
  __pyx_codeobj__904 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__331, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Free_keyval, 316, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__904)) __PYX_ERR(32, 316, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":363
 *             return model
 * 
 *     def tomemory(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """
 *         Return window memory buffer.
 */
  __pyx_codeobj__905 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_tomemory, 363, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__905)) __PYX_ERR(32, 363, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":381
 *     # ------------------------
 * 
 *     def Put(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__906 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_target_rank, __pyx_n_s_target, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__906)) __PYX_ERR(32, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__906);
  __Pyx_GIVEREF(__pyx_tuple__906);
  __pyx_codeobj__907 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__906, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Put, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__907)) __PYX_ERR(32, 381, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":398
 *             self.ob_mpi) )
 * 
 *     def Get(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_codeobj__908 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__906, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Get, 398, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__908)) __PYX_ERR(32, 398, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":415
 *             self.ob_mpi) )
 * 
 *     def Accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__909 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_target_rank, __pyx_n_s_target, __pyx_n_s_op, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__909)) __PYX_ERR(32, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__909);
  __Pyx_GIVEREF(__pyx_tuple__909);
  __pyx_codeobj__910 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__909, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Accumulate, 415, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__910)) __PYX_ERR(32, 415, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":433
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Get_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__911 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_result, __pyx_n_s_target_rank, __pyx_n_s_target, __pyx_n_s_op, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__911)) __PYX_ERR(32, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__911);
  __Pyx_GIVEREF(__pyx_tuple__911);
  __pyx_codeobj__912 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__911, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Get_accumulate, 433, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__912)) __PYX_ERR(32, 433, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":453
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Fetch_and_op(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__913 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_result, __pyx_n_s_target_rank, __pyx_n_s_target_disp, __pyx_n_s_op, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__913)) __PYX_ERR(32, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__913);
  __Pyx_GIVEREF(__pyx_tuple__913);
  __pyx_codeobj__914 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__913, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Fetch_and_op, 453, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__914)) __PYX_ERR(32, 453, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":471
 *                 op.ob_mpi, self.ob_mpi) )
 * 
 *     def Compare_and_swap(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__915 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_compare, __pyx_n_s_result, __pyx_n_s_target_rank, __pyx_n_s_target_disp, __pyx_n_s_msg); if (unlikely(!__pyx_tuple__915)) __PYX_ERR(32, 471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__915);
  __Pyx_GIVEREF(__pyx_tuple__915);
  __pyx_codeobj__916 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__915, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Compare_and_swap, 471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__916)) __PYX_ERR(32, 471, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":491
 *     # ------------------------------------------
 * 
 *     def Rput(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__917 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_target_rank, __pyx_n_s_target, __pyx_n_s_msg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__917)) __PYX_ERR(32, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__917);
  __Pyx_GIVEREF(__pyx_tuple__917);
  __pyx_codeobj__918 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__917, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Rput, 491, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__918)) __PYX_ERR(32, 491, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":511
 *         return request
 * 
 *     def Rget(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_codeobj__919 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__917, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Rget, 511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__919)) __PYX_ERR(32, 511, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":531
 *         return request
 * 
 *     def Raccumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__920 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_target_rank, __pyx_n_s_target, __pyx_n_s_op, __pyx_n_s_msg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__920)) __PYX_ERR(32, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__920);
  __Pyx_GIVEREF(__pyx_tuple__920);
  __pyx_codeobj__921 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__920, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Raccumulate, 531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__921)) __PYX_ERR(32, 531, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":552
 *         return request
 * 
 *     def Rget_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_tuple__922 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_origin, __pyx_n_s_result, __pyx_n_s_target_rank, __pyx_n_s_target, __pyx_n_s_op, __pyx_n_s_msg, __pyx_n_s_request); if (unlikely(!__pyx_tuple__922)) __PYX_ERR(32, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__922);
  __Pyx_GIVEREF(__pyx_tuple__922);
  __pyx_codeobj__923 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__922, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Rget_accumulate, 552, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__923)) __PYX_ERR(32, 552, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":581
 *     # -----
 * 
 *     def Fence(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Perform an MPI fence synchronization on a window.
 */
  __pyx_tuple__924 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_assertion); if (unlikely(!__pyx_tuple__924)) __PYX_ERR(32, 581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__924);
  __Pyx_GIVEREF(__pyx_tuple__924);
  __pyx_codeobj__925 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__924, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Fence, 581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__925)) __PYX_ERR(32, 581, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":590
 *     # -------------------------------------
 * 
 *     def Start(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA access epoch for MPI.
 */
  __pyx_tuple__926 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_group, __pyx_n_s_assertion); if (unlikely(!__pyx_tuple__926)) __PYX_ERR(32, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__926);
  __Pyx_GIVEREF(__pyx_tuple__926);
  __pyx_codeobj__927 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__926, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Start, 590, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__927)) __PYX_ERR(32, 590, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":597
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA operation begun after an `Start`.
 */
  __pyx_codeobj__928 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Complete, 597, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__928)) __PYX_ERR(32, 597, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":603
 *         with nogil: CHKERR( MPI_Win_complete(self.ob_mpi) )
 * 
 *     def Post(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA exposure epoch.
 */
  __pyx_codeobj__929 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__926, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Post, 603, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__929)) __PYX_ERR(32, 603, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":610
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Wait(self) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA exposure epoch begun with `Post`.
 */
  __pyx_codeobj__930 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Wait, 610, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__930)) __PYX_ERR(32, 610, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":617
 *         return True
 * 
 *     def Test(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test whether an RMA exposure epoch has completed.
 */
  __pyx_codeobj__931 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Test, 617, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__931)) __PYX_ERR(32, 617, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":628
 *     # ----
 * 
 *     def Lock(             # <<<<<<<<<<<<<<
 *         self,
 *         int rank: int,
 */
  __pyx_tuple__932 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_rank, __pyx_n_s_lock_type, __pyx_n_s_assertion); if (unlikely(!__pyx_tuple__932)) __PYX_ERR(32, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__932);
  __Pyx_GIVEREF(__pyx_tuple__932);
  __pyx_codeobj__933 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__932, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Lock, 628, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__933)) __PYX_ERR(32, 628, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":640
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 *     def Unlock(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at the target process.
 */
  __pyx_codeobj__934 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Unlock, 640, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__934)) __PYX_ERR(32, 640, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":646
 *         with nogil: CHKERR( MPI_Win_unlock(rank, self.ob_mpi) )
 * 
 *     def Lock_all(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Begin an RMA access epoch at all processes.
 */
  __pyx_codeobj__935 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__924, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Lock_all, 646, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__935)) __PYX_ERR(32, 646, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":652
 *         with nogil: CHKERR( MPI_Win_lock_all(assertion, self.ob_mpi) )
 * 
 *     def Unlock_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at all processes.
 */
  __pyx_codeobj__936 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Unlock_all, 652, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__936)) __PYX_ERR(32, 652, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":661
 *     # --------------
 * 
 *     def Flush(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at a target.
 */
  __pyx_codeobj__937 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Flush, 661, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__937)) __PYX_ERR(32, 661, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":667
 *         with nogil: CHKERR( MPI_Win_flush(rank, self.ob_mpi) )
 * 
 *     def Flush_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at all targets.
 */
  __pyx_codeobj__938 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Flush_all, 667, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__938)) __PYX_ERR(32, 667, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":673
 *         with nogil: CHKERR( MPI_Win_flush_all(self.ob_mpi) )
 * 
 *     def Flush_local(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at a target.
 */
  __pyx_codeobj__939 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__476, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Flush_local, 673, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__939)) __PYX_ERR(32, 673, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":679
 *         with nogil: CHKERR( MPI_Win_flush_local(rank, self.ob_mpi) )
 * 
 *     def Flush_local_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at all targets.
 */
  __pyx_codeobj__940 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Flush_local_all, 679, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__940)) __PYX_ERR(32, 679, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":685
 *         with nogil: CHKERR( MPI_Win_flush_local_all(self.ob_mpi) )
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Synchronize public and private copies of the window.
 */
  __pyx_codeobj__941 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Sync, 685, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__941)) __PYX_ERR(32, 685, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":694
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_codeobj__942 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__567, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Create_errhandler, 694, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__942)) __PYX_ERR(32, 694, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":712
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a window.
 */
  __pyx_codeobj__943 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Get_errhandler, 712, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__943)) __PYX_ERR(32, 712, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":720
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a window.
 */
  __pyx_codeobj__944 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Set_errhandler, 720, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__944)) __PYX_ERR(32, 720, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":726
 *         CHKERR( MPI_Win_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a window.
 */
  __pyx_codeobj__945 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Call_errhandler, 726, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__945)) __PYX_ERR(32, 726, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":735
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this window.
 */
  __pyx_codeobj__946 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Get_name, 735, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__946)) __PYX_ERR(32, 735, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":744
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this window.
 */
  __pyx_codeobj__947 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_Set_name, 744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__947)) __PYX_ERR(32, 744, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":763
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__948 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_py2f, 763, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__948)) __PYX_ERR(32, 763, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":768
 *         return MPI_Win_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Win:
 *         """
 */
  __pyx_codeobj__949 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_Win_pyx, __pyx_n_s_f2py, 768, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__949)) __PYX_ERR(32, 768, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":69
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_codeobj__950 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_reduce, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__950)) __PYX_ERR(33, 69, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":77
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> File:
 *         """
 */
  __pyx_codeobj__951 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_fromhandle, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__951)) __PYX_ERR(33, 77, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":84
 *         return fromhandle(<MPI_File> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Close` if not null.
 */
  __pyx_codeobj__952 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_free, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__952)) __PYX_ERR(33, 84, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":93
 *     # -----------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Open(
 *         cls,
 */
  __pyx_tuple__953 = PyTuple_Pack(7, __pyx_n_s_cls, __pyx_n_s_comm, __pyx_n_s_filename, __pyx_n_s_amode, __pyx_n_s_info, __pyx_n_s_cfilename, __pyx_n_s_file); if (unlikely(!__pyx_tuple__953)) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__953);
  __Pyx_GIVEREF(__pyx_tuple__953);
  __pyx_codeobj__954 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__953, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Open, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__954)) __PYX_ERR(33, 93, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":112
 *         return file
 * 
 *     def Close(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Close a file.
 */
  __pyx_codeobj__955 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Close, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__955)) __PYX_ERR(33, 112, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":118
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(
 *         cls,
 */
  __pyx_tuple__956 = PyTuple_Pack(4, __pyx_n_s_cls, __pyx_n_s_filename, __pyx_n_s_info, __pyx_n_s_cfilename); if (unlikely(!__pyx_tuple__956)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__956);
  __Pyx_GIVEREF(__pyx_tuple__956);
  __pyx_codeobj__957 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__956, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Delete, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__957)) __PYX_ERR(33, 118, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":131
 *         with nogil: CHKERR( MPI_File_delete(cfilename, info.ob_mpi) )
 * 
 *     def Set_size(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the file size.
 */
  __pyx_codeobj__958 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Set_size, 131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__958)) __PYX_ERR(33, 131, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":137
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )
 * 
 *     def Preallocate(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Preallocate storage space for a file.
 */
  __pyx_codeobj__959 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Preallocate, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__959)) __PYX_ERR(33, 137, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":143
 *         with nogil: CHKERR( MPI_File_preallocate(self.ob_mpi, size) )
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file size.
 */
  __pyx_codeobj__960 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__267, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_size, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__960)) __PYX_ERR(33, 143, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":156
 *             return self.Get_size()
 * 
 *     def Get_amode(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file access mode.
 */
  __pyx_tuple__961 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_amode); if (unlikely(!__pyx_tuple__961)) __PYX_ERR(33, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__961);
  __Pyx_GIVEREF(__pyx_tuple__961);
  __pyx_codeobj__962 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__961, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_amode, 156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__962)) __PYX_ERR(33, 156, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":172
 *     # ----------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that opened the file.
 */
  __pyx_codeobj__963 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__483, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_group, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__963)) __PYX_ERR(33, 172, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":212
 *     # ---------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a file.
 */
  __pyx_codeobj__964 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Set_info, 212, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__964)) __PYX_ERR(33, 212, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":218
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a file.
 */
  __pyx_codeobj__965 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__508, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_info, 218, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__965)) __PYX_ERR(33, 218, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":237
 *     # ----------
 * 
 *     def Set_view(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset disp: int = 0,
 */
  __pyx_tuple__966 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_disp, __pyx_n_s_etype, __pyx_n_s_filetype, __pyx_n_s_datarep, __pyx_n_s_info, __pyx_n_s_cdatarep, __pyx_n_s_cetype, __pyx_n_s_cftype); if (unlikely(!__pyx_tuple__966)) __PYX_ERR(33, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__966);
  __Pyx_GIVEREF(__pyx_tuple__966);
  __pyx_codeobj__967 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__966, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Set_view, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__967)) __PYX_ERR(33, 237, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":256
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )
 * 
 *     def Get_view(self) -> tuple[int, Datatype, Datatype, str]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file view.
 */
  __pyx_tuple__968 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_disp, __pyx_n_s_cetype, __pyx_n_s_cftype, __pyx_n_s_cdatarep, __pyx_n_s_etype, __pyx_n_s_ftype, __pyx_n_s_datarep); if (unlikely(!__pyx_tuple__968)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__968);
  __Pyx_GIVEREF(__pyx_tuple__968);
  __pyx_codeobj__969 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__968, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_view, 256, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__969)) __PYX_ERR(33, 256, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":279
 *     # ---------------------------------
 * 
 *     def Read_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_tuple__970 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_buf, __pyx_n_s_status, __pyx_n_s_m, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__970)) __PYX_ERR(33, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__970);
  __Pyx_GIVEREF(__pyx_tuple__970);
  __pyx_codeobj__971 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__970, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_at, 279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__971)) __PYX_ERR(33, 279, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":293
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__972 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__970, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_at_all, 293, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__972)) __PYX_ERR(33, 293, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":307
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__973 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__970, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_at, 307, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__973)) __PYX_ERR(33, 307, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":321
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__974 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__970, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_at_all, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__974)) __PYX_ERR(33, 321, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":335
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_tuple__975 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_buf, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__975)) __PYX_ERR(33, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__975);
  __Pyx_GIVEREF(__pyx_tuple__975);
  __pyx_codeobj__976 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__975, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iread_at, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__976)) __PYX_ERR(33, 335, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":350
 *         return request
 * 
 *     def Iread_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__977 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__975, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iread_at_all, 350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__977)) __PYX_ERR(33, 350, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":365
 *         return request
 * 
 *     def Iwrite_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__978 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__975, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iwrite_at, 365, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__978)) __PYX_ERR(33, 365, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":380
 *         return request
 * 
 *     def Iwrite_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__979 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__975, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iwrite_at_all, 380, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__979)) __PYX_ERR(33, 380, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":398
 *     # -----------------------------------------
 * 
 *     def Read(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__980 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_status, __pyx_n_s_m, __pyx_n_s_statusp); if (unlikely(!__pyx_tuple__980)) __PYX_ERR(33, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__980);
  __Pyx_GIVEREF(__pyx_tuple__980);
  __pyx_codeobj__981 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read, 398, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__981)) __PYX_ERR(33, 398, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":411
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__982 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_all, 411, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__982)) __PYX_ERR(33, 411, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":424
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__983 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write, 424, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__983)) __PYX_ERR(33, 424, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":437
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__984 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_all, 437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__984)) __PYX_ERR(33, 437, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":450
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__985 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_m, __pyx_n_s_request); if (unlikely(!__pyx_tuple__985)) __PYX_ERR(33, 450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__985);
  __Pyx_GIVEREF(__pyx_tuple__985);
  __pyx_codeobj__986 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__985, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iread, 450, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__986)) __PYX_ERR(33, 450, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":464
 *         return request
 * 
 *     def Iread_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__987 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__985, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iread_all, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__987)) __PYX_ERR(33, 464, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":478
 *         return request
 * 
 *     def Iwrite(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__988 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__985, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iwrite, 478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__988)) __PYX_ERR(33, 478, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":492
 *         return request
 * 
 *     def Iwrite_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__989 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__985, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iwrite_all, 492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__989)) __PYX_ERR(33, 492, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":506
 *         return request
 * 
 *     def Seek(self, Offset offset: int, int whence: int = SEEK_SET) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer.
 */
  __pyx_tuple__990 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_whence); if (unlikely(!__pyx_tuple__990)) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__990);
  __Pyx_GIVEREF(__pyx_tuple__990);
  __pyx_codeobj__991 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__990, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Seek, 506, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__991)) __PYX_ERR(33, 506, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":512
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )
 * 
 *     def Get_position(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the individual file pointer.
 */
  __pyx_tuple__992 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_offset); if (unlikely(!__pyx_tuple__992)) __PYX_ERR(33, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__992);
  __Pyx_GIVEREF(__pyx_tuple__992);
  __pyx_codeobj__993 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__992, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_position, 512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__993)) __PYX_ERR(33, 512, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":523
 *         return offset
 * 
 *     def Get_byte_offset(self, Offset offset: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the absolute byte position in the file.
 */
  __pyx_tuple__994 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_disp); if (unlikely(!__pyx_tuple__994)) __PYX_ERR(33, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__994);
  __Pyx_GIVEREF(__pyx_tuple__994);
  __pyx_codeobj__995 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__994, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_byte_offset, 523, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__995)) __PYX_ERR(33, 523, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":538
 *     # -------------------------------------
 * 
 *     def Read_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__996 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_shared, 538, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__996)) __PYX_ERR(33, 538, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":551
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__997 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_shared, 551, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__997)) __PYX_ERR(33, 551, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":564
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__998 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__985, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iread_shared, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__998)) __PYX_ERR(33, 564, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":578
 *         return request
 * 
 *     def Iwrite_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__999 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__985, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Iwrite_shared, 578, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__999)) __PYX_ERR(33, 578, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":592
 *         return request
 * 
 *     def Read_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1000 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_ordered, 592, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1000)) __PYX_ERR(33, 592, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":605
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1001 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_ordered, 605, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1001)) __PYX_ERR(33, 605, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":618
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__1002 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__990, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Seek_shared, 618, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1002)) __PYX_ERR(33, 618, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":629
 *             self.ob_mpi, offset, whence) )
 * 
 *     def Get_position_shared(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the shared file pointer.
 */
  __pyx_codeobj__1003 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__992, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_position_shared, 629, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1003)) __PYX_ERR(33, 629, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":646
 *     # explicit offset
 * 
 *     def Read_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_tuple__1004 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_offset, __pyx_n_s_buf, __pyx_n_s_m); if (unlikely(!__pyx_tuple__1004)) __PYX_ERR(33, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1004);
  __Pyx_GIVEREF(__pyx_tuple__1004);
  __pyx_codeobj__1005 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_at_all_begin, 646, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1005)) __PYX_ERR(33, 646, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":658
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Read_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1006 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_at_all_end, 658, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1006)) __PYX_ERR(33, 658, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":671
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_codeobj__1007 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1004, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_at_all_begin, 671, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1007)) __PYX_ERR(33, 671, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":683
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Write_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1008 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_at_all_end, 683, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1008)) __PYX_ERR(33, 683, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":698
 *     # individual file pointer
 * 
 *     def Read_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_tuple__1009 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_buf, __pyx_n_s_m); if (unlikely(!__pyx_tuple__1009)) __PYX_ERR(33, 698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1009);
  __Pyx_GIVEREF(__pyx_tuple__1009);
  __pyx_codeobj__1010 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1009, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_all_begin, 698, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1010)) __PYX_ERR(33, 698, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":709
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1011 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_all_end, 709, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1011)) __PYX_ERR(33, 709, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":722
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1012 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1009, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_all_begin, 722, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1012)) __PYX_ERR(33, 722, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":733
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1013 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_all_end, 733, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1013)) __PYX_ERR(33, 733, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":748
 *     # shared file pointer
 * 
 *     def Read_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1014 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1009, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_ordered_begin, 748, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1014)) __PYX_ERR(33, 748, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":759
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1015 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Read_ordered_end, 759, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1015)) __PYX_ERR(33, 759, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":772
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1016 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1009, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_ordered_begin, 772, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1016)) __PYX_ERR(33, 772, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":783
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_codeobj__1017 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__980, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Write_ordered_end, 783, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1017)) __PYX_ERR(33, 783, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":799
 *     # ---------------------
 * 
 *     def Get_type_extent(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the extent of datatype in the file.
 */
  __pyx_tuple__1018 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_datatype, __pyx_n_s_extent); if (unlikely(!__pyx_tuple__1018)) __PYX_ERR(33, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1018);
  __Pyx_GIVEREF(__pyx_tuple__1018);
  __pyx_codeobj__1019 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1018, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_type_extent, 799, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1019)) __PYX_ERR(33, 799, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":811
 *     # -------------------------
 * 
 *     def Set_atomicity(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the atomicity mode.
 */
  __pyx_codeobj__1020 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Set_atomicity, 811, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1020)) __PYX_ERR(33, 811, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":817
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )
 * 
 *     def Get_atomicity(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return the atomicity mode.
 */
  __pyx_codeobj__1021 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__369, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_atomicity, 817, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1021)) __PYX_ERR(33, 817, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":833
 *             self.Set_atomicity(value)
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Causes all previous writes to be transferred to the storage device.
 */
  __pyx_codeobj__1022 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Sync, 833, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1022)) __PYX_ERR(33, 833, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":842
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_codeobj__1023 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__567, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Create_errhandler, 842, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1023)) __PYX_ERR(33, 842, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":860
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a file.
 */
  __pyx_codeobj__1024 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Get_errhandler, 860, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1024)) __PYX_ERR(33, 860, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":868
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a file.
 */
  __pyx_codeobj__1025 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__569, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Set_errhandler, 868, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1025)) __PYX_ERR(33, 868, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":874
 *         CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a file.
 */
  __pyx_codeobj__1026 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Call_errhandler, 874, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1026)) __PYX_ERR(33, 874, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":883
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_codeobj__1027 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_py2f, 883, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1027)) __PYX_ERR(33, 883, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":888
 *         return MPI_File_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> File:
 *         """
 */
  __pyx_codeobj__1028 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_f2py, 888, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1028)) __PYX_ERR(33, 888, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":907
 * # ---------------------------------
 * 
 * def Register_datarep(             # <<<<<<<<<<<<<<
 *     datarep: str,
 *     read_fn: Callable[[Buffer, Datatype, int, Buffer, int], None],
 */
  __pyx_tuple__1029 = PyTuple_Pack(10, __pyx_n_s_datarep, __pyx_n_s_read_fn, __pyx_n_s_write_fn, __pyx_n_s_extent_fn, __pyx_n_s_cdatarep, __pyx_n_s_state, __pyx_n_s_rd, __pyx_n_s_wr, __pyx_n_s_ex, __pyx_n_s_xs); if (unlikely(!__pyx_tuple__1029)) __PYX_ERR(33, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1029);
  __Pyx_GIVEREF(__pyx_tuple__1029);
  __pyx_codeobj__1030 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1029, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_File_pyx, __pyx_n_s_Register_datarep, 907, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1030)) __PYX_ERR(33, 907, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":99
 * # -----------------
 * 
 * def Alloc_mem(Aint size: int, Info info: Info = INFO_NULL) -> buffer:             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and remote memory access.
 */
  __pyx_tuple__1031 = PyTuple_Pack(3, __pyx_n_s_size_2, __pyx_n_s_info, __pyx_n_s_base); if (unlikely(!__pyx_tuple__1031)) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1031);
  __Pyx_GIVEREF(__pyx_tuple__1031);
  __pyx_codeobj__1032 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1031, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Alloc_mem, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1032)) __PYX_ERR(34, 99, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":108
 * 
 * 
 * def Free_mem(mem: buffer) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem`.
 */
  __pyx_tuple__1033 = PyTuple_Pack(3, __pyx_n_s_mem, __pyx_n_s_base, __pyx_n_s_buf); if (unlikely(!__pyx_tuple__1033)) __PYX_ERR(34, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1033);
  __Pyx_GIVEREF(__pyx_tuple__1033);
  __pyx_codeobj__1034 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1033, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Free_mem, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1034)) __PYX_ERR(34, 108, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":121
 * # -----------------------
 * 
 * def Init() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */
  __pyx_codeobj__1035 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Init, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1035)) __PYX_ERR(34, 121, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":129
 * 
 * 
 * def Finalize() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment.
 */
  __pyx_codeobj__1036 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Finalize, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1036)) __PYX_ERR(34, 129, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":153
 * 
 * 
 * def Init_thread(int required: int = THREAD_MULTIPLE) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */
  __pyx_tuple__1037 = PyTuple_Pack(2, __pyx_n_s_required, __pyx_n_s_provided); if (unlikely(!__pyx_tuple__1037)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1037);
  __Pyx_GIVEREF(__pyx_tuple__1037);
  __pyx_codeobj__1038 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1037, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Init_thread, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1038)) __PYX_ERR(34, 153, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":163
 * 
 * 
 * def Query_thread() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support provided by the MPI library.
 */
  __pyx_tuple__1039 = PyTuple_Pack(1, __pyx_n_s_provided); if (unlikely(!__pyx_tuple__1039)) __PYX_ERR(34, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1039);
  __Pyx_GIVEREF(__pyx_tuple__1039);
  __pyx_codeobj__1040 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1039, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Query_thread, 163, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1040)) __PYX_ERR(34, 163, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":172
 * 
 * 
 * def Is_thread_main() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called `Init` or `Init_thread`.
 */
  __pyx_tuple__1041 = PyTuple_Pack(1, __pyx_n_s_flag); if (unlikely(!__pyx_tuple__1041)) __PYX_ERR(34, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1041);
  __Pyx_GIVEREF(__pyx_tuple__1041);
  __pyx_codeobj__1042 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1041, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Is_thread_main, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1042)) __PYX_ERR(34, 172, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":181
 * 
 * 
 * def Is_initialized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Init` has been called.
 */
  __pyx_codeobj__1043 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1041, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Is_initialized, 181, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1043)) __PYX_ERR(34, 181, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":190
 * 
 * 
 * def Is_finalized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Finalize` has completed.
 */
  __pyx_codeobj__1044 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1041, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Is_finalized, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1044)) __PYX_ERR(34, 190, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":209
 * 
 * 
 * def Get_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard.
 */
  __pyx_tuple__1045 = PyTuple_Pack(2, __pyx_n_s_version, __pyx_n_s_subversion); if (unlikely(!__pyx_tuple__1045)) __PYX_ERR(34, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1045);
  __Pyx_GIVEREF(__pyx_tuple__1045);
  __pyx_codeobj__1046 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1045, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Get_version, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1046)) __PYX_ERR(34, 209, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":219
 * 
 * 
 * def Get_library_version() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version string of the MPI library.
 */
  __pyx_tuple__1047 = PyTuple_Pack(2, __pyx_n_s_name_2, __pyx_n_s_nlen); if (unlikely(!__pyx_tuple__1047)) __PYX_ERR(34, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1047);
  __Pyx_GIVEREF(__pyx_tuple__1047);
  __pyx_codeobj__1048 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1047, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Get_library_version, 219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1048)) __PYX_ERR(34, 219, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":232
 * # ----------------------
 * 
 * def Get_processor_name() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor.
 */
  __pyx_codeobj__1049 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1047, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Get_processor_name, 232, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1049)) __PYX_ERR(34, 232, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":242
 * 
 * 
 * def Get_hw_resource_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the hardware platform of the calling processor.
 */
  __pyx_tuple__1050 = PyTuple_Pack(1, __pyx_n_s_info); if (unlikely(!__pyx_tuple__1050)) __PYX_ERR(34, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1050);
  __Pyx_GIVEREF(__pyx_tuple__1050);
  __pyx_codeobj__1051 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1050, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Get_hw_resource_info, 242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1051)) __PYX_ERR(34, 242, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":254
 * # --------------------------
 * 
 * def Wtime() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor.
 */
  __pyx_codeobj__1052 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Wtime, 254, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1052)) __PYX_ERR(34, 254, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":261
 * 
 * 
 * def Wtick() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of `Wtime`.
 */
  __pyx_codeobj__1053 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Wtick, 261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1053)) __PYX_ERR(34, 261, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":271
 * # --------------------
 * 
 * def Pcontrol(int level: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling.
 */
  __pyx_tuple__1054 = PyTuple_Pack(1, __pyx_n_s_level); if (unlikely(!__pyx_tuple__1054)) __PYX_ERR(34, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1054);
  __Pyx_GIVEREF(__pyx_tuple__1054);
  __pyx_codeobj__1055 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1054, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_Pcontrol, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1055)) __PYX_ERR(34, 271, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typestr.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * def _typecode(Datatype datatype: Datatype) -> str | None:             # <<<<<<<<<<<<<<
 *     """
 *     Map MPI datatype to character code or type string.
 */
  __pyx_tuple__1056 = PyTuple_Pack(2, __pyx_n_s_datatype, __pyx_n_s_tc); if (unlikely(!__pyx_tuple__1056)) __PYX_ERR(36, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1056);
  __Pyx_GIVEREF(__pyx_tuple__1056);
  __pyx_codeobj__1057 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1056, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi, __pyx_n_s_typecode, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1057)) __PYX_ERR(36, 3, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typestr.pxi":11
 * 
 * 
 * def _typealign(Datatype datatype: Datatype) -> int | None:             # <<<<<<<<<<<<<<
 *     """
 *     Return MPI datatype alignment.
 */
  __pyx_tuple__1058 = PyTuple_Pack(2, __pyx_n_s_datatype, __pyx_n_s_align); if (unlikely(!__pyx_tuple__1058)) __PYX_ERR(36, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1058);
  __Pyx_GIVEREF(__pyx_tuple__1058);
  __pyx_codeobj__1059 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1058, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_typestr_pxi, __pyx_n_s_typealign, 11, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1059)) __PYX_ERR(36, 11, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typedec.pxi":274
 * 
 * 
 * def _datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     str combiner: str,
 */
  __pyx_tuple__1060 = PyTuple_Pack(4, __pyx_n_s_datatype, __pyx_n_s_combiner, __pyx_n_s_params, __pyx_n_s_free); if (unlikely(!__pyx_tuple__1060)) __PYX_ERR(37, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1060);
  __Pyx_GIVEREF(__pyx_tuple__1060);
  __pyx_codeobj__1061 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1060, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi, __pyx_n_s_datatype_create, 274, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1061)) __PYX_ERR(37, 274, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typedec.pxi":286
 * 
 * 
 * def _datatype_decode(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     bint mark: bool = False,
 */
  __pyx_tuple__1062 = PyTuple_Pack(2, __pyx_n_s_datatype, __pyx_n_s_mark); if (unlikely(!__pyx_tuple__1062)) __PYX_ERR(37, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1062);
  __Pyx_GIVEREF(__pyx_tuple__1062);
  __pyx_codeobj__1063 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1062, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_typedec_pxi, __pyx_n_s_datatype_decode, 286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1063)) __PYX_ERR(37, 286, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":309
 * 
 * 
 * def get_vendor() -> tuple[str, tuple[int, int, int]]:             # <<<<<<<<<<<<<<
 *     """
 *     Information about the underlying MPI implementation.
 */
  __pyx_tuple__1064 = PyTuple_Pack(4, __pyx_n_s_name_2, __pyx_n_s_major, __pyx_n_s_minor, __pyx_n_s_micro); if (unlikely(!__pyx_tuple__1064)) __PYX_ERR(34, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1064);
  __Pyx_GIVEREF(__pyx_tuple__1064);
  __pyx_codeobj__1065 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1064, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_get_vendor, 309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1065)) __PYX_ERR(34, 309, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":333
 * 
 * 
 * def _sizeof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Size in bytes of the underlying MPI handle.
 */
  __pyx_tuple__1066 = PyTuple_Pack(1, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__1066)) __PYX_ERR(34, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1066);
  __Pyx_GIVEREF(__pyx_tuple__1066);
  __pyx_codeobj__1067 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1066, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_sizeof, 333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1067)) __PYX_ERR(34, 333, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":352
 * 
 * 
 * def _addressof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Memory address of the underlying MPI handle.
 */
  __pyx_tuple__1068 = PyTuple_Pack(2, __pyx_n_s_arg, __pyx_n_s_ptr); if (unlikely(!__pyx_tuple__1068)) __PYX_ERR(34, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__1068);
  __Pyx_GIVEREF(__pyx_tuple__1068);
  __pyx_codeobj__1069 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1068, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_addressof, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1069)) __PYX_ERR(34, 352, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":386
 * 
 * 
 * def _handleof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Unsigned integer value with the underlying MPI handle.
 */
  __pyx_codeobj__1070 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__1066, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_mpi4py_MPI_src_MPI_pyx, __pyx_n_s_handleof, 386, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__1070)) __PYX_ERR(34, 386, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}
/* #### Code section: init_constants ### */

static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
  __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_get.method_name = &__pyx_n_s_get;
  __pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_pop.method_name = &__pyx_n_s_pop;
  __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_values.method_name = &__pyx_n_s_values;
  __pyx_umethod_PyList_Type_index.type = (PyObject*)&PyList_Type;
  __pyx_umethod_PyList_Type_index.method_name = &__pyx_n_s_index;
  __pyx_umethod_PyString_Type_lower.type = (PyObject*)&PyString_Type;
  __pyx_umethod_PyString_Type_lower.method_name = &__pyx_n_s_lower;
  if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(38, 1, __pyx_L1_error);
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_int_32768 = PyInt_FromLong(32768L); if (unlikely(!__pyx_int_32768)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_int_262144 = PyInt_FromLong(262144L); if (unlikely(!__pyx_int_262144)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(38, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: init_globals ### */

static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
  return 0;
}
/* #### Code section: init_module ### */

static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/

static int __Pyx_modinit_global_init_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
  /*--- Global init code ---*/
  __pyx_v_6mpi4py_3MPI_MPIException = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI__py_module_sentinel = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_Lock = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_RLock = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_def_registry = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___newobj__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_def_op = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_keyval_lock_type = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_keyval_lock_comm = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_keyval_lock_win = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_keyval_registry_type = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_keyval_registry_comm = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_keyval_registry_win = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_errhdl_lock = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_errhdl_registry = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_op_user_lock = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_op_user_registry = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI__mpi_buffer_comm = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI__mpi_buffer_session = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNWEIGHTED__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_commlock_lock = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_commlock_registry = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_datarep_lock = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_datarep_registry = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BOTTOM__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___IN_PLACE__ = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_dumps = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_loads = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyMPI_PICKLE = ((struct __pyx_obj_6mpi4py_3MPI_Pickle *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle5_dumps = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_PyPickle5_loads = Py_None; Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DATATYPE_NULL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___PACKED__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BYTE__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___AINT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___OFFSET__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COUNT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___WCHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SIGNED_CHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SHORT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_BOOL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT8_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT16_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT32_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT64_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT8_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT16_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT32_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___UINT64_T__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CXX_BOOL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SHORT_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INT_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FLOAT_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___CHARACTER__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL1__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL2__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOGICAL8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER1__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER2__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INTEGER16__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL2__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REAL16__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX4__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX8__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX16__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMPLEX32__ = ((struct PyMPIDatatypeObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REQUEST_NULL__ = ((struct PyMPIRequestObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MESSAGE_NULL__ = ((struct PyMPIMessageObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__ = ((struct PyMPIMessageObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___OP_NULL__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MAX__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MIN__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SUM__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___PROD__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LAND__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BAND__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___LXOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___BXOR__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MAXLOC__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___MINLOC__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___REPLACE__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___NO_OP__ = ((struct PyMPIOpObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___GROUP_NULL__ = ((struct PyMPIGroupObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___GROUP_EMPTY__ = ((struct PyMPIGroupObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INFO_NULL__ = ((struct PyMPIInfoObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___INFO_ENV__ = ((struct PyMPIInfoObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__ = ((struct PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRORS_RETURN__ = ((struct PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRORS_ABORT__ = ((struct PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__ = ((struct PyMPIErrhandlerObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___SESSION_NULL__ = ((struct PyMPISessionObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_NULL__ = ((struct PyMPICommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_SELF__ = ((struct PyMPIIntracommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_WORLD__ = ((struct PyMPIIntracommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___COMM_PARENT__ = ((struct PyMPIIntercommObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___WIN_NULL__ = ((struct PyMPIWinObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI___FILE_NULL__ = ((struct PyMPIFileObject *)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_TypeDict = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_CTypeDict = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_6mpi4py_3MPI_FTypeDict = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_export_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_export_code(void) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  if (__Pyx_ExportFunction("PyMPIDatatype_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIDatatype_New, "PyObject *(MPI_Datatype)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIDatatype_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIDatatype_Get, "MPI_Datatype *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIStatus_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIStatus_New, "PyObject *(MPI_Status *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIStatus_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIStatus_Get, "MPI_Status *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIRequest_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIRequest_New, "PyObject *(MPI_Request)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIPrequest_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIPrequest_New, "PyObject *(MPI_Request)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIGrequest_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIGrequest_New, "PyObject *(MPI_Request)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIRequest_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIRequest_Get, "MPI_Request *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIMessage_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIMessage_New, "PyObject *(MPI_Message)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIMessage_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIMessage_Get, "MPI_Message *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIOp_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIOp_New, "PyObject *(MPI_Op)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIOp_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIOp_Get, "MPI_Op *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIGroup_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIGroup_New, "PyObject *(MPI_Group)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIGroup_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIGroup_Get, "MPI_Group *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIInfo_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIInfo_New, "PyObject *(MPI_Info)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIInfo_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIInfo_Get, "MPI_Info *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIErrhandler_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_New, "PyObject *(MPI_Errhandler)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIErrhandler_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIErrhandler_Get, "MPI_Errhandler *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPISession_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPISession_New, "PyObject *(MPI_Session)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPISession_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPISession_Get, "MPI_Session *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIComm_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIComm_New, "PyObject *(MPI_Comm)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIComm_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIComm_Get, "MPI_Comm *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIWin_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIWin_New, "PyObject *(MPI_Win)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIWin_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIWin_Get, "MPI_Win *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIFile_New", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIFile_New, "PyObject *(MPI_File)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("PyMPIFile_Get", (void (*)(void))__pyx_f_6mpi4py_3MPI_PyMPIFile_Get, "MPI_File *(PyObject *)") < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_init_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Datatype = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIDatatype_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Datatype)) __PYX_ERR(22, 44, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIDatatype_Type_spec, __pyx_ptype_6mpi4py_3MPI_Datatype) < 0) __PYX_ERR(22, 44, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Datatype = &PyMPIDatatype_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Datatype) < 0) __PYX_ERR(22, 44, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Datatype->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Datatype->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Datatype->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Datatype->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Datatype, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Datatype) < 0) __PYX_ERR(22, 44, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Datatype->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Datatype->tp_weaklistoffset = offsetof(struct PyMPIDatatypeObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Status = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIStatus_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Status)) __PYX_ERR(23, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIStatus_Type_spec, __pyx_ptype_6mpi4py_3MPI_Status) < 0) __PYX_ERR(23, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Status = &PyMPIStatus_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Status) < 0) __PYX_ERR(23, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Status->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Status->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Status->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Status->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Status, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Status) < 0) __PYX_ERR(23, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Status->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Status->tp_weaklistoffset = offsetof(struct PyMPIStatusObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Request = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIRequest_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Request)) __PYX_ERR(24, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIRequest_Type_spec, __pyx_ptype_6mpi4py_3MPI_Request) < 0) __PYX_ERR(24, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Request = &PyMPIRequest_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Request) < 0) __PYX_ERR(24, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Request->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Request->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Request->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Request->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Request, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Request) < 0) __PYX_ERR(24, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Request->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Request->tp_weaklistoffset = offsetof(struct PyMPIRequestObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Prequest = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIPrequest_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Prequest)) __PYX_ERR(24, 451, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIPrequest_Type_spec, __pyx_ptype_6mpi4py_3MPI_Prequest) < 0) __PYX_ERR(24, 451, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Prequest = &PyMPIPrequest_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Prequest->tp_base = __pyx_ptype_6mpi4py_3MPI_Request;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Prequest) < 0) __PYX_ERR(24, 451, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Prequest->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Prequest->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Prequest->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Prequest->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Prequest, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Prequest) < 0) __PYX_ERR(24, 451, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Prequest->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Prequest->tp_weaklistoffset = offsetof(struct PyMPIPrequestObject, __pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Grequest = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIGrequest_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Grequest)) __PYX_ERR(24, 523, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIGrequest_Type_spec, __pyx_ptype_6mpi4py_3MPI_Grequest) < 0) __PYX_ERR(24, 523, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Grequest = &PyMPIGrequest_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Grequest->tp_base = __pyx_ptype_6mpi4py_3MPI_Request;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Grequest) < 0) __PYX_ERR(24, 523, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Grequest->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Grequest->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Grequest->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Grequest->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Grequest, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Grequest) < 0) __PYX_ERR(24, 523, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Grequest->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Grequest->tp_weaklistoffset = offsetof(struct PyMPIGrequestObject, __pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIMessage_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Message)) __PYX_ERR(25, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIMessage_Type_spec, __pyx_ptype_6mpi4py_3MPI_Message) < 0) __PYX_ERR(25, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Message = &PyMPIMessage_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Message) < 0) __PYX_ERR(25, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Message->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Message->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Message->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Message->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Message, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Message) < 0) __PYX_ERR(25, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Message->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Message->tp_weaklistoffset = offsetof(struct PyMPIMessageObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Op = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIOp_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Op)) __PYX_ERR(26, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIOp_Type_spec, __pyx_ptype_6mpi4py_3MPI_Op) < 0) __PYX_ERR(26, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Op = &PyMPIOp_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Op) < 0) __PYX_ERR(26, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Op->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Op->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Op->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Op->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Op, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Op) < 0) __PYX_ERR(26, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Op->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Op->tp_weaklistoffset = offsetof(struct PyMPIOpObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Group = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIGroup_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Group)) __PYX_ERR(27, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIGroup_Type_spec, __pyx_ptype_6mpi4py_3MPI_Group) < 0) __PYX_ERR(27, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Group = &PyMPIGroup_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Group) < 0) __PYX_ERR(27, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Group->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Group->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Group->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Group->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Group, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Group) < 0) __PYX_ERR(27, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Group->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Group->tp_weaklistoffset = offsetof(struct PyMPIGroupObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Info = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIInfo_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Info)) __PYX_ERR(28, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIInfo_Type_spec, __pyx_ptype_6mpi4py_3MPI_Info) < 0) __PYX_ERR(28, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Info = &PyMPIInfo_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Info) < 0) __PYX_ERR(28, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Info->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Info->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Info->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Info->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Info, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Info) < 0) __PYX_ERR(28, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Info->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Info->tp_weaklistoffset = offsetof(struct PyMPIInfoObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Errhandler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIErrhandler_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Errhandler)) __PYX_ERR(29, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIErrhandler_Type_spec, __pyx_ptype_6mpi4py_3MPI_Errhandler) < 0) __PYX_ERR(29, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Errhandler = &PyMPIErrhandler_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Errhandler) < 0) __PYX_ERR(29, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Errhandler->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Errhandler->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Errhandler->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Errhandler, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Errhandler) < 0) __PYX_ERR(29, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Errhandler->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Errhandler->tp_weaklistoffset = offsetof(struct PyMPIErrhandlerObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Session = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPISession_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Session)) __PYX_ERR(30, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPISession_Type_spec, __pyx_ptype_6mpi4py_3MPI_Session) < 0) __PYX_ERR(30, 1, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Session = &PyMPISession_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Session) < 0) __PYX_ERR(30, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Session->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Session->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Session->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Session->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Session, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Session) < 0) __PYX_ERR(30, 1, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Session->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Session->tp_weaklistoffset = offsetof(struct PyMPISessionObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Comm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIComm_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Comm)) __PYX_ERR(31, 34, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIComm_Type_spec, __pyx_ptype_6mpi4py_3MPI_Comm) < 0) __PYX_ERR(31, 34, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Comm = &PyMPIComm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Comm) < 0) __PYX_ERR(31, 34, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Comm->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Comm->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Comm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Comm->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Comm, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Comm) < 0) __PYX_ERR(31, 34, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Comm->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Comm->tp_weaklistoffset = offsetof(struct PyMPICommObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Intracomm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIIntracomm_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Intracomm)) __PYX_ERR(31, 2169, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIIntracomm_Type_spec, __pyx_ptype_6mpi4py_3MPI_Intracomm) < 0) __PYX_ERR(31, 2169, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Intracomm = &PyMPIIntracomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Intracomm->tp_base = __pyx_ptype_6mpi4py_3MPI_Comm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Intracomm) < 0) __PYX_ERR(31, 2169, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Intracomm->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Intracomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Intracomm->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Intracomm, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Intracomm) < 0) __PYX_ERR(31, 2169, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Intracomm->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Intracomm->tp_weaklistoffset = offsetof(struct PyMPIIntracommObject, __pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 2653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Topocomm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPITopocomm_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Topocomm)) __PYX_ERR(31, 2653, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPITopocomm_Type_spec, __pyx_ptype_6mpi4py_3MPI_Topocomm) < 0) __PYX_ERR(31, 2653, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Topocomm = &PyMPITopocomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Topocomm->tp_base = __pyx_ptype_6mpi4py_3MPI_Intracomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Topocomm) < 0) __PYX_ERR(31, 2653, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Topocomm->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Topocomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Topocomm->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Topocomm, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Topocomm) < 0) __PYX_ERR(31, 2653, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Topocomm->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Topocomm->tp_weaklistoffset = offsetof(struct PyMPITopocommObject, __pyx_base.__pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3006, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Cartcomm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPICartcomm_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Cartcomm)) __PYX_ERR(31, 3006, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPICartcomm_Type_spec, __pyx_ptype_6mpi4py_3MPI_Cartcomm) < 0) __PYX_ERR(31, 3006, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Cartcomm = &PyMPICartcomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_base = __pyx_ptype_6mpi4py_3MPI_Topocomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Cartcomm) < 0) __PYX_ERR(31, 3006, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Cartcomm, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Cartcomm) < 0) __PYX_ERR(31, 3006, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Cartcomm->tp_weaklistoffset = offsetof(struct PyMPICartcommObject, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Graphcomm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIGraphcomm_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Graphcomm)) __PYX_ERR(31, 3148, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIGraphcomm_Type_spec, __pyx_ptype_6mpi4py_3MPI_Graphcomm) < 0) __PYX_ERR(31, 3148, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Graphcomm = &PyMPIGraphcomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_base = __pyx_ptype_6mpi4py_3MPI_Topocomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Graphcomm) < 0) __PYX_ERR(31, 3148, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Graphcomm, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Graphcomm) < 0) __PYX_ERR(31, 3148, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Graphcomm->tp_weaklistoffset = offsetof(struct PyMPIGraphcommObject, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Distgraphcomm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIDistgraphcomm_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Distgraphcomm)) __PYX_ERR(31, 3254, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIDistgraphcomm_Type_spec, __pyx_ptype_6mpi4py_3MPI_Distgraphcomm) < 0) __PYX_ERR(31, 3254, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Distgraphcomm = &PyMPIDistgraphcomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_base = __pyx_ptype_6mpi4py_3MPI_Topocomm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Distgraphcomm) < 0) __PYX_ERR(31, 3254, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Distgraphcomm, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Distgraphcomm) < 0) __PYX_ERR(31, 3254, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Distgraphcomm->tp_weaklistoffset = offsetof(struct PyMPIDistgraphcommObject, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 3318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_Intercomm = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIIntercomm_Type_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Intercomm)) __PYX_ERR(31, 3318, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIIntercomm_Type_spec, __pyx_ptype_6mpi4py_3MPI_Intercomm) < 0) __PYX_ERR(31, 3318, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Intercomm = &PyMPIIntercomm_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Intercomm->tp_base = __pyx_ptype_6mpi4py_3MPI_Comm;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Intercomm) < 0) __PYX_ERR(31, 3318, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Intercomm->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Intercomm->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Intercomm->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Intercomm, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Intercomm) < 0) __PYX_ERR(31, 3318, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Intercomm->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Intercomm->tp_weaklistoffset = offsetof(struct PyMPIIntercommObject, __pyx_base.__weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Win = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIWin_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Win)) __PYX_ERR(32, 27, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Win->tp_as_buffer = &__pyx_tp_as_buffer_Win;
  if (!__pyx_ptype_6mpi4py_3MPI_Win->tp_as_buffer->bf_releasebuffer && __pyx_ptype_6mpi4py_3MPI_Win->tp_base->tp_as_buffer && __pyx_ptype_6mpi4py_3MPI_Win->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_ptype_6mpi4py_3MPI_Win->tp_as_buffer->bf_releasebuffer = __pyx_ptype_6mpi4py_3MPI_Win->tp_base->tp_as_buffer->bf_releasebuffer;
  }
  #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
  /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
  #elif defined(_MSC_VER)
  #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
  #else
  #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
  #endif
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIWin_Type_spec, __pyx_ptype_6mpi4py_3MPI_Win) < 0) __PYX_ERR(32, 27, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Win = &PyMPIWin_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Win) < 0) __PYX_ERR(32, 27, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Win->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Win->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Win->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Win->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Win, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Win) < 0) __PYX_ERR(32, 27, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_Win->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_Win->tp_weaklistoffset = offsetof(struct PyMPIWinObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_File = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &PyMPIFile_Type_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_File)) __PYX_ERR(33, 51, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&PyMPIFile_Type_spec, __pyx_ptype_6mpi4py_3MPI_File) < 0) __PYX_ERR(33, 51, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_File = &PyMPIFile_Type;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_File) < 0) __PYX_ERR(33, 51, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_File->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_File->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_File->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_File->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_File, (PyObject *) __pyx_ptype_6mpi4py_3MPI_File) < 0) __PYX_ERR(33, 51, __pyx_L1_error)
  if (__pyx_ptype_6mpi4py_3MPI_File->tp_weaklistoffset == 0) __pyx_ptype_6mpi4py_3MPI_File->tp_weaklistoffset = offsetof(struct PyMPIFileObject, __weakref__);
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__PyMem = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__PyMem_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__PyMem)) __PYX_ERR(3, 19, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI__PyMem->tp_as_buffer = &__pyx_tp_as_buffer__PyMem;
  if (!__pyx_ptype_6mpi4py_3MPI__PyMem->tp_as_buffer->bf_releasebuffer && __pyx_ptype_6mpi4py_3MPI__PyMem->tp_base->tp_as_buffer && __pyx_ptype_6mpi4py_3MPI__PyMem->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_ptype_6mpi4py_3MPI__PyMem->tp_as_buffer->bf_releasebuffer = __pyx_ptype_6mpi4py_3MPI__PyMem->tp_base->tp_as_buffer->bf_releasebuffer;
  }
  #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
  /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
  #elif defined(_MSC_VER)
  #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
  #else
  #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
  #endif
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__PyMem_spec, __pyx_ptype_6mpi4py_3MPI__PyMem) < 0) __PYX_ERR(3, 19, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__PyMem = &__pyx_type_6mpi4py_3MPI__PyMem;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__PyMem) < 0) __PYX_ERR(3, 19, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__PyMem->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__PyMem->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__PyMem->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__PyMem->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_buffer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_buffer_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_buffer)) __PYX_ERR(0, 111, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_buffer->tp_as_buffer = &__pyx_tp_as_buffer_buffer;
  if (!__pyx_ptype_6mpi4py_3MPI_buffer->tp_as_buffer->bf_releasebuffer && __pyx_ptype_6mpi4py_3MPI_buffer->tp_base->tp_as_buffer && __pyx_ptype_6mpi4py_3MPI_buffer->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_ptype_6mpi4py_3MPI_buffer->tp_as_buffer->bf_releasebuffer = __pyx_ptype_6mpi4py_3MPI_buffer->tp_base->tp_as_buffer->bf_releasebuffer;
  }
  #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
  /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
  #elif defined(_MSC_VER)
  #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
  #else
  #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
  #endif
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI_buffer_spec, __pyx_ptype_6mpi4py_3MPI_buffer) < 0) __PYX_ERR(0, 111, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_buffer = &__pyx_type_6mpi4py_3MPI_buffer;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_buffer) < 0) __PYX_ERR(0, 111, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_buffer->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_buffer->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_buffer->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_buffer->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_buffer, (PyObject *) __pyx_ptype_6mpi4py_3MPI_buffer) < 0) __PYX_ERR(0, 111, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_keyval = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_keyval_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_keyval)) __PYX_ERR(6, 12, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_keyval_spec, __pyx_ptype_6mpi4py_3MPI__p_keyval) < 0) __PYX_ERR(6, 12, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_keyval = &__pyx_type_6mpi4py_3MPI__p_keyval;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_keyval) < 0) __PYX_ERR(6, 12, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_keyval->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_keyval->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_keyval->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_keyval->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  __pyx_vtabptr_6mpi4py_3MPI__p_rs = &__pyx_vtable_6mpi4py_3MPI__p_rs;
  __pyx_vtable_6mpi4py_3MPI__p_rs.set_request = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct PyMPIRequestObject *))__pyx_f_6mpi4py_3MPI_5_p_rs_set_request;
  __pyx_vtable_6mpi4py_3MPI__p_rs.set_status = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct PyMPIStatusObject *))__pyx_f_6mpi4py_3MPI_5_p_rs_set_status;
  __pyx_vtable_6mpi4py_3MPI__p_rs.set_requests = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, PyObject *))__pyx_f_6mpi4py_3MPI_5_p_rs_set_requests;
  __pyx_vtable_6mpi4py_3MPI__p_rs.add_statuses = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *))__pyx_f_6mpi4py_3MPI_5_p_rs_add_statuses;
  __pyx_vtable_6mpi4py_3MPI__p_rs.add_indices = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *))__pyx_f_6mpi4py_3MPI_5_p_rs_add_indices;
  __pyx_vtable_6mpi4py_3MPI__p_rs.acquire = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, PyObject *, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_acquire *__pyx_optional_args))__pyx_f_6mpi4py_3MPI_5_p_rs_acquire;
  __pyx_vtable_6mpi4py_3MPI__p_rs.release = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, struct __pyx_opt_args_6mpi4py_3MPI_5_p_rs_release *__pyx_optional_args))__pyx_f_6mpi4py_3MPI_5_p_rs_release;
  __pyx_vtable_6mpi4py_3MPI__p_rs.get_buffer = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, Py_ssize_t))__pyx_f_6mpi4py_3MPI_5_p_rs_get_buffer;
  __pyx_vtable_6mpi4py_3MPI__p_rs.get_result = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *))__pyx_f_6mpi4py_3MPI_5_p_rs_get_result;
  __pyx_vtable_6mpi4py_3MPI__p_rs.get_object = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *, Py_ssize_t))__pyx_f_6mpi4py_3MPI_5_p_rs_get_object;
  __pyx_vtable_6mpi4py_3MPI__p_rs.get_objects = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *))__pyx_f_6mpi4py_3MPI_5_p_rs_get_objects;
  __pyx_vtable_6mpi4py_3MPI__p_rs.get_indices = (PyObject *(*)(struct __pyx_obj_6mpi4py_3MPI__p_rs *))__pyx_f_6mpi4py_3MPI_5_p_rs_get_indices;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_rs = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_rs_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_rs)) __PYX_ERR(12, 6, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_rs_spec, __pyx_ptype_6mpi4py_3MPI__p_rs) < 0) __PYX_ERR(12, 6, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_rs = &__pyx_type_6mpi4py_3MPI__p_rs;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_rs) < 0) __PYX_ERR(12, 6, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_rs->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_rs->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_rs->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_rs->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_rs, __pyx_vtabptr_6mpi4py_3MPI__p_rs) < 0) __PYX_ERR(12, 6, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_rs) < 0) __PYX_ERR(12, 6, __pyx_L1_error)
  #endif
  __pyx_vtabptr_6mpi4py_3MPI__p_greq = &__pyx_vtable_6mpi4py_3MPI__p_greq;
  __pyx_vtable_6mpi4py_3MPI__p_greq.query = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, MPI_Status *))__pyx_f_6mpi4py_3MPI_7_p_greq_query;
  __pyx_vtable_6mpi4py_3MPI__p_greq.free = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_greq *))__pyx_f_6mpi4py_3MPI_7_p_greq_free;
  __pyx_vtable_6mpi4py_3MPI__p_greq.cancel = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_greq *, int))__pyx_f_6mpi4py_3MPI_7_p_greq_cancel;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_greq = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_greq_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_greq)) __PYX_ERR(12, 140, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_greq_spec, __pyx_ptype_6mpi4py_3MPI__p_greq) < 0) __PYX_ERR(12, 140, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_greq = &__pyx_type_6mpi4py_3MPI__p_greq;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_greq) < 0) __PYX_ERR(12, 140, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_greq->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_greq->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_greq->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_greq->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_greq, __pyx_vtabptr_6mpi4py_3MPI__p_greq) < 0) __PYX_ERR(12, 140, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_greq) < 0) __PYX_ERR(12, 140, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)(&PyInt_Type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_BufferAutomaticType_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType)) __PYX_ERR(14, 4, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_as_buffer = &__pyx_tp_as_buffer_BufferAutomaticType;
  if (!__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_as_buffer->bf_releasebuffer && __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_base->tp_as_buffer && __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_as_buffer->bf_releasebuffer = __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_base->tp_as_buffer->bf_releasebuffer;
  }
  #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
  /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
  #elif defined(_MSC_VER)
  #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
  #else
  #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
  #endif
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI_BufferAutomaticType_spec, __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType) < 0) __PYX_ERR(14, 4, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType = &__pyx_type_6mpi4py_3MPI_BufferAutomaticType;
  #endif
  if (sizeof(struct __pyx_obj_6mpi4py_3MPI_BufferAutomaticType) != sizeof(PyIntObject)) {
    if (__Pyx_validate_extern_base((&PyInt_Type)) < 0) __PYX_ERR(14, 4, __pyx_L1_error)
  }
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_dealloc = (&PyInt_Type)->tp_dealloc;
  __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_base = (&PyInt_Type);
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType) < 0) __PYX_ERR(14, 4, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BufferAutomaticType, (PyObject *) __pyx_ptype_6mpi4py_3MPI_BufferAutomaticType) < 0) __PYX_ERR(14, 4, __pyx_L1_error)
  __pyx_vtabptr_6mpi4py_3MPI__p_datarep = &__pyx_vtable_6mpi4py_3MPI__p_datarep;
  __pyx_vtable_6mpi4py_3MPI__p_datarep.read = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, void *, MPI_Datatype, MPI_Count, void *, MPI_Offset))__pyx_f_6mpi4py_3MPI_10_p_datarep_read;
  __pyx_vtable_6mpi4py_3MPI__p_datarep.write = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, void *, MPI_Datatype, MPI_Count, void *, MPI_Offset))__pyx_f_6mpi4py_3MPI_10_p_datarep_write;
  __pyx_vtable_6mpi4py_3MPI__p_datarep.extent = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_datarep *, MPI_Datatype, MPI_Aint *))__pyx_f_6mpi4py_3MPI_10_p_datarep_extent;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_datarep = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_datarep_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_datarep)) __PYX_ERR(17, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_datarep_spec, __pyx_ptype_6mpi4py_3MPI__p_datarep) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_datarep = &__pyx_type_6mpi4py_3MPI__p_datarep;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_datarep) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_datarep->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_datarep->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_datarep->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_datarep->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_datarep, __pyx_vtabptr_6mpi4py_3MPI__p_datarep) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_datarep) < 0) __PYX_ERR(17, 10, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)(&PyInt_Type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_BottomType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_BottomType_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_BottomType)) __PYX_ERR(18, 29, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_BottomType->tp_as_buffer = &__pyx_tp_as_buffer_BottomType;
  if (!__pyx_ptype_6mpi4py_3MPI_BottomType->tp_as_buffer->bf_releasebuffer && __pyx_ptype_6mpi4py_3MPI_BottomType->tp_base->tp_as_buffer && __pyx_ptype_6mpi4py_3MPI_BottomType->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_ptype_6mpi4py_3MPI_BottomType->tp_as_buffer->bf_releasebuffer = __pyx_ptype_6mpi4py_3MPI_BottomType->tp_base->tp_as_buffer->bf_releasebuffer;
  }
  #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
  /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
  #elif defined(_MSC_VER)
  #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
  #else
  #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
  #endif
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI_BottomType_spec, __pyx_ptype_6mpi4py_3MPI_BottomType) < 0) __PYX_ERR(18, 29, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_BottomType = &__pyx_type_6mpi4py_3MPI_BottomType;
  #endif
  if (sizeof(struct __pyx_obj_6mpi4py_3MPI_BottomType) != sizeof(PyIntObject)) {
    if (__Pyx_validate_extern_base((&PyInt_Type)) < 0) __PYX_ERR(18, 29, __pyx_L1_error)
  }
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_BottomType->tp_dealloc = (&PyInt_Type)->tp_dealloc;
  __pyx_ptype_6mpi4py_3MPI_BottomType->tp_base = (&PyInt_Type);
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_BottomType) < 0) __PYX_ERR(18, 29, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_BottomType->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_BottomType->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_BottomType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_BottomType->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BottomType, (PyObject *) __pyx_ptype_6mpi4py_3MPI_BottomType) < 0) __PYX_ERR(18, 29, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)(&PyInt_Type)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_InPlaceType = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_InPlaceType_spec, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_InPlaceType)) __PYX_ERR(18, 52, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_as_buffer = &__pyx_tp_as_buffer_InPlaceType;
  if (!__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_as_buffer->bf_releasebuffer && __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_base->tp_as_buffer && __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_base->tp_as_buffer->bf_releasebuffer) {
    __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_as_buffer->bf_releasebuffer = __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_base->tp_as_buffer->bf_releasebuffer;
  }
  #elif defined(Py_bf_getbuffer) && defined(Py_bf_releasebuffer)
  /* PY_VERSION_HEX >= 0x03090000 || Py_LIMITED_API >= 0x030B0000 */
  #elif defined(_MSC_VER)
  #pragma message ("The buffer protocol is not supported in the Limited C-API < 3.11.")
  #else
  #warning "The buffer protocol is not supported in the Limited C-API < 3.11."
  #endif
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI_InPlaceType_spec, __pyx_ptype_6mpi4py_3MPI_InPlaceType) < 0) __PYX_ERR(18, 52, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_InPlaceType = &__pyx_type_6mpi4py_3MPI_InPlaceType;
  #endif
  if (sizeof(struct __pyx_obj_6mpi4py_3MPI_InPlaceType) != sizeof(PyIntObject)) {
    if (__Pyx_validate_extern_base((&PyInt_Type)) < 0) __PYX_ERR(18, 52, __pyx_L1_error)
  }
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_dealloc = (&PyInt_Type)->tp_dealloc;
  __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_base = (&PyInt_Type);
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_InPlaceType) < 0) __PYX_ERR(18, 52, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_InPlaceType->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_InPlaceType, (PyObject *) __pyx_ptype_6mpi4py_3MPI_InPlaceType) < 0) __PYX_ERR(18, 52, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_message_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_message)) __PYX_ERR(18, 124, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_message_spec, __pyx_ptype_6mpi4py_3MPI__p_message) < 0) __PYX_ERR(18, 124, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_message = &__pyx_type_6mpi4py_3MPI__p_message;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_message) < 0) __PYX_ERR(18, 124, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_message->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_message->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_message->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_message->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p = &__pyx_vtable_6mpi4py_3MPI__p_msg_p2p;
  __pyx_vtable_6mpi4py_3MPI__p_msg_p2p.for_send = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int, int))__pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_send;
  __pyx_vtable_6mpi4py_3MPI__p_msg_p2p.for_recv = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_p2p *, PyObject *, int, int))__pyx_f_6mpi4py_3MPI_10_p_msg_p2p_for_recv;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_msg_p2p = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_msg_p2p_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_msg_p2p)) __PYX_ERR(18, 438, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_p2p_spec, __pyx_ptype_6mpi4py_3MPI__p_msg_p2p) < 0) __PYX_ERR(18, 438, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_msg_p2p = &__pyx_type_6mpi4py_3MPI__p_msg_p2p;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_msg_p2p) < 0) __PYX_ERR(18, 438, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_msg_p2p->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_msg_p2p->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_msg_p2p->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_msg_p2p->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_msg_p2p, __pyx_vtabptr_6mpi4py_3MPI__p_msg_p2p) < 0) __PYX_ERR(18, 438, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_msg_p2p) < 0) __PYX_ERR(18, 438, __pyx_L1_error)
  #endif
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_cco = &__pyx_vtable_6mpi4py_3MPI__p_msg_cco;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cco_send = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_send;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cco_recv = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, int, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cco_recv;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_bcast = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_bcast;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_gather = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_gather;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_scatter = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scatter;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_allgather = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allgather;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_alltoall = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_alltoall;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_neighbor_allgather = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_allgather;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_neighbor_alltoall = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, int, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_neighbor_alltoall;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cro_send = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_send;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_cro_recv = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_cro_recv;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.chk_cro_args = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_chk_cro_args;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_reduce = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, int, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_allreduce = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_allreduce;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_reduce_scatter_block = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter_block;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_reduce_scatter = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_reduce_scatter;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_scan = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_scan;
  __pyx_vtable_6mpi4py_3MPI__p_msg_cco.for_exscan = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_cco *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_10_p_msg_cco_for_exscan;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_msg_cco = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_msg_cco_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_msg_cco)) __PYX_ERR(18, 498, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_cco_spec, __pyx_ptype_6mpi4py_3MPI__p_msg_cco) < 0) __PYX_ERR(18, 498, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_msg_cco = &__pyx_type_6mpi4py_3MPI__p_msg_cco;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_msg_cco) < 0) __PYX_ERR(18, 498, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_msg_cco->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_msg_cco->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_msg_cco->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_msg_cco->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_msg_cco, __pyx_vtabptr_6mpi4py_3MPI__p_msg_cco) < 0) __PYX_ERR(18, 498, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_msg_cco) < 0) __PYX_ERR(18, 498, __pyx_L1_error)
  #endif
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_ccow = &__pyx_vtable_6mpi4py_3MPI__p_msg_ccow;
  __pyx_vtable_6mpi4py_3MPI__p_msg_ccow.for_alltoallw = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_alltoallw;
  __pyx_vtable_6mpi4py_3MPI__p_msg_ccow.for_neighbor_alltoallw = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_ccow *, PyObject *, PyObject *, MPI_Comm))__pyx_f_6mpi4py_3MPI_11_p_msg_ccow_for_neighbor_alltoallw;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_msg_ccow = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_msg_ccow_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_msg_ccow)) __PYX_ERR(18, 899, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_ccow_spec, __pyx_ptype_6mpi4py_3MPI__p_msg_ccow) < 0) __PYX_ERR(18, 899, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_msg_ccow = &__pyx_type_6mpi4py_3MPI__p_msg_ccow;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_msg_ccow) < 0) __PYX_ERR(18, 899, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_msg_ccow->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_msg_ccow->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_msg_ccow->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_msg_ccow->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_msg_ccow, __pyx_vtabptr_6mpi4py_3MPI__p_msg_ccow) < 0) __PYX_ERR(18, 899, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_msg_ccow) < 0) __PYX_ERR(18, 899, __pyx_L1_error)
  #endif
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_rma = &__pyx_vtable_6mpi4py_3MPI__p_msg_rma;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_rma = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, int, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_rma;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_put = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_put;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_get = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_acc = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_acc;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.set_origin = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_origin;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.set_compare = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_compare;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.set_result = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, int))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_set_result;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_get_acc = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, int, PyObject *))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_get_acc;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_fetch_op = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, int, MPI_Aint))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_fetch_op;
  __pyx_vtable_6mpi4py_3MPI__p_msg_rma.for_cmp_swap = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_rma *, PyObject *, PyObject *, PyObject *, int, MPI_Aint))__pyx_f_6mpi4py_3MPI_10_p_msg_rma_for_cmp_swap;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_msg_rma = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_msg_rma_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_msg_rma)) __PYX_ERR(18, 969, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_rma_spec, __pyx_ptype_6mpi4py_3MPI__p_msg_rma) < 0) __PYX_ERR(18, 969, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_msg_rma = &__pyx_type_6mpi4py_3MPI__p_msg_rma;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_msg_rma) < 0) __PYX_ERR(18, 969, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_msg_rma->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_msg_rma->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_msg_rma->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_msg_rma->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_msg_rma, __pyx_vtabptr_6mpi4py_3MPI__p_msg_rma) < 0) __PYX_ERR(18, 969, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_msg_rma) < 0) __PYX_ERR(18, 969, __pyx_L1_error)
  #endif
  __pyx_vtabptr_6mpi4py_3MPI__p_msg_io = &__pyx_vtable_6mpi4py_3MPI__p_msg_io;
  __pyx_vtable_6mpi4py_3MPI__p_msg_io.for_read = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *))__pyx_f_6mpi4py_3MPI_9_p_msg_io_for_read;
  __pyx_vtable_6mpi4py_3MPI__p_msg_io.for_write = (int (*)(struct __pyx_obj_6mpi4py_3MPI__p_msg_io *, PyObject *))__pyx_f_6mpi4py_3MPI_9_p_msg_io_for_write;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_msg_io = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_msg_io_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_msg_io)) __PYX_ERR(18, 1135, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_msg_io_spec, __pyx_ptype_6mpi4py_3MPI__p_msg_io) < 0) __PYX_ERR(18, 1135, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_msg_io = &__pyx_type_6mpi4py_3MPI__p_msg_io;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_msg_io) < 0) __PYX_ERR(18, 1135, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_msg_io->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_msg_io->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_msg_io->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_msg_io->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_6mpi4py_3MPI__p_msg_io, __pyx_vtabptr_6mpi4py_3MPI__p_msg_io) < 0) __PYX_ERR(18, 1135, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_6mpi4py_3MPI__p_msg_io) < 0) __PYX_ERR(18, 1135, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI_Pickle = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_Pickle_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Pickle)) __PYX_ERR(7, 26, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI_Pickle_spec, __pyx_ptype_6mpi4py_3MPI_Pickle) < 0) __PYX_ERR(7, 26, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Pickle = &__pyx_type_6mpi4py_3MPI_Pickle;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Pickle) < 0) __PYX_ERR(7, 26, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Pickle->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Pickle->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Pickle->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Pickle->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Pickle, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Pickle) < 0) __PYX_ERR(7, 26, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_req_buf = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_req_buf_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_req_buf)) __PYX_ERR(7, 508, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_req_buf_spec, __pyx_ptype_6mpi4py_3MPI__p_req_buf) < 0) __PYX_ERR(7, 508, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_req_buf = &__pyx_type_6mpi4py_3MPI__p_req_buf;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_req_buf) < 0) __PYX_ERR(7, 508, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_req_buf->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_req_buf->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_req_buf->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_req_buf->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI__p_req_obj = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI__p_req_obj_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI__p_req_obj)) __PYX_ERR(7, 528, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI__p_req_obj_spec, __pyx_ptype_6mpi4py_3MPI__p_req_obj) < 0) __PYX_ERR(7, 528, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI__p_req_obj = &__pyx_type_6mpi4py_3MPI__p_req_obj;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI__p_req_obj) < 0) __PYX_ERR(7, 528, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI__p_req_obj->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI__p_req_obj->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI__p_req_obj->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI__p_req_obj->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_6mpi4py_3MPI_RuntimeError = __Pyx_ImportType_3_0_11(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "RuntimeError", sizeof(PyBaseExceptionObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_11(PyBaseExceptionObject),__Pyx_ImportType_CheckSize_Warn_3_0_11); if (!__pyx_ptype_6mpi4py_3MPI_RuntimeError) __PYX_ERR(21, 5, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_6mpi4py_3MPI_RuntimeError); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_6mpi4py_3MPI_Exception = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI_Exception_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_6mpi4py_3MPI_Exception)) __PYX_ERR(21, 8, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI_Exception_spec, __pyx_ptype_6mpi4py_3MPI_Exception) < 0) __PYX_ERR(21, 8, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI_Exception = &__pyx_type_6mpi4py_3MPI_Exception;
  #endif
  if (sizeof(struct __pyx_obj_6mpi4py_3MPI_Exception) != sizeof(PyBaseExceptionObject)) {
    if (__Pyx_validate_extern_base(__pyx_ptype_6mpi4py_3MPI_RuntimeError) < 0) __PYX_ERR(21, 8, __pyx_L1_error)
  }
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_6mpi4py_3MPI_Exception->tp_dealloc = __pyx_ptype_6mpi4py_3MPI_RuntimeError->tp_dealloc;
  __pyx_ptype_6mpi4py_3MPI_Exception->tp_base = __pyx_ptype_6mpi4py_3MPI_RuntimeError;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI_Exception) < 0) __PYX_ERR(21, 8, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI_Exception->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI_Exception->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI_Exception->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI_Exception->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Exception, (PyObject *) __pyx_ptype_6mpi4py_3MPI_Exception) < 0) __PYX_ERR(21, 8, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback_spec, NULL); if (unlikely(!__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback)) __PYX_ERR(7, 149, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback_spec, __pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback) < 0) __PYX_ERR(7, 149, __pyx_L1_error)
  #else
  __pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback = &__pyx_type_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback) < 0) __PYX_ERR(7, 149, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback->tp_dictoffset && __pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}


#if PY_MAJOR_VERSION >= 3
#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_MPI(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_MPI},
  {0, NULL}
};
#endif

#ifdef __cplusplus
namespace {
  struct PyModuleDef __pyx_moduledef =
  #else
  static struct PyModuleDef __pyx_moduledef =
  #endif
  {
      PyModuleDef_HEAD_INIT,
      "MPI",
      0, /* m_doc */
    #if CYTHON_PEP489_MULTI_PHASE_INIT
      0, /* m_size */
    #elif CYTHON_USE_MODULE_STATE
      sizeof(__pyx_mstate), /* m_size */
    #else
      -1, /* m_size */
    #endif
      __pyx_methods /* m_methods */,
    #if CYTHON_PEP489_MULTI_PHASE_INIT
      __pyx_moduledef_slots, /* m_slots */
    #else
      NULL, /* m_reload */
    #endif
    #if CYTHON_USE_MODULE_STATE
      __pyx_m_traverse, /* m_traverse */
      __pyx_m_clear, /* m_clear */
      (freefunc)__pyx_module_cleanup /* m_free */
    #else
      NULL, /* m_traverse */
      NULL, /* m_clear */
      (freefunc)__pyx_module_cleanup /* m_free */
    #endif
  };
  #ifdef __cplusplus
} /* anonymous namespace */
#endif
#endif

#ifndef CYTHON_NO_PYINIT_EXPORT
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#elif PY_MAJOR_VERSION < 3
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" void
#else
#define __Pyx_PyMODINIT_FUNC void
#endif
#else
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
#else
#define __Pyx_PyMODINIT_FUNC PyObject *
#endif
#endif


#if PY_MAJOR_VERSION < 3
__Pyx_PyMODINIT_FUNC initMPI(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC initMPI(void)
#else
__Pyx_PyMODINIT_FUNC PyInit_MPI(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_MPI(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    #if PY_VERSION_HEX >= 0x030700A1
    static PY_INT64_T main_interpreter_id = -1;
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return (unlikely(current_id == -1)) ? -1 : 0;
    } else if (unlikely(main_interpreter_id != current_id))
    #else
    static PyInterpreterState *main_interpreter = NULL;
    PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
    if (!main_interpreter) {
        main_interpreter = current_interpreter;
    } else if (unlikely(main_interpreter != current_interpreter))
    #endif
    {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
#else
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
#endif
{
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
#if CYTHON_COMPILING_IN_LIMITED_API
            result = PyModule_AddObject(module, to_name, value);
#else
            result = PyDict_SetItemString(moddict, to_name, value);
#endif
        }
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    CYTHON_UNUSED_VAR(def);
    if (__Pyx_check_single_interpreter())
        return NULL;
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
#if CYTHON_COMPILING_IN_LIMITED_API
    moddict = module;
#else
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
#endif
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static CYTHON_SMALL_CODE int __pyx_pymod_exec_MPI(PyObject *__pyx_pyinit_module)
#endif
#endif
{
  int stringtab_initialized = 0;
  #if CYTHON_USE_MODULE_STATE
  int pystate_addmodule_run = 0;
  #endif
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'MPI' has already been imported. Re-initialisation is not supported.");
    return -1;
  }
  #elif PY_MAJOR_VERSION >= 3
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_m = __pyx_pyinit_module;
  Py_INCREF(__pyx_m);
  #else
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("MPI", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  if (unlikely(!__pyx_m)) __PYX_ERR(38, 1, __pyx_L1_error)
  #elif CYTHON_USE_MODULE_STATE
  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(38, 1, __pyx_L1_error)
  {
    int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
    __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "MPI" pseudovariable */
    if (unlikely((add_module_result < 0))) __PYX_ERR(38, 1, __pyx_L1_error)
    pystate_addmodule_run = 1;
  }
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  if (unlikely(!__pyx_m)) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  #endif
  CYTHON_UNUSED_VAR(__pyx_t_1);
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(38, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(38, 1, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #if CYTHON_REFNANNY
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
if (!__Pyx_RefNanny) {
  PyErr_Clear();
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
  if (!__Pyx_RefNanny)
      Py_FatalError("failed to import 'refnanny' module");
}
#endif
  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_MPI(void)", 0);
  if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #ifdef __Pxy_PyFrame_Initialize_Offsets
  __Pxy_PyFrame_Initialize_Offsets();
  #endif
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(38, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(38, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  PyEval_InitThreads();
  #endif
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitConstants() < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  stringtab_initialized = 1;
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_mpi4py__MPI) {
    if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(38, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "mpi4py.MPI")) {
      if (unlikely((PyDict_SetItemString(modules, "mpi4py.MPI", __pyx_m) < 0))) __PYX_ERR(38, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code();
  (void)__Pyx_modinit_variable_export_code();
  if (unlikely((__Pyx_modinit_function_export_code() < 0))) __PYX_ERR(38, 1, __pyx_L1_error)
  if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(38, 1, __pyx_L1_error)
  (void)__Pyx_modinit_type_import_code();
  (void)__Pyx_modinit_variable_import_code();
  (void)__Pyx_modinit_function_import_code();
  /*--- Execution code ---*/
  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
  if (__Pyx_patch_abc() < 0) __PYX_ERR(38, 1, __pyx_L1_error)
  #endif

  /* "src/mpi4py/MPI.src/MPI.pyx":3
 * # -----------------------------------------------------------------------------
 * 
 * __doc__ = """Message Passing Interface."""             # <<<<<<<<<<<<<<
 * 
 * from mpi4py.libmpi cimport *
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_doc, __pyx_kp_s_Message_Passing_Interface) < 0) __PYX_ERR(34, 3, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/atimport.pxi":95
 * 
 * cdef Options options
 * options.initialize = 1             # <<<<<<<<<<<<<<
 * options.threads = 1
 * options.thread_level = MPI_THREAD_MULTIPLE
 */
  __pyx_v_6mpi4py_3MPI_options.initialize = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":96
 * cdef Options options
 * options.initialize = 1
 * options.threads = 1             # <<<<<<<<<<<<<<
 * options.thread_level = MPI_THREAD_MULTIPLE
 * options.finalize = 1
 */
  __pyx_v_6mpi4py_3MPI_options.threads = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":97
 * options.initialize = 1
 * options.threads = 1
 * options.thread_level = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 * options.finalize = 1
 * options.fast_reduce = 1
 */
  __pyx_v_6mpi4py_3MPI_options.thread_level = MPI_THREAD_MULTIPLE;

  /* "src/mpi4py/MPI.src/atimport.pxi":98
 * options.threads = 1
 * options.thread_level = MPI_THREAD_MULTIPLE
 * options.finalize = 1             # <<<<<<<<<<<<<<
 * options.fast_reduce = 1
 * options.recv_mprobe = 1
 */
  __pyx_v_6mpi4py_3MPI_options.finalize = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":99
 * options.thread_level = MPI_THREAD_MULTIPLE
 * options.finalize = 1
 * options.fast_reduce = 1             # <<<<<<<<<<<<<<
 * options.recv_mprobe = 1
 * options.irecv_bufsz = 32768
 */
  __pyx_v_6mpi4py_3MPI_options.fast_reduce = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":100
 * options.finalize = 1
 * options.fast_reduce = 1
 * options.recv_mprobe = 1             # <<<<<<<<<<<<<<
 * options.irecv_bufsz = 32768
 * options.errors = 1
 */
  __pyx_v_6mpi4py_3MPI_options.recv_mprobe = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":101
 * options.fast_reduce = 1
 * options.recv_mprobe = 1
 * options.irecv_bufsz = 32768             # <<<<<<<<<<<<<<
 * options.errors = 1
 * 
 */
  __pyx_v_6mpi4py_3MPI_options.irecv_bufsz = 0x8000;

  /* "src/mpi4py/MPI.src/atimport.pxi":102
 * options.recv_mprobe = 1
 * options.irecv_bufsz = 32768
 * options.errors = 1             # <<<<<<<<<<<<<<
 * 
 * cdef object getOpt(object rc, const char name[], object value):
 */
  __pyx_v_6mpi4py_3MPI_options.errors = 1;

  /* "src/mpi4py/MPI.src/atimport.pxi":354
 * 
 * 
 * cdef int mpi_version    = 0             # <<<<<<<<<<<<<<
 * cdef int mpi_subversion = 0
 * cdef int mpi_numversion = 0
 */
  __pyx_v_6mpi4py_3MPI_mpi_version = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":355
 * 
 * cdef int mpi_version    = 0
 * cdef int mpi_subversion = 0             # <<<<<<<<<<<<<<
 * cdef int mpi_numversion = 0
 * 
 */
  __pyx_v_6mpi4py_3MPI_mpi_subversion = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":356
 * cdef int mpi_version    = 0
 * cdef int mpi_subversion = 0
 * cdef int mpi_numversion = 0             # <<<<<<<<<<<<<<
 * 
 * cdef int initialize() except -1 nogil:
 */
  __pyx_v_6mpi4py_3MPI_mpi_numversion = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":375
 * 
 * 
 * cdef int abort_status = 0             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_6mpi4py_3MPI_abort_status = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":388
 * 
 * 
 * def _set_abort_status(int status: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Helper for ``python -m mpi4py.run ...``.
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_status, __pyx_n_s_int) < 0) __PYX_ERR(2, 388, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(2, 388, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_1_set_abort_status, 0, __pyx_n_s_set_abort_status, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__207)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_abort_status, __pyx_t_3) < 0) __PYX_ERR(2, 388, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":403
 *     enum: PyMPI_ERR_UNAVAILABLE
 * 
 * cdef object MPIException = <object>PyExc_RuntimeError             # <<<<<<<<<<<<<<
 * 
 * cdef int PyMPI_Raise(int ierr) except -1 with gil:
 */
  __pyx_t_3 = ((PyObject *)PyExc_RuntimeError);
  __Pyx_INCREF(__pyx_t_3);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_MPIException, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/atimport.pxi":433
 *     int _Py_IsInitialized"Py_IsInitialized"() noexcept nogil
 * 
 * cdef object _py_module_sentinel = None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI__py_module_sentinel);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI__py_module_sentinel, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/MPI.pyx":10
 * include "atimport.pxi"
 * 
 * bootstrap()             # <<<<<<<<<<<<<<
 * initialize()
 * 
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_bootstrap(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(34, 10, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":11
 * 
 * bootstrap()
 * initialize()             # <<<<<<<<<<<<<<
 * 
 * include "allocate.pxi"
 */
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_initialize(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(34, 11, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/asbuffer.pxi":54
 * 
 * cdef char BYTE_FMT[2]
 * BYTE_FMT[0] = c'B'             # <<<<<<<<<<<<<<
 * BYTE_FMT[1] = 0
 * 
 */
  (__pyx_v_6mpi4py_3MPI_BYTE_FMT[0]) = 'B';

  /* "src/mpi4py/MPI.src/asbuffer.pxi":55
 * cdef char BYTE_FMT[2]
 * BYTE_FMT[0] = c'B'
 * BYTE_FMT[1] = 0             # <<<<<<<<<<<<<<
 * 
 * include "asdlpack.pxi"
 */
  (__pyx_v_6mpi4py_3MPI_BYTE_FMT[1]) = 0;

  /* "src/mpi4py/MPI.src/asbuffer.pxi":129
 *         PyBuffer_Release(&self.view)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def allocate(
 *         Aint nbytes: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nbytes, __pyx_n_s_int) < 0) __PYX_ERR(0, 129, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_clear, __pyx_n_s_bool) < 0) __PYX_ERR(0, 129, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_buffer) < 0) __PYX_ERR(0, 129, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_5allocate, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_buffer_allocate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__209)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__210);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_allocate, __pyx_t_2) < 0) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_allocate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_staticmethod, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_allocate, __pyx_t_3) < 0) __PYX_ERR(0, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":144
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def frombuffer(
 *         obj: Buffer,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_obj, __pyx_n_s_Buffer) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_readonly, __pyx_n_s_bool) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_buffer) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_7frombuffer, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_buffer_frombuffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__210);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_frombuffer, __pyx_t_2) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_frombuffer); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_staticmethod, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_frombuffer, __pyx_t_3) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":157
 *         return buf
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def fromaddress(
 *         address: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_address, __pyx_n_s_int) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nbytes, __pyx_n_s_int) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_readonly, __pyx_n_s_bool) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_buffer) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_9fromaddress, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_buffer_fromaddress, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__214)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__210);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_fromaddress, __pyx_t_2) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_fromaddress); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_staticmethod, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_fromaddress, __pyx_t_3) < 0) __PYX_ERR(0, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":214
 *     # memoryview methods
 * 
 *     def cast(             # <<<<<<<<<<<<<<
 *         self,
 *         format: str,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_format, __pyx_n_s_str) < 0) __PYX_ERR(0, 214, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_shape, __pyx_kp_s_list_int_tuple_int) < 0) __PYX_ERR(0, 214, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_memoryview) < 0) __PYX_ERR(0, 214, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_11cast, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_buffer_cast, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__216)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__217);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_cast, __pyx_t_2) < 0) __PYX_ERR(0, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":228
 *             return PyMemoryView_FromObject(self).cast(format, shape)
 * 
 *     def tobytes(self, order: str | None = None) -> bytes:             # <<<<<<<<<<<<<<
 *         """Return the data in the buffer as a byte string."""
 *         <void> order  # unused
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_order, __pyx_kp_s_str_None) < 0) __PYX_ERR(0, 228, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_bytes) < 0) __PYX_ERR(0, 228, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_13tobytes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_buffer_tobytes, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_tobytes, __pyx_t_3) < 0) __PYX_ERR(0, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":234
 *         return PyBytes_FromStringAndSize(<char*>self.view.buf, self.view.len)
 * 
 *     def toreadonly(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """Return a readonly version of the buffer object."""
 *         cdef object obj = self
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_buffer) < 0) __PYX_ERR(0, 234, __pyx_L1_error)
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_15toreadonly, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_buffer_toreadonly, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__222)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_toreadonly, __pyx_t_2) < 0) __PYX_ERR(0, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":244
 *         return buf
 * 
 *     def release(self) -> None:             # <<<<<<<<<<<<<<
 *         """Release the underlying buffer exposed by the buffer object."""
 *         PyBuffer_Release(&self.view)
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(0, 244, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6buffer_17release, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_buffer_release, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__224)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer, __pyx_n_s_release, __pyx_t_3) < 0) __PYX_ERR(0, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_buffer);

  /* "src/mpi4py/MPI.src/asbuffer.pxi":311
 * 
 * 
 * memory = buffer  # Backward compatibility alias             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_memory, ((PyObject *)__pyx_ptype_6mpi4py_3MPI_buffer)) < 0) __PYX_ERR(0, 311, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/objmodel.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef object Lock  = None             # <<<<<<<<<<<<<<
 * cdef object RLock = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_Lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_Lock, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":4
 * 
 * cdef object Lock  = None
 * cdef object RLock = None             # <<<<<<<<<<<<<<
 * 
 * if PY_VERSION_HEX >= 0x030900F0:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_RLock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_RLock, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":6
 * cdef object RLock = None
 * 
 * if PY_VERSION_HEX >= 0x030900F0:             # <<<<<<<<<<<<<<
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock
 */
  __pyx_t_5 = (PY_VERSION_HEX >= 0x030900F0);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/objmodel.pxi":7
 * 
 * if PY_VERSION_HEX >= 0x030900F0:
 *     from _thread import allocate_lock as Lock             # <<<<<<<<<<<<<<
 *     from _thread import RLock as RLock
 * else:
 */
    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_n_s_allocate_lock);
    __Pyx_GIVEREF(__pyx_n_s_allocate_lock);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_allocate_lock)) __PYX_ERR(1, 7, __pyx_L1_error);
    __pyx_t_2 = __Pyx_Import(__pyx_n_s_thread, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_allocate_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 7, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_Lock);
    __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_Lock, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":8
 * if PY_VERSION_HEX >= 0x030900F0:
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock             # <<<<<<<<<<<<<<
 * else:
 *     try:                                                  # ~> legacy
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_RLock);
    __Pyx_GIVEREF(__pyx_n_s_RLock);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_RLock)) __PYX_ERR(1, 8, __pyx_L1_error);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_thread, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_RLock); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_RLock);
    __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_RLock, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/mpi4py/MPI.src/objmodel.pxi":6
 * cdef object RLock = None
 * 
 * if PY_VERSION_HEX >= 0x030900F0:             # <<<<<<<<<<<<<<
 *     from _thread import allocate_lock as Lock
 *     from _thread import RLock as RLock
 */
    goto __pyx_L2;
  }

  /* "src/mpi4py/MPI.src/objmodel.pxi":10
 *     from _thread import RLock as RLock
 * else:
 *     try:                                                  # ~> legacy             # <<<<<<<<<<<<<<
 *         from _thread import allocate_lock as Lock         # ~> legacy
 *         from _thread import RLock as RLock                # ~> legacy
 */
  /*else*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      /*try:*/ {

        /* "src/mpi4py/MPI.src/objmodel.pxi":11
 * else:
 *     try:                                                  # ~> legacy
 *         from _thread import allocate_lock as Lock         # ~> legacy             # <<<<<<<<<<<<<<
 *         from _thread import RLock as RLock                # ~> legacy
 *     except ImportError:                                   # ~> legacy
 */
        __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 11, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_n_s_allocate_lock);
        __Pyx_GIVEREF(__pyx_n_s_allocate_lock);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_allocate_lock)) __PYX_ERR(1, 11, __pyx_L3_error);
        __pyx_t_2 = __Pyx_Import(__pyx_n_s_thread, __pyx_t_3, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 11, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_allocate_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 11, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_Lock);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_Lock, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "src/mpi4py/MPI.src/objmodel.pxi":12
 *     try:                                                  # ~> legacy
 *         from _thread import allocate_lock as Lock         # ~> legacy
 *         from _thread import RLock as RLock                # ~> legacy             # <<<<<<<<<<<<<<
 *     except ImportError:                                   # ~> legacy
 *         from _dummy_thread import allocate_lock as Lock   # ~> legacy
 */
        __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 12, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_n_s_RLock);
        __Pyx_GIVEREF(__pyx_n_s_RLock);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_RLock)) __PYX_ERR(1, 12, __pyx_L3_error);
        __pyx_t_3 = __Pyx_Import(__pyx_n_s_thread, __pyx_t_2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 12, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_RLock); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 12, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_RLock);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_RLock, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

        /* "src/mpi4py/MPI.src/objmodel.pxi":10
 *     from _thread import RLock as RLock
 * else:
 *     try:                                                  # ~> legacy             # <<<<<<<<<<<<<<
 *         from _thread import allocate_lock as Lock         # ~> legacy
 *         from _thread import RLock as RLock                # ~> legacy
 */
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L8_try_end;
      __pyx_L3_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/mpi4py/MPI.src/objmodel.pxi":13
 *         from _thread import allocate_lock as Lock         # ~> legacy
 *         from _thread import RLock as RLock                # ~> legacy
 *     except ImportError:                                   # ~> legacy             # <<<<<<<<<<<<<<
 *         from _dummy_thread import allocate_lock as Lock   # ~> legacy
 *         from _dummy_thread import allocate_lock as RLock  # ~> legacy
 */
      __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
      if (__pyx_t_4) {
        __Pyx_AddTraceback("mpi4py.MPI", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_8) < 0) __PYX_ERR(1, 13, __pyx_L5_except_error)
        __Pyx_XGOTREF(__pyx_t_3);
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_8);

        /* "src/mpi4py/MPI.src/objmodel.pxi":14
 *         from _thread import RLock as RLock                # ~> legacy
 *     except ImportError:                                   # ~> legacy
 *         from _dummy_thread import allocate_lock as Lock   # ~> legacy             # <<<<<<<<<<<<<<
 *         from _dummy_thread import allocate_lock as RLock  # ~> legacy
 * 
 */
        __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_n_s_allocate_lock);
        __Pyx_GIVEREF(__pyx_n_s_allocate_lock);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_9, 0, __pyx_n_s_allocate_lock)) __PYX_ERR(1, 14, __pyx_L5_except_error);
        __pyx_t_10 = __Pyx_Import(__pyx_n_s_dummy_thread, __pyx_t_9, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 14, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = __Pyx_ImportFrom(__pyx_t_10, __pyx_n_s_allocate_lock); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 14, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_Lock);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_Lock, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "src/mpi4py/MPI.src/objmodel.pxi":15
 *     except ImportError:                                   # ~> legacy
 *         from _dummy_thread import allocate_lock as Lock   # ~> legacy
 *         from _dummy_thread import allocate_lock as RLock  # ~> legacy             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
        __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 15, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_INCREF(__pyx_n_s_allocate_lock);
        __Pyx_GIVEREF(__pyx_n_s_allocate_lock);
        if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_n_s_allocate_lock)) __PYX_ERR(1, 15, __pyx_L5_except_error);
        __pyx_t_9 = __Pyx_Import(__pyx_n_s_dummy_thread, __pyx_t_10, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 15, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_10 = __Pyx_ImportFrom(__pyx_t_9, __pyx_n_s_allocate_lock); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 15, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_RLock);
        __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_RLock, __pyx_t_10);
        __Pyx_GIVEREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L4_exception_handled;
      }
      goto __pyx_L5_except_error;

      /* "src/mpi4py/MPI.src/objmodel.pxi":10
 *     from _thread import RLock as RLock
 * else:
 *     try:                                                  # ~> legacy             # <<<<<<<<<<<<<<
 *         from _thread import allocate_lock as Lock         # ~> legacy
 *         from _thread import RLock as RLock                # ~> legacy
 */
      __pyx_L5_except_error:;
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L4_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_6, __pyx_t_7);
      __pyx_L8_try_end:;
    }
  }
  __pyx_L2:;

  /* "src/mpi4py/MPI.src/objmodel.pxi":312
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict def_registry = {}             # <<<<<<<<<<<<<<
 * 
 * cdef inline type def_class(handle_t handle):
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_def_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_def_registry, ((PyObject*)__pyx_t_8));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":350
 *     return registry[key]
 * 
 * cdef __newobj__ = None             # <<<<<<<<<<<<<<
 * from copyreg import __newobj__
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___newobj__, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/objmodel.pxi":351
 * 
 * cdef __newobj__ = None
 * from copyreg import __newobj__             # <<<<<<<<<<<<<<
 * 
 * cdef inline object def_reduce(PyMPIClass self):
 */
  __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_n_s_newobj);
  __Pyx_GIVEREF(__pyx_n_s_newobj);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_8, 0, __pyx_n_s_newobj)) __PYX_ERR(1, 351, __pyx_L1_error);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, __pyx_t_8, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_newobj); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_t_8);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___newobj__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___newobj__, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/objmodel.pxi":502
 * # Op
 * 
 * cdef dict def_op = {}             # <<<<<<<<<<<<<<
 * 
 * cdef inline Op def_Op(MPI_Op arg, object name):
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_def_op);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_def_op, ((PyObject*)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":30
 *         self.lock = RLock()
 * 
 * cdef object keyval_lock_type = Lock()             # <<<<<<<<<<<<<<
 * cdef object keyval_lock_comm = Lock()
 * cdef object keyval_lock_win  = Lock()
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_v_6mpi4py_3MPI_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_lock_type);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_lock_type, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":31
 * 
 * cdef object keyval_lock_type = Lock()
 * cdef object keyval_lock_comm = Lock()             # <<<<<<<<<<<<<<
 * cdef object keyval_lock_win  = Lock()
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_v_6mpi4py_3MPI_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_lock_comm);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_lock_comm, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":32
 * cdef object keyval_lock_type = Lock()
 * cdef object keyval_lock_comm = Lock()
 * cdef object keyval_lock_win  = Lock()             # <<<<<<<<<<<<<<
 * 
 * cdef dict   keyval_registry_type = {}
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_v_6mpi4py_3MPI_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_lock_win);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_lock_win, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":34
 * cdef object keyval_lock_win  = Lock()
 * 
 * cdef dict   keyval_registry_type = {}             # <<<<<<<<<<<<<<
 * cdef dict   keyval_registry_comm = {}
 * cdef dict   keyval_registry_win  = {}
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_registry_type);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_registry_type, ((PyObject*)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":35
 * 
 * cdef dict   keyval_registry_type = {}
 * cdef dict   keyval_registry_comm = {}             # <<<<<<<<<<<<<<
 * cdef dict   keyval_registry_win  = {}
 * 
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_registry_comm);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_registry_comm, ((PyObject*)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":36
 * cdef dict   keyval_registry_type = {}
 * cdef dict   keyval_registry_comm = {}
 * cdef dict   keyval_registry_win  = {}             # <<<<<<<<<<<<<<
 * 
 * _keyval_registry = {
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_keyval_registry_win);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_keyval_registry_win, ((PyObject*)__pyx_t_2));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/attrimpl.pxi":39
 * 
 * _keyval_registry = {
 *     'Datatype' : keyval_registry_type,             # <<<<<<<<<<<<<<
 *     'Comm'     : keyval_registry_comm,
 *     'Win'      : keyval_registry_win,
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_Datatype, __pyx_v_6mpi4py_3MPI_keyval_registry_type) < 0) __PYX_ERR(6, 39, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":40
 * _keyval_registry = {
 *     'Datatype' : keyval_registry_type,
 *     'Comm'     : keyval_registry_comm,             # <<<<<<<<<<<<<<
 *     'Win'      : keyval_registry_win,
 * }
 */
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_Comm, __pyx_v_6mpi4py_3MPI_keyval_registry_comm) < 0) __PYX_ERR(6, 39, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/attrimpl.pxi":41
 *     'Datatype' : keyval_registry_type,
 *     'Comm'     : keyval_registry_comm,
 *     'Win'      : keyval_registry_win,             # <<<<<<<<<<<<<<
 * }
 * 
 */
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_Win, __pyx_v_6mpi4py_3MPI_keyval_registry_win) < 0) __PYX_ERR(6, 39, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_keyval_registry, __pyx_t_2) < 0) __PYX_ERR(6, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":15
 *     MPI_File_errhandler_function
 * 
 * cdef object errhdl_lock = Lock()             # <<<<<<<<<<<<<<
 * cdef list   errhdl_registry = [
 *     [None]*(1+32),  # Session
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_v_6mpi4py_3MPI_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_errhdl_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_errhdl_lock, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/mpi4py/MPI.src/errhimpl.pxi":17
 * cdef object errhdl_lock = Lock()
 * cdef list   errhdl_registry = [
 *     [None]*(1+32),  # Session             # <<<<<<<<<<<<<<
 *     [None]*(1+32),  # Comm
 *     [None]*(1+32),  # Win
 */
  __pyx_t_2 = PyList_New(1 * 33); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 0x21; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_2, __pyx_temp, Py_None)) __PYX_ERR(11, 17, __pyx_L1_error);
    }
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":18
 * cdef list   errhdl_registry = [
 *     [None]*(1+32),  # Session
 *     [None]*(1+32),  # Comm             # <<<<<<<<<<<<<<
 *     [None]*(1+32),  # Win
 *     [None]*(1+32),  # File
 */
  __pyx_t_8 = PyList_New(1 * 33); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 0x21; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_8, __pyx_temp, Py_None)) __PYX_ERR(11, 18, __pyx_L1_error);
    }
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":19
 *     [None]*(1+32),  # Session
 *     [None]*(1+32),  # Comm
 *     [None]*(1+32),  # Win             # <<<<<<<<<<<<<<
 *     [None]*(1+32),  # File
 * ]
 */
  __pyx_t_3 = PyList_New(1 * 33); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 0x21; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_3, __pyx_temp, Py_None)) __PYX_ERR(11, 19, __pyx_L1_error);
    }
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":20
 *     [None]*(1+32),  # Comm
 *     [None]*(1+32),  # Win
 *     [None]*(1+32),  # File             # <<<<<<<<<<<<<<
 * ]
 * 
 */
  __pyx_t_9 = PyList_New(1 * 33); if (unlikely(!__pyx_t_9)) __PYX_ERR(11, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 0x21; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_9, __pyx_temp, Py_None)) __PYX_ERR(11, 20, __pyx_L1_error);
    }
  }

  /* "src/mpi4py/MPI.src/errhimpl.pxi":16
 * 
 * cdef object errhdl_lock = Lock()
 * cdef list   errhdl_registry = [             # <<<<<<<<<<<<<<
 *     [None]*(1+32),  # Session
 *     [None]*(1+32),  # Comm
 */
  __pyx_t_10 = PyList_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(11, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_t_2)) __PYX_ERR(11, 16, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 1, __pyx_t_8)) __PYX_ERR(11, 16, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 2, __pyx_t_3)) __PYX_ERR(11, 16, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 3, __pyx_t_9)) __PYX_ERR(11, 16, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_errhdl_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_errhdl_registry, ((PyObject*)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":97
 *     MPI_User_function_c
 * 
 * cdef object op_user_lock     = Lock()             # <<<<<<<<<<<<<<
 * cdef list   op_user_registry = [None]*(1+32)
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_v_6mpi4py_3MPI_Lock); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_op_user_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_op_user_lock, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/opimpl.pxi":98
 * 
 * cdef object op_user_lock     = Lock()
 * cdef list   op_user_registry = [None]*(1+32)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = PyList_New(1 * 33); if (unlikely(!__pyx_t_10)) __PYX_ERR(13, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  { Py_ssize_t __pyx_temp;
    for (__pyx_temp=0; __pyx_temp < 0x21; __pyx_temp++) {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      if (__Pyx_PyList_SET_ITEM(__pyx_t_10, __pyx_temp, Py_None)) __PYX_ERR(13, 98, __pyx_L1_error);
    }
  }
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_op_user_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_op_user_registry, ((PyObject*)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":22
 *         return 'BUFFER_AUTOMATIC'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BUFFER_AUTOMATIC'
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(14, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(14, 22, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_19BufferAutomaticType_7__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BufferAutomaticType___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_9)) __PYX_ERR(14, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(14, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType);

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":28
 * 
 * cdef object __BUFFER_AUTOMATIC__ = \
 *     BufferAutomaticType(<MPI_Aint>MPI_BUFFER_AUTOMATIC)             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint is_BUFFER_AUTOMATIC(object obj):
 */
  __pyx_t_9 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)MPI_BUFFER_AUTOMATIC)); if (unlikely(!__pyx_t_9)) __PYX_ERR(14, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6mpi4py_3MPI_BufferAutomaticType), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(14, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":40
 *     Session
 * 
 * cdef dict _mpi_buffer_comm = {}             # <<<<<<<<<<<<<<
 * cdef dict _mpi_buffer_session = {}
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(14, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm, ((PyObject*)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/bufaimpl.pxi":41
 * 
 * cdef dict _mpi_buffer_comm = {}
 * cdef dict _mpi_buffer_session = {}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(14, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI__mpi_buffer_session);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI__mpi_buffer_session, ((PyObject*)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef object __UNWEIGHTED__    = <MPI_Aint>MPI_UNWEIGHTED             # <<<<<<<<<<<<<<
 * 
 * cdef object __WEIGHTS_EMPTY__ = <MPI_Aint>MPI_WEIGHTS_EMPTY
 */
  __pyx_t_10 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)MPI_UNWEIGHTED)); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___UNWEIGHTED__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNWEIGHTED__, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":5
 * cdef object __UNWEIGHTED__    = <MPI_Aint>MPI_UNWEIGHTED
 * 
 * cdef object __WEIGHTS_EMPTY__ = <MPI_Aint>MPI_WEIGHTS_EMPTY             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)MPI_WEIGHTS_EMPTY)); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":60
 * # -----------------------------------------------------------------------------
 * 
 * cdef int    commlock_keyval   = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 * cdef object commlock_lock     = Lock()
 * cdef dict   commlock_registry = {}
 */
  __pyx_v_6mpi4py_3MPI_commlock_keyval = MPI_KEYVAL_INVALID;

  /* "src/mpi4py/MPI.src/commimpl.pxi":61
 * 
 * cdef int    commlock_keyval   = MPI_KEYVAL_INVALID
 * cdef object commlock_lock     = Lock()             # <<<<<<<<<<<<<<
 * cdef dict   commlock_registry = {}
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_v_6mpi4py_3MPI_Lock); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_commlock_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_commlock_lock, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":62
 * cdef int    commlock_keyval   = MPI_KEYVAL_INVALID
 * cdef object commlock_lock     = Lock()
 * cdef dict   commlock_registry = {}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_commlock_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_commlock_registry, ((PyObject*)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":137
 * 
 * 
 * def _comm_lock(Comm comm: Comm, object key: Hashable | None = None) -> Lock:             # <<<<<<<<<<<<<<
 *     """
 *     Create/get communicator lock.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(15, 137, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_key, __pyx_kp_s_Hashable_None) < 0) __PYX_ERR(15, 137, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Lock) < 0) __PYX_ERR(15, 137, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3_comm_lock, 0, __pyx_n_s_comm_lock, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__227)); if (unlikely(!__pyx_t_9)) __PYX_ERR(15, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_comm_lock, __pyx_t_9) < 0) __PYX_ERR(15, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/commimpl.pxi":144
 * 
 * 
 * def _comm_lock_table(Comm comm: Comm) -> dict[Hashable, Lock]:             # <<<<<<<<<<<<<<
 *     """
 *     Internal communicator lock table.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(15, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(15, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_dict_Hashable_Lock) < 0) __PYX_ERR(15, 144, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5_comm_lock_table, 0, __pyx_n_s_comm_lock_table, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_10)) __PYX_ERR(15, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_comm_lock_table, __pyx_t_10) < 0) __PYX_ERR(15, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * cdef object datarep_lock     = Lock()             # <<<<<<<<<<<<<<
 * cdef dict   datarep_registry = {}
 * 
 */
  __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_v_6mpi4py_3MPI_Lock); if (unlikely(!__pyx_t_10)) __PYX_ERR(17, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_datarep_lock);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_datarep_lock, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/drepimpl.pxi":4
 * 
 * cdef object datarep_lock     = Lock()
 * cdef dict   datarep_registry = {}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(17, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_datarep_registry);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_datarep_registry, ((PyObject*)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":46
 *         return 'BOTTOM'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'BOTTOM'
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(18, 46, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10BottomType_7__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BottomType___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__230)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_BottomType, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(18, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_BottomType);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":69
 *         return 'IN_PLACE'
 * 
 *     def __reduce__(self) -> str:             # <<<<<<<<<<<<<<
 *         <void> self  # unused
 *         return 'IN_PLACE'
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(18, 69, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_11InPlaceType_7__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_InPlaceType___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_InPlaceType, __pyx_n_s_reduce, __pyx_t_10) < 0) __PYX_ERR(18, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_InPlaceType);

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":74
 * 
 * 
 * cdef object __BOTTOM__   = BottomType(<MPI_Aint>MPI_BOTTOM)             # <<<<<<<<<<<<<<
 * 
 * cdef object __IN_PLACE__ = InPlaceType(<MPI_Aint>MPI_IN_PLACE)
 */
  __pyx_t_10 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)MPI_BOTTOM)); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6mpi4py_3MPI_BottomType), __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___BOTTOM__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BOTTOM__, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgbuffer.pxi":76
 * cdef object __BOTTOM__   = BottomType(<MPI_Aint>MPI_BOTTOM)
 * 
 * cdef object __IN_PLACE__ = InPlaceType(<MPI_Aint>MPI_IN_PLACE)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From_MPI_Aint(((MPI_Aint)MPI_IN_PLACE)); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_6mpi4py_3MPI_InPlaceType), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI___IN_PLACE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___IN_PLACE__, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":11
 * # -----------------------------------------------------------------------------
 * 
 * cdef object PyPickle_dumps = None             # <<<<<<<<<<<<<<
 * cdef object PyPickle_loads = None
 * cdef object PyPickle_PROTOCOL = None
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_dumps, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":12
 * 
 * cdef object PyPickle_dumps = None
 * cdef object PyPickle_loads = None             # <<<<<<<<<<<<<<
 * cdef object PyPickle_PROTOCOL = None
 * cdef object PyPickle_THRESHOLD = 1024**2 // 4  # 0.25 MiB
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_loads, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":13
 * cdef object PyPickle_dumps = None
 * cdef object PyPickle_loads = None
 * cdef object PyPickle_PROTOCOL = None             # <<<<<<<<<<<<<<
 * cdef object PyPickle_THRESHOLD = 1024**2 // 4  # 0.25 MiB
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":14
 * cdef object PyPickle_loads = None
 * cdef object PyPickle_PROTOCOL = None
 * cdef object PyPickle_THRESHOLD = 1024**2 // 4  # 0.25 MiB             # <<<<<<<<<<<<<<
 * 
 * from pickle import dumps as PyPickle_dumps
 */
  __Pyx_INCREF(__pyx_int_262144);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD, __pyx_int_262144);
  __Pyx_GIVEREF(__pyx_int_262144);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":16
 * cdef object PyPickle_THRESHOLD = 1024**2 // 4  # 0.25 MiB
 * 
 * from pickle import dumps as PyPickle_dumps             # <<<<<<<<<<<<<<
 * from pickle import loads as PyPickle_loads
 * from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 */
  __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_n_s_dumps);
  __Pyx_GIVEREF(__pyx_n_s_dumps);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_n_s_dumps)) __PYX_ERR(7, 16, __pyx_L1_error);
  __pyx_t_9 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_10, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_ImportFrom(__pyx_t_9, __pyx_n_s_dumps); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_dumps, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":17
 * 
 * from pickle import dumps as PyPickle_dumps
 * from pickle import loads as PyPickle_loads             # <<<<<<<<<<<<<<
 * from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * 
 */
  __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_n_s_loads);
  __Pyx_GIVEREF(__pyx_n_s_loads);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_9, 0, __pyx_n_s_loads)) __PYX_ERR(7, 17, __pyx_L1_error);
  __pyx_t_10 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_9, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_ImportFrom(__pyx_t_10, __pyx_n_s_loads); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_t_9);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_loads, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":18
 * from pickle import dumps as PyPickle_dumps
 * from pickle import loads as PyPickle_loads
 * from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL             # <<<<<<<<<<<<<<
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL") != NULL:
 */
  __pyx_t_10 = PyList_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_n_s_HIGHEST_PROTOCOL);
  __Pyx_GIVEREF(__pyx_n_s_HIGHEST_PROTOCOL);
  if (__Pyx_PyList_SET_ITEM(__pyx_t_10, 0, __pyx_n_s_HIGHEST_PROTOCOL)) __PYX_ERR(7, 18, __pyx_L1_error);
  __pyx_t_9 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_10, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_ImportFrom(__pyx_t_9, __pyx_n_s_HIGHEST_PROTOCOL); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_t_10);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":20
 * from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL") != NULL:             # <<<<<<<<<<<<<<
 *     PyPickle_PROTOCOL = int(Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL"))
 * 
 */
  __pyx_t_5 = (Py_GETENV(((char *)"MPI4PY_PICKLE_PROTOCOL")) != NULL);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":21
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL") != NULL:
 *     PyPickle_PROTOCOL = int(Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL"))             # <<<<<<<<<<<<<<
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD") != NULL:
 */
    __pyx_t_9 = __Pyx_PyBytes_FromString(Py_GETENV(((char *)"MPI4PY_PICKLE_PROTOCOL"))); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
    __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL, __pyx_t_10);
    __Pyx_GIVEREF(__pyx_t_10);
    __pyx_t_10 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":20
 * from pickle import HIGHEST_PROTOCOL as PyPickle_PROTOCOL
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL") != NULL:             # <<<<<<<<<<<<<<
 *     PyPickle_PROTOCOL = int(Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL"))
 * 
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":23
 *     PyPickle_PROTOCOL = int(Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL"))
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD") != NULL:             # <<<<<<<<<<<<<<
 *     PyPickle_THRESHOLD = int(Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD"))
 * 
 */
  __pyx_t_5 = (Py_GETENV(((char *)"MPI4PY_PICKLE_THRESHOLD")) != NULL);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/msgpickle.pxi":24
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD") != NULL:
 *     PyPickle_THRESHOLD = int(Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD"))             # <<<<<<<<<<<<<<
 * 
 * cdef class Pickle:
 */
    __pyx_t_10 = __Pyx_PyBytes_FromString(Py_GETENV(((char *)"MPI4PY_PICKLE_THRESHOLD"))); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_9 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
    __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/msgpickle.pxi":23
 *     PyPickle_PROTOCOL = int(Py_GETENV(b"MPI4PY_PICKLE_PROTOCOL"))
 * 
 * if Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD") != NULL:             # <<<<<<<<<<<<<<
 *     PyPickle_THRESHOLD = int(Py_GETENV(b"MPI4PY_PICKLE_THRESHOLD"))
 * 
 */
  }

  /* "src/mpi4py/MPI.src/msgpickle.pxi":65
 *         self.ob_THRES = threshold
 * 
 *     def dumps(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(7, 65, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_bytes) < 0) __PYX_ERR(7, 65, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_5dumps, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Pickle_dumps, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_n_s_dumps, __pyx_t_10) < 0) __PYX_ERR(7, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Pickle);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":74
 *         return cdumps(self, obj)
 * 
 *     def loads(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_data, __pyx_n_s_Buffer) < 0) __PYX_ERR(7, 74, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(7, 74, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_7loads, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Pickle_loads, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_n_s_loads, __pyx_t_9) < 0) __PYX_ERR(7, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Pickle);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":83
 *         return cloads(self, data)
 * 
 *     def dumps_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(7, 83, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_bytes_list_buffer) < 0) __PYX_ERR(7, 83, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_9dumps_oob, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Pickle_dumps_oob, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__236)); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_n_s_dumps_oob, __pyx_t_10) < 0) __PYX_ERR(7, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Pickle);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":92
 *         return cdumps_oob(self, obj)
 * 
 *     def loads_oob(             # <<<<<<<<<<<<<<
 *         self,
 *         data: Buffer,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_data, __pyx_n_s_Buffer) < 0) __PYX_ERR(7, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_buffers, __pyx_kp_s_Iterable_Buffer) < 0) __PYX_ERR(7, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(7, 92, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Pickle_11loads_oob, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Pickle_loads_oob, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__238)); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Pickle, __pyx_n_s_loads_oob, __pyx_t_9) < 0) __PYX_ERR(7, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Pickle);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":124
 * 
 * 
 * cdef Pickle PyMPI_PICKLE = Pickle()             # <<<<<<<<<<<<<<
 * pickle = PyMPI_PICKLE
 * 
 */
  __pyx_t_9 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_6mpi4py_3MPI_Pickle)); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE, ((struct __pyx_obj_6mpi4py_3MPI_Pickle *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":125
 * 
 * cdef Pickle PyMPI_PICKLE = Pickle()
 * pickle = PyMPI_PICKLE             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickle, ((PyObject *)__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE)) < 0) __PYX_ERR(7, 125, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/msgpickle.pxi":129
 * # -----------------------------------------------------------------------------
 * 
 * cdef int have_pickle5 = -1                                # ~> legacy             # <<<<<<<<<<<<<<
 * cdef object PyPickle5_dumps = None                        # ~> legacy
 * cdef object PyPickle5_loads = None                        # ~> legacy
 */
  __pyx_v_6mpi4py_3MPI_have_pickle5 = -1;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":130
 * 
 * cdef int have_pickle5 = -1                                # ~> legacy
 * cdef object PyPickle5_dumps = None                        # ~> legacy             # <<<<<<<<<<<<<<
 * cdef object PyPickle5_loads = None                        # ~> legacy
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":131
 * cdef int have_pickle5 = -1                                # ~> legacy
 * cdef object PyPickle5_dumps = None                        # ~> legacy
 * cdef object PyPickle5_loads = None                        # ~> legacy             # <<<<<<<<<<<<<<
 * 
 * cdef int import_pickle5() except -1:                      # ~> legacy
 */
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_PyPickle5_loads);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_PyPickle5_loads, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1278
 * 
 * 
 * def _commctx_intra(             # <<<<<<<<<<<<<<
 *     Intracomm comm: Intracomm,
 * ) -> tuple[Intracomm, int]:
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 1278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Intracomm) < 0) __PYX_ERR(7, 1278, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_Intracomm_int) < 0) __PYX_ERR(7, 1278, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7_commctx_intra, 0, __pyx_n_s_commctx_intra_2, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__240)); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 1278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_commctx_intra_2, __pyx_t_10) < 0) __PYX_ERR(7, 1278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/msgpickle.pxi":1290
 * 
 * 
 * def _commctx_inter(             # <<<<<<<<<<<<<<
 *     Intercomm comm: Intercomm,
 * ) -> tuple[Intercomm, int, Intracomm, bool]:
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_comm, __pyx_n_s_Intercomm) < 0) __PYX_ERR(7, 1290, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_Intercomm_int_Intracomm_bo) < 0) __PYX_ERR(7, 1290, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9_commctx_inter, 0, __pyx_n_s_commctx_inter_2, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__242)); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_commctx_inter_2, __pyx_t_9) < 0) __PYX_ERR(7, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":36
 * # ------------------
 * 
 * UNDEFINED = MPI_UNDEFINED             # <<<<<<<<<<<<<<
 * #: Undefined integer value
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_UNDEFINED); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNDEFINED, __pyx_t_9) < 0) __PYX_ERR(34, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":39
 * #: Undefined integer value
 * 
 * ANY_SOURCE = MPI_ANY_SOURCE             # <<<<<<<<<<<<<<
 * #: Wildcard source value for receives
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANY_SOURCE, __pyx_t_9) < 0) __PYX_ERR(34, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":42
 * #: Wildcard source value for receives
 * 
 * ANY_TAG = MPI_ANY_TAG             # <<<<<<<<<<<<<<
 * #: Wildcard tag value for receives
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANY_TAG, __pyx_t_9) < 0) __PYX_ERR(34, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":45
 * #: Wildcard tag value for receives
 * 
 * PROC_NULL = MPI_PROC_NULL             # <<<<<<<<<<<<<<
 * #: Special process rank for send/receive
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_PROC_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PROC_NULL, __pyx_t_9) < 0) __PYX_ERR(34, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":48
 * #: Special process rank for send/receive
 * 
 * ROOT = MPI_ROOT             # <<<<<<<<<<<<<<
 * #: Root process for collective inter-communications
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ROOT); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ROOT, __pyx_t_9) < 0) __PYX_ERR(34, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":51
 * #: Root process for collective inter-communications
 * 
 * BOTTOM = __BOTTOM__             # <<<<<<<<<<<<<<
 * #: Special address for buffers
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BOTTOM, __pyx_v_6mpi4py_3MPI___BOTTOM__) < 0) __PYX_ERR(34, 51, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":54
 * #: Special address for buffers
 * 
 * IN_PLACE = __IN_PLACE__             # <<<<<<<<<<<<<<
 * #: *In-place* option for collective communications
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IN_PLACE, __pyx_v_6mpi4py_3MPI___IN_PLACE__) < 0) __PYX_ERR(34, 54, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/MPI.pyx":61
 * # ----------------------------
 * 
 * KEYVAL_INVALID    = MPI_KEYVAL_INVALID             # <<<<<<<<<<<<<<
 * 
 * TAG_UB            = MPI_TAG_UB
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_KEYVAL_INVALID); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_KEYVAL_INVALID, __pyx_t_9) < 0) __PYX_ERR(34, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":63
 * KEYVAL_INVALID    = MPI_KEYVAL_INVALID
 * 
 * TAG_UB            = MPI_TAG_UB             # <<<<<<<<<<<<<<
 * IO                = MPI_IO
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_TAG_UB); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TAG_UB, __pyx_t_9) < 0) __PYX_ERR(34, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":64
 * 
 * TAG_UB            = MPI_TAG_UB
 * IO                = MPI_IO             # <<<<<<<<<<<<<<
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_IO); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IO, __pyx_t_9) < 0) __PYX_ERR(34, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":65
 * TAG_UB            = MPI_TAG_UB
 * IO                = MPI_IO
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL             # <<<<<<<<<<<<<<
 * 
 * UNIVERSE_SIZE     = MPI_UNIVERSE_SIZE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WTIME_IS_GLOBAL); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WTIME_IS_GLOBAL, __pyx_t_9) < 0) __PYX_ERR(34, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":67
 * WTIME_IS_GLOBAL   = MPI_WTIME_IS_GLOBAL
 * 
 * UNIVERSE_SIZE     = MPI_UNIVERSE_SIZE             # <<<<<<<<<<<<<<
 * APPNUM            = MPI_APPNUM
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_UNIVERSE_SIZE); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNIVERSE_SIZE, __pyx_t_9) < 0) __PYX_ERR(34, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":68
 * 
 * UNIVERSE_SIZE     = MPI_UNIVERSE_SIZE
 * APPNUM            = MPI_APPNUM             # <<<<<<<<<<<<<<
 * 
 * LASTUSEDCODE      = MPI_LASTUSEDCODE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_APPNUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_APPNUM, __pyx_t_9) < 0) __PYX_ERR(34, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":70
 * APPNUM            = MPI_APPNUM
 * 
 * LASTUSEDCODE      = MPI_LASTUSEDCODE             # <<<<<<<<<<<<<<
 * 
 * WIN_BASE          = MPI_WIN_BASE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_LASTUSEDCODE); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LASTUSEDCODE, __pyx_t_9) < 0) __PYX_ERR(34, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":72
 * LASTUSEDCODE      = MPI_LASTUSEDCODE
 * 
 * WIN_BASE          = MPI_WIN_BASE             # <<<<<<<<<<<<<<
 * WIN_SIZE          = MPI_WIN_SIZE
 * WIN_DISP_UNIT     = MPI_WIN_DISP_UNIT
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_BASE); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_BASE, __pyx_t_9) < 0) __PYX_ERR(34, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":73
 * 
 * WIN_BASE          = MPI_WIN_BASE
 * WIN_SIZE          = MPI_WIN_SIZE             # <<<<<<<<<<<<<<
 * WIN_DISP_UNIT     = MPI_WIN_DISP_UNIT
 * WIN_CREATE_FLAVOR = MPI_WIN_CREATE_FLAVOR
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_SIZE); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_SIZE, __pyx_t_9) < 0) __PYX_ERR(34, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":74
 * WIN_BASE          = MPI_WIN_BASE
 * WIN_SIZE          = MPI_WIN_SIZE
 * WIN_DISP_UNIT     = MPI_WIN_DISP_UNIT             # <<<<<<<<<<<<<<
 * WIN_CREATE_FLAVOR = MPI_WIN_CREATE_FLAVOR
 * WIN_FLAVOR        = MPI_WIN_CREATE_FLAVOR
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_DISP_UNIT); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_DISP_UNIT, __pyx_t_9) < 0) __PYX_ERR(34, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":75
 * WIN_SIZE          = MPI_WIN_SIZE
 * WIN_DISP_UNIT     = MPI_WIN_DISP_UNIT
 * WIN_CREATE_FLAVOR = MPI_WIN_CREATE_FLAVOR             # <<<<<<<<<<<<<<
 * WIN_FLAVOR        = MPI_WIN_CREATE_FLAVOR
 * WIN_MODEL         = MPI_WIN_MODEL
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_CREATE_FLAVOR); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_CREATE_FLAVOR, __pyx_t_9) < 0) __PYX_ERR(34, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":76
 * WIN_DISP_UNIT     = MPI_WIN_DISP_UNIT
 * WIN_CREATE_FLAVOR = MPI_WIN_CREATE_FLAVOR
 * WIN_FLAVOR        = MPI_WIN_CREATE_FLAVOR             # <<<<<<<<<<<<<<
 * WIN_MODEL         = MPI_WIN_MODEL
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_CREATE_FLAVOR); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_FLAVOR, __pyx_t_9) < 0) __PYX_ERR(34, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":77
 * WIN_CREATE_FLAVOR = MPI_WIN_CREATE_FLAVOR
 * WIN_FLAVOR        = MPI_WIN_CREATE_FLAVOR
 * WIN_MODEL         = MPI_WIN_MODEL             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_MODEL); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_MODEL, __pyx_t_9) < 0) __PYX_ERR(34, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":5
 * 
 * # No Errors
 * SUCCESS          = MPI_SUCCESS             # <<<<<<<<<<<<<<
 * ERR_LASTCODE     = MPI_ERR_LASTCODE
 * # Object Handles
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_SUCCESS); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SUCCESS, __pyx_t_9) < 0) __PYX_ERR(20, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":6
 * # No Errors
 * SUCCESS          = MPI_SUCCESS
 * ERR_LASTCODE     = MPI_ERR_LASTCODE             # <<<<<<<<<<<<<<
 * # Object Handles
 * ERR_TYPE         = MPI_ERR_TYPE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_LASTCODE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_LASTCODE, __pyx_t_9) < 0) __PYX_ERR(20, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":8
 * ERR_LASTCODE     = MPI_ERR_LASTCODE
 * # Object Handles
 * ERR_TYPE         = MPI_ERR_TYPE             # <<<<<<<<<<<<<<
 * ERR_REQUEST      = MPI_ERR_REQUEST
 * ERR_OP           = MPI_ERR_OP
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_TYPE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_TYPE, __pyx_t_9) < 0) __PYX_ERR(20, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":9
 * # Object Handles
 * ERR_TYPE         = MPI_ERR_TYPE
 * ERR_REQUEST      = MPI_ERR_REQUEST             # <<<<<<<<<<<<<<
 * ERR_OP           = MPI_ERR_OP
 * ERR_GROUP        = MPI_ERR_GROUP
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_REQUEST); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_REQUEST, __pyx_t_9) < 0) __PYX_ERR(20, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":10
 * ERR_TYPE         = MPI_ERR_TYPE
 * ERR_REQUEST      = MPI_ERR_REQUEST
 * ERR_OP           = MPI_ERR_OP             # <<<<<<<<<<<<<<
 * ERR_GROUP        = MPI_ERR_GROUP
 * ERR_INFO         = MPI_ERR_INFO
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_OP); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_OP, __pyx_t_9) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":11
 * ERR_REQUEST      = MPI_ERR_REQUEST
 * ERR_OP           = MPI_ERR_OP
 * ERR_GROUP        = MPI_ERR_GROUP             # <<<<<<<<<<<<<<
 * ERR_INFO         = MPI_ERR_INFO
 * ERR_ERRHANDLER   = MPI_ERR_ERRHANDLER
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_GROUP); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_GROUP, __pyx_t_9) < 0) __PYX_ERR(20, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":12
 * ERR_OP           = MPI_ERR_OP
 * ERR_GROUP        = MPI_ERR_GROUP
 * ERR_INFO         = MPI_ERR_INFO             # <<<<<<<<<<<<<<
 * ERR_ERRHANDLER   = MPI_ERR_ERRHANDLER
 * ERR_SESSION      = MPI_ERR_SESSION
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_INFO); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_INFO, __pyx_t_9) < 0) __PYX_ERR(20, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":13
 * ERR_GROUP        = MPI_ERR_GROUP
 * ERR_INFO         = MPI_ERR_INFO
 * ERR_ERRHANDLER   = MPI_ERR_ERRHANDLER             # <<<<<<<<<<<<<<
 * ERR_SESSION      = MPI_ERR_SESSION
 * ERR_COMM         = MPI_ERR_COMM
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_ERRHANDLER); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_ERRHANDLER, __pyx_t_9) < 0) __PYX_ERR(20, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":14
 * ERR_INFO         = MPI_ERR_INFO
 * ERR_ERRHANDLER   = MPI_ERR_ERRHANDLER
 * ERR_SESSION      = MPI_ERR_SESSION             # <<<<<<<<<<<<<<
 * ERR_COMM         = MPI_ERR_COMM
 * ERR_WIN          = MPI_ERR_WIN
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_SESSION); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_SESSION, __pyx_t_9) < 0) __PYX_ERR(20, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":15
 * ERR_ERRHANDLER   = MPI_ERR_ERRHANDLER
 * ERR_SESSION      = MPI_ERR_SESSION
 * ERR_COMM         = MPI_ERR_COMM             # <<<<<<<<<<<<<<
 * ERR_WIN          = MPI_ERR_WIN
 * ERR_FILE         = MPI_ERR_FILE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_COMM); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_COMM, __pyx_t_9) < 0) __PYX_ERR(20, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":16
 * ERR_SESSION      = MPI_ERR_SESSION
 * ERR_COMM         = MPI_ERR_COMM
 * ERR_WIN          = MPI_ERR_WIN             # <<<<<<<<<<<<<<
 * ERR_FILE         = MPI_ERR_FILE
 * # Communication Arguments
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_WIN); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_WIN, __pyx_t_9) < 0) __PYX_ERR(20, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":17
 * ERR_COMM         = MPI_ERR_COMM
 * ERR_WIN          = MPI_ERR_WIN
 * ERR_FILE         = MPI_ERR_FILE             # <<<<<<<<<<<<<<
 * # Communication Arguments
 * ERR_BUFFER       = MPI_ERR_BUFFER
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_FILE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_FILE, __pyx_t_9) < 0) __PYX_ERR(20, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":19
 * ERR_FILE         = MPI_ERR_FILE
 * # Communication Arguments
 * ERR_BUFFER       = MPI_ERR_BUFFER             # <<<<<<<<<<<<<<
 * ERR_COUNT        = MPI_ERR_COUNT
 * ERR_TAG          = MPI_ERR_TAG
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_BUFFER); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_BUFFER, __pyx_t_9) < 0) __PYX_ERR(20, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":20
 * # Communication Arguments
 * ERR_BUFFER       = MPI_ERR_BUFFER
 * ERR_COUNT        = MPI_ERR_COUNT             # <<<<<<<<<<<<<<
 * ERR_TAG          = MPI_ERR_TAG
 * ERR_RANK         = MPI_ERR_RANK
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_COUNT); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_COUNT, __pyx_t_9) < 0) __PYX_ERR(20, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":21
 * ERR_BUFFER       = MPI_ERR_BUFFER
 * ERR_COUNT        = MPI_ERR_COUNT
 * ERR_TAG          = MPI_ERR_TAG             # <<<<<<<<<<<<<<
 * ERR_RANK         = MPI_ERR_RANK
 * ERR_ROOT         = MPI_ERR_ROOT
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_TAG, __pyx_t_9) < 0) __PYX_ERR(20, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":22
 * ERR_COUNT        = MPI_ERR_COUNT
 * ERR_TAG          = MPI_ERR_TAG
 * ERR_RANK         = MPI_ERR_RANK             # <<<<<<<<<<<<<<
 * ERR_ROOT         = MPI_ERR_ROOT
 * ERR_TRUNCATE     = MPI_ERR_TRUNCATE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_RANK); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_RANK, __pyx_t_9) < 0) __PYX_ERR(20, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":23
 * ERR_TAG          = MPI_ERR_TAG
 * ERR_RANK         = MPI_ERR_RANK
 * ERR_ROOT         = MPI_ERR_ROOT             # <<<<<<<<<<<<<<
 * ERR_TRUNCATE     = MPI_ERR_TRUNCATE
 * # Multiple Completion
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_ROOT); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_ROOT, __pyx_t_9) < 0) __PYX_ERR(20, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":24
 * ERR_RANK         = MPI_ERR_RANK
 * ERR_ROOT         = MPI_ERR_ROOT
 * ERR_TRUNCATE     = MPI_ERR_TRUNCATE             # <<<<<<<<<<<<<<
 * # Multiple Completion
 * ERR_IN_STATUS    = MPI_ERR_IN_STATUS
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_TRUNCATE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_TRUNCATE, __pyx_t_9) < 0) __PYX_ERR(20, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":26
 * ERR_TRUNCATE     = MPI_ERR_TRUNCATE
 * # Multiple Completion
 * ERR_IN_STATUS    = MPI_ERR_IN_STATUS             # <<<<<<<<<<<<<<
 * ERR_PENDING      = MPI_ERR_PENDING
 * # Topology Arguments
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_IN_STATUS); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_IN_STATUS, __pyx_t_9) < 0) __PYX_ERR(20, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":27
 * # Multiple Completion
 * ERR_IN_STATUS    = MPI_ERR_IN_STATUS
 * ERR_PENDING      = MPI_ERR_PENDING             # <<<<<<<<<<<<<<
 * # Topology Arguments
 * ERR_TOPOLOGY     = MPI_ERR_TOPOLOGY
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_PENDING); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_PENDING, __pyx_t_9) < 0) __PYX_ERR(20, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":29
 * ERR_PENDING      = MPI_ERR_PENDING
 * # Topology Arguments
 * ERR_TOPOLOGY     = MPI_ERR_TOPOLOGY             # <<<<<<<<<<<<<<
 * ERR_DIMS         = MPI_ERR_DIMS
 * # Other Arguments
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_TOPOLOGY); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_TOPOLOGY, __pyx_t_9) < 0) __PYX_ERR(20, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":30
 * # Topology Arguments
 * ERR_TOPOLOGY     = MPI_ERR_TOPOLOGY
 * ERR_DIMS         = MPI_ERR_DIMS             # <<<<<<<<<<<<<<
 * # Other Arguments
 * ERR_ARG          = MPI_ERR_ARG
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_DIMS); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_DIMS, __pyx_t_9) < 0) __PYX_ERR(20, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":32
 * ERR_DIMS         = MPI_ERR_DIMS
 * # Other Arguments
 * ERR_ARG          = MPI_ERR_ARG             # <<<<<<<<<<<<<<
 * # Other Errors
 * ERR_OTHER        = MPI_ERR_OTHER
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_ARG); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_ARG, __pyx_t_9) < 0) __PYX_ERR(20, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":34
 * ERR_ARG          = MPI_ERR_ARG
 * # Other Errors
 * ERR_OTHER        = MPI_ERR_OTHER             # <<<<<<<<<<<<<<
 * ERR_UNKNOWN      = MPI_ERR_UNKNOWN
 * ERR_INTERN       = MPI_ERR_INTERN
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_OTHER); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_OTHER, __pyx_t_9) < 0) __PYX_ERR(20, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":35
 * # Other Errors
 * ERR_OTHER        = MPI_ERR_OTHER
 * ERR_UNKNOWN      = MPI_ERR_UNKNOWN             # <<<<<<<<<<<<<<
 * ERR_INTERN       = MPI_ERR_INTERN
 * # Attributes
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_UNKNOWN); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_UNKNOWN, __pyx_t_9) < 0) __PYX_ERR(20, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":36
 * ERR_OTHER        = MPI_ERR_OTHER
 * ERR_UNKNOWN      = MPI_ERR_UNKNOWN
 * ERR_INTERN       = MPI_ERR_INTERN             # <<<<<<<<<<<<<<
 * # Attributes
 * ERR_KEYVAL       = MPI_ERR_KEYVAL
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_INTERN); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_INTERN, __pyx_t_9) < 0) __PYX_ERR(20, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":38
 * ERR_INTERN       = MPI_ERR_INTERN
 * # Attributes
 * ERR_KEYVAL       = MPI_ERR_KEYVAL             # <<<<<<<<<<<<<<
 * # Memory Allocation
 * ERR_NO_MEM       = MPI_ERR_NO_MEM
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_KEYVAL); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_KEYVAL, __pyx_t_9) < 0) __PYX_ERR(20, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":40
 * ERR_KEYVAL       = MPI_ERR_KEYVAL
 * # Memory Allocation
 * ERR_NO_MEM       = MPI_ERR_NO_MEM             # <<<<<<<<<<<<<<
 * # Info Object
 * ERR_INFO_KEY     = MPI_ERR_INFO_KEY
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_NO_MEM); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_NO_MEM, __pyx_t_9) < 0) __PYX_ERR(20, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":42
 * ERR_NO_MEM       = MPI_ERR_NO_MEM
 * # Info Object
 * ERR_INFO_KEY     = MPI_ERR_INFO_KEY             # <<<<<<<<<<<<<<
 * ERR_INFO_VALUE   = MPI_ERR_INFO_VALUE
 * ERR_INFO_NOKEY   = MPI_ERR_INFO_NOKEY
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_INFO_KEY); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_INFO_KEY, __pyx_t_9) < 0) __PYX_ERR(20, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":43
 * # Info Object
 * ERR_INFO_KEY     = MPI_ERR_INFO_KEY
 * ERR_INFO_VALUE   = MPI_ERR_INFO_VALUE             # <<<<<<<<<<<<<<
 * ERR_INFO_NOKEY   = MPI_ERR_INFO_NOKEY
 * # Dynamic Process Management
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_INFO_VALUE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_INFO_VALUE, __pyx_t_9) < 0) __PYX_ERR(20, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":44
 * ERR_INFO_KEY     = MPI_ERR_INFO_KEY
 * ERR_INFO_VALUE   = MPI_ERR_INFO_VALUE
 * ERR_INFO_NOKEY   = MPI_ERR_INFO_NOKEY             # <<<<<<<<<<<<<<
 * # Dynamic Process Management
 * ERR_SPAWN        = MPI_ERR_SPAWN
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_INFO_NOKEY); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_INFO_NOKEY, __pyx_t_9) < 0) __PYX_ERR(20, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":46
 * ERR_INFO_NOKEY   = MPI_ERR_INFO_NOKEY
 * # Dynamic Process Management
 * ERR_SPAWN        = MPI_ERR_SPAWN             # <<<<<<<<<<<<<<
 * ERR_PORT         = MPI_ERR_PORT
 * ERR_SERVICE      = MPI_ERR_SERVICE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_SPAWN); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_SPAWN, __pyx_t_9) < 0) __PYX_ERR(20, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":47
 * # Dynamic Process Management
 * ERR_SPAWN        = MPI_ERR_SPAWN
 * ERR_PORT         = MPI_ERR_PORT             # <<<<<<<<<<<<<<
 * ERR_SERVICE      = MPI_ERR_SERVICE
 * ERR_NAME         = MPI_ERR_NAME
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_PORT); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_PORT, __pyx_t_9) < 0) __PYX_ERR(20, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":48
 * ERR_SPAWN        = MPI_ERR_SPAWN
 * ERR_PORT         = MPI_ERR_PORT
 * ERR_SERVICE      = MPI_ERR_SERVICE             # <<<<<<<<<<<<<<
 * ERR_NAME         = MPI_ERR_NAME
 * ERR_PROC_ABORTED = MPI_ERR_PROC_ABORTED
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_SERVICE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_SERVICE, __pyx_t_9) < 0) __PYX_ERR(20, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":49
 * ERR_PORT         = MPI_ERR_PORT
 * ERR_SERVICE      = MPI_ERR_SERVICE
 * ERR_NAME         = MPI_ERR_NAME             # <<<<<<<<<<<<<<
 * ERR_PROC_ABORTED = MPI_ERR_PROC_ABORTED
 * # One-Sided Communications
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_NAME); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_NAME, __pyx_t_9) < 0) __PYX_ERR(20, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":50
 * ERR_SERVICE      = MPI_ERR_SERVICE
 * ERR_NAME         = MPI_ERR_NAME
 * ERR_PROC_ABORTED = MPI_ERR_PROC_ABORTED             # <<<<<<<<<<<<<<
 * # One-Sided Communications
 * ERR_BASE         = MPI_ERR_BASE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_PROC_ABORTED); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_PROC_ABORTED, __pyx_t_9) < 0) __PYX_ERR(20, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":52
 * ERR_PROC_ABORTED = MPI_ERR_PROC_ABORTED
 * # One-Sided Communications
 * ERR_BASE         = MPI_ERR_BASE             # <<<<<<<<<<<<<<
 * ERR_SIZE         = MPI_ERR_SIZE
 * ERR_DISP         = MPI_ERR_DISP
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_BASE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_BASE, __pyx_t_9) < 0) __PYX_ERR(20, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":53
 * # One-Sided Communications
 * ERR_BASE         = MPI_ERR_BASE
 * ERR_SIZE         = MPI_ERR_SIZE             # <<<<<<<<<<<<<<
 * ERR_DISP         = MPI_ERR_DISP
 * ERR_ASSERT       = MPI_ERR_ASSERT
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_SIZE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_SIZE, __pyx_t_9) < 0) __PYX_ERR(20, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":54
 * ERR_BASE         = MPI_ERR_BASE
 * ERR_SIZE         = MPI_ERR_SIZE
 * ERR_DISP         = MPI_ERR_DISP             # <<<<<<<<<<<<<<
 * ERR_ASSERT       = MPI_ERR_ASSERT
 * ERR_LOCKTYPE     = MPI_ERR_LOCKTYPE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_DISP); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_DISP, __pyx_t_9) < 0) __PYX_ERR(20, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":55
 * ERR_SIZE         = MPI_ERR_SIZE
 * ERR_DISP         = MPI_ERR_DISP
 * ERR_ASSERT       = MPI_ERR_ASSERT             # <<<<<<<<<<<<<<
 * ERR_LOCKTYPE     = MPI_ERR_LOCKTYPE
 * ERR_RMA_CONFLICT = MPI_ERR_RMA_CONFLICT
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_ASSERT); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_ASSERT, __pyx_t_9) < 0) __PYX_ERR(20, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":56
 * ERR_DISP         = MPI_ERR_DISP
 * ERR_ASSERT       = MPI_ERR_ASSERT
 * ERR_LOCKTYPE     = MPI_ERR_LOCKTYPE             # <<<<<<<<<<<<<<
 * ERR_RMA_CONFLICT = MPI_ERR_RMA_CONFLICT
 * ERR_RMA_SYNC     = MPI_ERR_RMA_SYNC
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_LOCKTYPE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_LOCKTYPE, __pyx_t_9) < 0) __PYX_ERR(20, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":57
 * ERR_ASSERT       = MPI_ERR_ASSERT
 * ERR_LOCKTYPE     = MPI_ERR_LOCKTYPE
 * ERR_RMA_CONFLICT = MPI_ERR_RMA_CONFLICT             # <<<<<<<<<<<<<<
 * ERR_RMA_SYNC     = MPI_ERR_RMA_SYNC
 * ERR_RMA_RANGE    = MPI_ERR_RMA_RANGE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_RMA_CONFLICT); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_RMA_CONFLICT, __pyx_t_9) < 0) __PYX_ERR(20, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":58
 * ERR_LOCKTYPE     = MPI_ERR_LOCKTYPE
 * ERR_RMA_CONFLICT = MPI_ERR_RMA_CONFLICT
 * ERR_RMA_SYNC     = MPI_ERR_RMA_SYNC             # <<<<<<<<<<<<<<
 * ERR_RMA_RANGE    = MPI_ERR_RMA_RANGE
 * ERR_RMA_ATTACH   = MPI_ERR_RMA_ATTACH
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_RMA_SYNC); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_RMA_SYNC, __pyx_t_9) < 0) __PYX_ERR(20, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":59
 * ERR_RMA_CONFLICT = MPI_ERR_RMA_CONFLICT
 * ERR_RMA_SYNC     = MPI_ERR_RMA_SYNC
 * ERR_RMA_RANGE    = MPI_ERR_RMA_RANGE             # <<<<<<<<<<<<<<
 * ERR_RMA_ATTACH   = MPI_ERR_RMA_ATTACH
 * ERR_RMA_SHARED   = MPI_ERR_RMA_SHARED
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_RMA_RANGE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_RMA_RANGE, __pyx_t_9) < 0) __PYX_ERR(20, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":60
 * ERR_RMA_SYNC     = MPI_ERR_RMA_SYNC
 * ERR_RMA_RANGE    = MPI_ERR_RMA_RANGE
 * ERR_RMA_ATTACH   = MPI_ERR_RMA_ATTACH             # <<<<<<<<<<<<<<
 * ERR_RMA_SHARED   = MPI_ERR_RMA_SHARED
 * ERR_RMA_FLAVOR   = MPI_ERR_RMA_FLAVOR
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_RMA_ATTACH); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_RMA_ATTACH, __pyx_t_9) < 0) __PYX_ERR(20, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":61
 * ERR_RMA_RANGE    = MPI_ERR_RMA_RANGE
 * ERR_RMA_ATTACH   = MPI_ERR_RMA_ATTACH
 * ERR_RMA_SHARED   = MPI_ERR_RMA_SHARED             # <<<<<<<<<<<<<<
 * ERR_RMA_FLAVOR   = MPI_ERR_RMA_FLAVOR
 * # Input/Output
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_RMA_SHARED); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_RMA_SHARED, __pyx_t_9) < 0) __PYX_ERR(20, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":62
 * ERR_RMA_ATTACH   = MPI_ERR_RMA_ATTACH
 * ERR_RMA_SHARED   = MPI_ERR_RMA_SHARED
 * ERR_RMA_FLAVOR   = MPI_ERR_RMA_FLAVOR             # <<<<<<<<<<<<<<
 * # Input/Output
 * ERR_BAD_FILE     = MPI_ERR_BAD_FILE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_RMA_FLAVOR); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_RMA_FLAVOR, __pyx_t_9) < 0) __PYX_ERR(20, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":64
 * ERR_RMA_FLAVOR   = MPI_ERR_RMA_FLAVOR
 * # Input/Output
 * ERR_BAD_FILE     = MPI_ERR_BAD_FILE             # <<<<<<<<<<<<<<
 * ERR_NO_SUCH_FILE = MPI_ERR_NO_SUCH_FILE
 * ERR_FILE_EXISTS  = MPI_ERR_FILE_EXISTS
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_BAD_FILE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_BAD_FILE, __pyx_t_9) < 0) __PYX_ERR(20, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":65
 * # Input/Output
 * ERR_BAD_FILE     = MPI_ERR_BAD_FILE
 * ERR_NO_SUCH_FILE = MPI_ERR_NO_SUCH_FILE             # <<<<<<<<<<<<<<
 * ERR_FILE_EXISTS  = MPI_ERR_FILE_EXISTS
 * ERR_FILE_IN_USE  = MPI_ERR_FILE_IN_USE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_NO_SUCH_FILE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_NO_SUCH_FILE, __pyx_t_9) < 0) __PYX_ERR(20, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":66
 * ERR_BAD_FILE     = MPI_ERR_BAD_FILE
 * ERR_NO_SUCH_FILE = MPI_ERR_NO_SUCH_FILE
 * ERR_FILE_EXISTS  = MPI_ERR_FILE_EXISTS             # <<<<<<<<<<<<<<
 * ERR_FILE_IN_USE  = MPI_ERR_FILE_IN_USE
 * ERR_AMODE        = MPI_ERR_AMODE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_FILE_EXISTS); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_FILE_EXISTS, __pyx_t_9) < 0) __PYX_ERR(20, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":67
 * ERR_NO_SUCH_FILE = MPI_ERR_NO_SUCH_FILE
 * ERR_FILE_EXISTS  = MPI_ERR_FILE_EXISTS
 * ERR_FILE_IN_USE  = MPI_ERR_FILE_IN_USE             # <<<<<<<<<<<<<<
 * ERR_AMODE        = MPI_ERR_AMODE
 * ERR_ACCESS       = MPI_ERR_ACCESS
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_FILE_IN_USE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_FILE_IN_USE, __pyx_t_9) < 0) __PYX_ERR(20, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":68
 * ERR_FILE_EXISTS  = MPI_ERR_FILE_EXISTS
 * ERR_FILE_IN_USE  = MPI_ERR_FILE_IN_USE
 * ERR_AMODE        = MPI_ERR_AMODE             # <<<<<<<<<<<<<<
 * ERR_ACCESS       = MPI_ERR_ACCESS
 * ERR_READ_ONLY    = MPI_ERR_READ_ONLY
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_AMODE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_AMODE, __pyx_t_9) < 0) __PYX_ERR(20, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":69
 * ERR_FILE_IN_USE  = MPI_ERR_FILE_IN_USE
 * ERR_AMODE        = MPI_ERR_AMODE
 * ERR_ACCESS       = MPI_ERR_ACCESS             # <<<<<<<<<<<<<<
 * ERR_READ_ONLY    = MPI_ERR_READ_ONLY
 * ERR_NO_SPACE     = MPI_ERR_NO_SPACE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_ACCESS); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_ACCESS, __pyx_t_9) < 0) __PYX_ERR(20, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":70
 * ERR_AMODE        = MPI_ERR_AMODE
 * ERR_ACCESS       = MPI_ERR_ACCESS
 * ERR_READ_ONLY    = MPI_ERR_READ_ONLY             # <<<<<<<<<<<<<<
 * ERR_NO_SPACE     = MPI_ERR_NO_SPACE
 * ERR_QUOTA        = MPI_ERR_QUOTA
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_READ_ONLY); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_READ_ONLY, __pyx_t_9) < 0) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":71
 * ERR_ACCESS       = MPI_ERR_ACCESS
 * ERR_READ_ONLY    = MPI_ERR_READ_ONLY
 * ERR_NO_SPACE     = MPI_ERR_NO_SPACE             # <<<<<<<<<<<<<<
 * ERR_QUOTA        = MPI_ERR_QUOTA
 * ERR_NOT_SAME     = MPI_ERR_NOT_SAME
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_NO_SPACE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_NO_SPACE, __pyx_t_9) < 0) __PYX_ERR(20, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":72
 * ERR_READ_ONLY    = MPI_ERR_READ_ONLY
 * ERR_NO_SPACE     = MPI_ERR_NO_SPACE
 * ERR_QUOTA        = MPI_ERR_QUOTA             # <<<<<<<<<<<<<<
 * ERR_NOT_SAME     = MPI_ERR_NOT_SAME
 * ERR_IO           = MPI_ERR_IO
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_QUOTA); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_QUOTA, __pyx_t_9) < 0) __PYX_ERR(20, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":73
 * ERR_NO_SPACE     = MPI_ERR_NO_SPACE
 * ERR_QUOTA        = MPI_ERR_QUOTA
 * ERR_NOT_SAME     = MPI_ERR_NOT_SAME             # <<<<<<<<<<<<<<
 * ERR_IO           = MPI_ERR_IO
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_NOT_SAME); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_NOT_SAME, __pyx_t_9) < 0) __PYX_ERR(20, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":74
 * ERR_QUOTA        = MPI_ERR_QUOTA
 * ERR_NOT_SAME     = MPI_ERR_NOT_SAME
 * ERR_IO           = MPI_ERR_IO             # <<<<<<<<<<<<<<
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_IO); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_IO, __pyx_t_9) < 0) __PYX_ERR(20, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":75
 * ERR_NOT_SAME     = MPI_ERR_NOT_SAME
 * ERR_IO           = MPI_ERR_IO
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION             # <<<<<<<<<<<<<<
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_UNSUPPORTED_OPERATION); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_UNSUPPORTED_OPERATION, __pyx_t_9) < 0) __PYX_ERR(20, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":76
 * ERR_IO           = MPI_ERR_IO
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP             # <<<<<<<<<<<<<<
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_UNSUPPORTED_DATAREP); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_UNSUPPORTED_DATAREP, __pyx_t_9) < 0) __PYX_ERR(20, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":77
 * ERR_UNSUPPORTED_OPERATION  = MPI_ERR_UNSUPPORTED_OPERATION
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP
 * ERR_CONVERSION             = MPI_ERR_CONVERSION             # <<<<<<<<<<<<<<
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP
 * ERR_VALUE_TOO_LARGE        = MPI_ERR_VALUE_TOO_LARGE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_CONVERSION); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_CONVERSION, __pyx_t_9) < 0) __PYX_ERR(20, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":78
 * ERR_UNSUPPORTED_DATAREP    = MPI_ERR_UNSUPPORTED_DATAREP
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP             # <<<<<<<<<<<<<<
 * ERR_VALUE_TOO_LARGE        = MPI_ERR_VALUE_TOO_LARGE
 * # Process Fault Tolerance
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_DUP_DATAREP); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_DUP_DATAREP, __pyx_t_9) < 0) __PYX_ERR(20, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":79
 * ERR_CONVERSION             = MPI_ERR_CONVERSION
 * ERR_DUP_DATAREP            = MPI_ERR_DUP_DATAREP
 * ERR_VALUE_TOO_LARGE        = MPI_ERR_VALUE_TOO_LARGE             # <<<<<<<<<<<<<<
 * # Process Fault Tolerance
 * ERR_REVOKED             = MPI_ERR_REVOKED
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_VALUE_TOO_LARGE); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_VALUE_TOO_LARGE, __pyx_t_9) < 0) __PYX_ERR(20, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":81
 * ERR_VALUE_TOO_LARGE        = MPI_ERR_VALUE_TOO_LARGE
 * # Process Fault Tolerance
 * ERR_REVOKED             = MPI_ERR_REVOKED             # <<<<<<<<<<<<<<
 * ERR_PROC_FAILED         = MPI_ERR_PROC_FAILED
 * ERR_PROC_FAILED_PENDING = MPI_ERR_PROC_FAILED_PENDING
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_REVOKED); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_REVOKED, __pyx_t_9) < 0) __PYX_ERR(20, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":82
 * # Process Fault Tolerance
 * ERR_REVOKED             = MPI_ERR_REVOKED
 * ERR_PROC_FAILED         = MPI_ERR_PROC_FAILED             # <<<<<<<<<<<<<<
 * ERR_PROC_FAILED_PENDING = MPI_ERR_PROC_FAILED_PENDING
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_PROC_FAILED); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_PROC_FAILED, __pyx_t_9) < 0) __PYX_ERR(20, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":83
 * ERR_REVOKED             = MPI_ERR_REVOKED
 * ERR_PROC_FAILED         = MPI_ERR_PROC_FAILED
 * ERR_PROC_FAILED_PENDING = MPI_ERR_PROC_FAILED_PENDING             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ERR_PROC_FAILED_PENDING); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERR_PROC_FAILED_PENDING, __pyx_t_9) < 0) __PYX_ERR(20, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":86
 * 
 * 
 * def Get_error_class(int errorcode: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Convert an *error code* into an *error class*.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(20, 86, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(20, 86, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_11Get_error_class, 0, __pyx_n_s_Get_error_class, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__244)); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Get_error_class, __pyx_t_10) < 0) __PYX_ERR(20, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":95
 * 
 * 
 * def Get_error_string(int errorcode: int) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return the *error string* for a given *error class* or *error code*.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(20, 95, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(20, 95, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_13Get_error_string, 0, __pyx_n_s_Get_error_string, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__246)); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Get_error_string, __pyx_t_9) < 0) __PYX_ERR(20, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":105
 * 
 * 
 * def Add_error_class() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error class* to the known error classes.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(20, 105, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_15Add_error_class, 0, __pyx_n_s_Add_error_class, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__248)); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Add_error_class, __pyx_t_10) < 0) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":114
 * 
 * 
 * def Remove_error_class(int errorclass: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error class* from the known error classes.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_errorclass, __pyx_n_s_int) < 0) __PYX_ERR(20, 114, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(20, 114, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_17Remove_error_class, 0, __pyx_n_s_Remove_error_class, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__249)); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Remove_error_class, __pyx_t_9) < 0) __PYX_ERR(20, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":121
 * 
 * 
 * def Add_error_code(int errorclass: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Add an *error code* to an *error class*.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errorclass, __pyx_n_s_int) < 0) __PYX_ERR(20, 121, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(20, 121, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_19Add_error_code, 0, __pyx_n_s_Add_error_code, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__251)); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Add_error_code, __pyx_t_10) < 0) __PYX_ERR(20, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":130
 * 
 * 
 * def Remove_error_code(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an *error code* from the known error codes.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(20, 130, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(20, 130, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_21Remove_error_code, 0, __pyx_n_s_Remove_error_code, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__253)); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Remove_error_code, __pyx_t_9) < 0) __PYX_ERR(20, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":137
 * 
 * 
 * def Add_error_string(int errorcode: int, string: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Associate an *error string* with an *error class* or *error code*.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(20, 137, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_string, __pyx_n_s_str) < 0) __PYX_ERR(20, 137, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(20, 137, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_23Add_error_string, 0, __pyx_n_s_Add_error_string, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__255)); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Add_error_string, __pyx_t_10) < 0) __PYX_ERR(20, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/ErrorCode.pyx":146
 * 
 * 
 * def Remove_error_string(int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove *error string* association from *error class* or *error code*.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(20, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(20, 146, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(20, 146, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_25Remove_error_string, 0, __pyx_n_s_Remove_error_string, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__256)); if (unlikely(!__pyx_t_9)) __PYX_ERR(20, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Remove_error_string, __pyx_t_9) < 0) __PYX_ERR(20, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Exception.pyx":46
 *         return self.Get_error_string()
 * 
 *     def Get_error_code(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error code.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(21, 46, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_15Get_error_code, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Exception_Get_error_code, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__258)); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Exception, __pyx_n_s_Get_error_code, __pyx_t_10) < 0) __PYX_ERR(21, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Exception);

  /* "src/mpi4py/MPI.src/Exception.pyx":59
 *             return self.Get_error_code()
 * 
 *     def Get_error_class(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Error class.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(21, 59, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_17Get_error_class, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Exception_Get_error_class, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__260)); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Exception, __pyx_n_s_Get_error_class, __pyx_t_9) < 0) __PYX_ERR(21, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Exception);

  /* "src/mpi4py/MPI.src/Exception.pyx":72
 *             return self.Get_error_class()
 * 
 *     def Get_error_string(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Error string.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(21, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(21, 72, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Exception_19Get_error_string, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Exception_Get_error_string, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__262)); if (unlikely(!__pyx_t_10)) __PYX_ERR(21, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Exception, __pyx_n_s_Get_error_string, __pyx_t_10) < 0) __PYX_ERR(21, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Exception);

  /* "src/mpi4py/MPI.src/Exception.pyx":87
 * 
 * 
 * MPIException = Exception             # <<<<<<<<<<<<<<
 */
  __Pyx_INCREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Exception);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_MPIException, ((PyObject *)__pyx_ptype_6mpi4py_3MPI_Exception));
  __Pyx_GIVEREF((PyObject *)__pyx_ptype_6mpi4py_3MPI_Exception);

  /* "src/mpi4py/MPI.src/Datatype.pyx":3
 * # Storage order for arrays
 * # ------------------------
 * ORDER_C       = MPI_ORDER_C        #: C order (a.k.a. row major)             # <<<<<<<<<<<<<<
 * ORDER_FORTRAN = MPI_ORDER_FORTRAN  #: Fortran order (a.k.a. column major)
 * ORDER_F       = MPI_ORDER_FORTRAN  #: Convenience alias for ORDER_FORTRAN
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ORDER_C); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ORDER_C, __pyx_t_10) < 0) __PYX_ERR(22, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":4
 * # ------------------------
 * ORDER_C       = MPI_ORDER_C        #: C order (a.k.a. row major)
 * ORDER_FORTRAN = MPI_ORDER_FORTRAN  #: Fortran order (a.k.a. column major)             # <<<<<<<<<<<<<<
 * ORDER_F       = MPI_ORDER_FORTRAN  #: Convenience alias for ORDER_FORTRAN
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ORDER_FORTRAN, __pyx_t_10) < 0) __PYX_ERR(22, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":5
 * ORDER_C       = MPI_ORDER_C        #: C order (a.k.a. row major)
 * ORDER_FORTRAN = MPI_ORDER_FORTRAN  #: Fortran order (a.k.a. column major)
 * ORDER_F       = MPI_ORDER_FORTRAN  #: Convenience alias for ORDER_FORTRAN             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_ORDER_FORTRAN); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ORDER_F, __pyx_t_10) < 0) __PYX_ERR(22, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":10
 * # Type classes for Fortran datatype matching
 * # ------------------------------------------
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER             # <<<<<<<<<<<<<<
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_TYPECLASS_INTEGER); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TYPECLASS_INTEGER, __pyx_t_10) < 0) __PYX_ERR(22, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":11
 * # ------------------------------------------
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL             # <<<<<<<<<<<<<<
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_TYPECLASS_REAL); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TYPECLASS_REAL, __pyx_t_10) < 0) __PYX_ERR(22, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":12
 * TYPECLASS_INTEGER = MPI_TYPECLASS_INTEGER
 * TYPECLASS_REAL    = MPI_TYPECLASS_REAL
 * TYPECLASS_COMPLEX = MPI_TYPECLASS_COMPLEX             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_TYPECLASS_COMPLEX); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TYPECLASS_COMPLEX, __pyx_t_10) < 0) __PYX_ERR(22, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":17
 * # Type of distributions (HPF-like arrays)
 * # ---------------------------------------
 * DISTRIBUTE_NONE      = MPI_DISTRIBUTE_NONE       #: Dimension not distributed             # <<<<<<<<<<<<<<
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK      #: Block distribution
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC     #: Cyclic distribution
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_DISTRIBUTE_NONE); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DISTRIBUTE_NONE, __pyx_t_10) < 0) __PYX_ERR(22, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":18
 * # ---------------------------------------
 * DISTRIBUTE_NONE      = MPI_DISTRIBUTE_NONE       #: Dimension not distributed
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK      #: Block distribution             # <<<<<<<<<<<<<<
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC     #: Cyclic distribution
 * DISTRIBUTE_DFLT_DARG = MPI_DISTRIBUTE_DFLT_DARG  #: Default distribution
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_DISTRIBUTE_BLOCK); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DISTRIBUTE_BLOCK, __pyx_t_10) < 0) __PYX_ERR(22, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":19
 * DISTRIBUTE_NONE      = MPI_DISTRIBUTE_NONE       #: Dimension not distributed
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK      #: Block distribution
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC     #: Cyclic distribution             # <<<<<<<<<<<<<<
 * DISTRIBUTE_DFLT_DARG = MPI_DISTRIBUTE_DFLT_DARG  #: Default distribution
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_DISTRIBUTE_CYCLIC); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DISTRIBUTE_CYCLIC, __pyx_t_10) < 0) __PYX_ERR(22, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":20
 * DISTRIBUTE_BLOCK     = MPI_DISTRIBUTE_BLOCK      #: Block distribution
 * DISTRIBUTE_CYCLIC    = MPI_DISTRIBUTE_CYCLIC     #: Cyclic distribution
 * DISTRIBUTE_DFLT_DARG = MPI_DISTRIBUTE_DFLT_DARG  #: Default distribution             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_DISTRIBUTE_DFLT_DARG); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DISTRIBUTE_DFLT_DARG, __pyx_t_10) < 0) __PYX_ERR(22, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":25
 * # Combiner values for datatype decoding
 * # -------------------------------------
 * COMBINER_NAMED            = MPI_COMBINER_NAMED             # <<<<<<<<<<<<<<
 * COMBINER_DUP              = MPI_COMBINER_DUP
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_NAMED); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_NAMED, __pyx_t_10) < 0) __PYX_ERR(22, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":26
 * # -------------------------------------
 * COMBINER_NAMED            = MPI_COMBINER_NAMED
 * COMBINER_DUP              = MPI_COMBINER_DUP             # <<<<<<<<<<<<<<
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_DUP); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_DUP, __pyx_t_10) < 0) __PYX_ERR(22, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":27
 * COMBINER_NAMED            = MPI_COMBINER_NAMED
 * COMBINER_DUP              = MPI_COMBINER_DUP
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS             # <<<<<<<<<<<<<<
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_CONTIGUOUS); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_CONTIGUOUS, __pyx_t_10) < 0) __PYX_ERR(22, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":28
 * COMBINER_DUP              = MPI_COMBINER_DUP
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR             # <<<<<<<<<<<<<<
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_VECTOR); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_VECTOR, __pyx_t_10) < 0) __PYX_ERR(22, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":29
 * COMBINER_CONTIGUOUS       = MPI_COMBINER_CONTIGUOUS
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR             # <<<<<<<<<<<<<<
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_HVECTOR); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_HVECTOR, __pyx_t_10) < 0) __PYX_ERR(22, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":30
 * COMBINER_VECTOR           = MPI_COMBINER_VECTOR
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED             # <<<<<<<<<<<<<<
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_INDEXED); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_INDEXED, __pyx_t_10) < 0) __PYX_ERR(22, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":31
 * COMBINER_HVECTOR          = MPI_COMBINER_HVECTOR
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED             # <<<<<<<<<<<<<<
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 * COMBINER_HINDEXED_BLOCK   = MPI_COMBINER_HINDEXED_BLOCK
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_HINDEXED); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_HINDEXED, __pyx_t_10) < 0) __PYX_ERR(22, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":32
 * COMBINER_INDEXED          = MPI_COMBINER_INDEXED
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK             # <<<<<<<<<<<<<<
 * COMBINER_HINDEXED_BLOCK   = MPI_COMBINER_HINDEXED_BLOCK
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_INDEXED_BLOCK); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_INDEXED_BLOCK, __pyx_t_10) < 0) __PYX_ERR(22, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":33
 * COMBINER_HINDEXED         = MPI_COMBINER_HINDEXED
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 * COMBINER_HINDEXED_BLOCK   = MPI_COMBINER_HINDEXED_BLOCK             # <<<<<<<<<<<<<<
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_HINDEXED_BLOCK); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_HINDEXED_BLOCK, __pyx_t_10) < 0) __PYX_ERR(22, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":34
 * COMBINER_INDEXED_BLOCK    = MPI_COMBINER_INDEXED_BLOCK
 * COMBINER_HINDEXED_BLOCK   = MPI_COMBINER_HINDEXED_BLOCK
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT             # <<<<<<<<<<<<<<
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_STRUCT); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_STRUCT, __pyx_t_10) < 0) __PYX_ERR(22, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":35
 * COMBINER_HINDEXED_BLOCK   = MPI_COMBINER_HINDEXED_BLOCK
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY             # <<<<<<<<<<<<<<
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_SUBARRAY); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_SUBARRAY, __pyx_t_10) < 0) __PYX_ERR(22, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":36
 * COMBINER_STRUCT           = MPI_COMBINER_STRUCT
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY             # <<<<<<<<<<<<<<
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 * COMBINER_VALUE_INDEX      = MPI_COMBINER_VALUE_INDEX
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_DARRAY); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_DARRAY, __pyx_t_10) < 0) __PYX_ERR(22, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":37
 * COMBINER_SUBARRAY         = MPI_COMBINER_SUBARRAY
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED             # <<<<<<<<<<<<<<
 * COMBINER_VALUE_INDEX      = MPI_COMBINER_VALUE_INDEX
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_RESIZED); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_RESIZED, __pyx_t_10) < 0) __PYX_ERR(22, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":38
 * COMBINER_DARRAY           = MPI_COMBINER_DARRAY
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 * COMBINER_VALUE_INDEX      = MPI_COMBINER_VALUE_INDEX             # <<<<<<<<<<<<<<
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_VALUE_INDEX); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_VALUE_INDEX, __pyx_t_10) < 0) __PYX_ERR(22, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":39
 * COMBINER_RESIZED          = MPI_COMBINER_RESIZED
 * COMBINER_VALUE_INDEX      = MPI_COMBINER_VALUE_INDEX
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER             # <<<<<<<<<<<<<<
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_F90_INTEGER); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_F90_INTEGER, __pyx_t_10) < 0) __PYX_ERR(22, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":40
 * COMBINER_VALUE_INDEX      = MPI_COMBINER_VALUE_INDEX
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL             # <<<<<<<<<<<<<<
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_F90_REAL); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_F90_REAL, __pyx_t_10) < 0) __PYX_ERR(22, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":41
 * COMBINER_F90_INTEGER      = MPI_COMBINER_F90_INTEGER
 * COMBINER_F90_REAL         = MPI_COMBINER_F90_REAL
 * COMBINER_F90_COMPLEX      = MPI_COMBINER_F90_COMPLEX             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMBINER_F90_COMPLEX); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINER_F90_COMPLEX, __pyx_t_10) < 0) __PYX_ERR(22, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":62
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Datatype(self)
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(22, 62, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__263)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(22, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":70
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Datatype:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(22, 70, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Datatype) < 0) __PYX_ERR(22, 70, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__265)); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(22, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(22, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":77
 *         return fromhandle(<MPI_Datatype> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(22, 77, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__266)); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_free, __pyx_t_10) < 0) __PYX_ERR(22, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":86
 *     # ------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of bytes occupied by entries in the datatype.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 86, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_15Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__268)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_size, __pyx_t_9) < 0) __PYX_ERR(22, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":101
 *             return size
 * 
 *     def Get_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return lower bound and extent of datatype.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_int_int) < 0) __PYX_ERR(22, 101, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_17Get_extent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_extent, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__270)); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_extent, __pyx_t_10) < 0) __PYX_ERR(22, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":133
 *     # ---------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a datatype.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 133, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_19Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Dup, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__272)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Dup, __pyx_t_9) < 0) __PYX_ERR(22, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":141
 *         return datatype
 * 
 *     Create_dup = Dup  #: convenience alias             # <<<<<<<<<<<<<<
 * 
 *     def Create_contiguous(self, Count count: int) -> Self:
 */
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Dup); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_dup, __pyx_t_9) < 0) __PYX_ERR(22, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":143
 *     Create_dup = Dup  #: convenience alias
 * 
 *     def Create_contiguous(self, Count count: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a contiguous datatype.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_count, __pyx_n_s_int) < 0) __PYX_ERR(22, 143, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 143, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_21Create_contiguous, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_contiguous, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__274)); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_contiguous, __pyx_t_10) < 0) __PYX_ERR(22, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":153
 *         return datatype
 * 
 *     def Create_vector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_count, __pyx_n_s_int) < 0) __PYX_ERR(22, 153, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_blocklength, __pyx_n_s_int) < 0) __PYX_ERR(22, 153, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_stride, __pyx_n_s_int) < 0) __PYX_ERR(22, 153, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 153, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_23Create_vector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_vector, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__276)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_vector, __pyx_t_9) < 0) __PYX_ERR(22, 153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":168
 *         return datatype
 * 
 *     def Create_hvector(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_count, __pyx_n_s_int) < 0) __PYX_ERR(22, 168, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_blocklength, __pyx_n_s_int) < 0) __PYX_ERR(22, 168, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_stride, __pyx_n_s_int) < 0) __PYX_ERR(22, 168, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 168, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_25Create_hvector, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_hvector, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__277)); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_hvector, __pyx_t_10) < 0) __PYX_ERR(22, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":183
 *         return datatype
 * 
 *     def Create_indexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_blocklengths, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 183, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_displacements, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 183, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 183, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_27Create_indexed, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_indexed, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__279)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_indexed, __pyx_t_9) < 0) __PYX_ERR(22, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":201
 *         return datatype
 * 
 *     def Create_hindexed(             # <<<<<<<<<<<<<<
 *         self,
 *         blocklengths: Sequence[int],
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_blocklengths, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_displacements, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 201, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_29Create_hindexed, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_hindexed, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__280)); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_hindexed, __pyx_t_10) < 0) __PYX_ERR(22, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":222
 *         return datatype
 * 
 *     def Create_indexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_blocklength, __pyx_n_s_int) < 0) __PYX_ERR(22, 222, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_displacements, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 222, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 222, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_31Create_indexed_block, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_indexed_block, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__282)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_indexed_block, __pyx_t_9) < 0) __PYX_ERR(22, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":239
 *         return datatype
 * 
 *     def Create_hindexed_block(             # <<<<<<<<<<<<<<
 *         self,
 *         Count blocklength: int,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_blocklength, __pyx_n_s_int) < 0) __PYX_ERR(22, 239, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_displacements, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 239, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 239, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_33Create_hindexed_block, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_hindexed_block, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__283)); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_hindexed_block, __pyx_t_10) < 0) __PYX_ERR(22, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":258
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_struct(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_blocklengths, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_displacements, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_datatypes, __pyx_kp_s_Sequence_Datatype) < 0) __PYX_ERR(22, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 258, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_35Create_struct, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_struct, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__285)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_struct, __pyx_t_9) < 0) __PYX_ERR(22, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_struct); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_struct, __pyx_t_10) < 0) __PYX_ERR(22, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":290
 *         subsizes: Sequence[int],
 *         starts: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ORDER_C); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_k__65 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Datatype.pyx":285
 *     # -----------------------------
 * 
 *     def Create_subarray(             # <<<<<<<<<<<<<<
 *         self,
 *         sizes: Sequence[int],
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ORDER_C); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "src/mpi4py/MPI.src/Datatype.pyx":290
 *         subsizes: Sequence[int],
 *         starts: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "src/mpi4py/MPI.src/Datatype.pyx":285
 *     # -----------------------------
 * 
 *     def Create_subarray(             # <<<<<<<<<<<<<<
 *         self,
 *         sizes: Sequence[int],
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_10);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10)) __PYX_ERR(22, 285, __pyx_L1_error);
  __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_sizes, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 285, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_subsizes, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 285, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_starts, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 285, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_order, __pyx_n_s_int) < 0) __PYX_ERR(22, 285, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 285, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_37Create_subarray, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_subarray, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__287)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_subarray, __pyx_t_3) < 0) __PYX_ERR(22, 285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":320
 *         dargs: Sequence[int],
 *         psizes: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ORDER_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 320, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__66 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Datatype.pyx":312
 *     # --------------------------------------
 * 
 *     def Create_darray(             # <<<<<<<<<<<<<<
 *         self,
 *         int size: int,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ORDER_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Datatype.pyx":320
 *         dargs: Sequence[int],
 *         psizes: Sequence[int],
 *         int order: int = ORDER_C,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(22, 320, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Datatype.pyx":312
 *     # --------------------------------------
 * 
 *     def Create_darray(             # <<<<<<<<<<<<<<
 *         self,
 *         int size: int,
 */
  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(22, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3)) __PYX_ERR(22, 312, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_size_2, __pyx_n_s_int) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_gsizes, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_distribs, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dargs, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_psizes, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_order, __pyx_n_s_int) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_39Create_darray, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_darray, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__289)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_darray, __pyx_t_9) < 0) __PYX_ERR(22, 312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":343
 *     # -------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_value_index(
 *         cls,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_value, __pyx_n_s_Datatype) < 0) __PYX_ERR(22, 343, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_index, __pyx_n_s_Datatype) < 0) __PYX_ERR(22, 343, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 343, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_41Get_value_index, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_value_index, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_value_index, __pyx_t_3) < 0) __PYX_ERR(22, 343, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_value_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_value_index, __pyx_t_9) < 0) __PYX_ERR(22, 343, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":360
 *     # ------------------------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_integer(cls, int r: int) -> Self:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_r, __pyx_n_s_int) < 0) __PYX_ERR(22, 360, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 360, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_43Create_f90_integer, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_f90_integer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__293)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_integer, __pyx_t_3) < 0) __PYX_ERR(22, 360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_integer); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_integer, __pyx_t_9) < 0) __PYX_ERR(22, 360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":369
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_real(cls, int p: int, int r: int) -> Self:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_p, __pyx_n_s_int) < 0) __PYX_ERR(22, 369, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_r, __pyx_n_s_int) < 0) __PYX_ERR(22, 369, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 369, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_45Create_f90_real, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_f90_real, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_real, __pyx_t_3) < 0) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_real); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_real, __pyx_t_9) < 0) __PYX_ERR(22, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":378
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_f90_complex(cls, int p: int, int r: int) -> Self:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_p, __pyx_n_s_int) < 0) __PYX_ERR(22, 378, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_r, __pyx_n_s_int) < 0) __PYX_ERR(22, 378, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 378, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_47Create_f90_complex, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_f90_complex, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__296)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_complex, __pyx_t_3) < 0) __PYX_ERR(22, 378, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_complex); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_f90_complex, __pyx_t_9) < 0) __PYX_ERR(22, 378, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":387
 *         return datatype
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Match_size(cls, int typeclass: int, int size: int) -> Self:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_typeclass, __pyx_n_s_int) < 0) __PYX_ERR(22, 387, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_size_2, __pyx_n_s_int) < 0) __PYX_ERR(22, 387, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 387, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_49Match_size, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Match_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__298)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Match_size, __pyx_t_3) < 0) __PYX_ERR(22, 387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Match_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Match_size, __pyx_t_9) < 0) __PYX_ERR(22, 387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":399
 *     # ------------------------
 * 
 *     def Commit(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Commit the datatype.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 399, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_51Commit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Commit, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__299)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Commit, __pyx_t_3) < 0) __PYX_ERR(22, 399, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":406
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free the datatype.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(22, 406, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_53Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__301)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Free, __pyx_t_9) < 0) __PYX_ERR(22, 406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":485
 *     # -----------------
 * 
 *     def Create_resized(self, Count lb: int, Count extent: int) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a datatype with a new lower bound and extent.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_lb_2, __pyx_n_s_int) < 0) __PYX_ERR(22, 485, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_extent, __pyx_n_s_int) < 0) __PYX_ERR(22, 485, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(22, 485, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_55Create_resized, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_resized, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__303)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_resized, __pyx_t_3) < 0) __PYX_ERR(22, 485, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":494
 *         return datatype
 * 
 *     Resized = Create_resized  #: compatibility alias             # <<<<<<<<<<<<<<
 * 
 *     def Get_true_extent(self) -> tuple[int, int]:
 */
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_resized); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Resized, __pyx_t_3) < 0) __PYX_ERR(22, 494, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":496
 *     Resized = Create_resized  #: compatibility alias
 * 
 *     def Get_true_extent(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the true lower bound and extent of a datatype.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_tuple_int_int) < 0) __PYX_ERR(22, 496, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_57Get_true_extent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_true_extent, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__304)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_true_extent, __pyx_t_9) < 0) __PYX_ERR(22, 496, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":532
 *     # -------------------
 * 
 *     def Get_envelope(self) -> tuple[int, int, int, int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of input arguments used to create a datatype.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_int_int_int_int_int) < 0) __PYX_ERR(22, 532, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_59Get_envelope, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_envelope, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__306)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_envelope, __pyx_t_3) < 0) __PYX_ERR(22, 532, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":547
 *             return self.Get_envelope()
 * 
 *     def Get_contents(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], list[int], list[Datatype]]:
 *         """
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_tuple_list_int_list_int_list_int) < 0) __PYX_ERR(22, 547, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_61Get_contents, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_contents, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__308)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_contents, __pyx_t_9) < 0) __PYX_ERR(22, 547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":578
 *             return self.Get_contents()
 * 
 *     def decode(self) -> tuple[Datatype, str, dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         """
 *         Convenience method for decoding a datatype.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_Datatype_str_dict_str_Any) < 0) __PYX_ERR(22, 578, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_63decode, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_decode, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__309)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_decode, __pyx_t_3) < 0) __PYX_ERR(22, 578, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":610
 *     # ---------------
 * 
 *     def Pack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_inbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 610, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_outbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 610, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_position, __pyx_n_s_int) < 0) __PYX_ERR(22, 610, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(22, 610, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 610, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_65Pack, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Pack, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__311)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Pack, __pyx_t_9) < 0) __PYX_ERR(22, 610, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":636
 *         return position
 * 
 *     def Unpack(             # <<<<<<<<<<<<<<
 *         self,
 *         inbuf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_inbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 636, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_position, __pyx_n_s_int) < 0) __PYX_ERR(22, 636, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_outbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 636, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(22, 636, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 636, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_67Unpack, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Unpack, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__313)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Unpack, __pyx_t_3) < 0) __PYX_ERR(22, 636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":662
 *         return position
 * 
 *     def Pack_size(             # <<<<<<<<<<<<<<
 *         self,
 *         Count count: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_count, __pyx_n_s_int) < 0) __PYX_ERR(22, 662, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(22, 662, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 662, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_69Pack_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Pack_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__315)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Pack_size, __pyx_t_9) < 0) __PYX_ERR(22, 662, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":681
 *     # -------------------------
 * 
 *     def Pack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datarep, __pyx_n_s_str) < 0) __PYX_ERR(22, 681, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_inbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 681, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_outbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 681, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_position, __pyx_n_s_int) < 0) __PYX_ERR(22, 681, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 681, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_71Pack_external, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Pack_external, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__317)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Pack_external, __pyx_t_3) < 0) __PYX_ERR(22, 681, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":711
 *         return position
 * 
 *     def Unpack_external(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_datarep, __pyx_n_s_str) < 0) __PYX_ERR(22, 711, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_inbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 711, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_position, __pyx_n_s_int) < 0) __PYX_ERR(22, 711, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_outbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(22, 711, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 711, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_73Unpack_external, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Unpack_external, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__319)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Unpack_external, __pyx_t_9) < 0) __PYX_ERR(22, 711, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":741
 *         return position
 * 
 *     def Pack_external_size(             # <<<<<<<<<<<<<<
 *         self,
 *         datarep: str,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datarep, __pyx_n_s_str) < 0) __PYX_ERR(22, 741, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_count, __pyx_n_s_int) < 0) __PYX_ERR(22, 741, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 741, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_75Pack_external_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Pack_external_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__321)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Pack_external_size, __pyx_t_3) < 0) __PYX_ERR(22, 741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":763
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(22, 763, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_int_Any_None) < 0) __PYX_ERR(22, 763, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_77Get_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_attr, __pyx_t_9) < 0) __PYX_ERR(22, 763, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":775
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(22, 775, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_attrval, __pyx_n_s_Any) < 0) __PYX_ERR(22, 775, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(22, 775, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_79Set_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Set_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Set_attr, __pyx_t_3) < 0) __PYX_ERR(22, 775, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":781
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(22, 781, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(22, 781, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_81Delete_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Delete_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Delete_attr, __pyx_t_9) < 0) __PYX_ERR(22, 781, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":787
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_copy_fn, __pyx_kp_s_Callable_Datatype_int_Any_Any_No) < 0) __PYX_ERR(22, 787, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_delete_fn, __pyx_kp_s_Callable_Datatype_int_Any_None_N) < 0) __PYX_ERR(22, 787, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_nopython, __pyx_n_s_bool) < 0) __PYX_ERR(22, 787, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 787, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_83Create_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Create_keyval, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__329)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__330);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_keyval, __pyx_t_3) < 0) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Create_keyval, __pyx_t_9) < 0) __PYX_ERR(22, 787, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":805
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(22, 805, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 805, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_85Free_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Free_keyval, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__332)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Free_keyval, __pyx_t_3) < 0) __PYX_ERR(22, 805, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Free_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Free_keyval, __pyx_t_9) < 0) __PYX_ERR(22, 805, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":818
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this datatype.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(22, 818, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_87Get_name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Get_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__334)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Get_name, __pyx_t_3) < 0) __PYX_ERR(22, 818, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":827
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this datatype.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_name_2, __pyx_n_s_str) < 0) __PYX_ERR(22, 827, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(22, 827, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_89Set_name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_Set_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__336)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_Set_name, __pyx_t_9) < 0) __PYX_ERR(22, 827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":846
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 846, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_91py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__337)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_py2f, __pyx_t_3) < 0) __PYX_ERR(22, 846, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":851
 *         return MPI_Type_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Datatype:
 *         """
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(22, 851, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Datatype) < 0) __PYX_ERR(22, 851, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_93f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__339)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(22, 851, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_f2py); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_f2py, __pyx_t_3) < 0) __PYX_ERR(22, 851, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":860
 *     # -----------------------------
 * 
 *     def tocode(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get character code or type string from predefined MPI datatype.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(22, 860, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_95tocode, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_tocode, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__341)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_tocode, __pyx_t_9) < 0) __PYX_ERR(22, 860, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":868
 *         raise ValueError("cannot map to character code or type string")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromcode(cls, code: str) -> Datatype:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_code, __pyx_n_s_str) < 0) __PYX_ERR(22, 868, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Datatype) < 0) __PYX_ERR(22, 868, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Datatype_97fromcode, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Datatype_fromcode, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_fromcode, __pyx_t_3) < 0) __PYX_ERR(22, 868, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_fromcode); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Datatype, __pyx_n_s_fromcode, __pyx_t_9) < 0) __PYX_ERR(22, 868, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Datatype);

  /* "src/mpi4py/MPI.src/Datatype.pyx":898
 * # -----------------
 * 
 * def Get_address(location: Buffer | Bottom) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Get the address of a location in memory.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_location, __pyx_kp_s_Buffer_Bottom) < 0) __PYX_ERR(22, 898, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 898, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_27Get_address, 0, __pyx_n_s_Get_address, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Get_address, __pyx_t_3) < 0) __PYX_ERR(22, 898, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":910
 * 
 * 
 * def Aint_add(Aint base: int, Aint disp: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the sum of base address and displacement.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_base, __pyx_n_s_int) < 0) __PYX_ERR(22, 910, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_disp, __pyx_n_s_int) < 0) __PYX_ERR(22, 910, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 910, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_29Aint_add, 0, __pyx_n_s_Aint_add, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__347)); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Aint_add, __pyx_t_9) < 0) __PYX_ERR(22, 910, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":917
 * 
 * 
 * def Aint_diff(Aint addr1: int, Aint addr2: int) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the difference between absolute addresses.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(22, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_addr1, __pyx_n_s_int) < 0) __PYX_ERR(22, 917, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_addr2, __pyx_n_s_int) < 0) __PYX_ERR(22, 917, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(22, 917, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_31Aint_diff, 0, __pyx_n_s_Aint_diff, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__349)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Aint_diff, __pyx_t_3) < 0) __PYX_ERR(22, 917, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":924
 * 
 * 
 * cdef Datatype __DATATYPE_NULL__ = def_Datatype( MPI_DATATYPE_NULL , "DATATYPE_NULL" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __PACKED__ = def_Datatype( MPI_PACKED , "PACKED" )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DATATYPE_NULL, __pyx_n_s_DATATYPE_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":926
 * cdef Datatype __DATATYPE_NULL__ = def_Datatype( MPI_DATATYPE_NULL , "DATATYPE_NULL" )  # noqa
 * 
 * cdef Datatype __PACKED__ = def_Datatype( MPI_PACKED , "PACKED" )             # <<<<<<<<<<<<<<
 * cdef Datatype __BYTE__   = def_Datatype( MPI_BYTE   , "BYTE"   )
 * cdef Datatype __AINT__   = def_Datatype( MPI_AINT   , "AINT"   )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_PACKED, __pyx_n_s_PACKED)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___PACKED__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":927
 * 
 * cdef Datatype __PACKED__ = def_Datatype( MPI_PACKED , "PACKED" )
 * cdef Datatype __BYTE__   = def_Datatype( MPI_BYTE   , "BYTE"   )             # <<<<<<<<<<<<<<
 * cdef Datatype __AINT__   = def_Datatype( MPI_AINT   , "AINT"   )
 * cdef Datatype __OFFSET__ = def_Datatype( MPI_OFFSET , "OFFSET" )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_BYTE, __pyx_n_s_BYTE)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BYTE__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":928
 * cdef Datatype __PACKED__ = def_Datatype( MPI_PACKED , "PACKED" )
 * cdef Datatype __BYTE__   = def_Datatype( MPI_BYTE   , "BYTE"   )
 * cdef Datatype __AINT__   = def_Datatype( MPI_AINT   , "AINT"   )             # <<<<<<<<<<<<<<
 * cdef Datatype __OFFSET__ = def_Datatype( MPI_OFFSET , "OFFSET" )
 * cdef Datatype __COUNT__  = def_Datatype( MPI_COUNT  , "COUNT"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_AINT, __pyx_n_s_AINT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___AINT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":929
 * cdef Datatype __BYTE__   = def_Datatype( MPI_BYTE   , "BYTE"   )
 * cdef Datatype __AINT__   = def_Datatype( MPI_AINT   , "AINT"   )
 * cdef Datatype __OFFSET__ = def_Datatype( MPI_OFFSET , "OFFSET" )             # <<<<<<<<<<<<<<
 * cdef Datatype __COUNT__  = def_Datatype( MPI_COUNT  , "COUNT"  )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_OFFSET, __pyx_n_s_OFFSET)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___OFFSET__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":930
 * cdef Datatype __AINT__   = def_Datatype( MPI_AINT   , "AINT"   )
 * cdef Datatype __OFFSET__ = def_Datatype( MPI_OFFSET , "OFFSET" )
 * cdef Datatype __COUNT__  = def_Datatype( MPI_COUNT  , "COUNT"  )             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __CHAR__               = def_Datatype( MPI_CHAR               , "CHAR"               )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COUNT, __pyx_n_s_COUNT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COUNT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COUNT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":932
 * cdef Datatype __COUNT__  = def_Datatype( MPI_COUNT  , "COUNT"  )
 * 
 * cdef Datatype __CHAR__               = def_Datatype( MPI_CHAR               , "CHAR"               )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __WCHAR__              = def_Datatype( MPI_WCHAR              , "WCHAR"              )  # noqa
 * cdef Datatype __SIGNED_CHAR__        = def_Datatype( MPI_SIGNED_CHAR        , "SIGNED_CHAR"        )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CHAR, __pyx_n_s_CHAR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":933
 * 
 * cdef Datatype __CHAR__               = def_Datatype( MPI_CHAR               , "CHAR"               )  # noqa
 * cdef Datatype __WCHAR__              = def_Datatype( MPI_WCHAR              , "WCHAR"              )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __SIGNED_CHAR__        = def_Datatype( MPI_SIGNED_CHAR        , "SIGNED_CHAR"        )  # noqa
 * cdef Datatype __SHORT__              = def_Datatype( MPI_SHORT              , "SHORT"              )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_WCHAR, __pyx_n_s_WCHAR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___WCHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":934
 * cdef Datatype __CHAR__               = def_Datatype( MPI_CHAR               , "CHAR"               )  # noqa
 * cdef Datatype __WCHAR__              = def_Datatype( MPI_WCHAR              , "WCHAR"              )  # noqa
 * cdef Datatype __SIGNED_CHAR__        = def_Datatype( MPI_SIGNED_CHAR        , "SIGNED_CHAR"        )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __SHORT__              = def_Datatype( MPI_SHORT              , "SHORT"              )  # noqa
 * cdef Datatype __INT__                = def_Datatype( MPI_INT                , "INT"                )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_SIGNED_CHAR, __pyx_n_s_SIGNED_CHAR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 934, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":935
 * cdef Datatype __WCHAR__              = def_Datatype( MPI_WCHAR              , "WCHAR"              )  # noqa
 * cdef Datatype __SIGNED_CHAR__        = def_Datatype( MPI_SIGNED_CHAR        , "SIGNED_CHAR"        )  # noqa
 * cdef Datatype __SHORT__              = def_Datatype( MPI_SHORT              , "SHORT"              )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __INT__                = def_Datatype( MPI_INT                , "INT"                )  # noqa
 * cdef Datatype __LONG__               = def_Datatype( MPI_LONG               , "LONG"               )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_SHORT, __pyx_n_s_SHORT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SHORT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":936
 * cdef Datatype __SIGNED_CHAR__        = def_Datatype( MPI_SIGNED_CHAR        , "SIGNED_CHAR"        )  # noqa
 * cdef Datatype __SHORT__              = def_Datatype( MPI_SHORT              , "SHORT"              )  # noqa
 * cdef Datatype __INT__                = def_Datatype( MPI_INT                , "INT"                )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG__               = def_Datatype( MPI_LONG               , "LONG"               )  # noqa
 * cdef Datatype __LONG_LONG__          = def_Datatype( MPI_LONG_LONG          , "LONG_LONG"          )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT, __pyx_n_s_INT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":937
 * cdef Datatype __SHORT__              = def_Datatype( MPI_SHORT              , "SHORT"              )  # noqa
 * cdef Datatype __INT__                = def_Datatype( MPI_INT                , "INT"                )  # noqa
 * cdef Datatype __LONG__               = def_Datatype( MPI_LONG               , "LONG"               )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_LONG__          = def_Datatype( MPI_LONG_LONG          , "LONG_LONG"          )  # noqa
 * cdef Datatype __UNSIGNED_CHAR__      = def_Datatype( MPI_UNSIGNED_CHAR      , "UNSIGNED_CHAR"      )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG, __pyx_n_s_LONG)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 937, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":938
 * cdef Datatype __INT__                = def_Datatype( MPI_INT                , "INT"                )  # noqa
 * cdef Datatype __LONG__               = def_Datatype( MPI_LONG               , "LONG"               )  # noqa
 * cdef Datatype __LONG_LONG__          = def_Datatype( MPI_LONG_LONG          , "LONG_LONG"          )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_CHAR__      = def_Datatype( MPI_UNSIGNED_CHAR      , "UNSIGNED_CHAR"      )  # noqa
 * cdef Datatype __UNSIGNED_SHORT__     = def_Datatype( MPI_UNSIGNED_SHORT     , "UNSIGNED_SHORT"     )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_LONG, __pyx_n_s_LONG_LONG)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":939
 * cdef Datatype __LONG__               = def_Datatype( MPI_LONG               , "LONG"               )  # noqa
 * cdef Datatype __LONG_LONG__          = def_Datatype( MPI_LONG_LONG          , "LONG_LONG"          )  # noqa
 * cdef Datatype __UNSIGNED_CHAR__      = def_Datatype( MPI_UNSIGNED_CHAR      , "UNSIGNED_CHAR"      )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_SHORT__     = def_Datatype( MPI_UNSIGNED_SHORT     , "UNSIGNED_SHORT"     )  # noqa
 * cdef Datatype __UNSIGNED__           = def_Datatype( MPI_UNSIGNED           , "UNSIGNED"           )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_CHAR, __pyx_n_s_UNSIGNED_CHAR)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":940
 * cdef Datatype __LONG_LONG__          = def_Datatype( MPI_LONG_LONG          , "LONG_LONG"          )  # noqa
 * cdef Datatype __UNSIGNED_CHAR__      = def_Datatype( MPI_UNSIGNED_CHAR      , "UNSIGNED_CHAR"      )  # noqa
 * cdef Datatype __UNSIGNED_SHORT__     = def_Datatype( MPI_UNSIGNED_SHORT     , "UNSIGNED_SHORT"     )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED__           = def_Datatype( MPI_UNSIGNED           , "UNSIGNED"           )  # noqa
 * cdef Datatype __UNSIGNED_LONG__      = def_Datatype( MPI_UNSIGNED_LONG      , "UNSIGNED_LONG"      )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_SHORT, __pyx_n_s_UNSIGNED_SHORT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":941
 * cdef Datatype __UNSIGNED_CHAR__      = def_Datatype( MPI_UNSIGNED_CHAR      , "UNSIGNED_CHAR"      )  # noqa
 * cdef Datatype __UNSIGNED_SHORT__     = def_Datatype( MPI_UNSIGNED_SHORT     , "UNSIGNED_SHORT"     )  # noqa
 * cdef Datatype __UNSIGNED__           = def_Datatype( MPI_UNSIGNED           , "UNSIGNED"           )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_LONG__      = def_Datatype( MPI_UNSIGNED_LONG      , "UNSIGNED_LONG"      )  # noqa
 * cdef Datatype __UNSIGNED_LONG_LONG__ = def_Datatype( MPI_UNSIGNED_LONG_LONG , "UNSIGNED_LONG_LONG" )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED, __pyx_n_s_UNSIGNED)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":942
 * cdef Datatype __UNSIGNED_SHORT__     = def_Datatype( MPI_UNSIGNED_SHORT     , "UNSIGNED_SHORT"     )  # noqa
 * cdef Datatype __UNSIGNED__           = def_Datatype( MPI_UNSIGNED           , "UNSIGNED"           )  # noqa
 * cdef Datatype __UNSIGNED_LONG__      = def_Datatype( MPI_UNSIGNED_LONG      , "UNSIGNED_LONG"      )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UNSIGNED_LONG_LONG__ = def_Datatype( MPI_UNSIGNED_LONG_LONG , "UNSIGNED_LONG_LONG" )  # noqa
 * cdef Datatype __FLOAT__              = def_Datatype( MPI_FLOAT              , "FLOAT"              )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_LONG, __pyx_n_s_UNSIGNED_LONG)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":943
 * cdef Datatype __UNSIGNED__           = def_Datatype( MPI_UNSIGNED           , "UNSIGNED"           )  # noqa
 * cdef Datatype __UNSIGNED_LONG__      = def_Datatype( MPI_UNSIGNED_LONG      , "UNSIGNED_LONG"      )  # noqa
 * cdef Datatype __UNSIGNED_LONG_LONG__ = def_Datatype( MPI_UNSIGNED_LONG_LONG , "UNSIGNED_LONG_LONG" )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __FLOAT__              = def_Datatype( MPI_FLOAT              , "FLOAT"              )  # noqa
 * cdef Datatype __DOUBLE__             = def_Datatype( MPI_DOUBLE             , "DOUBLE"             )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UNSIGNED_LONG_LONG, __pyx_n_s_UNSIGNED_LONG_LONG)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 943, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":944
 * cdef Datatype __UNSIGNED_LONG__      = def_Datatype( MPI_UNSIGNED_LONG      , "UNSIGNED_LONG"      )  # noqa
 * cdef Datatype __UNSIGNED_LONG_LONG__ = def_Datatype( MPI_UNSIGNED_LONG_LONG , "UNSIGNED_LONG_LONG" )  # noqa
 * cdef Datatype __FLOAT__              = def_Datatype( MPI_FLOAT              , "FLOAT"              )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE__             = def_Datatype( MPI_DOUBLE             , "DOUBLE"             )  # noqa
 * cdef Datatype __LONG_DOUBLE__        = def_Datatype( MPI_LONG_DOUBLE        , "LONG_DOUBLE"        )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_FLOAT, __pyx_n_s_FLOAT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FLOAT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":945
 * cdef Datatype __UNSIGNED_LONG_LONG__ = def_Datatype( MPI_UNSIGNED_LONG_LONG , "UNSIGNED_LONG_LONG" )  # noqa
 * cdef Datatype __FLOAT__              = def_Datatype( MPI_FLOAT              , "FLOAT"              )  # noqa
 * cdef Datatype __DOUBLE__             = def_Datatype( MPI_DOUBLE             , "DOUBLE"             )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_DOUBLE__        = def_Datatype( MPI_LONG_DOUBLE        , "LONG_DOUBLE"        )  # noqa
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE, __pyx_n_s_DOUBLE)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 945, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":946
 * cdef Datatype __FLOAT__              = def_Datatype( MPI_FLOAT              , "FLOAT"              )  # noqa
 * cdef Datatype __DOUBLE__             = def_Datatype( MPI_DOUBLE             , "DOUBLE"             )  # noqa
 * cdef Datatype __LONG_DOUBLE__        = def_Datatype( MPI_LONG_DOUBLE        , "LONG_DOUBLE"        )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __C_BOOL__                = def_Datatype( MPI_C_BOOL   , "C_BOOL"   )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_DOUBLE, __pyx_n_s_LONG_DOUBLE)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":948
 * cdef Datatype __LONG_DOUBLE__        = def_Datatype( MPI_LONG_DOUBLE        , "LONG_DOUBLE"        )  # noqa
 * 
 * cdef Datatype __C_BOOL__                = def_Datatype( MPI_C_BOOL   , "C_BOOL"   )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __INT8_T__                = def_Datatype( MPI_INT8_T   , "INT8_T"   )  # noqa
 * cdef Datatype __INT16_T__               = def_Datatype( MPI_INT16_T  , "INT16_T"  )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_BOOL, __pyx_n_s_C_BOOL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_BOOL__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":949
 * 
 * cdef Datatype __C_BOOL__                = def_Datatype( MPI_C_BOOL   , "C_BOOL"   )  # noqa
 * cdef Datatype __INT8_T__                = def_Datatype( MPI_INT8_T   , "INT8_T"   )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __INT16_T__               = def_Datatype( MPI_INT16_T  , "INT16_T"  )  # noqa
 * cdef Datatype __INT32_T__               = def_Datatype( MPI_INT32_T  , "INT32_T"  )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT8_T, __pyx_n_s_INT8_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT8_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":950
 * cdef Datatype __C_BOOL__                = def_Datatype( MPI_C_BOOL   , "C_BOOL"   )  # noqa
 * cdef Datatype __INT8_T__                = def_Datatype( MPI_INT8_T   , "INT8_T"   )  # noqa
 * cdef Datatype __INT16_T__               = def_Datatype( MPI_INT16_T  , "INT16_T"  )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __INT32_T__               = def_Datatype( MPI_INT32_T  , "INT32_T"  )  # noqa
 * cdef Datatype __INT64_T__               = def_Datatype( MPI_INT64_T  , "INT64_T"  )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT16_T, __pyx_n_s_INT16_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 950, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT16_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":951
 * cdef Datatype __INT8_T__                = def_Datatype( MPI_INT8_T   , "INT8_T"   )  # noqa
 * cdef Datatype __INT16_T__               = def_Datatype( MPI_INT16_T  , "INT16_T"  )  # noqa
 * cdef Datatype __INT32_T__               = def_Datatype( MPI_INT32_T  , "INT32_T"  )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __INT64_T__               = def_Datatype( MPI_INT64_T  , "INT64_T"  )  # noqa
 * cdef Datatype __UINT8_T__               = def_Datatype( MPI_UINT8_T  , "UINT8_T"  )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT32_T, __pyx_n_s_INT32_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT32_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":952
 * cdef Datatype __INT16_T__               = def_Datatype( MPI_INT16_T  , "INT16_T"  )  # noqa
 * cdef Datatype __INT32_T__               = def_Datatype( MPI_INT32_T  , "INT32_T"  )  # noqa
 * cdef Datatype __INT64_T__               = def_Datatype( MPI_INT64_T  , "INT64_T"  )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT8_T__               = def_Datatype( MPI_UINT8_T  , "UINT8_T"  )  # noqa
 * cdef Datatype __UINT16_T__              = def_Datatype( MPI_UINT16_T , "UINT16_T" )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INT64_T, __pyx_n_s_INT64_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT64_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":953
 * cdef Datatype __INT32_T__               = def_Datatype( MPI_INT32_T  , "INT32_T"  )  # noqa
 * cdef Datatype __INT64_T__               = def_Datatype( MPI_INT64_T  , "INT64_T"  )  # noqa
 * cdef Datatype __UINT8_T__               = def_Datatype( MPI_UINT8_T  , "UINT8_T"  )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT16_T__              = def_Datatype( MPI_UINT16_T , "UINT16_T" )  # noqa
 * cdef Datatype __UINT32_T__              = def_Datatype( MPI_UINT32_T , "UINT32_T" )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT8_T, __pyx_n_s_UINT8_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT8_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":954
 * cdef Datatype __INT64_T__               = def_Datatype( MPI_INT64_T  , "INT64_T"  )  # noqa
 * cdef Datatype __UINT8_T__               = def_Datatype( MPI_UINT8_T  , "UINT8_T"  )  # noqa
 * cdef Datatype __UINT16_T__              = def_Datatype( MPI_UINT16_T , "UINT16_T" )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT32_T__              = def_Datatype( MPI_UINT32_T , "UINT32_T" )  # noqa
 * cdef Datatype __UINT64_T__              = def_Datatype( MPI_UINT64_T , "UINT64_T" )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT16_T, __pyx_n_s_UINT16_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT16_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":955
 * cdef Datatype __UINT8_T__               = def_Datatype( MPI_UINT8_T  , "UINT8_T"  )  # noqa
 * cdef Datatype __UINT16_T__              = def_Datatype( MPI_UINT16_T , "UINT16_T" )  # noqa
 * cdef Datatype __UINT32_T__              = def_Datatype( MPI_UINT32_T , "UINT32_T" )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __UINT64_T__              = def_Datatype( MPI_UINT64_T , "UINT64_T" )  # noqa
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT32_T, __pyx_n_s_UINT32_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT32_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":956
 * cdef Datatype __UINT16_T__              = def_Datatype( MPI_UINT16_T , "UINT16_T" )  # noqa
 * cdef Datatype __UINT32_T__              = def_Datatype( MPI_UINT32_T , "UINT32_T" )  # noqa
 * cdef Datatype __UINT64_T__              = def_Datatype( MPI_UINT64_T , "UINT64_T" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __C_COMPLEX__             = def_Datatype( MPI_C_COMPLEX             , "C_COMPLEX"             )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_UINT64_T, __pyx_n_s_UINT64_T)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___UINT64_T__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":958
 * cdef Datatype __UINT64_T__              = def_Datatype( MPI_UINT64_T , "UINT64_T" )  # noqa
 * 
 * cdef Datatype __C_COMPLEX__             = def_Datatype( MPI_C_COMPLEX             , "C_COMPLEX"             )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __C_FLOAT_COMPLEX__       = __C_COMPLEX__
 * cdef Datatype __C_DOUBLE_COMPLEX__      = def_Datatype( MPI_C_DOUBLE_COMPLEX      , "C_DOUBLE_COMPLEX"      )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_COMPLEX, __pyx_n_s_C_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":959
 * 
 * cdef Datatype __C_COMPLEX__             = def_Datatype( MPI_C_COMPLEX             , "C_COMPLEX"             )  # noqa
 * cdef Datatype __C_FLOAT_COMPLEX__       = __C_COMPLEX__             # <<<<<<<<<<<<<<
 * cdef Datatype __C_DOUBLE_COMPLEX__      = def_Datatype( MPI_C_DOUBLE_COMPLEX      , "C_DOUBLE_COMPLEX"      )  # noqa
 * cdef Datatype __C_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_C_LONG_DOUBLE_COMPLEX , "C_LONG_DOUBLE_COMPLEX" )  # noqa
 */
  __Pyx_INCREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__, __pyx_v_6mpi4py_3MPI___C_COMPLEX__);
  __Pyx_GIVEREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__);

  /* "src/mpi4py/MPI.src/Datatype.pyx":960
 * cdef Datatype __C_COMPLEX__             = def_Datatype( MPI_C_COMPLEX             , "C_COMPLEX"             )  # noqa
 * cdef Datatype __C_FLOAT_COMPLEX__       = __C_COMPLEX__
 * cdef Datatype __C_DOUBLE_COMPLEX__      = def_Datatype( MPI_C_DOUBLE_COMPLEX      , "C_DOUBLE_COMPLEX"      )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __C_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_C_LONG_DOUBLE_COMPLEX , "C_LONG_DOUBLE_COMPLEX" )  # noqa
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_DOUBLE_COMPLEX, __pyx_n_s_C_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":961
 * cdef Datatype __C_FLOAT_COMPLEX__       = __C_COMPLEX__
 * cdef Datatype __C_DOUBLE_COMPLEX__      = def_Datatype( MPI_C_DOUBLE_COMPLEX      , "C_DOUBLE_COMPLEX"      )  # noqa
 * cdef Datatype __C_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_C_LONG_DOUBLE_COMPLEX , "C_LONG_DOUBLE_COMPLEX" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __CXX_BOOL__                = def_Datatype( MPI_CXX_BOOL                , "CXX_BOOL"                )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_C_LONG_DOUBLE_COMPLEX, __pyx_n_s_C_LONG_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":963
 * cdef Datatype __C_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_C_LONG_DOUBLE_COMPLEX , "C_LONG_DOUBLE_COMPLEX" )  # noqa
 * 
 * cdef Datatype __CXX_BOOL__                = def_Datatype( MPI_CXX_BOOL                , "CXX_BOOL"                )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __CXX_FLOAT_COMPLEX__       = def_Datatype( MPI_CXX_FLOAT_COMPLEX       , "CXX_FLOAT_COMPLEX"       )  # noqa
 * cdef Datatype __CXX_DOUBLE_COMPLEX__      = def_Datatype( MPI_CXX_DOUBLE_COMPLEX      , "CXX_DOUBLE_COMPLEX"      )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_BOOL, __pyx_n_s_CXX_BOOL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CXX_BOOL__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":964
 * 
 * cdef Datatype __CXX_BOOL__                = def_Datatype( MPI_CXX_BOOL                , "CXX_BOOL"                )  # noqa
 * cdef Datatype __CXX_FLOAT_COMPLEX__       = def_Datatype( MPI_CXX_FLOAT_COMPLEX       , "CXX_FLOAT_COMPLEX"       )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __CXX_DOUBLE_COMPLEX__      = def_Datatype( MPI_CXX_DOUBLE_COMPLEX      , "CXX_DOUBLE_COMPLEX"      )  # noqa
 * cdef Datatype __CXX_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_CXX_LONG_DOUBLE_COMPLEX , "CXX_LONG_DOUBLE_COMPLEX" )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_FLOAT_COMPLEX, __pyx_n_s_CXX_FLOAT_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":965
 * cdef Datatype __CXX_BOOL__                = def_Datatype( MPI_CXX_BOOL                , "CXX_BOOL"                )  # noqa
 * cdef Datatype __CXX_FLOAT_COMPLEX__       = def_Datatype( MPI_CXX_FLOAT_COMPLEX       , "CXX_FLOAT_COMPLEX"       )  # noqa
 * cdef Datatype __CXX_DOUBLE_COMPLEX__      = def_Datatype( MPI_CXX_DOUBLE_COMPLEX      , "CXX_DOUBLE_COMPLEX"      )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __CXX_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_CXX_LONG_DOUBLE_COMPLEX , "CXX_LONG_DOUBLE_COMPLEX" )  # noqa
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_DOUBLE_COMPLEX, __pyx_n_s_CXX_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":966
 * cdef Datatype __CXX_FLOAT_COMPLEX__       = def_Datatype( MPI_CXX_FLOAT_COMPLEX       , "CXX_FLOAT_COMPLEX"       )  # noqa
 * cdef Datatype __CXX_DOUBLE_COMPLEX__      = def_Datatype( MPI_CXX_DOUBLE_COMPLEX      , "CXX_DOUBLE_COMPLEX"      )  # noqa
 * cdef Datatype __CXX_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_CXX_LONG_DOUBLE_COMPLEX , "CXX_LONG_DOUBLE_COMPLEX" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __SHORT_INT__        = def_Datatype( MPI_SHORT_INT       , "SHORT_INT"       )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CXX_LONG_DOUBLE_COMPLEX, __pyx_n_s_CXX_LONG_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":968
 * cdef Datatype __CXX_LONG_DOUBLE_COMPLEX__ = def_Datatype( MPI_CXX_LONG_DOUBLE_COMPLEX , "CXX_LONG_DOUBLE_COMPLEX" )  # noqa
 * 
 * cdef Datatype __SHORT_INT__        = def_Datatype( MPI_SHORT_INT       , "SHORT_INT"       )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __INT_INT__          = def_Datatype( MPI_2INT            , "INT_INT"         )  # noqa
 * cdef Datatype __LONG_INT__         = def_Datatype( MPI_LONG_INT        , "LONG_INT"        )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_SHORT_INT, __pyx_n_s_SHORT_INT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SHORT_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":969
 * 
 * cdef Datatype __SHORT_INT__        = def_Datatype( MPI_SHORT_INT       , "SHORT_INT"       )  # noqa
 * cdef Datatype __INT_INT__          = def_Datatype( MPI_2INT            , "INT_INT"         )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_INT__         = def_Datatype( MPI_LONG_INT        , "LONG_INT"        )  # noqa
 * cdef Datatype __FLOAT_INT__        = def_Datatype( MPI_FLOAT_INT       , "FLOAT_INT"       )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_2INT, __pyx_n_s_INT_INT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INT_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INT_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":970
 * cdef Datatype __SHORT_INT__        = def_Datatype( MPI_SHORT_INT       , "SHORT_INT"       )  # noqa
 * cdef Datatype __INT_INT__          = def_Datatype( MPI_2INT            , "INT_INT"         )  # noqa
 * cdef Datatype __LONG_INT__         = def_Datatype( MPI_LONG_INT        , "LONG_INT"        )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __FLOAT_INT__        = def_Datatype( MPI_FLOAT_INT       , "FLOAT_INT"       )  # noqa
 * cdef Datatype __DOUBLE_INT__       = def_Datatype( MPI_DOUBLE_INT      , "DOUBLE_INT"      )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_INT, __pyx_n_s_LONG_INT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":971
 * cdef Datatype __INT_INT__          = def_Datatype( MPI_2INT            , "INT_INT"         )  # noqa
 * cdef Datatype __LONG_INT__         = def_Datatype( MPI_LONG_INT        , "LONG_INT"        )  # noqa
 * cdef Datatype __FLOAT_INT__        = def_Datatype( MPI_FLOAT_INT       , "FLOAT_INT"       )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE_INT__       = def_Datatype( MPI_DOUBLE_INT      , "DOUBLE_INT"      )  # noqa
 * cdef Datatype __LONG_DOUBLE_INT__  = def_Datatype( MPI_LONG_DOUBLE_INT , "LONG_DOUBLE_INT" )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_FLOAT_INT, __pyx_n_s_FLOAT_INT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FLOAT_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":972
 * cdef Datatype __LONG_INT__         = def_Datatype( MPI_LONG_INT        , "LONG_INT"        )  # noqa
 * cdef Datatype __FLOAT_INT__        = def_Datatype( MPI_FLOAT_INT       , "FLOAT_INT"       )  # noqa
 * cdef Datatype __DOUBLE_INT__       = def_Datatype( MPI_DOUBLE_INT      , "DOUBLE_INT"      )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __LONG_DOUBLE_INT__  = def_Datatype( MPI_LONG_DOUBLE_INT , "LONG_DOUBLE_INT" )  # noqa
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE_INT, __pyx_n_s_DOUBLE_INT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":973
 * cdef Datatype __FLOAT_INT__        = def_Datatype( MPI_FLOAT_INT       , "FLOAT_INT"       )  # noqa
 * cdef Datatype __DOUBLE_INT__       = def_Datatype( MPI_DOUBLE_INT      , "DOUBLE_INT"      )  # noqa
 * cdef Datatype __LONG_DOUBLE_INT__  = def_Datatype( MPI_LONG_DOUBLE_INT , "LONG_DOUBLE_INT" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __CHARACTER__        = def_Datatype( MPI_CHARACTER        , "CHARACTER"        )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LONG_DOUBLE_INT, __pyx_n_s_LONG_DOUBLE_INT)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":975
 * cdef Datatype __LONG_DOUBLE_INT__  = def_Datatype( MPI_LONG_DOUBLE_INT , "LONG_DOUBLE_INT" )  # noqa
 * 
 * cdef Datatype __CHARACTER__        = def_Datatype( MPI_CHARACTER        , "CHARACTER"        )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL__          = def_Datatype( MPI_LOGICAL          , "LOGICAL"          )  # noqa
 * cdef Datatype __INTEGER__          = def_Datatype( MPI_INTEGER          , "INTEGER"          )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_CHARACTER, __pyx_n_s_CHARACTER)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___CHARACTER__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":976
 * 
 * cdef Datatype __CHARACTER__        = def_Datatype( MPI_CHARACTER        , "CHARACTER"        )  # noqa
 * cdef Datatype __LOGICAL__          = def_Datatype( MPI_LOGICAL          , "LOGICAL"          )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER__          = def_Datatype( MPI_INTEGER          , "INTEGER"          )  # noqa
 * cdef Datatype __REAL__             = def_Datatype( MPI_REAL             , "REAL"             )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL, __pyx_n_s_LOGICAL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":977
 * cdef Datatype __CHARACTER__        = def_Datatype( MPI_CHARACTER        , "CHARACTER"        )  # noqa
 * cdef Datatype __LOGICAL__          = def_Datatype( MPI_LOGICAL          , "LOGICAL"          )  # noqa
 * cdef Datatype __INTEGER__          = def_Datatype( MPI_INTEGER          , "INTEGER"          )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL__             = def_Datatype( MPI_REAL             , "REAL"             )  # noqa
 * cdef Datatype __DOUBLE_PRECISION__ = def_Datatype( MPI_DOUBLE_PRECISION , "DOUBLE_PRECISION" )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER, __pyx_n_s_INTEGER)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":978
 * cdef Datatype __LOGICAL__          = def_Datatype( MPI_LOGICAL          , "LOGICAL"          )  # noqa
 * cdef Datatype __INTEGER__          = def_Datatype( MPI_INTEGER          , "INTEGER"          )  # noqa
 * cdef Datatype __REAL__             = def_Datatype( MPI_REAL             , "REAL"             )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE_PRECISION__ = def_Datatype( MPI_DOUBLE_PRECISION , "DOUBLE_PRECISION" )  # noqa
 * cdef Datatype __COMPLEX__          = def_Datatype( MPI_COMPLEX          , "COMPLEX"          )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL, __pyx_n_s_REAL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":979
 * cdef Datatype __INTEGER__          = def_Datatype( MPI_INTEGER          , "INTEGER"          )  # noqa
 * cdef Datatype __REAL__             = def_Datatype( MPI_REAL             , "REAL"             )  # noqa
 * cdef Datatype __DOUBLE_PRECISION__ = def_Datatype( MPI_DOUBLE_PRECISION , "DOUBLE_PRECISION" )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX__          = def_Datatype( MPI_COMPLEX          , "COMPLEX"          )  # noqa
 * cdef Datatype __DOUBLE_COMPLEX__   = def_Datatype( MPI_DOUBLE_COMPLEX   , "DOUBLE_COMPLEX"   )  # noqa
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE_PRECISION, __pyx_n_s_DOUBLE_PRECISION)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":980
 * cdef Datatype __REAL__             = def_Datatype( MPI_REAL             , "REAL"             )  # noqa
 * cdef Datatype __DOUBLE_PRECISION__ = def_Datatype( MPI_DOUBLE_PRECISION , "DOUBLE_PRECISION" )  # noqa
 * cdef Datatype __COMPLEX__          = def_Datatype( MPI_COMPLEX          , "COMPLEX"          )  # noqa             # <<<<<<<<<<<<<<
 * cdef Datatype __DOUBLE_COMPLEX__   = def_Datatype( MPI_DOUBLE_COMPLEX   , "DOUBLE_COMPLEX"   )  # noqa
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX, __pyx_n_s_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":981
 * cdef Datatype __DOUBLE_PRECISION__ = def_Datatype( MPI_DOUBLE_PRECISION , "DOUBLE_PRECISION" )  # noqa
 * cdef Datatype __COMPLEX__          = def_Datatype( MPI_COMPLEX          , "COMPLEX"          )  # noqa
 * cdef Datatype __DOUBLE_COMPLEX__   = def_Datatype( MPI_DOUBLE_COMPLEX   , "DOUBLE_COMPLEX"   )  # noqa             # <<<<<<<<<<<<<<
 * 
 * cdef Datatype __LOGICAL1__  = def_Datatype( MPI_LOGICAL1  , "LOGICAL1"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_DOUBLE_COMPLEX, __pyx_n_s_DOUBLE_COMPLEX)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":983
 * cdef Datatype __DOUBLE_COMPLEX__   = def_Datatype( MPI_DOUBLE_COMPLEX   , "DOUBLE_COMPLEX"   )  # noqa
 * 
 * cdef Datatype __LOGICAL1__  = def_Datatype( MPI_LOGICAL1  , "LOGICAL1"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL2__  = def_Datatype( MPI_LOGICAL2  , "LOGICAL2"  )
 * cdef Datatype __LOGICAL4__  = def_Datatype( MPI_LOGICAL4  , "LOGICAL4"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL1, __pyx_n_s_LOGICAL1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL1__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":984
 * 
 * cdef Datatype __LOGICAL1__  = def_Datatype( MPI_LOGICAL1  , "LOGICAL1"  )
 * cdef Datatype __LOGICAL2__  = def_Datatype( MPI_LOGICAL2  , "LOGICAL2"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL4__  = def_Datatype( MPI_LOGICAL4  , "LOGICAL4"  )
 * cdef Datatype __LOGICAL8__  = def_Datatype( MPI_LOGICAL8  , "LOGICAL8"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL2, __pyx_n_s_LOGICAL2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL2__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":985
 * cdef Datatype __LOGICAL1__  = def_Datatype( MPI_LOGICAL1  , "LOGICAL1"  )
 * cdef Datatype __LOGICAL2__  = def_Datatype( MPI_LOGICAL2  , "LOGICAL2"  )
 * cdef Datatype __LOGICAL4__  = def_Datatype( MPI_LOGICAL4  , "LOGICAL4"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __LOGICAL8__  = def_Datatype( MPI_LOGICAL8  , "LOGICAL8"  )
 * cdef Datatype __INTEGER1__  = def_Datatype( MPI_INTEGER1  , "INTEGER1"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL4, __pyx_n_s_LOGICAL4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL4__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":986
 * cdef Datatype __LOGICAL2__  = def_Datatype( MPI_LOGICAL2  , "LOGICAL2"  )
 * cdef Datatype __LOGICAL4__  = def_Datatype( MPI_LOGICAL4  , "LOGICAL4"  )
 * cdef Datatype __LOGICAL8__  = def_Datatype( MPI_LOGICAL8  , "LOGICAL8"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER1__  = def_Datatype( MPI_INTEGER1  , "INTEGER1"  )
 * cdef Datatype __INTEGER2__  = def_Datatype( MPI_INTEGER2  , "INTEGER2"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_LOGICAL8, __pyx_n_s_LOGICAL8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOGICAL8__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":987
 * cdef Datatype __LOGICAL4__  = def_Datatype( MPI_LOGICAL4  , "LOGICAL4"  )
 * cdef Datatype __LOGICAL8__  = def_Datatype( MPI_LOGICAL8  , "LOGICAL8"  )
 * cdef Datatype __INTEGER1__  = def_Datatype( MPI_INTEGER1  , "INTEGER1"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER2__  = def_Datatype( MPI_INTEGER2  , "INTEGER2"  )
 * cdef Datatype __INTEGER4__  = def_Datatype( MPI_INTEGER4  , "INTEGER4"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER1, __pyx_n_s_INTEGER1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER1__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":988
 * cdef Datatype __LOGICAL8__  = def_Datatype( MPI_LOGICAL8  , "LOGICAL8"  )
 * cdef Datatype __INTEGER1__  = def_Datatype( MPI_INTEGER1  , "INTEGER1"  )
 * cdef Datatype __INTEGER2__  = def_Datatype( MPI_INTEGER2  , "INTEGER2"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER4__  = def_Datatype( MPI_INTEGER4  , "INTEGER4"  )
 * cdef Datatype __INTEGER8__  = def_Datatype( MPI_INTEGER8  , "INTEGER8"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER2, __pyx_n_s_INTEGER2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 988, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER2__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":989
 * cdef Datatype __INTEGER1__  = def_Datatype( MPI_INTEGER1  , "INTEGER1"  )
 * cdef Datatype __INTEGER2__  = def_Datatype( MPI_INTEGER2  , "INTEGER2"  )
 * cdef Datatype __INTEGER4__  = def_Datatype( MPI_INTEGER4  , "INTEGER4"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER8__  = def_Datatype( MPI_INTEGER8  , "INTEGER8"  )
 * cdef Datatype __INTEGER16__ = def_Datatype( MPI_INTEGER16 , "INTEGER16" )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER4, __pyx_n_s_INTEGER4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER4__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":990
 * cdef Datatype __INTEGER2__  = def_Datatype( MPI_INTEGER2  , "INTEGER2"  )
 * cdef Datatype __INTEGER4__  = def_Datatype( MPI_INTEGER4  , "INTEGER4"  )
 * cdef Datatype __INTEGER8__  = def_Datatype( MPI_INTEGER8  , "INTEGER8"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __INTEGER16__ = def_Datatype( MPI_INTEGER16 , "INTEGER16" )
 * cdef Datatype __REAL2__     = def_Datatype( MPI_REAL2     , "REAL2"     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER8, __pyx_n_s_INTEGER8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER8__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":991
 * cdef Datatype __INTEGER4__  = def_Datatype( MPI_INTEGER4  , "INTEGER4"  )
 * cdef Datatype __INTEGER8__  = def_Datatype( MPI_INTEGER8  , "INTEGER8"  )
 * cdef Datatype __INTEGER16__ = def_Datatype( MPI_INTEGER16 , "INTEGER16" )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL2__     = def_Datatype( MPI_REAL2     , "REAL2"     )
 * cdef Datatype __REAL4__     = def_Datatype( MPI_REAL4     , "REAL4"     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_INTEGER16, __pyx_n_s_INTEGER16)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INTEGER16__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":992
 * cdef Datatype __INTEGER8__  = def_Datatype( MPI_INTEGER8  , "INTEGER8"  )
 * cdef Datatype __INTEGER16__ = def_Datatype( MPI_INTEGER16 , "INTEGER16" )
 * cdef Datatype __REAL2__     = def_Datatype( MPI_REAL2     , "REAL2"     )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL4__     = def_Datatype( MPI_REAL4     , "REAL4"     )
 * cdef Datatype __REAL8__     = def_Datatype( MPI_REAL8     , "REAL8"     )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL2, __pyx_n_s_REAL2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL2__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":993
 * cdef Datatype __INTEGER16__ = def_Datatype( MPI_INTEGER16 , "INTEGER16" )
 * cdef Datatype __REAL2__     = def_Datatype( MPI_REAL2     , "REAL2"     )
 * cdef Datatype __REAL4__     = def_Datatype( MPI_REAL4     , "REAL4"     )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL8__     = def_Datatype( MPI_REAL8     , "REAL8"     )
 * cdef Datatype __REAL16__    = def_Datatype( MPI_REAL16    , "REAL16"    )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL4, __pyx_n_s_REAL4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 993, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL4__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":994
 * cdef Datatype __REAL2__     = def_Datatype( MPI_REAL2     , "REAL2"     )
 * cdef Datatype __REAL4__     = def_Datatype( MPI_REAL4     , "REAL4"     )
 * cdef Datatype __REAL8__     = def_Datatype( MPI_REAL8     , "REAL8"     )             # <<<<<<<<<<<<<<
 * cdef Datatype __REAL16__    = def_Datatype( MPI_REAL16    , "REAL16"    )
 * cdef Datatype __COMPLEX4__  = def_Datatype( MPI_COMPLEX4  , "COMPLEX4"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL8, __pyx_n_s_REAL8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL8__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":995
 * cdef Datatype __REAL4__     = def_Datatype( MPI_REAL4     , "REAL4"     )
 * cdef Datatype __REAL8__     = def_Datatype( MPI_REAL8     , "REAL8"     )
 * cdef Datatype __REAL16__    = def_Datatype( MPI_REAL16    , "REAL16"    )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX4__  = def_Datatype( MPI_COMPLEX4  , "COMPLEX4"  )
 * cdef Datatype __COMPLEX8__  = def_Datatype( MPI_COMPLEX8  , "COMPLEX8"  )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_REAL16, __pyx_n_s_REAL16)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REAL16__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":996
 * cdef Datatype __REAL8__     = def_Datatype( MPI_REAL8     , "REAL8"     )
 * cdef Datatype __REAL16__    = def_Datatype( MPI_REAL16    , "REAL16"    )
 * cdef Datatype __COMPLEX4__  = def_Datatype( MPI_COMPLEX4  , "COMPLEX4"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX8__  = def_Datatype( MPI_COMPLEX8  , "COMPLEX8"  )
 * cdef Datatype __COMPLEX16__ = def_Datatype( MPI_COMPLEX16 , "COMPLEX16" )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX4, __pyx_n_s_COMPLEX4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX4__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":997
 * cdef Datatype __REAL16__    = def_Datatype( MPI_REAL16    , "REAL16"    )
 * cdef Datatype __COMPLEX4__  = def_Datatype( MPI_COMPLEX4  , "COMPLEX4"  )
 * cdef Datatype __COMPLEX8__  = def_Datatype( MPI_COMPLEX8  , "COMPLEX8"  )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX16__ = def_Datatype( MPI_COMPLEX16 , "COMPLEX16" )
 * cdef Datatype __COMPLEX32__ = def_Datatype( MPI_COMPLEX32 , "COMPLEX32" )
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX8, __pyx_n_s_COMPLEX8)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX8__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":998
 * cdef Datatype __COMPLEX4__  = def_Datatype( MPI_COMPLEX4  , "COMPLEX4"  )
 * cdef Datatype __COMPLEX8__  = def_Datatype( MPI_COMPLEX8  , "COMPLEX8"  )
 * cdef Datatype __COMPLEX16__ = def_Datatype( MPI_COMPLEX16 , "COMPLEX16" )             # <<<<<<<<<<<<<<
 * cdef Datatype __COMPLEX32__ = def_Datatype( MPI_COMPLEX32 , "COMPLEX32" )
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX16, __pyx_n_s_COMPLEX16)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX16__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":999
 * cdef Datatype __COMPLEX8__  = def_Datatype( MPI_COMPLEX8  , "COMPLEX8"  )
 * cdef Datatype __COMPLEX16__ = def_Datatype( MPI_COMPLEX16 , "COMPLEX16" )
 * cdef Datatype __COMPLEX32__ = def_Datatype( MPI_COMPLEX32 , "COMPLEX32" )             # <<<<<<<<<<<<<<
 * 
 * # Predefined datatype handles
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Datatype(MPI_COMPLEX32, __pyx_n_s_COMPLEX32)); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMPLEX32__, ((struct PyMPIDatatypeObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Datatype.pyx":1004
 * # ---------------------------
 * 
 * DATATYPE_NULL = __DATATYPE_NULL__  #: Null datatype handle             # <<<<<<<<<<<<<<
 * # MPI-specific datatypes
 * PACKED = __PACKED__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATATYPE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__)) < 0) __PYX_ERR(22, 1004, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1006
 * DATATYPE_NULL = __DATATYPE_NULL__  #: Null datatype handle
 * # MPI-specific datatypes
 * PACKED = __PACKED__             # <<<<<<<<<<<<<<
 * BYTE   = __BYTE__
 * AINT   = __AINT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PACKED, ((PyObject *)__pyx_v_6mpi4py_3MPI___PACKED__)) < 0) __PYX_ERR(22, 1006, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1007
 * # MPI-specific datatypes
 * PACKED = __PACKED__
 * BYTE   = __BYTE__             # <<<<<<<<<<<<<<
 * AINT   = __AINT__
 * OFFSET = __OFFSET__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE, ((PyObject *)__pyx_v_6mpi4py_3MPI___BYTE__)) < 0) __PYX_ERR(22, 1007, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1008
 * PACKED = __PACKED__
 * BYTE   = __BYTE__
 * AINT   = __AINT__             # <<<<<<<<<<<<<<
 * OFFSET = __OFFSET__
 * COUNT  = __COUNT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AINT, ((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__)) < 0) __PYX_ERR(22, 1008, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1009
 * BYTE   = __BYTE__
 * AINT   = __AINT__
 * OFFSET = __OFFSET__             # <<<<<<<<<<<<<<
 * COUNT  = __COUNT__
 * # Elementary C datatypes
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OFFSET, ((PyObject *)__pyx_v_6mpi4py_3MPI___OFFSET__)) < 0) __PYX_ERR(22, 1009, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1010
 * AINT   = __AINT__
 * OFFSET = __OFFSET__
 * COUNT  = __COUNT__             # <<<<<<<<<<<<<<
 * # Elementary C datatypes
 * CHAR                = __CHAR__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COUNT, ((PyObject *)__pyx_v_6mpi4py_3MPI___COUNT__)) < 0) __PYX_ERR(22, 1010, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1012
 * COUNT  = __COUNT__
 * # Elementary C datatypes
 * CHAR                = __CHAR__             # <<<<<<<<<<<<<<
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__)) < 0) __PYX_ERR(22, 1012, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1013
 * # Elementary C datatypes
 * CHAR                = __CHAR__
 * WCHAR               = __WCHAR__             # <<<<<<<<<<<<<<
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WCHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__)) < 0) __PYX_ERR(22, 1013, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1014
 * CHAR                = __CHAR__
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__             # <<<<<<<<<<<<<<
 * SHORT               = __SHORT__
 * INT                 = __INT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__)) < 0) __PYX_ERR(22, 1014, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1015
 * WCHAR               = __WCHAR__
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__             # <<<<<<<<<<<<<<
 * INT                 = __INT__
 * LONG                = __LONG__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__)) < 0) __PYX_ERR(22, 1015, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1016
 * SIGNED_CHAR         = __SIGNED_CHAR__
 * SHORT               = __SHORT__
 * INT                 = __INT__             # <<<<<<<<<<<<<<
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__)) < 0) __PYX_ERR(22, 1016, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1017
 * SHORT               = __SHORT__
 * INT                 = __INT__
 * LONG                = __LONG__             # <<<<<<<<<<<<<<
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__)) < 0) __PYX_ERR(22, 1017, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1018
 * INT                 = __INT__
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__)) < 0) __PYX_ERR(22, 1018, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1019
 * LONG                = __LONG__
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__             # <<<<<<<<<<<<<<
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNSIGNED_CHAR, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__)) < 0) __PYX_ERR(22, 1019, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1020
 * LONG_LONG           = __LONG_LONG__
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__             # <<<<<<<<<<<<<<
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNSIGNED_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__)) < 0) __PYX_ERR(22, 1020, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1021
 * UNSIGNED_CHAR       = __UNSIGNED_CHAR__
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNSIGNED, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < 0) __PYX_ERR(22, 1021, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1022
 * UNSIGNED_SHORT      = __UNSIGNED_SHORT__
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__             # <<<<<<<<<<<<<<
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNSIGNED_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__)) < 0) __PYX_ERR(22, 1022, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1023
 * UNSIGNED            = __UNSIGNED__
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__             # <<<<<<<<<<<<<<
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNSIGNED_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__)) < 0) __PYX_ERR(22, 1023, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1024
 * UNSIGNED_LONG       = __UNSIGNED_LONG__
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__             # <<<<<<<<<<<<<<
 * DOUBLE              = __DOUBLE__
 * LONG_DOUBLE         = __LONG_DOUBLE__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLOAT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__)) < 0) __PYX_ERR(22, 1024, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1025
 * UNSIGNED_LONG_LONG  = __UNSIGNED_LONG_LONG__
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__             # <<<<<<<<<<<<<<
 * LONG_DOUBLE         = __LONG_DOUBLE__
 * # C99 datatypes
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__)) < 0) __PYX_ERR(22, 1025, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1026
 * FLOAT               = __FLOAT__
 * DOUBLE              = __DOUBLE__
 * LONG_DOUBLE         = __LONG_DOUBLE__             # <<<<<<<<<<<<<<
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LONG_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__)) < 0) __PYX_ERR(22, 1026, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1028
 * LONG_DOUBLE         = __LONG_DOUBLE__
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__             # <<<<<<<<<<<<<<
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_C_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__)) < 0) __PYX_ERR(22, 1028, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1029
 * # C99 datatypes
 * C_BOOL                = __C_BOOL__
 * INT8_T                = __INT8_T__             # <<<<<<<<<<<<<<
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__)) < 0) __PYX_ERR(22, 1029, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1030
 * C_BOOL                = __C_BOOL__
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__             # <<<<<<<<<<<<<<
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__)) < 0) __PYX_ERR(22, 1030, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1031
 * INT8_T                = __INT8_T__
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__             # <<<<<<<<<<<<<<
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__)) < 0) __PYX_ERR(22, 1031, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1032
 * INT16_T               = __INT16_T__
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__             # <<<<<<<<<<<<<<
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__)) < 0) __PYX_ERR(22, 1032, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1033
 * INT32_T               = __INT32_T__
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__             # <<<<<<<<<<<<<<
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UINT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__)) < 0) __PYX_ERR(22, 1033, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1034
 * INT64_T               = __INT64_T__
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__             # <<<<<<<<<<<<<<
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UINT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__)) < 0) __PYX_ERR(22, 1034, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1035
 * UINT8_T               = __UINT8_T__
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__             # <<<<<<<<<<<<<<
 * UINT64_T              = __UINT64_T__
 * C_COMPLEX             = __C_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UINT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__)) < 0) __PYX_ERR(22, 1035, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1036
 * UINT16_T              = __UINT16_T__
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__             # <<<<<<<<<<<<<<
 * C_COMPLEX             = __C_COMPLEX__
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UINT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__)) < 0) __PYX_ERR(22, 1036, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1037
 * UINT32_T              = __UINT32_T__
 * UINT64_T              = __UINT64_T__
 * C_COMPLEX             = __C_COMPLEX__             # <<<<<<<<<<<<<<
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_C_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_COMPLEX__)) < 0) __PYX_ERR(22, 1037, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1038
 * UINT64_T              = __UINT64_T__
 * C_COMPLEX             = __C_COMPLEX__
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__             # <<<<<<<<<<<<<<
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_C_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__)) < 0) __PYX_ERR(22, 1038, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1039
 * C_COMPLEX             = __C_COMPLEX__
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__
 * # C++ datatypes
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_C_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__)) < 0) __PYX_ERR(22, 1039, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1040
 * C_FLOAT_COMPLEX       = __C_FLOAT_COMPLEX__
 * C_DOUBLE_COMPLEX      = __C_DOUBLE_COMPLEX__
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * # C++ datatypes
 * CXX_BOOL                = __CXX_BOOL__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_C_LONG_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__)) < 0) __PYX_ERR(22, 1040, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1042
 * C_LONG_DOUBLE_COMPLEX = __C_LONG_DOUBLE_COMPLEX__
 * # C++ datatypes
 * CXX_BOOL                = __CXX_BOOL__             # <<<<<<<<<<<<<<
 * CXX_FLOAT_COMPLEX       = __CXX_FLOAT_COMPLEX__
 * CXX_DOUBLE_COMPLEX      = __CXX_DOUBLE_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CXX_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__)) < 0) __PYX_ERR(22, 1042, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1043
 * # C++ datatypes
 * CXX_BOOL                = __CXX_BOOL__
 * CXX_FLOAT_COMPLEX       = __CXX_FLOAT_COMPLEX__             # <<<<<<<<<<<<<<
 * CXX_DOUBLE_COMPLEX      = __CXX_DOUBLE_COMPLEX__
 * CXX_LONG_DOUBLE_COMPLEX = __CXX_LONG_DOUBLE_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CXX_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__)) < 0) __PYX_ERR(22, 1043, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1044
 * CXX_BOOL                = __CXX_BOOL__
 * CXX_FLOAT_COMPLEX       = __CXX_FLOAT_COMPLEX__
 * CXX_DOUBLE_COMPLEX      = __CXX_DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * CXX_LONG_DOUBLE_COMPLEX = __CXX_LONG_DOUBLE_COMPLEX__
 * # C Datatypes for reduction operations
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CXX_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__)) < 0) __PYX_ERR(22, 1044, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1045
 * CXX_FLOAT_COMPLEX       = __CXX_FLOAT_COMPLEX__
 * CXX_DOUBLE_COMPLEX      = __CXX_DOUBLE_COMPLEX__
 * CXX_LONG_DOUBLE_COMPLEX = __CXX_LONG_DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * # C Datatypes for reduction operations
 * SHORT_INT        = __SHORT_INT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CXX_LONG_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__)) < 0) __PYX_ERR(22, 1045, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1047
 * CXX_LONG_DOUBLE_COMPLEX = __CXX_LONG_DOUBLE_COMPLEX__
 * # C Datatypes for reduction operations
 * SHORT_INT        = __SHORT_INT__             # <<<<<<<<<<<<<<
 * INT_INT = TWOINT = __INT_INT__
 * LONG_INT         = __LONG_INT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SHORT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT_INT__)) < 0) __PYX_ERR(22, 1047, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1048
 * # C Datatypes for reduction operations
 * SHORT_INT        = __SHORT_INT__
 * INT_INT = TWOINT = __INT_INT__             # <<<<<<<<<<<<<<
 * LONG_INT         = __LONG_INT__
 * FLOAT_INT        = __FLOAT_INT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT_INT__)) < 0) __PYX_ERR(22, 1048, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TWOINT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT_INT__)) < 0) __PYX_ERR(22, 1048, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1049
 * SHORT_INT        = __SHORT_INT__
 * INT_INT = TWOINT = __INT_INT__
 * LONG_INT         = __LONG_INT__             # <<<<<<<<<<<<<<
 * FLOAT_INT        = __FLOAT_INT__
 * DOUBLE_INT       = __DOUBLE_INT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LONG_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_INT__)) < 0) __PYX_ERR(22, 1049, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1050
 * INT_INT = TWOINT = __INT_INT__
 * LONG_INT         = __LONG_INT__
 * FLOAT_INT        = __FLOAT_INT__             # <<<<<<<<<<<<<<
 * DOUBLE_INT       = __DOUBLE_INT__
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FLOAT_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT_INT__)) < 0) __PYX_ERR(22, 1050, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1051
 * LONG_INT         = __LONG_INT__
 * FLOAT_INT        = __FLOAT_INT__
 * DOUBLE_INT       = __DOUBLE_INT__             # <<<<<<<<<<<<<<
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__
 * # Elementary Fortran datatypes
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_INT__)) < 0) __PYX_ERR(22, 1051, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1052
 * FLOAT_INT        = __FLOAT_INT__
 * DOUBLE_INT       = __DOUBLE_INT__
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__             # <<<<<<<<<<<<<<
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LONG_DOUBLE_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__)) < 0) __PYX_ERR(22, 1052, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1054
 * LONG_DOUBLE_INT  = __LONG_DOUBLE_INT__
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__             # <<<<<<<<<<<<<<
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CHARACTER, ((PyObject *)__pyx_v_6mpi4py_3MPI___CHARACTER__)) < 0) __PYX_ERR(22, 1054, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1055
 * # Elementary Fortran datatypes
 * CHARACTER        = __CHARACTER__
 * LOGICAL          = __LOGICAL__             # <<<<<<<<<<<<<<
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOGICAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__)) < 0) __PYX_ERR(22, 1055, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1056
 * CHARACTER        = __CHARACTER__
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__             # <<<<<<<<<<<<<<
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTEGER, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__)) < 0) __PYX_ERR(22, 1056, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1057
 * LOGICAL          = __LOGICAL__
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__             # <<<<<<<<<<<<<<
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__)) < 0) __PYX_ERR(22, 1057, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1058
 * INTEGER          = __INTEGER__
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__             # <<<<<<<<<<<<<<
 * COMPLEX          = __COMPLEX__
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DOUBLE_PRECISION, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__)) < 0) __PYX_ERR(22, 1058, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1059
 * REAL             = __REAL__
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__             # <<<<<<<<<<<<<<
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 * # Size-specific Fortran datatypes
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < 0) __PYX_ERR(22, 1059, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1060
 * DOUBLE_PRECISION = __DOUBLE_PRECISION__
 * COMPLEX          = __COMPLEX__
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__)) < 0) __PYX_ERR(22, 1060, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1062
 * DOUBLE_COMPLEX   = __DOUBLE_COMPLEX__
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__             # <<<<<<<<<<<<<<
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOGICAL1, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__)) < 0) __PYX_ERR(22, 1062, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1063
 * # Size-specific Fortran datatypes
 * LOGICAL1  = __LOGICAL1__
 * LOGICAL2  = __LOGICAL2__             # <<<<<<<<<<<<<<
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOGICAL2, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__)) < 0) __PYX_ERR(22, 1063, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1064
 * LOGICAL1  = __LOGICAL1__
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__             # <<<<<<<<<<<<<<
 * LOGICAL8  = __LOGICAL8__
 * INTEGER1  = __INTEGER1__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOGICAL4, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__)) < 0) __PYX_ERR(22, 1064, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1065
 * LOGICAL2  = __LOGICAL2__
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__             # <<<<<<<<<<<<<<
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOGICAL8, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__)) < 0) __PYX_ERR(22, 1065, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1066
 * LOGICAL4  = __LOGICAL4__
 * LOGICAL8  = __LOGICAL8__
 * INTEGER1  = __INTEGER1__             # <<<<<<<<<<<<<<
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTEGER1, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__)) < 0) __PYX_ERR(22, 1066, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1067
 * LOGICAL8  = __LOGICAL8__
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__             # <<<<<<<<<<<<<<
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTEGER2, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__)) < 0) __PYX_ERR(22, 1067, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1068
 * INTEGER1  = __INTEGER1__
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__             # <<<<<<<<<<<<<<
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTEGER4, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__)) < 0) __PYX_ERR(22, 1068, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1069
 * INTEGER2  = __INTEGER2__
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__             # <<<<<<<<<<<<<<
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTEGER8, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__)) < 0) __PYX_ERR(22, 1069, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1070
 * INTEGER4  = __INTEGER4__
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__             # <<<<<<<<<<<<<<
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTEGER16, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__)) < 0) __PYX_ERR(22, 1070, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1071
 * INTEGER8  = __INTEGER8__
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__             # <<<<<<<<<<<<<<
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REAL2, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__)) < 0) __PYX_ERR(22, 1071, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1072
 * INTEGER16 = __INTEGER16__
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__             # <<<<<<<<<<<<<<
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REAL4, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__)) < 0) __PYX_ERR(22, 1072, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1073
 * REAL2     = __REAL2__
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__             # <<<<<<<<<<<<<<
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REAL8, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__)) < 0) __PYX_ERR(22, 1073, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1074
 * REAL4     = __REAL4__
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__             # <<<<<<<<<<<<<<
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REAL16, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__)) < 0) __PYX_ERR(22, 1074, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1075
 * REAL8     = __REAL8__
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__             # <<<<<<<<<<<<<<
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMPLEX4, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__)) < 0) __PYX_ERR(22, 1075, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1076
 * REAL16    = __REAL16__
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__             # <<<<<<<<<<<<<<
 * COMPLEX16 = __COMPLEX16__
 * COMPLEX32 = __COMPLEX32__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMPLEX8, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__)) < 0) __PYX_ERR(22, 1076, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1077
 * COMPLEX4  = __COMPLEX4__
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__             # <<<<<<<<<<<<<<
 * COMPLEX32 = __COMPLEX32__
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMPLEX16, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__)) < 0) __PYX_ERR(22, 1077, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1078
 * COMPLEX8  = __COMPLEX8__
 * COMPLEX16 = __COMPLEX16__
 * COMPLEX32 = __COMPLEX32__             # <<<<<<<<<<<<<<
 * 
 * # Convenience aliases
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMPLEX32, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__)) < 0) __PYX_ERR(22, 1078, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1081
 * 
 * # Convenience aliases
 * UNSIGNED_INT          = __UNSIGNED__             # <<<<<<<<<<<<<<
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNSIGNED_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__)) < 0) __PYX_ERR(22, 1081, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1082
 * # Convenience aliases
 * UNSIGNED_INT          = __UNSIGNED__
 * SIGNED_SHORT          = __SHORT__             # <<<<<<<<<<<<<<
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIGNED_SHORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__)) < 0) __PYX_ERR(22, 1082, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1083
 * UNSIGNED_INT          = __UNSIGNED__
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__             # <<<<<<<<<<<<<<
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIGNED_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__)) < 0) __PYX_ERR(22, 1083, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1084
 * SIGNED_SHORT          = __SHORT__
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__             # <<<<<<<<<<<<<<
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIGNED_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__)) < 0) __PYX_ERR(22, 1084, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1085
 * SIGNED_INT            = __INT__
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__             # <<<<<<<<<<<<<<
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIGNED_LONG_LONG, ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__)) < 0) __PYX_ERR(22, 1085, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1086
 * SIGNED_LONG           = __LONG__
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__             # <<<<<<<<<<<<<<
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__)) < 0) __PYX_ERR(22, 1086, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1087
 * SIGNED_LONG_LONG      = __LONG_LONG__
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__             # <<<<<<<<<<<<<<
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SINT8_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__)) < 0) __PYX_ERR(22, 1087, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1088
 * BOOL                  = __C_BOOL__
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__             # <<<<<<<<<<<<<<
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SINT16_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__)) < 0) __PYX_ERR(22, 1088, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1089
 * SINT8_T               = __INT8_T__
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__             # <<<<<<<<<<<<<<
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SINT32_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__)) < 0) __PYX_ERR(22, 1089, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1090
 * SINT16_T              = __INT16_T__
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__             # <<<<<<<<<<<<<<
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SINT64_T, ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__)) < 0) __PYX_ERR(22, 1090, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1091
 * SINT32_T              = __INT32_T__
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__             # <<<<<<<<<<<<<<
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_BOOL, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__)) < 0) __PYX_ERR(22, 1091, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1092
 * SINT64_T              = __INT64_T__
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__             # <<<<<<<<<<<<<<
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_INT, ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__)) < 0) __PYX_ERR(22, 1092, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1093
 * F_BOOL                = __LOGICAL__
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__             # <<<<<<<<<<<<<<
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_FLOAT, ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__)) < 0) __PYX_ERR(22, 1093, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1094
 * F_INT                 = __INTEGER__
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__             # <<<<<<<<<<<<<<
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_DOUBLE, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__)) < 0) __PYX_ERR(22, 1094, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1095
 * F_FLOAT               = __REAL__
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__             # <<<<<<<<<<<<<<
 * F_FLOAT_COMPLEX       = __COMPLEX__
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < 0) __PYX_ERR(22, 1095, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1096
 * F_DOUBLE              = __DOUBLE_PRECISION__
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__             # <<<<<<<<<<<<<<
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_FLOAT_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__)) < 0) __PYX_ERR(22, 1096, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Datatype.pyx":1097
 * F_COMPLEX             = __COMPLEX__
 * F_FLOAT_COMPLEX       = __COMPLEX__
 * F_DOUBLE_COMPLEX      = __DOUBLE_COMPLEX__             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_DOUBLE_COMPLEX, ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__)) < 0) __PYX_ERR(22, 1097, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Status.pyx":24
 *         raise TypeError(f"unorderable type '{mod}.{cls}'")
 * 
 *     def __reduce__(self) -> tuple[Any, tuple[Any, ...], dict[str, Any]]:             # <<<<<<<<<<<<<<
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_tuple_Any_tuple_Any_dict_str_Any) < 0) __PYX_ERR(23, 24, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_5__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__350)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(23, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":27
 *         return (__newobj__, (type(self),), self.__getstate__())
 * 
 *     def __getstate__(self) -> dict[str, int]:             # <<<<<<<<<<<<<<
 *         cdef dict state = {
 *             'source': self.Get_source(),
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_dict_str_int) < 0) __PYX_ERR(23, 27, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_7__getstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status___getstate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__352)); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_getstate, __pyx_t_3) < 0) __PYX_ERR(23, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":43
 *         return state
 * 
 *     def __setstate__(self, state: dict[str, int]) -> None:             # <<<<<<<<<<<<<<
 *         self.Set_source(state['source'])
 *         self.Set_tag(state['tag'])
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_state, __pyx_kp_s_dict_str_int) < 0) __PYX_ERR(23, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(23, 43, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_9__setstate__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status___setstate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__353)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_setstate, __pyx_t_9) < 0) __PYX_ERR(23, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":52
 *             self.Set_cancelled(state['cancelled'])
 * 
 *     def Get_source(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message source.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(23, 52, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_11Get_source, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Get_source, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__355)); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Get_source, __pyx_t_3) < 0) __PYX_ERR(23, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":60
 *         return source
 * 
 *     def Set_source(self, int source: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message source.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(23, 60, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(23, 60, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_13Set_source, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Set_source, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__356)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Set_source, __pyx_t_9) < 0) __PYX_ERR(23, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":74
 *             self.Set_source(value)
 * 
 *     def Get_tag(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message tag.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(23, 74, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_15Get_tag, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Get_tag, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__358)); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Get_tag, __pyx_t_3) < 0) __PYX_ERR(23, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":82
 *         return tag
 * 
 *     def Set_tag(self, int tag: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message tag.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(23, 82, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(23, 82, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_17Set_tag, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Set_tag, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Set_tag, __pyx_t_9) < 0) __PYX_ERR(23, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":96
 *             self.Set_tag(value)
 * 
 *     def Get_error(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get message error.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(23, 96, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_19Get_error, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Get_error, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Get_error, __pyx_t_3) < 0) __PYX_ERR(23, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":104
 *         return error
 * 
 *     def Set_error(self, int error: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set message error.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_error, __pyx_n_s_int) < 0) __PYX_ERR(23, 104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(23, 104, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_21Set_error, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Set_error, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__362)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Set_error, __pyx_t_9) < 0) __PYX_ERR(23, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":118
 *             self.Set_error(value)
 * 
 *     def Get_count(self, Datatype datatype: Datatype = BYTE) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of *top level* elements.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_BYTE); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(23, 118, __pyx_L1_error)
  __pyx_k__68 = ((struct PyMPIDatatypeObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_BYTE); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(23, 118, __pyx_L1_error)
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(23, 118, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(23, 118, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(23, 118, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_23Get_count, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Get_count, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__364)); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Get_count, __pyx_t_10) < 0) __PYX_ERR(23, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":135
 *             self.Set_elements(__BYTE__, value)
 * 
 *     def Get_elements(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Get the number of basic elements in a datatype.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(23, 135, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(23, 135, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_25Get_elements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Get_elements, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__366)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Get_elements, __pyx_t_9) < 0) __PYX_ERR(23, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":144
 *         return elements
 * 
 *     def Set_elements(             # <<<<<<<<<<<<<<
 *         self,
 *         Datatype datatype: Datatype,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(23, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_count, __pyx_n_s_int) < 0) __PYX_ERR(23, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(23, 144, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_27Set_elements, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Set_elements, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__368)); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Set_elements, __pyx_t_10) < 0) __PYX_ERR(23, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":158
 *         CHKERR( MPI_Status_set_elements_c(&self.ob_mpi, dtype, count) )
 * 
 *     def Is_cancelled(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test to see if a request was cancelled.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(23, 158, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_29Is_cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Is_cancelled, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__370)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Is_cancelled, __pyx_t_9) < 0) __PYX_ERR(23, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":166
 *         return <bint>flag
 * 
 *     def Set_cancelled(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the cancelled state associated with a status.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_flag, __pyx_n_s_bool) < 0) __PYX_ERR(23, 166, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(23, 166, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_31Set_cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_Set_cancelled, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__371)); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_Set_cancelled, __pyx_t_10) < 0) __PYX_ERR(23, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":186
 *     # --------------
 * 
 *     def py2f(self) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_list_int) < 0) __PYX_ERR(23, 186, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_33py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__373)); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_py2f, __pyx_t_9) < 0) __PYX_ERR(23, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":197
 *         return [f_status[i] for i in range(n)]
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: list[int]) -> Self:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_arg, __pyx_kp_s_list_int) < 0) __PYX_ERR(23, 197, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(23, 197, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_6Status_35f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Status_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__375)); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(23, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_f2py); if (unlikely(!__pyx_t_10)) __PYX_ERR(23, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Status, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(23, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Status);

  /* "src/mpi4py/MPI.src/Status.pyx":211
 * 
 * 
 * F_SOURCE      = MPI_F_SOURCE             # <<<<<<<<<<<<<<
 * F_TAG         = MPI_F_TAG
 * F_ERROR       = MPI_F_ERROR
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_F_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_SOURCE, __pyx_t_9) < 0) __PYX_ERR(23, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":212
 * 
 * F_SOURCE      = MPI_F_SOURCE
 * F_TAG         = MPI_F_TAG             # <<<<<<<<<<<<<<
 * F_ERROR       = MPI_F_ERROR
 * F_STATUS_SIZE = MPI_F_STATUS_SIZE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_F_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_TAG, __pyx_t_9) < 0) __PYX_ERR(23, 212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":213
 * F_SOURCE      = MPI_F_SOURCE
 * F_TAG         = MPI_F_TAG
 * F_ERROR       = MPI_F_ERROR             # <<<<<<<<<<<<<<
 * F_STATUS_SIZE = MPI_F_STATUS_SIZE
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_F_ERROR); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_ERROR, __pyx_t_9) < 0) __PYX_ERR(23, 213, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Status.pyx":214
 * F_TAG         = MPI_F_TAG
 * F_ERROR       = MPI_F_ERROR
 * F_STATUS_SIZE = MPI_F_STATUS_SIZE             # <<<<<<<<<<<<<<
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_F_STATUS_SIZE); if (unlikely(!__pyx_t_9)) __PYX_ERR(23, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_F_STATUS_SIZE, __pyx_t_9) < 0) __PYX_ERR(23, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(24, 19, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__376)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_reduce, __pyx_t_10) < 0) __PYX_ERR(24, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Request:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(24, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(24, 27, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__377)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(24, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":38
 *         return fromhandle(<MPI_Request> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 38, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__378)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_free, __pyx_t_9) < 0) __PYX_ERR(24, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":47
 *     # ---------------------
 * 
 *     def Wait(self, Status status: Status | None = None) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Wait for a non-blocking operation to complete.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 47, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_Literal_True) < 0) __PYX_ERR(24, 47, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_15Wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Wait, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__380)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Wait, __pyx_t_10) < 0) __PYX_ERR(24, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":58
 *         return True
 * 
 *     def Test(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test for the completion of a non-blocking operation.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 58, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(24, 58, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_17Test, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Test, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__382)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Test, __pyx_t_9) < 0) __PYX_ERR(24, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":70
 *         return <bint>flag
 * 
 *     def Get_status(self, Status status: Status | None = None) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Non-destructive test for the completion of a request.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 70, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(24, 70, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_19Get_status, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Get_status, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__383)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status, __pyx_t_10) < 0) __PYX_ERR(24, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":83
 *     # --------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitany(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 83, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 83, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(24, 83, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_21Waitany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Waitany, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__385)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitany, __pyx_t_9) < 0) __PYX_ERR(24, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitany); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitany, __pyx_t_10) < 0) __PYX_ERR(24, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":103
 *         return index
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testany(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 103, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 103, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_int_bool) < 0) __PYX_ERR(24, 103, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_23Testany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Testany, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__387)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testany, __pyx_t_9) < 0) __PYX_ERR(24, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testany); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testany, __pyx_t_10) < 0) __PYX_ERR(24, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":124
 *         return (index, <bint>flag)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_any(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 124, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 124, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_int_bool) < 0) __PYX_ERR(24, 124, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_25Get_status_any, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Get_status_any, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__388)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_any, __pyx_t_9) < 0) __PYX_ERR(24, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_any); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_any, __pyx_t_10) < 0) __PYX_ERR(24, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":145
 *         return (index, <bint>flag)  # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitall(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 145, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 145, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_Literal_True) < 0) __PYX_ERR(24, 145, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_27Waitall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Waitall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__390)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitall, __pyx_t_9) < 0) __PYX_ERR(24, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitall); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitall, __pyx_t_10) < 0) __PYX_ERR(24, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":163
 *         return True
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testall(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 163, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 163, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(24, 163, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_29Testall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Testall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__392)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testall, __pyx_t_9) < 0) __PYX_ERR(24, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testall); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testall, __pyx_t_10) < 0) __PYX_ERR(24, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":182
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_all(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 182, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 182, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(24, 182, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_31Get_status_all, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Get_status_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__393)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_all, __pyx_t_9) < 0) __PYX_ERR(24, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_all); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_all, __pyx_t_10) < 0) __PYX_ERR(24, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":201
 *         return <bint>flag         # ~> MPI-4.1
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Waitsome(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_list_int_None) < 0) __PYX_ERR(24, 201, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_33Waitsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Waitsome, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__395)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitsome, __pyx_t_9) < 0) __PYX_ERR(24, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitsome); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Waitsome, __pyx_t_10) < 0) __PYX_ERR(24, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":222
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Testsome(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 222, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 222, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_list_int_None) < 0) __PYX_ERR(24, 222, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_35Testsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Testsome, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__396)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testsome, __pyx_t_9) < 0) __PYX_ERR(24, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testsome); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Testsome, __pyx_t_10) < 0) __PYX_ERR(24, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":243
 *         return indices
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_status_some(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 243, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 243, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_list_int_None) < 0) __PYX_ERR(24, 243, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_37Get_status_some, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Get_status_some, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__397)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_some, __pyx_t_9) < 0) __PYX_ERR(24, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_some); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Get_status_some, __pyx_t_10) < 0) __PYX_ERR(24, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":267
 *     # ------
 * 
 *     def Cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 267, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_39Cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Cancel, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__398)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Cancel, __pyx_t_9) < 0) __PYX_ERR(24, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":276
 *     # ------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communication request.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 276, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_41Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__399)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_Free, __pyx_t_10) < 0) __PYX_ERR(24, 276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":285
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(24, 285, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_43py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__400)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_py2f, __pyx_t_9) < 0) __PYX_ERR(24, 285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":290
 *         return MPI_Request_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Request:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(24, 290, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(24, 290, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_45f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__401)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(24, 290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_f2py); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(24, 290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":303
 *     # --------------------
 * 
 *     def wait(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 303, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(24, 303, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_47wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_wait, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__403)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_wait, __pyx_t_10) < 0) __PYX_ERR(24, 303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":313
 *         return msg
 * 
 *     def test(             # <<<<<<<<<<<<<<
 *         self,
 *             Status status: Status | None = None,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 313, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_bool_Any_None) < 0) __PYX_ERR(24, 313, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_49test, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_test, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__405)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_test, __pyx_t_9) < 0) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":324
 *         return (<bint>flag, msg)
 * 
 *     def get_status(             # <<<<<<<<<<<<<<
 *         self,
 *         Status status: Status | None = None,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 324, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(24, 324, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_51get_status, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_get_status, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__406)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status, __pyx_t_10) < 0) __PYX_ERR(24, 324, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":337
 *         return <bint>flag
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitany(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 337, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 337, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_int_Any) < 0) __PYX_ERR(24, 337, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_53waitany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_waitany, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__408)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitany, __pyx_t_9) < 0) __PYX_ERR(24, 337, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitany); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitany, __pyx_t_10) < 0) __PYX_ERR(24, 337, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":350
 *         return (index, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testany(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_int_bool_Any_None) < 0) __PYX_ERR(24, 350, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_55testany, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_testany, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__410)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testany, __pyx_t_9) < 0) __PYX_ERR(24, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testany); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testany, __pyx_t_10) < 0) __PYX_ERR(24, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":364
 *         return (index, <bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_any(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 364, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(24, 364, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_int_bool) < 0) __PYX_ERR(24, 364, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_57get_status_any, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_get_status_any, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__412)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_any, __pyx_t_9) < 0) __PYX_ERR(24, 364, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_any); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_any, __pyx_t_10) < 0) __PYX_ERR(24, 364, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":375
 *         return Request.Get_status_any(requests, status)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitall(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 375, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 375, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_list_Any) < 0) __PYX_ERR(24, 375, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_59waitall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_waitall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__414)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitall, __pyx_t_9) < 0) __PYX_ERR(24, 375, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitall); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitall, __pyx_t_10) < 0) __PYX_ERR(24, 375, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":387
 *         return msg
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testall(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 387, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 387, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_bool_list_Any_None) < 0) __PYX_ERR(24, 387, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_61testall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_testall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__416)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testall, __pyx_t_9) < 0) __PYX_ERR(24, 387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testall); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testall, __pyx_t_10) < 0) __PYX_ERR(24, 387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":400
 *         return (<bint>flag, msg)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_all(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 400, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 400, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(24, 400, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_63get_status_all, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_get_status_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__418)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_all, __pyx_t_9) < 0) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_all); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_all, __pyx_t_10) < 0) __PYX_ERR(24, 400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":411
 *         return Request.Get_status_all(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def waitsome(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 411, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 411, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_list_int_None_list_Any_Non) < 0) __PYX_ERR(24, 411, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_65waitsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_waitsome, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__419)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitsome, __pyx_t_9) < 0) __PYX_ERR(24, 411, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitsome); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_waitsome, __pyx_t_10) < 0) __PYX_ERR(24, 411, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":422
 *         return PyMPI_waitsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def testsome(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 422, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 422, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_list_int_None_list_Any_Non) < 0) __PYX_ERR(24, 422, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_67testsome, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_testsome, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__420)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testsome, __pyx_t_9) < 0) __PYX_ERR(24, 422, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testsome); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 422, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_testsome, __pyx_t_10) < 0) __PYX_ERR(24, 422, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":433
 *         return PyMPI_testsome(requests, statuses)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def get_status_some(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_Sequence_Request) < 0) __PYX_ERR(24, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_statuses, __pyx_kp_s_list_Status_None) < 0) __PYX_ERR(24, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_list_int_None) < 0) __PYX_ERR(24, 433, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_69get_status_some, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_get_status_some, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__421)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_some, __pyx_t_9) < 0) __PYX_ERR(24, 433, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_some); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_get_status_some, __pyx_t_10) < 0) __PYX_ERR(24, 433, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":444
 *         return Request.Get_status_some(requests, statuses)
 * 
 *     def cancel(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Cancel a request.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 444, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Request_71cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Request_cancel, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__422)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Request, __pyx_n_s_cancel, __pyx_t_9) < 0) __PYX_ERR(24, 444, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Request);

  /* "src/mpi4py/MPI.src/Request.pyx":460
 *         <void>(<Prequest?>request)
 * 
 *     def Start(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Initiate a communication with a persistent request.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 460, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_3Start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Prequest_Start, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__423)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Start, __pyx_t_10) < 0) __PYX_ERR(24, 460, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "src/mpi4py/MPI.src/Request.pyx":466
 *         with nogil: CHKERR( MPI_Start(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Startall(cls, requests: list[Prequest]) -> None:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_requests, __pyx_kp_s_list_Prequest) < 0) __PYX_ERR(24, 466, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 466, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_5Startall, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Prequest_Startall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__425)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Startall, __pyx_t_9) < 0) __PYX_ERR(24, 466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Startall); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Startall, __pyx_t_10) < 0) __PYX_ERR(24, 466, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "src/mpi4py/MPI.src/Request.pyx":481
 *     # ----------------------
 * 
 *     def Pready(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_partition, __pyx_n_s_int) < 0) __PYX_ERR(24, 481, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 481, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_7Pready, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Prequest_Pready, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__427)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Pready, __pyx_t_9) < 0) __PYX_ERR(24, 481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "src/mpi4py/MPI.src/Request.pyx":490
 *         CHKERR( MPI_Pready(partition, self.ob_mpi) )
 * 
 *     def Pready_range(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition_low: int,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_partition_low, __pyx_n_s_int) < 0) __PYX_ERR(24, 490, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_partition_high, __pyx_n_s_int) < 0) __PYX_ERR(24, 490, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 490, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_9Pready_range, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Prequest_Pready_range, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__429)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Pready_range, __pyx_t_10) < 0) __PYX_ERR(24, 490, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "src/mpi4py/MPI.src/Request.pyx":500
 *         CHKERR( MPI_Pready_range(partition_low, partition_high, self.ob_mpi) )
 * 
 *     def Pready_list(             # <<<<<<<<<<<<<<
 *         self,
 *         partitions: Sequence[int],
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_partitions, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(24, 500, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 500, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_11Pready_list, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Prequest_Pready_list, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__431)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Pready_list, __pyx_t_9) < 0) __PYX_ERR(24, 500, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "src/mpi4py/MPI.src/Request.pyx":511
 *         CHKERR( MPI_Pready_list(length, array_of_partitions, self.ob_mpi) )
 * 
 *     def Parrived(             # <<<<<<<<<<<<<<
 *         self,
 *         int partition: int,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_partition, __pyx_n_s_int) < 0) __PYX_ERR(24, 511, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(24, 511, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Prequest_13Parrived, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Prequest_Parrived, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__433)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Prequest, __pyx_n_s_Parrived, __pyx_t_10) < 0) __PYX_ERR(24, 511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Prequest);

  /* "src/mpi4py/MPI.src/Request.pyx":533
 *         <void>(<Grequest?>request)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Start(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_query_fn, __pyx_kp_s_Callable_None_None) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_free_fn, __pyx_kp_s_Callable_None_None) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_cancel_fn, __pyx_kp_s_Callable_None_None) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_args, __pyx_kp_s_tuple_Any_None) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_kwargs, __pyx_kp_s_dict_str_Any_None) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Grequest) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Grequest_3Start, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Grequest_Start, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__435)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__436);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_n_s_Start, __pyx_t_9) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Grequest);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_n_s_Start); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_n_s_Start, __pyx_t_10) < 0) __PYX_ERR(24, 533, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Grequest);

  /* "src/mpi4py/MPI.src/Request.pyx":555
 *         return request
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 555, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Grequest_5Complete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Grequest_Complete, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__438)); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_n_s_Complete, __pyx_t_9) < 0) __PYX_ERR(24, 555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Grequest);

  /* "src/mpi4py/MPI.src/Request.pyx":567
 *         self.ob_grequest = self.ob_mpi  # or MPI_REQUEST_NULL ??
 * 
 *     def complete(self, obj: Any = None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Notify that a user-defined request is complete.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(24, 567, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(24, 567, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Grequest_7complete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Grequest_complete, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__439)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Grequest, __pyx_n_s_complete, __pyx_t_10) < 0) __PYX_ERR(24, 567, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Grequest);

  /* "src/mpi4py/MPI.src/Request.pyx":575
 * 
 * 
 * cdef Request __REQUEST_NULL__ = def_Request( MPI_REQUEST_NULL , "REQUEST_NULL" )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Request(MPI_REQUEST_NULL, __pyx_n_s_REQUEST_NULL)); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REQUEST_NULL__, ((struct PyMPIRequestObject *)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Request.pyx":581
 * # --------------------------
 * 
 * REQUEST_NULL = __REQUEST_NULL__  #: Null request handle             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REQUEST_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___REQUEST_NULL__)) < 0) __PYX_ERR(24, 581, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(25, 19, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__440)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(25, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Message:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(25, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Message) < 0) __PYX_ERR(25, 27, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__441)); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(25, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":34
 *         return fromhandle(<MPI_Message> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Do nothing.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(25, 34, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__442)); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_free, __pyx_t_10) < 0) __PYX_ERR(25, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":47
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_k__69 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":48
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_k__70 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":47
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "src/mpi4py/MPI.src/Message.pyx":48
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Message.pyx":43
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Probe(
 *         cls,
 */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_10);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10)) __PYX_ERR(25, 43, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9)) __PYX_ERR(25, 43, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None)) __PYX_ERR(25, 43, __pyx_L1_error);
  __pyx_t_10 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(25, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(25, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(25, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(25, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(25, 43, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_15Probe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_Probe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__444)); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Probe, __pyx_t_10) < 0) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Probe); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Probe, __pyx_t_9) < 0) __PYX_ERR(25, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":66
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__71 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":67
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__72 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":66
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Message.pyx":67
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "src/mpi4py/MPI.src/Message.pyx":62
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Iprobe(
 *         cls,
 */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(25, 62, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_10);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10)) __PYX_ERR(25, 62, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None)) __PYX_ERR(25, 62, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(25, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(25, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(25, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(25, 62, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_Self_None) < 0) __PYX_ERR(25, 62, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_17Iprobe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_Iprobe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__446)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Iprobe, __pyx_t_9) < 0) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Iprobe); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Iprobe, __pyx_t_10) < 0) __PYX_ERR(25, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":86
 *     # ----------------
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(25, 86, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(25, 86, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(25, 86, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_19Recv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_Recv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__448)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Recv, __pyx_t_9) < 0) __PYX_ERR(25, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":106
 *             self.ob_mpi = message
 * 
 *     def Irecv(self, buf: BufSpec) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(25, 106, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(25, 106, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_21Irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_Irecv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__450)); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_Irecv, __pyx_t_10) < 0) __PYX_ERR(25, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":131
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_k__73 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":132
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_k__74 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":131
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "src/mpi4py/MPI.src/Message.pyx":132
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Message.pyx":127
 *     # --------------------
 *     #
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def probe(
 *         cls,
 */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_10);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10)) __PYX_ERR(25, 127, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9)) __PYX_ERR(25, 127, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None)) __PYX_ERR(25, 127, __pyx_L1_error);
  __pyx_t_10 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(25, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(25, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(25, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(25, 127, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(25, 127, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_23probe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_probe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__452)); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_probe, __pyx_t_10) < 0) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_probe); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_probe, __pyx_t_9) < 0) __PYX_ERR(25, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":148
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__75 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":149
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__76 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Message.pyx":148
 *         cls,
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Message.pyx":149
 *         Comm comm: Comm,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Self | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(25, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "src/mpi4py/MPI.src/Message.pyx":144
 *         return message
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def iprobe(
 *         cls,
 */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(25, 144, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_10);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10)) __PYX_ERR(25, 144, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, Py_None)) __PYX_ERR(25, 144, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(25, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(25, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(25, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(25, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_Self_None) < 0) __PYX_ERR(25, 144, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_25iprobe, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_iprobe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__454)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_iprobe, __pyx_t_9) < 0) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_iprobe); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_iprobe, __pyx_t_10) < 0) __PYX_ERR(25, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":163
 *         return message
 * 
 *     def recv(self, Status status: Status | None = None) -> Any:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking receive of matched message.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(25, 163, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(25, 163, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_27recv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_recv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__456)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_recv, __pyx_t_9) < 0) __PYX_ERR(25, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":175
 *         return rmsg
 * 
 *     def irecv(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking receive of matched message.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(25, 175, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_29irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_irecv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__458)); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_irecv, __pyx_t_10) < 0) __PYX_ERR(25, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":190
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(25, 190, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_31py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__459)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_py2f, __pyx_t_9) < 0) __PYX_ERR(25, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":195
 *         return MPI_Message_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Message:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(25, 195, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Message) < 0) __PYX_ERR(25, 195, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Message_33f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Message_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__460)); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_f2py); if (unlikely(!__pyx_t_10)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Message, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Message);

  /* "src/mpi4py/MPI.src/Message.pyx":202
 * 
 * 
 * cdef Message __MESSAGE_NULL__    = def_Message ( MPI_MESSAGE_NULL    , "MESSAGE_NULL"    )  # noqa             # <<<<<<<<<<<<<<
 * cdef Message __MESSAGE_NO_PROC__ = def_Message ( MPI_MESSAGE_NO_PROC , "MESSAGE_NO_PROC" )  # noqa
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Message(MPI_MESSAGE_NULL, __pyx_n_s_MESSAGE_NULL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__, ((struct PyMPIMessageObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":203
 * 
 * cdef Message __MESSAGE_NULL__    = def_Message ( MPI_MESSAGE_NULL    , "MESSAGE_NULL"    )  # noqa
 * cdef Message __MESSAGE_NO_PROC__ = def_Message ( MPI_MESSAGE_NO_PROC , "MESSAGE_NO_PROC" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Message(MPI_MESSAGE_NO_PROC, __pyx_n_s_MESSAGE_NO_PROC)); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__, ((struct PyMPIMessageObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Message.pyx":209
 * # --------------------------
 * 
 * MESSAGE_NULL    = __MESSAGE_NULL__     #: Null message handle             # <<<<<<<<<<<<<<
 * MESSAGE_NO_PROC = __MESSAGE_NO_PROC__  #: No-proc message handle
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MESSAGE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__)) < 0) __PYX_ERR(25, 209, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Message.pyx":210
 * 
 * MESSAGE_NULL    = __MESSAGE_NULL__     #: Null message handle
 * MESSAGE_NO_PROC = __MESSAGE_NO_PROC__  #: No-proc message handle             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MESSAGE_NO_PROC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__)) < 0) __PYX_ERR(25, 210, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Op(self)
 * 
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(26, 19, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__461)); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_reduce, __pyx_t_10) < 0) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":31
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Op:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Op) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_13fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__462)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":38
 *         return fromhandle(<MPI_Op> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(26, 38, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_15free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__463)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_free, __pyx_t_9) < 0) __PYX_ERR(26, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":47
 *     # ---------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_function, __pyx_kp_s_Callable_Buffer_Buffer_Datatype) < 0) __PYX_ERR(26, 47, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_commute, __pyx_n_s_bool) < 0) __PYX_ERR(26, 47, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(26, 47, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_17Create, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_Create, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__465)); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__210);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_Create, __pyx_t_10) < 0) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_Create); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_Create, __pyx_t_9) < 0) __PYX_ERR(26, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":70
 *         return self
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a user-defined reduction operation.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(26, 70, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_19Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__466)); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_Free, __pyx_t_10) < 0) __PYX_ERR(26, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":94
 *     # -----------------------
 * 
 *     def Is_commutative(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Query reduction operations for their commutativity.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(26, 94, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_21Is_commutative, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_Is_commutative, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__467)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_Is_commutative, __pyx_t_9) < 0) __PYX_ERR(26, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":107
 *             return self.Is_commutative()
 * 
 *     def Reduce_local(self, inbuf: BufSpec, inoutbuf: BufSpec) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Apply a reduction operation to local data.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_inbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(26, 107, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_inoutbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(26, 107, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(26, 107, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_23Reduce_local, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_Reduce_local, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__469)); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_Reduce_local, __pyx_t_10) < 0) __PYX_ERR(26, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":145
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(26, 145, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_25py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__470)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_py2f, __pyx_t_9) < 0) __PYX_ERR(26, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":150
 *         return MPI_Op_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Op:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(26, 150, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Op) < 0) __PYX_ERR(26, 150, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_2Op_27f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Op_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__471)); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(26, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_f2py); if (unlikely(!__pyx_t_10)) __PYX_ERR(26, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Op, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(26, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Op);

  /* "src/mpi4py/MPI.src/Op.pyx":157
 * 
 * 
 * cdef Op __OP_NULL__ = def_Op( MPI_OP_NULL , "OP_NULL" )             # <<<<<<<<<<<<<<
 * cdef Op __MAX__     = def_Op( MPI_MAX     , "MAX"     )
 * cdef Op __MIN__     = def_Op( MPI_MIN     , "MIN"     )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_OP_NULL, __pyx_n_s_OP_NULL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___OP_NULL__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":158
 * 
 * cdef Op __OP_NULL__ = def_Op( MPI_OP_NULL , "OP_NULL" )
 * cdef Op __MAX__     = def_Op( MPI_MAX     , "MAX"     )             # <<<<<<<<<<<<<<
 * cdef Op __MIN__     = def_Op( MPI_MIN     , "MIN"     )
 * cdef Op __SUM__     = def_Op( MPI_SUM     , "SUM"     )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MAX, __pyx_n_s_MAX)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MAX__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":159
 * cdef Op __OP_NULL__ = def_Op( MPI_OP_NULL , "OP_NULL" )
 * cdef Op __MAX__     = def_Op( MPI_MAX     , "MAX"     )
 * cdef Op __MIN__     = def_Op( MPI_MIN     , "MIN"     )             # <<<<<<<<<<<<<<
 * cdef Op __SUM__     = def_Op( MPI_SUM     , "SUM"     )
 * cdef Op __PROD__    = def_Op( MPI_PROD    , "PROD"    )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MIN, __pyx_n_s_MIN)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MIN__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":160
 * cdef Op __MAX__     = def_Op( MPI_MAX     , "MAX"     )
 * cdef Op __MIN__     = def_Op( MPI_MIN     , "MIN"     )
 * cdef Op __SUM__     = def_Op( MPI_SUM     , "SUM"     )             # <<<<<<<<<<<<<<
 * cdef Op __PROD__    = def_Op( MPI_PROD    , "PROD"    )
 * cdef Op __LAND__    = def_Op( MPI_LAND    , "LAND"    )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_SUM, __pyx_n_s_SUM)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SUM__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":161
 * cdef Op __MIN__     = def_Op( MPI_MIN     , "MIN"     )
 * cdef Op __SUM__     = def_Op( MPI_SUM     , "SUM"     )
 * cdef Op __PROD__    = def_Op( MPI_PROD    , "PROD"    )             # <<<<<<<<<<<<<<
 * cdef Op __LAND__    = def_Op( MPI_LAND    , "LAND"    )
 * cdef Op __BAND__    = def_Op( MPI_BAND    , "BAND"    )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_PROD, __pyx_n_s_PROD)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___PROD__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":162
 * cdef Op __SUM__     = def_Op( MPI_SUM     , "SUM"     )
 * cdef Op __PROD__    = def_Op( MPI_PROD    , "PROD"    )
 * cdef Op __LAND__    = def_Op( MPI_LAND    , "LAND"    )             # <<<<<<<<<<<<<<
 * cdef Op __BAND__    = def_Op( MPI_BAND    , "BAND"    )
 * cdef Op __LOR__     = def_Op( MPI_LOR     , "LOR"     )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_LAND, __pyx_n_s_LAND)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LAND__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":163
 * cdef Op __PROD__    = def_Op( MPI_PROD    , "PROD"    )
 * cdef Op __LAND__    = def_Op( MPI_LAND    , "LAND"    )
 * cdef Op __BAND__    = def_Op( MPI_BAND    , "BAND"    )             # <<<<<<<<<<<<<<
 * cdef Op __LOR__     = def_Op( MPI_LOR     , "LOR"     )
 * cdef Op __BOR__     = def_Op( MPI_BOR     , "BOR"     )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_BAND, __pyx_n_s_BAND)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BAND__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":164
 * cdef Op __LAND__    = def_Op( MPI_LAND    , "LAND"    )
 * cdef Op __BAND__    = def_Op( MPI_BAND    , "BAND"    )
 * cdef Op __LOR__     = def_Op( MPI_LOR     , "LOR"     )             # <<<<<<<<<<<<<<
 * cdef Op __BOR__     = def_Op( MPI_BOR     , "BOR"     )
 * cdef Op __LXOR__    = def_Op( MPI_LXOR    , "LXOR"    )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_LOR, __pyx_n_s_LOR)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LOR__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":165
 * cdef Op __BAND__    = def_Op( MPI_BAND    , "BAND"    )
 * cdef Op __LOR__     = def_Op( MPI_LOR     , "LOR"     )
 * cdef Op __BOR__     = def_Op( MPI_BOR     , "BOR"     )             # <<<<<<<<<<<<<<
 * cdef Op __LXOR__    = def_Op( MPI_LXOR    , "LXOR"    )
 * cdef Op __BXOR__    = def_Op( MPI_BXOR    , "BXOR"    )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_BOR, __pyx_n_s_BOR)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BOR__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":166
 * cdef Op __LOR__     = def_Op( MPI_LOR     , "LOR"     )
 * cdef Op __BOR__     = def_Op( MPI_BOR     , "BOR"     )
 * cdef Op __LXOR__    = def_Op( MPI_LXOR    , "LXOR"    )             # <<<<<<<<<<<<<<
 * cdef Op __BXOR__    = def_Op( MPI_BXOR    , "BXOR"    )
 * cdef Op __MAXLOC__  = def_Op( MPI_MAXLOC  , "MAXLOC"  )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_LXOR, __pyx_n_s_LXOR)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___LXOR__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":167
 * cdef Op __BOR__     = def_Op( MPI_BOR     , "BOR"     )
 * cdef Op __LXOR__    = def_Op( MPI_LXOR    , "LXOR"    )
 * cdef Op __BXOR__    = def_Op( MPI_BXOR    , "BXOR"    )             # <<<<<<<<<<<<<<
 * cdef Op __MAXLOC__  = def_Op( MPI_MAXLOC  , "MAXLOC"  )
 * cdef Op __MINLOC__  = def_Op( MPI_MINLOC  , "MINLOC"  )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_BXOR, __pyx_n_s_BXOR)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___BXOR__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":168
 * cdef Op __LXOR__    = def_Op( MPI_LXOR    , "LXOR"    )
 * cdef Op __BXOR__    = def_Op( MPI_BXOR    , "BXOR"    )
 * cdef Op __MAXLOC__  = def_Op( MPI_MAXLOC  , "MAXLOC"  )             # <<<<<<<<<<<<<<
 * cdef Op __MINLOC__  = def_Op( MPI_MINLOC  , "MINLOC"  )
 * cdef Op __REPLACE__ = def_Op( MPI_REPLACE , "REPLACE" )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MAXLOC, __pyx_n_s_MAXLOC)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MAXLOC__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":169
 * cdef Op __BXOR__    = def_Op( MPI_BXOR    , "BXOR"    )
 * cdef Op __MAXLOC__  = def_Op( MPI_MAXLOC  , "MAXLOC"  )
 * cdef Op __MINLOC__  = def_Op( MPI_MINLOC  , "MINLOC"  )             # <<<<<<<<<<<<<<
 * cdef Op __REPLACE__ = def_Op( MPI_REPLACE , "REPLACE" )
 * cdef Op __NO_OP__   = def_Op( MPI_NO_OP   , "NO_OP"   )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_MINLOC, __pyx_n_s_MINLOC)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___MINLOC__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":170
 * cdef Op __MAXLOC__  = def_Op( MPI_MAXLOC  , "MAXLOC"  )
 * cdef Op __MINLOC__  = def_Op( MPI_MINLOC  , "MINLOC"  )
 * cdef Op __REPLACE__ = def_Op( MPI_REPLACE , "REPLACE" )             # <<<<<<<<<<<<<<
 * cdef Op __NO_OP__   = def_Op( MPI_NO_OP   , "NO_OP"   )
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_REPLACE, __pyx_n_s_REPLACE)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___REPLACE__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":171
 * cdef Op __MINLOC__  = def_Op( MPI_MINLOC  , "MINLOC"  )
 * cdef Op __REPLACE__ = def_Op( MPI_REPLACE , "REPLACE" )
 * cdef Op __NO_OP__   = def_Op( MPI_NO_OP   , "NO_OP"   )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Op(MPI_NO_OP, __pyx_n_s_NO_OP)); if (unlikely(!__pyx_t_9)) __PYX_ERR(26, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___NO_OP__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___NO_OP__, ((struct PyMPIOpObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Op.pyx":177
 * # ----------------------------
 * 
 * OP_NULL = __OP_NULL__  #: Null             # <<<<<<<<<<<<<<
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___OP_NULL__)) < 0) __PYX_ERR(26, 177, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":178
 * 
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum             # <<<<<<<<<<<<<<
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAX__)) < 0) __PYX_ERR(26, 178, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":179
 * OP_NULL = __OP_NULL__  #: Null
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum             # <<<<<<<<<<<<<<
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MIN, ((PyObject *)__pyx_v_6mpi4py_3MPI___MIN__)) < 0) __PYX_ERR(26, 179, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":180
 * MAX     = __MAX__      #: Maximum
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum             # <<<<<<<<<<<<<<
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SUM, ((PyObject *)__pyx_v_6mpi4py_3MPI___SUM__)) < 0) __PYX_ERR(26, 180, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":181
 * MIN     = __MIN__      #: Minimum
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product             # <<<<<<<<<<<<<<
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PROD, ((PyObject *)__pyx_v_6mpi4py_3MPI___PROD__)) < 0) __PYX_ERR(26, 181, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":182
 * SUM     = __SUM__      #: Sum
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and             # <<<<<<<<<<<<<<
 * BAND    = __BAND__     #: Bit-wise and
 * LOR     = __LOR__      #: Logical or
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___LAND__)) < 0) __PYX_ERR(26, 182, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":183
 * PROD    = __PROD__     #: Product
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and             # <<<<<<<<<<<<<<
 * LOR     = __LOR__      #: Logical or
 * BOR     = __BOR__      #: Bit-wise or
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BAND, ((PyObject *)__pyx_v_6mpi4py_3MPI___BAND__)) < 0) __PYX_ERR(26, 183, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":184
 * LAND    = __LAND__     #: Logical and
 * BAND    = __BAND__     #: Bit-wise and
 * LOR     = __LOR__      #: Logical or             # <<<<<<<<<<<<<<
 * BOR     = __BOR__      #: Bit-wise or
 * LXOR    = __LXOR__     #: Logical xor
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LOR__)) < 0) __PYX_ERR(26, 184, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":185
 * BAND    = __BAND__     #: Bit-wise and
 * LOR     = __LOR__      #: Logical or
 * BOR     = __BOR__      #: Bit-wise or             # <<<<<<<<<<<<<<
 * LXOR    = __LXOR__     #: Logical xor
 * BXOR    = __BXOR__     #: Bit-wise xor
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BOR__)) < 0) __PYX_ERR(26, 185, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":186
 * LOR     = __LOR__      #: Logical or
 * BOR     = __BOR__      #: Bit-wise or
 * LXOR    = __LXOR__     #: Logical xor             # <<<<<<<<<<<<<<
 * BXOR    = __BXOR__     #: Bit-wise xor
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___LXOR__)) < 0) __PYX_ERR(26, 186, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":187
 * BOR     = __BOR__      #: Bit-wise or
 * LXOR    = __LXOR__     #: Logical xor
 * BXOR    = __BXOR__     #: Bit-wise xor             # <<<<<<<<<<<<<<
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 * MINLOC  = __MINLOC__   #: Minimum and location
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BXOR, ((PyObject *)__pyx_v_6mpi4py_3MPI___BXOR__)) < 0) __PYX_ERR(26, 187, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":188
 * LXOR    = __LXOR__     #: Logical xor
 * BXOR    = __BXOR__     #: Bit-wise xor
 * MAXLOC  = __MAXLOC__   #: Maximum and location             # <<<<<<<<<<<<<<
 * MINLOC  = __MINLOC__   #: Minimum and location
 * REPLACE = __REPLACE__  #: Replace (for RMA)
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAXLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MAXLOC__)) < 0) __PYX_ERR(26, 188, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":189
 * BXOR    = __BXOR__     #: Bit-wise xor
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 * MINLOC  = __MINLOC__   #: Minimum and location             # <<<<<<<<<<<<<<
 * REPLACE = __REPLACE__  #: Replace (for RMA)
 * NO_OP   = __NO_OP__    #: No-op   (for RMA)
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MINLOC, ((PyObject *)__pyx_v_6mpi4py_3MPI___MINLOC__)) < 0) __PYX_ERR(26, 189, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":190
 * MAXLOC  = __MAXLOC__   #: Maximum and location
 * MINLOC  = __MINLOC__   #: Minimum and location
 * REPLACE = __REPLACE__  #: Replace (for RMA)             # <<<<<<<<<<<<<<
 * NO_OP   = __NO_OP__    #: No-op   (for RMA)
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REPLACE, ((PyObject *)__pyx_v_6mpi4py_3MPI___REPLACE__)) < 0) __PYX_ERR(26, 190, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Op.pyx":191
 * MINLOC  = __MINLOC__   #: Minimum and location
 * REPLACE = __REPLACE__  #: Replace (for RMA)
 * NO_OP   = __NO_OP__    #: No-op   (for RMA)             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_OP, ((PyObject *)__pyx_v_6mpi4py_3MPI___NO_OP__)) < 0) __PYX_ERR(26, 191, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(27, 19, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__472)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_reduce, __pyx_t_10) < 0) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Group:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(27, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(27, 27, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__473)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(27, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":34
 *         return fromhandle(<MPI_Group> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(27, 34, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__474)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_free, __pyx_t_9) < 0) __PYX_ERR(27, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":43
 *     # ---------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a group.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(27, 43, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_15Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Get_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__475)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Get_size, __pyx_t_10) < 0) __PYX_ERR(27, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":56
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a group.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(27, 56, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_17Get_rank, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Get_rank, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__477)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Get_rank, __pyx_t_9) < 0) __PYX_ERR(27, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":69
 *             return self.Get_rank()
 * 
 *     def Translate_ranks(             # <<<<<<<<<<<<<<
 *         self,
 *         ranks: Sequence[int] | None = None,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_ranks, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(27, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_group, __pyx_kp_s_Group_None) < 0) __PYX_ERR(27, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_list_int) < 0) __PYX_ERR(27, 69, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_19Translate_ranks, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Translate_ranks, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__479)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__480);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Translate_ranks, __pyx_t_10) < 0) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":105
 *         return ranks2
 * 
 *     def Compare(self, Group group: Group) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two groups.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_group, __pyx_n_s_Group) < 0) __PYX_ERR(27, 105, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(27, 105, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_21Compare, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Compare, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__482)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Compare, __pyx_t_9) < 0) __PYX_ERR(27, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":117
 *     # ------------------
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a group.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 117, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_23Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Dup, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__484)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Dup, __pyx_t_10) < 0) __PYX_ERR(27, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":125
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Union(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_group1, __pyx_n_s_Group) < 0) __PYX_ERR(27, 125, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_group2, __pyx_n_s_Group) < 0) __PYX_ERR(27, 125, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 125, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_25Union, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Union, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__486)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Union, __pyx_t_9) < 0) __PYX_ERR(27, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Union); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Union, __pyx_t_10) < 0) __PYX_ERR(27, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":135
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Intersection(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_group1, __pyx_n_s_Group) < 0) __PYX_ERR(27, 135, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_group2, __pyx_n_s_Group) < 0) __PYX_ERR(27, 135, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 135, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_27Intersection, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Intersection, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__487)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Intersection, __pyx_t_9) < 0) __PYX_ERR(27, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Intersection); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Intersection, __pyx_t_10) < 0) __PYX_ERR(27, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":145
 *         return group
 * 
 *     Intersect = Intersection             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Intersection); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Intersect, __pyx_t_10) < 0) __PYX_ERR(27, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":147
 *     Intersect = Intersection
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Difference(cls, Group group1: Group, Group group2: Group) -> Self:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_group1, __pyx_n_s_Group) < 0) __PYX_ERR(27, 147, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_group2, __pyx_n_s_Group) < 0) __PYX_ERR(27, 147, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 147, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_29Difference, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Difference, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__488)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Difference, __pyx_t_9) < 0) __PYX_ERR(27, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Difference); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Difference, __pyx_t_10) < 0) __PYX_ERR(27, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":157
 *         return group
 * 
 *     def Incl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including listed members.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_ranks, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(27, 157, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 157, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_31Incl, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Incl, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__490)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Incl, __pyx_t_9) < 0) __PYX_ERR(27, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":167
 *         return group
 * 
 *     def Excl(self, ranks: Sequence[int]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding listed members.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_ranks, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(27, 167, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 167, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_33Excl, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Excl, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__491)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Excl, __pyx_t_10) < 0) __PYX_ERR(27, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":177
 *         return group
 * 
 *     def Range_incl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by including ranges of members.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_ranks, __pyx_kp_s_Sequence_tuple_int_int_int) < 0) __PYX_ERR(27, 177, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 177, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_35Range_incl, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Range_incl, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__493)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Range_incl, __pyx_t_9) < 0) __PYX_ERR(27, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":192
 *         return group
 * 
 *     def Range_excl(self, ranks: Sequence[tuple[int, int, int]]) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group by excluding ranges of members.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_ranks, __pyx_kp_s_Sequence_tuple_int_int_int) < 0) __PYX_ERR(27, 192, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 192, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_37Range_excl, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Range_excl, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__494)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Range_excl, __pyx_t_10) < 0) __PYX_ERR(27, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":207
 *         return group
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_session_pset(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_session, __pyx_n_s_Session) < 0) __PYX_ERR(27, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_pset_name, __pyx_n_s_str) < 0) __PYX_ERR(27, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(27, 207, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_39Create_from_session_pset, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Create_from_session_pset, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__496)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Create_from_session_pset, __pyx_t_9) < 0) __PYX_ERR(27, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Create_from_session_pset); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Create_from_session_pset, __pyx_t_10) < 0) __PYX_ERR(27, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":226
 *     # ----------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a group.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(27, 226, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_41Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__497)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_Free, __pyx_t_9) < 0) __PYX_ERR(27, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":236
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(27, 236, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_43py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__498)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_py2f, __pyx_t_10) < 0) __PYX_ERR(27, 236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":241
 *         return MPI_Group_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Group:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(27, 241, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(27, 241, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_5Group_45f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Group_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__499)); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(27, 241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_f2py); if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Group, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(27, 241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Group);

  /* "src/mpi4py/MPI.src/Group.pyx":248
 * 
 * 
 * cdef Group __GROUP_NULL__  = def_Group ( MPI_GROUP_NULL  , "GROUP_NULL"  )             # <<<<<<<<<<<<<<
 * cdef Group __GROUP_EMPTY__ = def_Group ( MPI_GROUP_EMPTY , "GROUP_EMPTY" )
 * 
 */
  __pyx_t_10 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Group(MPI_GROUP_NULL, __pyx_n_s_GROUP_NULL)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___GROUP_NULL__, ((struct PyMPIGroupObject *)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":249
 * 
 * cdef Group __GROUP_NULL__  = def_Group ( MPI_GROUP_NULL  , "GROUP_NULL"  )
 * cdef Group __GROUP_EMPTY__ = def_Group ( MPI_GROUP_EMPTY , "GROUP_EMPTY" )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Group(MPI_GROUP_EMPTY, __pyx_n_s_GROUP_EMPTY)); if (unlikely(!__pyx_t_10)) __PYX_ERR(27, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__, ((struct PyMPIGroupObject *)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Group.pyx":255
 * # ------------------------
 * 
 * GROUP_NULL  = __GROUP_NULL__   #: Null group handle             # <<<<<<<<<<<<<<
 * GROUP_EMPTY = __GROUP_EMPTY__  #: Empty group handle
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GROUP_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_NULL__)) < 0) __PYX_ERR(27, 255, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Group.pyx":256
 * 
 * GROUP_NULL  = __GROUP_NULL__   #: Null group handle
 * GROUP_EMPTY = __GROUP_EMPTY__  #: Empty group handle             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GROUP_EMPTY, ((PyObject *)__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__)) < 0) __PYX_ERR(27, 256, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_Info(self)
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(28, 19, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__500)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Info:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(28, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(28, 27, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__501)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":34
 *         return fromhandle(<MPI_Info> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(28, 34, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__502)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_free, __pyx_t_10) < 0) __PYX_ERR(28, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":43
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_items, __pyx_kp_s_Info_Mapping_str_str_Iterable_tu) < 0) __PYX_ERR(28, 43, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(28, 43, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_15Create, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Create, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__504)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Create, __pyx_t_9) < 0) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Create); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Create, __pyx_t_10) < 0) __PYX_ERR(28, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":72
 *         return info
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_env(cls, args: Sequence[str] | None = None) -> Self:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_args, __pyx_kp_s_Sequence_str_None) < 0) __PYX_ERR(28, 72, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(28, 72, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_17Create_env, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Create_env, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__506)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Create_env, __pyx_t_9) < 0) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Create_env); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Create_env, __pyx_t_10) < 0) __PYX_ERR(28, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":85
 *         return info
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an info object.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(28, 85, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_19Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__507)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Free, __pyx_t_9) < 0) __PYX_ERR(28, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":92
 *         if self is __INFO_ENV__: self.ob_mpi = MPI_INFO_ENV
 * 
 *     def Dup(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate an existing info object.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(28, 92, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_21Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Dup, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__509)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Dup, __pyx_t_10) < 0) __PYX_ERR(28, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":100
 *         return info
 * 
 *     def Get(self, key: str) -> str | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve the value associated with a key.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_key, __pyx_n_s_str) < 0) __PYX_ERR(28, 100, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_str_None) < 0) __PYX_ERR(28, 100, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_23Get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Get, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__511)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Get, __pyx_t_9) < 0) __PYX_ERR(28, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":114
 *         return mpistr(cvalue)
 * 
 *     def Set(self, key: str, value: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store a value associated with a key.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_key, __pyx_n_s_str) < 0) __PYX_ERR(28, 114, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_value, __pyx_n_s_str) < 0) __PYX_ERR(28, 114, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(28, 114, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_25Set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Set, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Set, __pyx_t_10) < 0) __PYX_ERR(28, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":124
 *         CHKERR( MPI_Info_set(self.ob_mpi, ckey, cvalue) )
 * 
 *     def Delete(self, key: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove a (key, value) pair from info.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_key, __pyx_n_s_str) < 0) __PYX_ERR(28, 124, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(28, 124, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_27Delete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Delete, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__515)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Delete, __pyx_t_9) < 0) __PYX_ERR(28, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":132
 *         CHKERR( MPI_Info_delete(self.ob_mpi, ckey) )
 * 
 *     def Get_nkeys(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of currently defined keys in info.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(28, 132, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_29Get_nkeys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Get_nkeys, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__517)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Get_nkeys, __pyx_t_10) < 0) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":140
 *         return nkeys
 * 
 *     def Get_nthkey(self, int n: int) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Return the *n*-th defined key in info.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_n, __pyx_n_s_int) < 0) __PYX_ERR(28, 140, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(28, 140, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_31Get_nthkey, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_Get_nthkey, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__519)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_Get_nthkey, __pyx_t_9) < 0) __PYX_ERR(28, 140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":153
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(28, 153, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_33py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__520)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_py2f, __pyx_t_10) < 0) __PYX_ERR(28, 153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":158
 *         return MPI_Info_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Info:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(28, 158, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(28, 158, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_35f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__521)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(28, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_f2py); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(28, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":199
 *         self.Delete(key)
 * 
 *     def get(self, key: str, default: str | None = None) -> str | None:             # <<<<<<<<<<<<<<
 *         """Retrieve value by key."""
 *         if not self: return default
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_key, __pyx_n_s_str) < 0) __PYX_ERR(28, 199, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_default, __pyx_kp_s_str_None) < 0) __PYX_ERR(28, 199, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_str_None) < 0) __PYX_ERR(28, 199, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_49get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_get, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__523)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_get, __pyx_t_9) < 0) __PYX_ERR(28, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":206
 *         return value
 * 
 *     def keys(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of keys."""
 *         if not self: return []
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_list_str) < 0) __PYX_ERR(28, 206, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_51keys, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_keys, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__525)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_keys, __pyx_t_10) < 0) __PYX_ERR(28, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":217
 *         return keys
 * 
 *     def values(self) -> list[str]:             # <<<<<<<<<<<<<<
 *         """Return list of values."""
 *         if not self: return []
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_list_str) < 0) __PYX_ERR(28, 217, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_53values, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_values, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__527)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_values, __pyx_t_9) < 0) __PYX_ERR(28, 217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":229
 *         return values
 * 
 *     def items(self) -> list[tuple[str, str]]:             # <<<<<<<<<<<<<<
 *         """Return list of items."""
 *         if not self: return []
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_list_tuple_str_str) < 0) __PYX_ERR(28, 229, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_55items, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_items, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__529)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_items, __pyx_t_10) < 0) __PYX_ERR(28, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":241
 *         return items
 * 
 *     def update(             # <<<<<<<<<<<<<<
 *         self,
 *         items: Info | Mapping[str, str] | Iterable[tuple[str, str]] = (),
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_items, __pyx_kp_s_Info_Mapping_str_str_Iterable_tu_2) < 0) __PYX_ERR(28, 241, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_kwds, __pyx_n_s_str) < 0) __PYX_ERR(28, 241, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(28, 241, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_57update, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_update, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__531)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__532);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_update, __pyx_t_9) < 0) __PYX_ERR(28, 241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":258
 *             self.Set(key, value)
 * 
 *     def pop(self, key: str, *default: str) -> str:             # <<<<<<<<<<<<<<
 *         """Pop value by key."""
 *         cdef object value = None
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_key, __pyx_n_s_str) < 0) __PYX_ERR(28, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_default, __pyx_n_s_str) < 0) __PYX_ERR(28, 258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(28, 258, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_59pop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_pop, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__533)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_pop, __pyx_t_10) < 0) __PYX_ERR(28, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":271
 *         raise KeyError(key)
 * 
 *     def popitem(self) -> tuple[str, str]:             # <<<<<<<<<<<<<<
 *         """Pop first item."""
 *         if not self: raise KeyError
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_str_str) < 0) __PYX_ERR(28, 271, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_61popitem, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_popitem, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__535)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_popitem, __pyx_t_9) < 0) __PYX_ERR(28, 271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":282
 *         return (key, value)
 * 
 *     def copy(self) -> Self:             # <<<<<<<<<<<<<<
 *         """Copy contents."""
 *         if not self: return <Info>New(type(self))
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(28, 282, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_63copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_copy, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__536)); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_copy, __pyx_t_10) < 0) __PYX_ERR(28, 282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":287
 *         return self.Dup()
 * 
 *     def clear(self) -> None:             # <<<<<<<<<<<<<<
 *         """Clear contents."""
 *         if not self: return None
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(28, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(28, 287, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Info_65clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Info_clear, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__538)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Info, __pyx_n_s_clear, __pyx_t_9) < 0) __PYX_ERR(28, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Info);

  /* "src/mpi4py/MPI.src/Info.pyx":298
 * 
 * 
 * cdef Info __INFO_NULL__ = def_Info( MPI_INFO_NULL , "INFO_NULL" )             # <<<<<<<<<<<<<<
 * cdef Info __INFO_ENV__  = def_Info( MPI_INFO_ENV  , "INFO_ENV"  )
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Info(MPI_INFO_NULL, __pyx_n_s_INFO_NULL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INFO_NULL__, ((struct PyMPIInfoObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":299
 * 
 * cdef Info __INFO_NULL__ = def_Info( MPI_INFO_NULL , "INFO_NULL" )
 * cdef Info __INFO_ENV__  = def_Info( MPI_INFO_ENV  , "INFO_ENV"  )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Info(MPI_INFO_ENV, __pyx_n_s_INFO_ENV)); if (unlikely(!__pyx_t_9)) __PYX_ERR(28, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_ENV__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___INFO_ENV__, ((struct PyMPIInfoObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Info.pyx":305
 * # -----------------------
 * 
 * INFO_NULL = __INFO_NULL__  #: Null info handle             # <<<<<<<<<<<<<<
 * INFO_ENV  = __INFO_ENV__   #: Environment info handle
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INFO_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_NULL__)) < 0) __PYX_ERR(28, 305, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Info.pyx":306
 * 
 * INFO_NULL = __INFO_NULL__  #: Null info handle
 * INFO_ENV  = __INFO_ENV__   #: Environment info handle             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INFO_ENV, ((PyObject *)__pyx_v_6mpi4py_3MPI___INFO_ENV__)) < 0) __PYX_ERR(28, 306, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(29, 19, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Errhandler___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__539)); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_reduce, __pyx_t_10) < 0) __PYX_ERR(29, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Errhandler:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(29, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(29, 27, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Errhandler_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__540)); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":34
 *         return fromhandle(<MPI_Errhandler> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(29, 34, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Errhandler_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_free, __pyx_t_9) < 0) __PYX_ERR(29, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":43
 *     # ---------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free an error handler.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(29, 43, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_15Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Errhandler_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__542)); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_Free, __pyx_t_10) < 0) __PYX_ERR(29, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":55
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(29, 55, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_17py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Errhandler_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__543)); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_py2f, __pyx_t_9) < 0) __PYX_ERR(29, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":60
 *         return MPI_Errhandler_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Errhandler:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(29, 60, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(29, 60, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_10Errhandler_19f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Errhandler_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__544)); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_f2py); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Errhandler, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Errhandler);

  /* "src/mpi4py/MPI.src/Errhandler.pyx":67
 * 
 * 
 * cdef Errhandler __ERRHANDLER_NULL__  = def_Errhandler( MPI_ERRHANDLER_NULL  , "ERRHANDLER_NULL"  )  # noqa             # <<<<<<<<<<<<<<
 * cdef Errhandler __ERRORS_RETURN__    = def_Errhandler( MPI_ERRORS_RETURN    , "ERRORS_RETURN"    )  # noqa
 * cdef Errhandler __ERRORS_ABORT__     = def_Errhandler( MPI_ERRORS_ABORT     , "ERRORS_ABORT"     )  # noqa
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRHANDLER_NULL, __pyx_n_s_ERRHANDLER_NULL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__, ((struct PyMPIErrhandlerObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":68
 * 
 * cdef Errhandler __ERRHANDLER_NULL__  = def_Errhandler( MPI_ERRHANDLER_NULL  , "ERRHANDLER_NULL"  )  # noqa
 * cdef Errhandler __ERRORS_RETURN__    = def_Errhandler( MPI_ERRORS_RETURN    , "ERRORS_RETURN"    )  # noqa             # <<<<<<<<<<<<<<
 * cdef Errhandler __ERRORS_ABORT__     = def_Errhandler( MPI_ERRORS_ABORT     , "ERRORS_ABORT"     )  # noqa
 * cdef Errhandler __ERRORS_ARE_FATAL__ = def_Errhandler( MPI_ERRORS_ARE_FATAL , "ERRORS_ARE_FATAL" )  # noqa
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRORS_RETURN, __pyx_n_s_ERRORS_RETURN)); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__, ((struct PyMPIErrhandlerObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":69
 * cdef Errhandler __ERRHANDLER_NULL__  = def_Errhandler( MPI_ERRHANDLER_NULL  , "ERRHANDLER_NULL"  )  # noqa
 * cdef Errhandler __ERRORS_RETURN__    = def_Errhandler( MPI_ERRORS_RETURN    , "ERRORS_RETURN"    )  # noqa
 * cdef Errhandler __ERRORS_ABORT__     = def_Errhandler( MPI_ERRORS_ABORT     , "ERRORS_ABORT"     )  # noqa             # <<<<<<<<<<<<<<
 * cdef Errhandler __ERRORS_ARE_FATAL__ = def_Errhandler( MPI_ERRORS_ARE_FATAL , "ERRORS_ARE_FATAL" )  # noqa
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRORS_ABORT, __pyx_n_s_ERRORS_ABORT)); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__, ((struct PyMPIErrhandlerObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":70
 * cdef Errhandler __ERRORS_RETURN__    = def_Errhandler( MPI_ERRORS_RETURN    , "ERRORS_RETURN"    )  # noqa
 * cdef Errhandler __ERRORS_ABORT__     = def_Errhandler( MPI_ERRORS_ABORT     , "ERRORS_ABORT"     )  # noqa
 * cdef Errhandler __ERRORS_ARE_FATAL__ = def_Errhandler( MPI_ERRORS_ARE_FATAL , "ERRORS_ARE_FATAL" )  # noqa             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Errhandler(MPI_ERRORS_ARE_FATAL, __pyx_n_s_ERRORS_ARE_FATAL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__, ((struct PyMPIErrhandlerObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Errhandler.pyx":76
 * # -----------------------------
 * 
 * ERRHANDLER_NULL  = __ERRHANDLER_NULL__   #: Null error handler             # <<<<<<<<<<<<<<
 * ERRORS_RETURN    = __ERRORS_RETURN__     #: Errors return error handler
 * ERRORS_ABORT     = __ERRORS_ABORT__      #: Errors abort error handler
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERRHANDLER_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__)) < 0) __PYX_ERR(29, 76, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":77
 * 
 * ERRHANDLER_NULL  = __ERRHANDLER_NULL__   #: Null error handler
 * ERRORS_RETURN    = __ERRORS_RETURN__     #: Errors return error handler             # <<<<<<<<<<<<<<
 * ERRORS_ABORT     = __ERRORS_ABORT__      #: Errors abort error handler
 * ERRORS_ARE_FATAL = __ERRORS_ARE_FATAL__  #: Errors are fatal error handler
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERRORS_RETURN, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__)) < 0) __PYX_ERR(29, 77, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":78
 * ERRHANDLER_NULL  = __ERRHANDLER_NULL__   #: Null error handler
 * ERRORS_RETURN    = __ERRORS_RETURN__     #: Errors return error handler
 * ERRORS_ABORT     = __ERRORS_ABORT__      #: Errors abort error handler             # <<<<<<<<<<<<<<
 * ERRORS_ARE_FATAL = __ERRORS_ARE_FATAL__  #: Errors are fatal error handler
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERRORS_ABORT, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__)) < 0) __PYX_ERR(29, 78, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Errhandler.pyx":79
 * ERRORS_RETURN    = __ERRORS_RETURN__     #: Errors return error handler
 * ERRORS_ABORT     = __ERRORS_ABORT__      #: Errors abort error handler
 * ERRORS_ARE_FATAL = __ERRORS_ARE_FATAL__  #: Errors are fatal error handler             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ERRORS_ARE_FATAL, ((PyObject *)__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__)) < 0) __PYX_ERR(29, 79, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":19
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(30, 19, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__545)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_reduce, __pyx_t_10) < 0) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":27
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Session:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(30, 27, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Session) < 0) __PYX_ERR(30, 27, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__546)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":34
 *         return fromhandle(<MPI_Session> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Finalize` if not null.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(30, 34, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__547)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_free, __pyx_t_9) < 0) __PYX_ERR(30, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":45
 *     def Init(
 *         cls,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(30, 45, __pyx_L1_error)
  __pyx_k__77 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Session.pyx":45
 *     def Init(
 *         cls,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Self:
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(30, 45, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Session.pyx":42
 *     #
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Init(
 *         cls,
 */
  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9)) __PYX_ERR(30, 42, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, Py_None)) __PYX_ERR(30, 42, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(30, 42, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errhandler, __pyx_kp_s_Errhandler_None) < 0) __PYX_ERR(30, 42, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(30, 42, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_15Init, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__549)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Init, __pyx_t_3) < 0) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Init); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Init, __pyx_t_9) < 0) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":58
 *         return session
 * 
 *     def Finalize(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Finalize a session.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(30, 58, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_17Finalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Finalize, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__550)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Finalize, __pyx_t_3) < 0) __PYX_ERR(30, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":64
 *         CHKERR( MPI_Session_finalize(&self.ob_mpi) )
 * 
 *     def Get_num_psets(self, Info info: Info = INFO_NULL) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Number of available process sets.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(30, 64, __pyx_L1_error)
  __pyx_k__78 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(30, 64, __pyx_L1_error)
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(30, 64, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(30, 64, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(30, 64, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_19Get_num_psets, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Get_num_psets, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__552)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Get_num_psets, __pyx_t_10) < 0) __PYX_ERR(30, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":73
 *         return num_psets
 * 
 *     def Get_nth_pset(self, int n: int, Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Name of the *n*-th process set.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(30, 73, __pyx_L1_error)
  __pyx_k__79 = ((struct PyMPIInfoObject *)__pyx_t_10);
  __Pyx_GIVEREF((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(30, 73, __pyx_L1_error)
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_10);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_10)) __PYX_ERR(30, 73, __pyx_L1_error);
  __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_n, __pyx_n_s_int) < 0) __PYX_ERR(30, 73, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(30, 73, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(30, 73, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_21Get_nth_pset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Get_nth_pset, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__554)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Get_nth_pset, __pyx_t_9) < 0) __PYX_ERR(30, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":84
 *         return mpistr(pset_name)
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(30, 84, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_23Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Get_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__555)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Get_info, __pyx_t_10) < 0) __PYX_ERR(30, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":93
 *         return info
 * 
 *     def Get_pset_info(self, pset_name: str) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a session and process set.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_pset_name, __pyx_n_s_str) < 0) __PYX_ERR(30, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(30, 93, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_25Get_pset_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Get_pset_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__557)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Get_pset_info, __pyx_t_9) < 0) __PYX_ERR(30, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":104
 *         return info
 * 
 *     def Create_group(self, pset_name: str) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Create a new group from session and process set.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_pset_name, __pyx_n_s_str) < 0) __PYX_ERR(30, 104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(30, 104, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_27Create_group, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Create_group, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__559)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Create_group, __pyx_t_10) < 0) __PYX_ERR(30, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":118
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_buf, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(30, 118, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(30, 118, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_29Attach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Attach_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__561)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Attach_buffer, __pyx_t_9) < 0) __PYX_ERR(30, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":129
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(30, 129, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_31Detach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Detach_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__563)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Detach_buffer, __pyx_t_10) < 0) __PYX_ERR(30, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":139
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(30, 139, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_33Flush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Flush_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__564)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Flush_buffer, __pyx_t_9) < 0) __PYX_ERR(30, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":145
 *         with nogil: CHKERR( MPI_Session_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(30, 145, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_35Iflush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Iflush_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__566)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Iflush_buffer, __pyx_t_10) < 0) __PYX_ERR(30, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":157
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_errhandler_fn, __pyx_kp_s_Callable_Session_int_None) < 0) __PYX_ERR(30, 157, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(30, 157, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_37Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Create_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__568)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Create_errhandler, __pyx_t_9) < 0) __PYX_ERR(30, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Create_errhandler); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Create_errhandler, __pyx_t_10) < 0) __PYX_ERR(30, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":175
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a session.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(30, 175, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_39Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Get_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__570)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Get_errhandler, __pyx_t_9) < 0) __PYX_ERR(30, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":183
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a session.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errhandler, __pyx_n_s_Errhandler) < 0) __PYX_ERR(30, 183, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(30, 183, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_41Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Set_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__571)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Set_errhandler, __pyx_t_10) < 0) __PYX_ERR(30, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":189
 *         CHKERR( MPI_Session_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a session.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(30, 189, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(30, 189, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_43Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_Call_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__572)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_Call_errhandler, __pyx_t_9) < 0) __PYX_ERR(30, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":198
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(30, 198, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_45py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__573)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_py2f, __pyx_t_10) < 0) __PYX_ERR(30, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":203
 *         return MPI_Session_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Session:
 *         """
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(30, 203, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Session) < 0) __PYX_ERR(30, 203, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_7Session_47f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Session_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__574)); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(30, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_f2py); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Session, __pyx_n_s_f2py, __pyx_t_10) < 0) __PYX_ERR(30, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Session);

  /* "src/mpi4py/MPI.src/Session.pyx":210
 * 
 * 
 * cdef Session __SESSION_NULL__ = def_Session( MPI_SESSION_NULL , "SESSION_NULL" )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Session(MPI_SESSION_NULL, __pyx_n_s_SESSION_NULL)); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___SESSION_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___SESSION_NULL__, ((struct PyMPISessionObject *)__pyx_t_10));
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Session.pyx":216
 * # -------------------------
 * 
 * SESSION_NULL  = __SESSION_NULL__  #: Null session handler             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SESSION_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___SESSION_NULL__)) < 0) __PYX_ERR(30, 216, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":4
 * # ------------------------
 * 
 * IDENT     = MPI_IDENT      #: Groups are identical, contexts are the same             # <<<<<<<<<<<<<<
 * CONGRUENT = MPI_CONGRUENT  #: Groups are identical, contexts are different
 * SIMILAR   = MPI_SIMILAR    #: Groups are similar, rank order differs
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_IDENT); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IDENT, __pyx_t_10) < 0) __PYX_ERR(31, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":5
 * 
 * IDENT     = MPI_IDENT      #: Groups are identical, contexts are the same
 * CONGRUENT = MPI_CONGRUENT  #: Groups are identical, contexts are different             # <<<<<<<<<<<<<<
 * SIMILAR   = MPI_SIMILAR    #: Groups are similar, rank order differs
 * UNEQUAL   = MPI_UNEQUAL    #: Groups are different
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_CONGRUENT); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CONGRUENT, __pyx_t_10) < 0) __PYX_ERR(31, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":6
 * IDENT     = MPI_IDENT      #: Groups are identical, contexts are the same
 * CONGRUENT = MPI_CONGRUENT  #: Groups are identical, contexts are different
 * SIMILAR   = MPI_SIMILAR    #: Groups are similar, rank order differs             # <<<<<<<<<<<<<<
 * UNEQUAL   = MPI_UNEQUAL    #: Groups are different
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_SIMILAR); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIMILAR, __pyx_t_10) < 0) __PYX_ERR(31, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":7
 * CONGRUENT = MPI_CONGRUENT  #: Groups are identical, contexts are different
 * SIMILAR   = MPI_SIMILAR    #: Groups are similar, rank order differs
 * UNEQUAL   = MPI_UNEQUAL    #: Groups are different             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_UNEQUAL); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNEQUAL, __pyx_t_10) < 0) __PYX_ERR(31, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":13
 * # -----------------------
 * 
 * CART       = MPI_CART        #: Cartesian topology             # <<<<<<<<<<<<<<
 * GRAPH      = MPI_GRAPH       #: General graph topology
 * DIST_GRAPH = MPI_DIST_GRAPH  #: Distributed graph topology
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_CART); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CART, __pyx_t_10) < 0) __PYX_ERR(31, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":14
 * 
 * CART       = MPI_CART        #: Cartesian topology
 * GRAPH      = MPI_GRAPH       #: General graph topology             # <<<<<<<<<<<<<<
 * DIST_GRAPH = MPI_DIST_GRAPH  #: Distributed graph topology
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_GRAPH); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GRAPH, __pyx_t_10) < 0) __PYX_ERR(31, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":15
 * CART       = MPI_CART        #: Cartesian topology
 * GRAPH      = MPI_GRAPH       #: General graph topology
 * DIST_GRAPH = MPI_DIST_GRAPH  #: Distributed graph topology             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_DIST_GRAPH); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DIST_GRAPH, __pyx_t_10) < 0) __PYX_ERR(31, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":21
 * # --------------------------
 * 
 * UNWEIGHTED    = __UNWEIGHTED__     #: Unweighted graph             # <<<<<<<<<<<<<<
 * WEIGHTS_EMPTY = __WEIGHTS_EMPTY__  #: Empty graph weights
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNWEIGHTED, __pyx_v_6mpi4py_3MPI___UNWEIGHTED__) < 0) __PYX_ERR(31, 21, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":22
 * 
 * UNWEIGHTED    = __UNWEIGHTED__     #: Unweighted graph
 * WEIGHTS_EMPTY = __WEIGHTS_EMPTY__  #: Empty graph weights             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WEIGHTS_EMPTY, __pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__) < 0) __PYX_ERR(31, 22, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":28
 * # -----------------------
 * 
 * COMM_TYPE_SHARED          = MPI_COMM_TYPE_SHARED             # <<<<<<<<<<<<<<
 * COMM_TYPE_HW_GUIDED       = MPI_COMM_TYPE_HW_GUIDED
 * COMM_TYPE_HW_UNGUIDED     = MPI_COMM_TYPE_HW_UNGUIDED
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMM_TYPE_SHARED); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMM_TYPE_SHARED, __pyx_t_10) < 0) __PYX_ERR(31, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":29
 * 
 * COMM_TYPE_SHARED          = MPI_COMM_TYPE_SHARED
 * COMM_TYPE_HW_GUIDED       = MPI_COMM_TYPE_HW_GUIDED             # <<<<<<<<<<<<<<
 * COMM_TYPE_HW_UNGUIDED     = MPI_COMM_TYPE_HW_UNGUIDED
 * COMM_TYPE_RESOURCE_GUIDED = MPI_COMM_TYPE_RESOURCE_GUIDED
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMM_TYPE_HW_GUIDED); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMM_TYPE_HW_GUIDED, __pyx_t_10) < 0) __PYX_ERR(31, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":30
 * COMM_TYPE_SHARED          = MPI_COMM_TYPE_SHARED
 * COMM_TYPE_HW_GUIDED       = MPI_COMM_TYPE_HW_GUIDED
 * COMM_TYPE_HW_UNGUIDED     = MPI_COMM_TYPE_HW_UNGUIDED             # <<<<<<<<<<<<<<
 * COMM_TYPE_RESOURCE_GUIDED = MPI_COMM_TYPE_RESOURCE_GUIDED
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMM_TYPE_HW_UNGUIDED); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMM_TYPE_HW_UNGUIDED, __pyx_t_10) < 0) __PYX_ERR(31, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":31
 * COMM_TYPE_HW_GUIDED       = MPI_COMM_TYPE_HW_GUIDED
 * COMM_TYPE_HW_UNGUIDED     = MPI_COMM_TYPE_HW_UNGUIDED
 * COMM_TYPE_RESOURCE_GUIDED = MPI_COMM_TYPE_RESOURCE_GUIDED             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_10 = __Pyx_PyInt_From___pyx_anon_enum(MPI_COMM_TYPE_RESOURCE_GUIDED); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMM_TYPE_RESOURCE_GUIDED, __pyx_t_10) < 0) __PYX_ERR(31, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":52
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(31, 52, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__575)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(31, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":60
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Comm:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(31, 60, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Comm) < 0) __PYX_ERR(31, 60, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__576)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_fromhandle, __pyx_t_10) < 0) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_GetNameInClass(__pyx_t_10, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(31, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":67
 *         return fromhandle(<MPI_Comm> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null or predefined.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 67, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__577)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_free, __pyx_t_10) < 0) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":76
 *     # -----
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group associated with a communicator.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(31, 76, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_15Get_group, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_group, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__578)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_group, __pyx_t_9) < 0) __PYX_ERR(31, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":92
 *     # ----------------------
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of processes in a communicator.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 92, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_17Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__579)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_size, __pyx_t_10) < 0) __PYX_ERR(31, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":105
 *             return self.Get_size()
 * 
 *     def Get_rank(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the rank of this process in a communicator.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 105, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_19Get_rank, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_rank, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__580)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_rank, __pyx_t_9) < 0) __PYX_ERR(31, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":118
 *             return self.Get_rank()
 * 
 *     def Compare(self, Comm comm: Comm) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Compare two communicators.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Comm) < 0) __PYX_ERR(31, 118, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 118, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_21Compare, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Compare, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__582)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Compare, __pyx_t_10) < 0) __PYX_ERR(31, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":130
 *     # -------------------------
 * 
 *     def Clone(self) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Clone an existing communicator.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(31, 130, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_23Clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Clone, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__584)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Clone, __pyx_t_9) < 0) __PYX_ERR(31, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":139
 *         return comm
 * 
 *     def Dup(self, Info info: Info | None = None) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_kp_s_Info_None) < 0) __PYX_ERR(31, 139, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(31, 139, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_25Dup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Dup, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__586)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Dup, __pyx_t_10) < 0) __PYX_ERR(31, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":154
 *         return comm
 * 
 *     def Dup_with_info(self, Info info: Info) -> Self:             # <<<<<<<<<<<<<<
 *         """
 *         Duplicate a communicator with hints.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 154, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(31, 154, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_27Dup_with_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Dup_with_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__588)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Dup_with_info, __pyx_t_9) < 0) __PYX_ERR(31, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":164
 *         return comm
 * 
 *     def Idup(self, Info info: Info | None = None) -> tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_kp_s_Info_None) < 0) __PYX_ERR(31, 164, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_Self_Request) < 0) __PYX_ERR(31, 164, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_29Idup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Idup, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__590)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Idup, __pyx_t_10) < 0) __PYX_ERR(31, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":182
 *         return (comm, request)
 * 
 *     def Idup_with_info(self, Info info: Info) ->  tuple[Self, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking duplicate a communicator with hints.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 182, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_kp_s_tuple_Self_Request) < 0) __PYX_ERR(31, 182, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_31Idup_with_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Idup_with_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__592)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Idup_with_info, __pyx_t_9) < 0) __PYX_ERR(31, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":194
 *         return (comm, request)
 * 
 *     def Create(self, Group group: Group) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_group, __pyx_n_s_Group) < 0) __PYX_ERR(31, 194, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Comm) < 0) __PYX_ERR(31, 194, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_33Create, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Create, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__594)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Create, __pyx_t_10) < 0) __PYX_ERR(31, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":207
 *         return comm
 * 
 *     def Split(self, int color: int = 0, int key: int = 0) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Split communicator by color and key.
 */
  __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_color, __pyx_n_s_int) < 0) __PYX_ERR(31, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_key, __pyx_n_s_int) < 0) __PYX_ERR(31, 207, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_return, __pyx_n_s_Comm) < 0) __PYX_ERR(31, 207, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_35Split, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Split, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__596)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__597);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Split, __pyx_t_9) < 0) __PYX_ERR(31, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":224
 *         int split_type: int,
 *         int key: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Comm:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 224, __pyx_L1_error)
  __pyx_k__80 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":220
 *         return comm
 * 
 *     def Split_type(             # <<<<<<<<<<<<<<
 *         self,
 *         int split_type: int,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":224
 *         int split_type: int,
 *         int key: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Comm:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 224, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":220
 *         return comm
 * 
 *     def Split_type(             # <<<<<<<<<<<<<<
 *         self,
 *         int split_type: int,
 */
  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_int_0)) __PYX_ERR(31, 220, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9)) __PYX_ERR(31, 220, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_split_type, __pyx_n_s_int) < 0) __PYX_ERR(31, 220, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_key, __pyx_n_s_int) < 0) __PYX_ERR(31, 220, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 220, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Comm) < 0) __PYX_ERR(31, 220, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_37Split_type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Split_type, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__599)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Split_type, __pyx_t_3) < 0) __PYX_ERR(31, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":241
 *     # -----------------------
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a communicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 241, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_39Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__600)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Free, __pyx_t_9) < 0) __PYX_ERR(31, 241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":252
 *     # -----------------------
 * 
 *     def Revoke(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Revoke a communicator.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 252, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_41Revoke, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Revoke, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__601)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Revoke, __pyx_t_3) < 0) __PYX_ERR(31, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":258
 *         with nogil: CHKERR( MPI_Comm_revoke(self.ob_mpi) )
 * 
 *     def Is_revoked(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Indicate whether the communicator has been revoked.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(31, 258, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_43Is_revoked, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Is_revoked, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__602)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Is_revoked, __pyx_t_9) < 0) __PYX_ERR(31, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":266
 *         return <bint>flag
 * 
 *     def Get_failed(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Extract the group of failed processes.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(31, 266, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_45Get_failed, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_failed, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__603)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_failed, __pyx_t_3) < 0) __PYX_ERR(31, 266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":274
 *         return group
 * 
 *     def Ack_failed(self, num_to_ack: int | None = None) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Acknowledge failures on a communicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_num_to_ack, __pyx_kp_s_int_None) < 0) __PYX_ERR(31, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 274, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_47Ack_failed, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ack_failed, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__605)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ack_failed, __pyx_t_9) < 0) __PYX_ERR(31, 274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":288
 *         return num_acked
 * 
 *     def Agree(self, int flag: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Blocking agreement.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_flag, __pyx_n_s_int) < 0) __PYX_ERR(31, 288, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 288, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_49Agree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Agree, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__606)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Agree, __pyx_t_3) < 0) __PYX_ERR(31, 288, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":295
 *         return flag
 * 
 *     def Iagree(self, flag: Buffer) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking agreement.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_flag, __pyx_n_s_Buffer) < 0) __PYX_ERR(31, 295, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 295, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_51Iagree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iagree, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__608)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iagree, __pyx_t_9) < 0) __PYX_ERR(31, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":310
 *         return request
 * 
 *     def Shrink(self) -> Comm:             # <<<<<<<<<<<<<<
 *         """
 *         Shrink a communicator to remove all failed processes.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Comm) < 0) __PYX_ERR(31, 310, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_53Shrink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Shrink, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__610)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Shrink, __pyx_t_3) < 0) __PYX_ERR(31, 310, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":322
 *         return comm
 * 
 *     def Ishrink(self) -> tuple[Comm, Request]:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking shrink a communicator to remove all failed processes.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_tuple_Comm_Request) < 0) __PYX_ERR(31, 322, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_55Ishrink, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ishrink, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__612)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ishrink, __pyx_t_9) < 0) __PYX_ERR(31, 322, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":339
 *     # -----------------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a communicator.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 339, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 339, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_57Set_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Set_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__613)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Set_info, __pyx_t_3) < 0) __PYX_ERR(31, 339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":346
 *             self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a communicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(31, 346, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_59Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__614)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_info, __pyx_t_9) < 0) __PYX_ERR(31, 346, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":369
 *     # ---------------------------
 * 
 *     def Attach_buffer(self, buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a user-provided buffer for sending in buffered mode.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(31, 369, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 369, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_61Attach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Attach_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__615)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Attach_buffer, __pyx_t_3) < 0) __PYX_ERR(31, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":380
 *         detach_buffer_set(self, buf)  # ~> MPI-4.1
 * 
 *     def Detach_buffer(self) -> Buffer | None:             # <<<<<<<<<<<<<<
 *         """
 *         Remove an existing attached buffer.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(31, 380, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_63Detach_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Detach_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__616)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Detach_buffer, __pyx_t_9) < 0) __PYX_ERR(31, 380, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":390
 *         return detach_buffer_get(self, base, size)  # ~> MPI-4.1
 * 
 *     def Flush_buffer(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Block until all buffered messages have been transmitted.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 390, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_65Flush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Flush_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__617)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Flush_buffer, __pyx_t_3) < 0) __PYX_ERR(31, 390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":396
 *         with nogil: CHKERR( MPI_Comm_flush_buffer(self.ob_mpi) )
 * 
 *     def Iflush_buffer(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking flush for buffered messages.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 396, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_67Iflush_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iflush_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__618)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iflush_buffer, __pyx_t_9) < 0) __PYX_ERR(31, 396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":408
 *     # ------------------------------------
 * 
 *     def Send(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 408, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 408, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 408, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 408, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_69Send, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Send, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__620)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Send, __pyx_t_3) < 0) __PYX_ERR(31, 408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":429
 *         self,
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__82 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":430
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__83 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":429
 *         self,
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 429, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":430
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":426
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3)) __PYX_ERR(31, 426, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9)) __PYX_ERR(31, 426, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, Py_None)) __PYX_ERR(31, 426, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 426, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_71Recv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Recv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__623)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Recv, __pyx_t_3) < 0) __PYX_ERR(31, 426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":453
 *         int sendtag: int = 0,
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__84 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":454
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 454, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__85 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":453
 *         int sendtag: int = 0,
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":454
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 454, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":447
 *     # ------------
 * 
 *     def Sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_10 = PyTuple_New(5); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_int_0)) __PYX_ERR(31, 447, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, Py_None)) __PYX_ERR(31, 447, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3)) __PYX_ERR(31, 447, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_9)) __PYX_ERR(31, 447, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 4, Py_None)) __PYX_ERR(31, 447, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_None) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_73Sendrecv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Sendrecv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__625)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Sendrecv, __pyx_t_3) < 0) __PYX_ERR(31, 447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":480
 *         int dest: int,
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__86 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":481
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__87 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":480
 *         int dest: int,
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":481
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":475
 *             self.ob_mpi, statusp) )
 * 
 *     def Sendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_10 = PyTuple_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_int_0)) __PYX_ERR(31, 475, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3)) __PYX_ERR(31, 475, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_9)) __PYX_ERR(31, 475, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 3, Py_None)) __PYX_ERR(31, 475, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_75Sendrecv_replace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Sendrecv_replace, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__627)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 475, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Sendrecv_replace, __pyx_t_3) < 0) __PYX_ERR(31, 475, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":507
 *     # --------------------------
 * 
 *     def Isend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 507, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 507, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 507, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 507, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_77Isend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Isend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__629)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Isend, __pyx_t_9) < 0) __PYX_ERR(31, 507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":527
 *         self,
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__88 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":528
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__89 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":527
 *         self,
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 527, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":528
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":524
 *         return request
 * 
 *     def Irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9)) __PYX_ERR(31, 524, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3)) __PYX_ERR(31, 524, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 524, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_79Irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Irecv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__631)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Irecv, __pyx_t_9) < 0) __PYX_ERR(31, 524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":547
 *         int sendtag: int = 0,
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__90 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":548
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__91 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":547
 *         int sendtag: int = 0,
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 547, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":548
 *         recvbuf: BufSpec | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":541
 *         return request
 * 
 *     def Isendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_10 = PyTuple_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_int_0)) __PYX_ERR(31, 541, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, Py_None)) __PYX_ERR(31, 541, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_9)) __PYX_ERR(31, 541, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_3)) __PYX_ERR(31, 541, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_None) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_81Isendrecv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Isendrecv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__633)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Isendrecv, __pyx_t_9) < 0) __PYX_ERR(31, 541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":568
 *         int dest: int,
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 568, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__92 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":569
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 569, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__93 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":568
 *         int dest: int,
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 568, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":569
 *         int sendtag: int = 0,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 569, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":563
 *         return request
 * 
 *     def Isendrecv_replace(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_int_0)) __PYX_ERR(31, 563, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9)) __PYX_ERR(31, 563, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3)) __PYX_ERR(31, 563, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 563, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 563, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_83Isendrecv_replace, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Isendrecv_replace, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__635)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Isendrecv_replace, __pyx_t_9) < 0) __PYX_ERR(31, 563, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":598
 *     def Probe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__94 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":599
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Literal[True]:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__95 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":598
 *     def Probe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":599
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Literal[True]:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":596
 *     # -----
 * 
 *     def Probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9)) __PYX_ERR(31, 596, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3)) __PYX_ERR(31, 596, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, Py_None)) __PYX_ERR(31, 596, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 596, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 596, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 596, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_Literal_True) < 0) __PYX_ERR(31, 596, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_85Probe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Probe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__637)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Probe, __pyx_t_9) < 0) __PYX_ERR(31, 596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":614
 *     def Iprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__96 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":615
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> bool:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__97 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":614
 *     def Iprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":615
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> bool:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":612
 *         return True
 * 
 *     def Iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9)) __PYX_ERR(31, 612, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3)) __PYX_ERR(31, 612, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, Py_None)) __PYX_ERR(31, 612, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 612, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 612, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 612, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(31, 612, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_87Iprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iprobe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__639)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iprobe, __pyx_t_9) < 0) __PYX_ERR(31, 612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":632
 *     def Mprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__98 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":633
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__99 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":632
 *     def Mprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":633
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 633, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":630
 *     # --------------
 * 
 *     def Mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9)) __PYX_ERR(31, 630, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3)) __PYX_ERR(31, 630, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, Py_None)) __PYX_ERR(31, 630, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 630, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Message) < 0) __PYX_ERR(31, 630, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_89Mprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Mprobe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__641)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Mprobe, __pyx_t_9) < 0) __PYX_ERR(31, 630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":649
 *     def Improbe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__100 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":650
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__101 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":649
 *     def Improbe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":650
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 650, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":647
 *         return message
 * 
 *     def Improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9)) __PYX_ERR(31, 647, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_3)) __PYX_ERR(31, 647, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, Py_None)) __PYX_ERR(31, 647, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 647, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_Message_None) < 0) __PYX_ERR(31, 647, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_91Improbe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Improbe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__643)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Improbe, __pyx_t_9) < 0) __PYX_ERR(31, 647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":669
 *     # ------------------------
 * 
 *     def Send_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 669, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 669, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 669, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 669, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_93Send_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Send_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__644)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Send_init, __pyx_t_3) < 0) __PYX_ERR(31, 669, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":689
 *         self,
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 689, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__102 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":690
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 690, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__103 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":689
 *         self,
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 689, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 689, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":690
 *         buf: BufSpec,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 690, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":686
 *         return request
 * 
 *     def Recv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3)) __PYX_ERR(31, 686, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9)) __PYX_ERR(31, 686, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 686, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 686, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 686, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 686, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_95Recv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Recv_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__645)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_10);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Recv_init, __pyx_t_3) < 0) __PYX_ERR(31, 686, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":712
 *         int dest: int,
 *         int tag: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 712, __pyx_L1_error)
  __pyx_k__104 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":706
 *     # -------------------------
 * 
 *     def Psend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":712
 *         int dest: int,
 *         int tag: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 712, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":706
 *     # -------------------------
 * 
 *     def Psend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_0)) __PYX_ERR(31, 706, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3)) __PYX_ERR(31, 706, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_partitions, __pyx_n_s_int) < 0) __PYX_ERR(31, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 706, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 706, __pyx_L1_error)
  __pyx_t_10 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_97Psend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Psend_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__647)); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_10, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_10, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Psend_init, __pyx_t_10) < 0) __PYX_ERR(31, 706, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":729
 *         buf: BufSpec,
 *         int partitions: int,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Info info: Info = INFO_NULL,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 729, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_k__106 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":730
 *         int partitions: int,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 730, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_k__107 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":731
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 731, __pyx_L1_error)
  __pyx_k__105 = ((struct PyMPIInfoObject *)__pyx_t_10);
  __Pyx_GIVEREF((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":729
 *         buf: BufSpec,
 *         int partitions: int,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Info info: Info = INFO_NULL,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 729, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "src/mpi4py/MPI.src/Comm.pyx":730
 *         int partitions: int,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 730, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":731
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 731, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":725
 *         return request
 * 
 *     def Precv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_10);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10)) __PYX_ERR(31, 725, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(31, 725, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_9)) __PYX_ERR(31, 725, __pyx_L1_error);
  __pyx_t_10 = 0;
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_partitions, __pyx_n_s_int) < 0) __PYX_ERR(31, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 725, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 725, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_99Precv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Precv_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__649)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Precv_init, __pyx_t_3) < 0) __PYX_ERR(31, 725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":749
 *     # Blocking calls
 * 
 *     def Bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 749, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 749, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 749, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 749, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_101Bsend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Bsend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__650)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Bsend, __pyx_t_9) < 0) __PYX_ERR(31, 749, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":763
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 763, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 763, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 763, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 763, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_103Ssend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ssend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__651)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ssend, __pyx_t_3) < 0) __PYX_ERR(31, 763, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":777
 *             dest, tag, self.ob_mpi) )
 * 
 *     def Rsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 777, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 777, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 777, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 777, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_105Rsend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Rsend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__652)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 777, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Rsend, __pyx_t_9) < 0) __PYX_ERR(31, 777, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":793
 *     # Nonblocking calls
 * 
 *     def Ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 793, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 793, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 793, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 793, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_107Ibsend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ibsend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__653)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ibsend, __pyx_t_3) < 0) __PYX_ERR(31, 793, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":810
 *         return request
 * 
 *     def Issend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 810, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 810, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 810, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 810, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_109Issend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Issend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__654)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Issend, __pyx_t_9) < 0) __PYX_ERR(31, 810, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":827
 *         return request
 * 
 *     def Irsend(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 827, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 827, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 827, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 827, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_111Irsend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Irsend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__655)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Irsend, __pyx_t_3) < 0) __PYX_ERR(31, 827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":846
 *     # Persistent Requests
 * 
 *     def Bsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 846, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 846, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 846, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 846, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_113Bsend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Bsend_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__656)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Bsend_init, __pyx_t_9) < 0) __PYX_ERR(31, 846, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":863
 *         return request
 * 
 *     def Ssend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 863, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 863, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 863, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 863, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_115Ssend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ssend_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__657)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ssend_init, __pyx_t_3) < 0) __PYX_ERR(31, 863, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":880
 *         return request
 * 
 *     def Rsend_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 880, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 880, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 880, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 880, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_117Rsend_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Rsend_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__658)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Rsend_init, __pyx_t_9) < 0) __PYX_ERR(31, 880, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":903
 *     # -----------------------
 * 
 *     def Barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 903, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_119Barrier, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Barrier, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__659)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 903, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Barrier, __pyx_t_3) < 0) __PYX_ERR(31, 903, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":912
 *     # ------------------------------
 * 
 *     def Bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 912, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 912, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 912, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_121Bcast, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Bcast, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__661)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Bcast, __pyx_t_9) < 0) __PYX_ERR(31, 912, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":926
 *             root, self.ob_mpi) )
 * 
 *     def Gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 926, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpecB_None) < 0) __PYX_ERR(31, 926, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 926, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 926, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_123Gather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Gather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__663)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Gather, __pyx_t_3) < 0) __PYX_ERR(31, 926, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":942
 *             root, self.ob_mpi) )
 * 
 *     def Gatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 942, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpecV_None) < 0) __PYX_ERR(31, 942, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 942, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 942, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_125Gatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Gatherv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__664)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 942, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Gatherv, __pyx_t_9) < 0) __PYX_ERR(31, 942, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":961
 *             root, self.ob_mpi) )
 * 
 *     def Scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_None) < 0) __PYX_ERR(31, 961, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 961, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 961, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 961, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_127Scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Scatter, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__665)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Scatter, __pyx_t_3) < 0) __PYX_ERR(31, 961, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":977
 *             root, self.ob_mpi) )
 * 
 *     def Scatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecV_None) < 0) __PYX_ERR(31, 977, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 977, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 977, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 977, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_129Scatterv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Scatterv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__666)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Scatterv, __pyx_t_9) < 0) __PYX_ERR(31, 977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":996
 *             root, self.ob_mpi) )
 * 
 *     def Allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 996, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 996, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_131Allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Allgather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__668)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Allgather, __pyx_t_3) < 0) __PYX_ERR(31, 996, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1014
 *             self.ob_mpi) )
 * 
 *     def Allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1014, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 1014, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1014, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_133Allgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Allgatherv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__669)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Allgatherv, __pyx_t_9) < 0) __PYX_ERR(31, 1014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1032
 *             self.ob_mpi) )
 * 
 *     def Alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_InPlace) < 0) __PYX_ERR(31, 1032, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 1032, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1032, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_135Alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Alltoall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__670)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Alltoall, __pyx_t_3) < 0) __PYX_ERR(31, 1032, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1049
 *             self.ob_mpi) )
 * 
 *     def Alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecV_InPlace) < 0) __PYX_ERR(31, 1049, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 1049, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1049, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_137Alltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Alltoallv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__671)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1049, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Alltoallv, __pyx_t_9) < 0) __PYX_ERR(31, 1049, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1067
 *             self.ob_mpi) )
 * 
 *     def Alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecW_InPlace) < 0) __PYX_ERR(31, 1067, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 1067, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1067, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_139Alltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Alltoallw, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__672)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Alltoallw, __pyx_t_3) < 0) __PYX_ERR(31, 1067, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1092
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec | None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1092, __pyx_L1_error)
  __pyx_k__108 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1088
 *     # ---------------------------
 * 
 *     def Reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1092
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec | None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> None:
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1092, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1088
 *     # ---------------------------
 * 
 *     def Reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 1088, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0)) __PYX_ERR(31, 1088, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_None) < 0) __PYX_ERR(31, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1088, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1088, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_141Reduce, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__674)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Reduce, __pyx_t_8) < 0) __PYX_ERR(31, 1088, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1108
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1108, __pyx_L1_error)
  __pyx_k__109 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1104
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1108
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1108, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1104
 *             op.ob_mpi, root, self.ob_mpi) )
 * 
 *     def Allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8)) __PYX_ERR(31, 1104, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1104, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1104, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_143Allreduce, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Allreduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__676)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Allreduce, __pyx_t_9) < 0) __PYX_ERR(31, 1104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1123
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1123, __pyx_L1_error)
  __pyx_k__110 = ((struct PyMPIOpObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1119
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":1123
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1123, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1119
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(31, 1119, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_InPlace) < 0) __PYX_ERR(31, 1119, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_BufSpecB) < 0) __PYX_ERR(31, 1119, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1119, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1119, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_145Reduce_scatter_block, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Reduce_scatter_block, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__677)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Reduce_scatter_block, __pyx_t_3) < 0) __PYX_ERR(31, 1119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1139
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1139, __pyx_L1_error)
  __pyx_k__111 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1138
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1139
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1139, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1134
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Reduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, Py_None)) __PYX_ERR(31, 1134, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3)) __PYX_ERR(31, 1134, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvcounts, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(31, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1134, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1134, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_147Reduce_scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Reduce_scatter, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__679)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Reduce_scatter, __pyx_t_8) < 0) __PYX_ERR(31, 1134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1154
 *     # -----------------------
 * 
 *     def Ibarrier(self) -> Request:             # <<<<<<<<<<<<<<
 *         """
 *         Nonblocking Barrier.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1154, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_149Ibarrier, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ibarrier, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__680)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ibarrier, __pyx_t_3) < 0) __PYX_ERR(31, 1154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1162
 *         return request
 * 
 *     def Ibcast(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1162, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1162, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1162, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_151Ibcast, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ibcast, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__682)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ibcast, __pyx_t_8) < 0) __PYX_ERR(31, 1162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1179
 *         return request
 * 
 *     def Igather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1179, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpecB_None) < 0) __PYX_ERR(31, 1179, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1179, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1179, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_153Igather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Igather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__684)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Igather, __pyx_t_3) < 0) __PYX_ERR(31, 1179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1198
 *         return request
 * 
 *     def Igatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1198, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpecV_None) < 0) __PYX_ERR(31, 1198, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1198, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1198, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_155Igatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Igatherv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__685)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Igatherv, __pyx_t_8) < 0) __PYX_ERR(31, 1198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1217
 *         return request
 * 
 *     def Iscatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_None) < 0) __PYX_ERR(31, 1217, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1217, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1217, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1217, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_157Iscatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iscatter, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__686)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iscatter, __pyx_t_3) < 0) __PYX_ERR(31, 1217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1236
 *         return request
 * 
 *     def Iscatterv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecV_None) < 0) __PYX_ERR(31, 1236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1236, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1236, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_159Iscatterv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iscatterv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__687)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iscatterv, __pyx_t_8) < 0) __PYX_ERR(31, 1236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1255
 *         return request
 * 
 *     def Iallgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1255, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 1255, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1255, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_161Iallgather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iallgather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__689)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iallgather, __pyx_t_3) < 0) __PYX_ERR(31, 1255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1273
 *         return request
 * 
 *     def Iallgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1273, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 1273, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1273, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_163Iallgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iallgatherv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__690)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iallgatherv, __pyx_t_8) < 0) __PYX_ERR(31, 1273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1290
 *         return request
 * 
 *     def Ialltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_InPlace) < 0) __PYX_ERR(31, 1290, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 1290, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1290, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_165Ialltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ialltoall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__691)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ialltoall, __pyx_t_3) < 0) __PYX_ERR(31, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1308
 *         return request
 * 
 *     def Ialltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecV_InPlace) < 0) __PYX_ERR(31, 1308, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 1308, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1308, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_167Ialltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ialltoallv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__692)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ialltoallv, __pyx_t_8) < 0) __PYX_ERR(31, 1308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1326
 *         return request
 * 
 *     def Ialltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecW_InPlace) < 0) __PYX_ERR(31, 1326, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 1326, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1326, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_169Ialltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ialltoallw, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__693)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ialltoallw, __pyx_t_3) < 0) __PYX_ERR(31, 1326, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1348
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec | None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1348, __pyx_L1_error)
  __pyx_k__112 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1344
 *         return request
 * 
 *     def Ireduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1348
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec | None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Request:
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1348, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1344
 *         return request
 * 
 *     def Ireduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3)) __PYX_ERR(31, 1344, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_0)) __PYX_ERR(31, 1344, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_None) < 0) __PYX_ERR(31, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1344, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1344, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_171Ireduce, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ireduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__695)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ireduce, __pyx_t_9) < 0) __PYX_ERR(31, 1344, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1366
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1366, __pyx_L1_error)
  __pyx_k__113 = ((struct PyMPIOpObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1362
 *         return request
 * 
 *     def Iallreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":1366
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1366, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1362
 *         return request
 * 
 *     def Iallreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(31, 1362, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1362, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1362, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1362, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1362, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_173Iallreduce, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Iallreduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__697)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Iallreduce, __pyx_t_8) < 0) __PYX_ERR(31, 1362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1383
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1383, __pyx_L1_error)
  __pyx_k__114 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1379
 *         return request
 * 
 *     def Ireduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1383
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1383, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1379
 *         return request
 * 
 *     def Ireduce_scatter_block(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8)) __PYX_ERR(31, 1379, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_InPlace) < 0) __PYX_ERR(31, 1379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_BufSpecB) < 0) __PYX_ERR(31, 1379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1379, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1379, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_175Ireduce_scatter_block, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ireduce_scatter_block, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__698)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ireduce_scatter_block, __pyx_t_3) < 0) __PYX_ERR(31, 1379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1401
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1401, __pyx_L1_error)
  __pyx_k__115 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1400
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1401
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1401, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1396
 *         return request
 * 
 *     def Ireduce_scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, Py_None)) __PYX_ERR(31, 1396, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(31, 1396, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvcounts, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(31, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1396, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1396, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_177Ireduce_scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Ireduce_scatter, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__700)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Ireduce_scatter, __pyx_t_9) < 0) __PYX_ERR(31, 1396, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1420
 *     def Barrier_init(
 *         self,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1420, __pyx_L1_error)
  __pyx_k__116 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1418
 *     # ----------------------
 * 
 *     def Barrier_init(             # <<<<<<<<<<<<<<
 *         self,
 *         Info info: Info = INFO_NULL,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":1420
 *     def Barrier_init(
 *         self,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1420, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1418
 *     # ----------------------
 * 
 *     def Barrier_init(             # <<<<<<<<<<<<<<
 *         self,
 *         Info info: Info = INFO_NULL,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(31, 1418, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1418, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1418, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_179Barrier_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Barrier_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__702)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Barrier_init, __pyx_t_8) < 0) __PYX_ERR(31, 1418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1435
 *         buf: BufSpec,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1435, __pyx_L1_error)
  __pyx_k__117 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1431
 *         return request
 * 
 *     def Bcast_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1435
 *         buf: BufSpec,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1435, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1431
 *         return request
 * 
 *     def Bcast_init(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_0)) __PYX_ERR(31, 1431, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 1431, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1431, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1431, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1431, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1431, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_181Bcast_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Bcast_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__704)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Bcast_init, __pyx_t_3) < 0) __PYX_ERR(31, 1431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1454
 *         recvbuf: BufSpecB | None,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1454, __pyx_L1_error)
  __pyx_k__118 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1449
 *         return request
 * 
 *     def Gather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1454
 *         recvbuf: BufSpecB | None,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1454, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1449
 *         return request
 * 
 *     def Gather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_int_0)) __PYX_ERR(31, 1449, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(31, 1449, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpecB_None) < 0) __PYX_ERR(31, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1449, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1449, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_183Gather_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Gather_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__706)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1449, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Gather_init, __pyx_t_9) < 0) __PYX_ERR(31, 1449, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1474
 *         recvbuf: BufSpecV | None,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1474, __pyx_L1_error)
  __pyx_k__119 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1469
 *         return request
 * 
 *     def Gatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":1474
 *         recvbuf: BufSpecV | None,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1474, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1469
 *         return request
 * 
 *     def Gatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0)) __PYX_ERR(31, 1469, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9)) __PYX_ERR(31, 1469, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpecV_None) < 0) __PYX_ERR(31, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1469, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_185Gatherv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Gatherv_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__707)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Gatherv_init, __pyx_t_8) < 0) __PYX_ERR(31, 1469, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1494
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1494, __pyx_L1_error)
  __pyx_k__120 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1489
 *         return request
 * 
 *     def Scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1494
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1494, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1489
 *         return request
 * 
 *     def Scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | None,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_0)) __PYX_ERR(31, 1489, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 1489, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_None) < 0) __PYX_ERR(31, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1489, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1489, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_187Scatter_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Scatter_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__708)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Scatter_init, __pyx_t_3) < 0) __PYX_ERR(31, 1489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1514
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1514, __pyx_L1_error)
  __pyx_k__121 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1509
 *         return request
 * 
 *     def Scatterv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1514
 *         recvbuf: BufSpec | InPlace,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1514, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1509
 *         return request
 * 
 *     def Scatterv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | None,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_int_0)) __PYX_ERR(31, 1509, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(31, 1509, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecV_None) < 0) __PYX_ERR(31, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1509, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1509, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_189Scatterv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Scatterv_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__709)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Scatterv_init, __pyx_t_9) < 0) __PYX_ERR(31, 1509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1533
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1533, __pyx_L1_error)
  __pyx_k__122 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1529
 *         return request
 * 
 *     def Allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":1533
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1533, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1529
 *         return request
 * 
 *     def Allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(31, 1529, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1529, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 1529, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1529, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1529, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_191Allgather_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Allgather_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__711)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Allgather_init, __pyx_t_8) < 0) __PYX_ERR(31, 1529, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1552
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1552, __pyx_L1_error)
  __pyx_k__123 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1548
 *         return request
 * 
 *     def Allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1552
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1552, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1548
 *         return request
 * 
 *     def Allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8)) __PYX_ERR(31, 1548, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1548, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1548, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_193Allgatherv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Allgatherv_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__712)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Allgatherv_init, __pyx_t_3) < 0) __PYX_ERR(31, 1548, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1570
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1570, __pyx_L1_error)
  __pyx_k__124 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1566
 *         return request
 * 
 *     def Alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1570
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1570, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1566
 *         return request
 * 
 *     def Alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3)) __PYX_ERR(31, 1566, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_InPlace) < 0) __PYX_ERR(31, 1566, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 1566, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1566, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1566, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_195Alltoall_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Alltoall_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__713)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Alltoall_init, __pyx_t_9) < 0) __PYX_ERR(31, 1566, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1589
 *         sendbuf: BufSpecV | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1589, __pyx_L1_error)
  __pyx_k__125 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1585
 *         return request
 * 
 *     def Alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":1589
 *         sendbuf: BufSpecV | InPlace,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1589, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1585
 *         return request
 * 
 *     def Alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV | InPlace,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(31, 1585, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecV_InPlace) < 0) __PYX_ERR(31, 1585, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 1585, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1585, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1585, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_197Alltoallv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Alltoallv_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__714)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Alltoallv_init, __pyx_t_8) < 0) __PYX_ERR(31, 1585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1608
 *         sendbuf: BufSpecW | InPlace,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1608, __pyx_L1_error)
  __pyx_k__126 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1604
 *         return request
 * 
 *     def Alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1608
 *         sendbuf: BufSpecW | InPlace,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1608, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1604
 *         return request
 * 
 *     def Alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW | InPlace,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8)) __PYX_ERR(31, 1604, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecW_InPlace) < 0) __PYX_ERR(31, 1604, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 1604, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1604, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1604, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_199Alltoallw_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Alltoallw_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__715)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Alltoallw_init, __pyx_t_3) < 0) __PYX_ERR(31, 1604, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1627
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec | None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1627, __pyx_L1_error)
  __pyx_k__127 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1629
 *         Op op: Op = SUM,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1629, __pyx_L1_error)
  __pyx_k__128 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1627
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec | None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1627, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1629
 *         Op op: Op = SUM,
 *         int root: int = 0,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1629, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1623
 *         return request
 * 
 *     def Reduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 1623, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0)) __PYX_ERR(31, 1623, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8)) __PYX_ERR(31, 1623, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_None) < 0) __PYX_ERR(31, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1623, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1623, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_201Reduce_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Reduce_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__717)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Reduce_init, __pyx_t_3) < 0) __PYX_ERR(31, 1623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1646
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1646, __pyx_L1_error)
  __pyx_k__129 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1647
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1647, __pyx_L1_error)
  __pyx_k__130 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1646
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1646, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1647
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1647, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1642
 *         return request
 * 
 *     def Allreduce_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 1642, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 1642, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1642, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1642, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_203Allreduce_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Allreduce_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__719)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Allreduce_init, __pyx_t_3) < 0) __PYX_ERR(31, 1642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1664
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1664, __pyx_L1_error)
  __pyx_k__131 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1665
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1665, __pyx_L1_error)
  __pyx_k__132 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1664
 *         sendbuf: BufSpecB | InPlace,
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1664, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1665
 *         recvbuf: BufSpec | BufSpecB,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1665, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1660
 *         return request
 * 
 *     def Reduce_scatter_block_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB | InPlace,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 1660, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 1660, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpecB_InPlace) < 0) __PYX_ERR(31, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_kp_s_BufSpec_BufSpecB) < 0) __PYX_ERR(31, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1660, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1660, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_205Reduce_scatter_block_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Reduce_scatter_block_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__720)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Reduce_scatter_block_init, __pyx_t_3) < 0) __PYX_ERR(31, 1660, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1683
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1683, __pyx_L1_error)
  __pyx_k__133 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1684
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1684, __pyx_L1_error)
  __pyx_k__134 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":1683
 *         recvbuf: BufSpec,
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 1683, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1684
 *         recvcounts: Sequence[int] | None = None,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 1684, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":1678
 *         return request
 * 
 *     def Reduce_scatter_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, Py_None)) __PYX_ERR(31, 1678, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3)) __PYX_ERR(31, 1678, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8)) __PYX_ERR(31, 1678, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvcounts, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(31, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 1678, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 1678, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_207Reduce_scatter_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Reduce_scatter_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__722)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1678, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Reduce_scatter_init, __pyx_t_3) < 0) __PYX_ERR(31, 1678, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1701
 *     # -----
 * 
 *     def Is_inter(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intercommunicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(31, 1701, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_209Is_inter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Is_inter, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__723)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Is_inter, __pyx_t_8) < 0) __PYX_ERR(31, 1701, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1714
 *             return self.Is_inter()
 * 
 *     def Is_intra(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return whether the communicator is an intracommunicator.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(31, 1714, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_211Is_intra, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Is_intra, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__724)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Is_intra, __pyx_t_3) < 0) __PYX_ERR(31, 1714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1725
 *             return self.Is_intra()
 * 
 *     def Get_topology(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the type of topology (if any) associated with a communicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 1725, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_213Get_topology, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_topology, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__726)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_topology, __pyx_t_8) < 0) __PYX_ERR(31, 1725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1746
 *     # -------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Get_parent(cls) -> Intercomm:
 *         """
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Intercomm) < 0) __PYX_ERR(31, 1746, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_215Get_parent, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_parent, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__728)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_parent, __pyx_t_3) < 0) __PYX_ERR(31, 1746, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_parent, __pyx_t_8) < 0) __PYX_ERR(31, 1746, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1756
 *         return comm
 * 
 *     def Disconnect(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Disconnect from a communicator.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1756, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_217Disconnect, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Disconnect, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__729)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Disconnect, __pyx_t_3) < 0) __PYX_ERR(31, 1756, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1762
 *         with nogil: CHKERR( MPI_Comm_disconnect(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Join(cls, int fd: int) -> Intercomm:
 *         """
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fd, __pyx_n_s_int) < 0) __PYX_ERR(31, 1762, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Intercomm) < 0) __PYX_ERR(31, 1762, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_219Join, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Join, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__731)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Join, __pyx_t_8) < 0) __PYX_ERR(31, 1762, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_GetNameInClass(__pyx_t_8, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Join); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Join, __pyx_t_3) < 0) __PYX_ERR(31, 1762, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1775
 *     # ----------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(31, 1775, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_int_Any_None) < 0) __PYX_ERR(31, 1775, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_221Get_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__732)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_attr, __pyx_t_8) < 0) __PYX_ERR(31, 1775, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1801
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(31, 1801, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_attrval, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1801, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1801, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_223Set_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Set_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__733)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Set_attr, __pyx_t_3) < 0) __PYX_ERR(31, 1801, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1807
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(31, 1807, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1807, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_225Delete_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Delete_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__734)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Delete_attr, __pyx_t_8) < 0) __PYX_ERR(31, 1807, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1813
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_copy_fn, __pyx_kp_s_Callable_Comm_int_Any_Any_None) < 0) __PYX_ERR(31, 1813, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_delete_fn, __pyx_kp_s_Callable_Comm_int_Any_None_None) < 0) __PYX_ERR(31, 1813, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_nopython, __pyx_n_s_bool) < 0) __PYX_ERR(31, 1813, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 1813, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_227Create_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Create_keyval, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__735)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__330);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Create_keyval, __pyx_t_3) < 0) __PYX_ERR(31, 1813, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Create_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Create_keyval, __pyx_t_8) < 0) __PYX_ERR(31, 1813, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1831
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(31, 1831, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 1831, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_229Free_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Free_keyval, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__736)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Free_keyval, __pyx_t_3) < 0) __PYX_ERR(31, 1831, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Free_keyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Free_keyval, __pyx_t_8) < 0) __PYX_ERR(31, 1831, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1844
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_errhandler_fn, __pyx_kp_s_Callable_Comm_int_None) < 0) __PYX_ERR(31, 1844, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(31, 1844, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_231Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Create_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__737)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Create_errhandler, __pyx_t_3) < 0) __PYX_ERR(31, 1844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Create_errhandler); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Create_errhandler, __pyx_t_8) < 0) __PYX_ERR(31, 1844, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1862
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a communicator.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(31, 1862, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_233Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__738)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_errhandler, __pyx_t_3) < 0) __PYX_ERR(31, 1862, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1870
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a communicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_errhandler, __pyx_n_s_Errhandler) < 0) __PYX_ERR(31, 1870, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1870, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_235Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Set_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__739)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Set_errhandler, __pyx_t_8) < 0) __PYX_ERR(31, 1870, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1876
 *         CHKERR( MPI_Comm_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a communicator.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(31, 1876, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1876, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_237Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Call_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__740)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Call_errhandler, __pyx_t_3) < 0) __PYX_ERR(31, 1876, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1882
 *         CHKERR( MPI_Comm_call_errhandler(self.ob_mpi, errorcode) )
 * 
 *     def Abort(self, int errorcode: int = 0) -> NoReturn:             # <<<<<<<<<<<<<<
 *         """
 *         Terminate the MPI execution environment.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(31, 1882, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_NoReturn) < 0) __PYX_ERR(31, 1882, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_239Abort, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Abort, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__741)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Abort, __pyx_t_8) < 0) __PYX_ERR(31, 1882, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1896
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this communicator.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(31, 1896, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_241Get_name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Get_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__742)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Get_name, __pyx_t_3) < 0) __PYX_ERR(31, 1896, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1905
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this communicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_name_2, __pyx_n_s_str) < 0) __PYX_ERR(31, 1905, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1905, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_243Set_name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_Set_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__743)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_Set_name, __pyx_t_8) < 0) __PYX_ERR(31, 1905, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1924
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 1924, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_245py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__744)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_py2f, __pyx_t_3) < 0) __PYX_ERR(31, 1924, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1929
 *         return MPI_Comm_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Comm:
 *         """
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(31, 1929, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Comm) < 0) __PYX_ERR(31, 1929, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_247f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__745)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_f2py, __pyx_t_8) < 0) __PYX_ERR(31, 1929, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);
  __Pyx_GetNameInClass(__pyx_t_8, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_f2py); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1929, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_f2py, __pyx_t_3) < 0) __PYX_ERR(31, 1929, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1938
 *     # --------------------
 * 
 *     def send(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1938, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 1938, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 1938, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1938, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_249send, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_send, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__747)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_send, __pyx_t_8) < 0) __PYX_ERR(31, 1938, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1948
 *         return PyMPI_send(obj, dest, tag, comm)
 * 
 *     def bsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1948, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 1948, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 1948, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1948, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_251bsend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_bsend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__748)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_bsend, __pyx_t_3) < 0) __PYX_ERR(31, 1948, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1958
 *         return PyMPI_bsend(obj, dest, tag, comm)
 * 
 *     def ssend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1958, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 1958, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 1958, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 1958, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_253ssend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_ssend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__749)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_ssend, __pyx_t_8) < 0) __PYX_ERR(31, 1958, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1971
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1971, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k__135 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":1972
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1972, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k__136 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":1971
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1971, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1972
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1972, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1968
 *         return PyMPI_ssend(obj, dest, tag, comm)
 * 
 *     def recv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */
  __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, Py_None)) __PYX_ERR(31, 1968, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 1968, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_3)) __PYX_ERR(31, 1968, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 3, Py_None)) __PYX_ERR(31, 1968, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(31, 1968, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 1968, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 1968, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 1968, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1968, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_255recv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_recv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__751)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_recv, __pyx_t_8) < 0) __PYX_ERR(31, 1968, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1986
 *         int sendtag: int = 0,
 *         recvbuf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1986, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k__137 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":1987
 *         recvbuf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1987, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_k__138 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":1986
 *         int sendtag: int = 0,
 *         recvbuf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int recvtag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1986, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":1987
 *         recvbuf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int recvtag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Any:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 1987, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":1980
 *         return PyMPI_recv(buf, source, tag, comm, statusp)
 * 
 *     def sendrecv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_t_9 = PyTuple_New(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 1980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_0)) __PYX_ERR(31, 1980, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, Py_None)) __PYX_ERR(31, 1980, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8)) __PYX_ERR(31, 1980, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_3)) __PYX_ERR(31, 1980, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 4, Py_None)) __PYX_ERR(31, 1980, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvtag, __pyx_n_s_int) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_257sendrecv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_sendrecv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__753)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_sendrecv, __pyx_t_8) < 0) __PYX_ERR(31, 1980, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":1997
 *                               comm, statusp)
 * 
 *     def isend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 1997, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 1997, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 1997, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 1997, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_259isend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_isend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__755)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_isend, __pyx_t_3) < 0) __PYX_ERR(31, 1997, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2009
 *         return request
 * 
 *     def ibsend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2009, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 2009, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2009, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2009, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_261ibsend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_ibsend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__756)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_ibsend, __pyx_t_8) < 0) __PYX_ERR(31, 2009, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2021
 *         return request
 * 
 *     def issend(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2021, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dest, __pyx_n_s_int) < 0) __PYX_ERR(31, 2021, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2021, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2021, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_263issend, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_issend, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__757)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_issend, __pyx_t_3) < 0) __PYX_ERR(31, 2021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2036
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2036, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__139 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2037
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """Nonblocking receive."""
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2037, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__140 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2036
 *         self,
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2036, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2037
 *         buf: Buffer | None = None,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """Nonblocking receive."""
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2037, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2037, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2033
 *         return request
 * 
 *     def irecv(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: Buffer | None = None,
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, Py_None)) __PYX_ERR(31, 2033, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3)) __PYX_ERR(31, 2033, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8)) __PYX_ERR(31, 2033, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(31, 2033, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 2033, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2033, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2033, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_265irecv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_irecv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__759)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_irecv, __pyx_t_3) < 0) __PYX_ERR(31, 2033, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2047
 *     def probe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2047, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__141 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2048
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Literal[True]:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2048, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__142 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2047
 *     def probe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2047, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2048
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Literal[True]:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2048, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2045
 *         return request
 * 
 *     def probe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2045, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 2045, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, Py_None)) __PYX_ERR(31, 2045, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 2045, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2045, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 2045, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_Literal_True) < 0) __PYX_ERR(31, 2045, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_267probe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_probe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__761)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_probe, __pyx_t_3) < 0) __PYX_ERR(31, 2045, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2058
 *     def iprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2058, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__143 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2059
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> bool:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__144 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2058
 *     def iprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2058, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2059
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> bool:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2056
 *         return PyMPI_probe(source, tag, comm, statusp)
 * 
 *     def iprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2056, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 2056, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, Py_None)) __PYX_ERR(31, 2056, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 2056, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2056, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 2056, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(31, 2056, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_269iprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_iprobe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__762)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2056, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_iprobe, __pyx_t_3) < 0) __PYX_ERR(31, 2056, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2069
 *     def mprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2069, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__145 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2070
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2070, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__146 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2069
 *     def mprobe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2069, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2070
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2070, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2070, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2067
 *         return PyMPI_iprobe(source, tag, comm, statusp)
 * 
 *     def mprobe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2067, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 2067, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, Py_None)) __PYX_ERR(31, 2067, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 2067, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2067, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 2067, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Message) < 0) __PYX_ERR(31, 2067, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_271mprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_mprobe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__764)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_mprobe, __pyx_t_3) < 0) __PYX_ERR(31, 2067, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2083
 *     def improbe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__147 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2084
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2084, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__148 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Comm.pyx":2083
 *     def improbe(
 *         self,
 *         int source: int = ANY_SOURCE,             # <<<<<<<<<<<<<<
 *         int tag: int = ANY_TAG,
 *         Status status: Status | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ANY_SOURCE); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2084
 *         self,
 *         int source: int = ANY_SOURCE,
 *         int tag: int = ANY_TAG,             # <<<<<<<<<<<<<<
 *         Status status: Status | None = None,
 *     ) -> Message | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ANY_TAG); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_8); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 2084, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2081
 *         return message
 * 
 *     def improbe(             # <<<<<<<<<<<<<<
 *         self,
 *         int source: int = ANY_SOURCE,
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2081, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 2081, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, Py_None)) __PYX_ERR(31, 2081, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_source, __pyx_n_s_int) < 0) __PYX_ERR(31, 2081, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2081, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(31, 2081, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_Message_None) < 0) __PYX_ERR(31, 2081, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_273improbe, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_improbe, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__766)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_improbe, __pyx_t_3) < 0) __PYX_ERR(31, 2081, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2097
 *         return message
 * 
 *     def barrier(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Barrier synchronization.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2097, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_275barrier, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_barrier, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__767)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2097, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_barrier, __pyx_t_8) < 0) __PYX_ERR(31, 2097, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2106
 *         return PyMPI_barrier(comm)
 * 
 *     def bcast(             # <<<<<<<<<<<<<<
 *         self,
 *         obj: Any,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_obj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2106, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2106, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2106, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_277bcast, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_bcast, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__769)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_bcast, __pyx_t_3) < 0) __PYX_ERR(31, 2106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2115
 *         return PyMPI_bcast(obj, root, comm)
 * 
 *     def gather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2115, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2115, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_list_Any_None) < 0) __PYX_ERR(31, 2115, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_279gather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_gather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__771)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_gather, __pyx_t_8) < 0) __PYX_ERR(31, 2115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2124
 *         return PyMPI_gather(sendobj, root, comm)
 * 
 *     def scatter(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any] | None,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendobj, __pyx_kp_s_Sequence_Any_None) < 0) __PYX_ERR(31, 2124, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2124, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2124, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_281scatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_scatter, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__772)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_scatter, __pyx_t_3) < 0) __PYX_ERR(31, 2124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2133
 *         return PyMPI_scatter(sendobj, root, comm)
 * 
 *     def allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2133, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_list_Any) < 0) __PYX_ERR(31, 2133, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_283allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_allgather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__774)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_allgather, __pyx_t_8) < 0) __PYX_ERR(31, 2133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2141
 *         return PyMPI_allgather(sendobj, comm)
 * 
 *     def alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Sequence[Any],
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendobj, __pyx_kp_s_Sequence_Any) < 0) __PYX_ERR(31, 2141, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_list_Any) < 0) __PYX_ERR(31, 2141, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_285alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_alltoall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__775)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_alltoall, __pyx_t_3) < 0) __PYX_ERR(31, 2141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2152
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Any | None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_k__149 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2149
 *         return PyMPI_alltoall(sendobj, comm)
 * 
 *     def reduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3)) __PYX_ERR(31, 2149, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_0)) __PYX_ERR(31, 2149, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2149, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_kp_s_Op_Callable_Any_Any_Any) < 0) __PYX_ERR(31, 2149, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2149, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_Any_None) < 0) __PYX_ERR(31, 2149, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_287reduce, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__777)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_reduce_2, __pyx_t_9) < 0) __PYX_ERR(31, 2149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2162
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Reduce to All."""
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_k__150 = __pyx_t_9;
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2159
 *         return PyMPI_reduce(sendobj, op, root, comm)
 * 
 *     def allreduce(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(31, 2159, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2159, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_op, __pyx_kp_s_Op_Callable_Any_Any_Any) < 0) __PYX_ERR(31, 2159, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2159, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4Comm_289allreduce, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Comm_allreduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__779)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Comm, __pyx_n_s_allreduce, __pyx_t_8) < 0) __PYX_ERR(31, 2159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Comm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2185
 *     # -------------------------
 * 
 *     def Create_group(self, Group group: Group, int tag: int = 0) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Create communicator from group.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_group, __pyx_n_s_Group) < 0) __PYX_ERR(31, 2185, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2185, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Intracomm) < 0) __PYX_ERR(31, 2185, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_3Create_group, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Create_group, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__781)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_group, __pyx_t_9) < 0) __PYX_ERR(31, 2185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2200
 *         Group group: Group,
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Intracomm:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2200, __pyx_L1_error)
  __pyx_k__152 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":2200
 *         Group group: Group,
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Intracomm:
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2200, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2195
 *         return comm
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_group(
 *         cls,
 */
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_kp_s_org_mpi4py);
  __Pyx_GIVEREF(__pyx_kp_s_org_mpi4py);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_s_org_mpi4py)) __PYX_ERR(31, 2195, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9)) __PYX_ERR(31, 2195, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, Py_None)) __PYX_ERR(31, 2195, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_group, __pyx_n_s_Group) < 0) __PYX_ERR(31, 2195, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_stringtag, __pyx_n_s_str) < 0) __PYX_ERR(31, 2195, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2195, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errhandler, __pyx_kp_s_Errhandler_None) < 0) __PYX_ERR(31, 2195, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Intracomm) < 0) __PYX_ERR(31, 2195, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_5Create_from_group, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Create_from_group, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__783)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_from_group, __pyx_t_3) < 0) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_from_group); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_from_group, __pyx_t_9) < 0) __PYX_ERR(31, 2195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2214
 *         return comm
 * 
 *     def Create_cart(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dims, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2214, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_periods, __pyx_kp_s_Sequence_bool_None) < 0) __PYX_ERR(31, 2214, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_reorder, __pyx_n_s_bool) < 0) __PYX_ERR(31, 2214, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Cartcomm) < 0) __PYX_ERR(31, 2214, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_7Create_cart, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Create_cart, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__785)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__786);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_cart, __pyx_t_3) < 0) __PYX_ERR(31, 2214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2235
 *         return comm
 * 
 *     def Create_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_index, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2235, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_edges, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2235, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reorder, __pyx_n_s_bool) < 0) __PYX_ERR(31, 2235, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Graphcomm) < 0) __PYX_ERR(31, 2235, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_9Create_graph, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Create_graph, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__788)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__210);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_graph, __pyx_t_9) < 0) __PYX_ERR(31, 2235, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2265
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2265, __pyx_L1_error)
  __pyx_k__153 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2264
 *         destinations: Sequence[int],
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":2265
 *         sourceweights: Sequence[int] | None = None,
 *         destweights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2265, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2259
 *         return comm
 * 
 *     def Create_dist_graph_adjacent(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None)) __PYX_ERR(31, 2259, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, Py_None)) __PYX_ERR(31, 2259, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_9)) __PYX_ERR(31, 2259, __pyx_L1_error);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, Py_False)) __PYX_ERR(31, 2259, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sources, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_destinations, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sourceweights, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_destweights, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_reorder, __pyx_n_s_bool) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Distgraphcomm) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_11Create_dist_graph_adjacent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Create_dist_graph_adja, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__790)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_dist_graph_adjacent, __pyx_t_8) < 0) __PYX_ERR(31, 2259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2299
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2299, __pyx_L1_error)
  __pyx_k__154 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2298
 *         degrees: Sequence[int],
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *         bint reorder: bool = False,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2299
 *         destinations: Sequence[int],
 *         weights: Sequence[int] | None = None,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         bint reorder: bool = False,
 *     ) -> Distgraphcomm:
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2299, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2293
 *         return comm
 * 
 *     def Create_dist_graph(             # <<<<<<<<<<<<<<
 *         self,
 *         sources: Sequence[int],
 */
  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, Py_None)) __PYX_ERR(31, 2293, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(31, 2293, __pyx_L1_error);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, Py_False)) __PYX_ERR(31, 2293, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sources, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_degrees, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_destinations, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_weights, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_reorder, __pyx_n_s_bool) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Distgraphcomm) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_13Create_dist_graph, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Create_dist_graph, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__792)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_dist_graph, __pyx_t_3) < 0) __PYX_ERR(31, 2293, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2322
 *         return comm
 * 
 *     def Create_intercomm(             # <<<<<<<<<<<<<<
 *         self,
 *         int local_leader: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_local_leader, __pyx_n_s_int) < 0) __PYX_ERR(31, 2322, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_peer_comm, __pyx_n_s_Intracomm) < 0) __PYX_ERR(31, 2322, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remote_leader, __pyx_n_s_int) < 0) __PYX_ERR(31, 2322, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tag, __pyx_n_s_int) < 0) __PYX_ERR(31, 2322, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Intercomm) < 0) __PYX_ERR(31, 2322, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_15Create_intercomm, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Create_intercomm, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__794)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Create_intercomm, __pyx_t_8) < 0) __PYX_ERR(31, 2322, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2343
 *     # ----------------------------
 * 
 *     def Cart_map(             # <<<<<<<<<<<<<<
 *         self,
 *         dims: Sequence[int],
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dims, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2343, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_periods, __pyx_kp_s_Sequence_bool_None) < 0) __PYX_ERR(31, 2343, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 2343, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_17Cart_map, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Cart_map, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__796)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Cart_map, __pyx_t_3) < 0) __PYX_ERR(31, 2343, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2360
 *         return rank
 * 
 *     def Graph_map(             # <<<<<<<<<<<<<<
 *         self,
 *         index: Sequence[int],
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_index, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2360, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_edges, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 2360, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 2360, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_19Graph_map, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Graph_map, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__798)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Graph_map, __pyx_t_8) < 0) __PYX_ERR(31, 2360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2389
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2389, __pyx_L1_error)
  __pyx_k__155 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2385
 *     # Inclusive Scan
 * 
 *     def Scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2389
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2389, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2385
 *     # Inclusive Scan
 * 
 *     def Scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8)) __PYX_ERR(31, 2385, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 2385, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2385, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 2385, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2385, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_21Scan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Scan, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__799)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Scan, __pyx_t_9) < 0) __PYX_ERR(31, 2385, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2406
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2406, __pyx_L1_error)
  __pyx_k__156 = ((struct PyMPIOpObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2402
 *     # Exclusive Scan
 * 
 *     def Exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":2406
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2406, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2402
 *     # Exclusive Scan
 * 
 *     def Exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(31, 2402, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 2402, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2402, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 2402, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2402, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_23Exscan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Exscan, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__800)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Exscan, __pyx_t_3) < 0) __PYX_ERR(31, 2402, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2423
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2423, __pyx_L1_error)
  __pyx_k__157 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2419
 *     # Nonblocking
 * 
 *     def Iscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2423
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2423, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2419
 *     # Nonblocking
 * 
 *     def Iscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2419, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 2419, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2419, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 2419, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2419, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_25Iscan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Iscan, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__801)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Iscan, __pyx_t_8) < 0) __PYX_ERR(31, 2419, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2440
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2440, __pyx_L1_error)
  __pyx_k__158 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2436
 *         return request
 * 
 *     def Iexscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2440
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2440, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2436
 *         return request
 * 
 *     def Iexscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8)) __PYX_ERR(31, 2436, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 2436, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2436, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 2436, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2436, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_27Iexscan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Iexscan, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__802)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Iexscan, __pyx_t_9) < 0) __PYX_ERR(31, 2436, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2459
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2459, __pyx_L1_error)
  __pyx_k__159 = ((struct PyMPIOpObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2460
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2460, __pyx_L1_error)
  __pyx_k__160 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2459
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2459, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2460
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2460, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2455
 *     # Persistent
 * 
 *     def Scan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(31, 2455, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8)) __PYX_ERR(31, 2455, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 2455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 2455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2455, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 2455, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_29Scan_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Scan_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__803)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Scan_init, __pyx_t_9) < 0) __PYX_ERR(31, 2455, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2478
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2478, __pyx_L1_error)
  __pyx_k__161 = ((struct PyMPIOpObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2479
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2479, __pyx_L1_error)
  __pyx_k__162 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2478
 *         sendbuf: BufSpec | InPlace,
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Prequest:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(31, 2478, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2479
 *         recvbuf: BufSpec,
 *         Op op: Op = SUM,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2479, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2474
 *         return request
 * 
 *     def Exscan_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec | InPlace,
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(31, 2474, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8)) __PYX_ERR(31, 2474, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_kp_s_BufSpec_InPlace) < 0) __PYX_ERR(31, 2474, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2474, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(31, 2474, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2474, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 2474, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_31Exscan_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Exscan_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__804)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Exscan_init, __pyx_t_9) < 0) __PYX_ERR(31, 2474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2498
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Inclusive Scan."""
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_k__163 = __pyx_t_9;
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2495
 *     # Python Communication
 * 
 *     def scan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(31, 2495, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2495, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_op, __pyx_kp_s_Op_Callable_Any_Any_Any) < 0) __PYX_ERR(31, 2495, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2495, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_33scan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_scan, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__805)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_scan, __pyx_t_3) < 0) __PYX_ERR(31, 2495, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2507
 *         self,
 *         sendobj: Any,
 *         op: Op | Callable[[Any, Any], Any] = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Any:
 *         """Exclusive Scan."""
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_k__164 = __pyx_t_3;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2504
 *         return PyMPI_scan(sendobj, op, comm)
 * 
 *     def exscan(             # <<<<<<<<<<<<<<
 *         self,
 *         sendobj: Any,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2504, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2504, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_kp_s_Op_Callable_Any_Any_Any) < 0) __PYX_ERR(31, 2504, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2504, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_35exscan, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_exscan, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__806)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_exscan, __pyx_t_8) < 0) __PYX_ERR(31, 2504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2523
 *         args: Sequence[str] | None = None,
 *         int maxprocs: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *         errcodes: list[int] | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2523, __pyx_L1_error)
  __pyx_k__165 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2521
 *         self,
 *         command: str,
 *         args: Sequence[str] | None = None,             # <<<<<<<<<<<<<<
 *         int maxprocs: int = 1,
 *         Info info: Info = INFO_NULL,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2523
 *         args: Sequence[str] | None = None,
 *         int maxprocs: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *         errcodes: list[int] | None = None,
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2523, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2518
 *     # Starting Processes
 * 
 *     def Spawn(             # <<<<<<<<<<<<<<
 *         self,
 *         command: str,
 */
  __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None)) __PYX_ERR(31, 2518, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_1)) __PYX_ERR(31, 2518, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_8)) __PYX_ERR(31, 2518, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_int_0)) __PYX_ERR(31, 2518, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 4, Py_None)) __PYX_ERR(31, 2518, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_command, __pyx_n_s_str) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_args, __pyx_kp_s_Sequence_str_None) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_maxprocs, __pyx_n_s_int) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_errcodes, __pyx_kp_s_list_int_None) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Intercomm) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_37Spawn, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Spawn, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__808)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Spawn, __pyx_t_9) < 0) __PYX_ERR(31, 2518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2559
 *         args: Sequence[Sequence[str]] | None = None,
 *         maxprocs: Sequence[int] | None = None,
 *         info: Sequence[Info] | Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *         errcodes: list[list[int]] | None = None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_k__167 = __pyx_t_9;
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2558
 *         command: Sequence[str],
 *         args: Sequence[Sequence[str]] | None = None,
 *         maxprocs: Sequence[int] | None = None,             # <<<<<<<<<<<<<<
 *         info: Sequence[Info] | Info = INFO_NULL,
 *         int root: int = 0,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":2554
 *         return comm
 * 
 *     def Spawn_multiple(             # <<<<<<<<<<<<<<
 *         self,
 *         command: Sequence[str],
 */
  __pyx_t_8 = PyTuple_New(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, Py_None)) __PYX_ERR(31, 2554, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, Py_None)) __PYX_ERR(31, 2554, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_9)) __PYX_ERR(31, 2554, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_int_0)) __PYX_ERR(31, 2554, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 4, Py_None)) __PYX_ERR(31, 2554, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_command, __pyx_kp_s_Sequence_str) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_args, __pyx_kp_s_Sequence_Sequence_str_None) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_maxprocs, __pyx_kp_s_Sequence_int_None) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_kp_s_Sequence_Info_Info) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errcodes, __pyx_kp_s_list_list_int_None) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Intercomm) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_39Spawn_multiple, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Spawn_multiple, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__811)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Spawn_multiple, __pyx_t_3) < 0) __PYX_ERR(31, 2554, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2611
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2611, __pyx_L1_error)
  __pyx_k__168 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2608
 *     # Server Routines
 * 
 *     def Accept(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2611
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2611, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2608
 *     # Server Routines
 * 
 *     def Accept(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2608, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0)) __PYX_ERR(31, 2608, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_port_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 2608, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2608, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2608, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Intercomm) < 0) __PYX_ERR(31, 2608, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_41Accept, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Accept, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__813)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Accept, __pyx_t_8) < 0) __PYX_ERR(31, 2608, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2634
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2634, __pyx_L1_error)
  __pyx_k__169 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2631
 *     # Client Routines
 * 
 *     def Connect(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2634
 *         self,
 *         port_name: str,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         int root: int = 0,
 *     ) -> Intercomm:
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2634, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2631
 *     # Client Routines
 * 
 *     def Connect(             # <<<<<<<<<<<<<<
 *         self,
 *         port_name: str,
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8)) __PYX_ERR(31, 2631, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0)) __PYX_ERR(31, 2631, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_port_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 2631, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2631, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_root, __pyx_n_s_int) < 0) __PYX_ERR(31, 2631, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Intercomm) < 0) __PYX_ERR(31, 2631, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intracomm_43Connect, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intracomm_Connect, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__814)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intracomm, __pyx_n_s_Connect, __pyx_t_9) < 0) __PYX_ERR(31, 2631, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intracomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2727
 *     # ------------------------
 * 
 *     def Neighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2727, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2727, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2727, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_3Neighbor_allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_allgather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__815)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_allgather, __pyx_t_8) < 0) __PYX_ERR(31, 2727, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2742
 *             self.ob_mpi) )
 * 
 *     def Neighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2742, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2742, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2742, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_5Neighbor_allgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_allgatherv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__816)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_allgatherv, __pyx_t_9) < 0) __PYX_ERR(31, 2742, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2757
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2757, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2757, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2757, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_7Neighbor_alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_alltoall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__817)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_alltoall, __pyx_t_8) < 0) __PYX_ERR(31, 2757, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2772
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2772, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2772, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2772, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_9Neighbor_alltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_alltoallv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__818)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_alltoallv, __pyx_t_9) < 0) __PYX_ERR(31, 2772, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2787
 *             self.ob_mpi) )
 * 
 *     def Neighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 2787, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 2787, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 2787, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_11Neighbor_alltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_alltoallw, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__819)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2787, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_alltoallw, __pyx_t_8) < 0) __PYX_ERR(31, 2787, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2805
 *     # ------------------------------------
 * 
 *     def Ineighbor_allgather(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2805, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2805, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2805, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_13Ineighbor_allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Ineighbor_allgather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__820)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Ineighbor_allgather, __pyx_t_9) < 0) __PYX_ERR(31, 2805, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2823
 *         return request
 * 
 *     def Ineighbor_allgatherv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2823, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2823, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2823, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_15Ineighbor_allgatherv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Ineighbor_allgatherv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__821)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Ineighbor_allgatherv, __pyx_t_8) < 0) __PYX_ERR(31, 2823, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2841
 *         return request
 * 
 *     def Ineighbor_alltoall(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2841, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2841, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2841, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_17Ineighbor_alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Ineighbor_alltoall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__822)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Ineighbor_alltoall, __pyx_t_9) < 0) __PYX_ERR(31, 2841, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2859
 *         return request
 * 
 *     def Ineighbor_alltoallv(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2859, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2859, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2859, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_19Ineighbor_alltoallv, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Ineighbor_alltoallv, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__823)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Ineighbor_alltoallv, __pyx_t_8) < 0) __PYX_ERR(31, 2859, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2877
 *         return request
 * 
 *     def Ineighbor_alltoallw(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 2877, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 2877, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 2877, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_21Ineighbor_alltoallw, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Ineighbor_alltoallw, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__824)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Ineighbor_alltoallw, __pyx_t_9) < 0) __PYX_ERR(31, 2877, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2902
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2902, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2902, __pyx_L1_error)
  __pyx_k__172 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2898
 *     # -----------------------------------
 * 
 *     def Neighbor_allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2902, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":2902
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2902, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2898
 *     # -----------------------------------
 * 
 *     def Neighbor_allgather_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(31, 2898, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2898, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2898, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2898, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 2898, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_23Neighbor_allgather_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_allgather_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__825)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_allgather_init, __pyx_t_3) < 0) __PYX_ERR(31, 2898, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2921
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2921, __pyx_L1_error)
  __pyx_k__173 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2917
 *         return request
 * 
 *     def Neighbor_allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2921
 *         sendbuf: BufSpec,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2921, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2917
 *         return request
 * 
 *     def Neighbor_allgatherv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpec,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2917, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(31, 2917, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2917, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2917, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 2917, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_25Neighbor_allgatherv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_allgatherv_ini, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__826)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2917, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_allgatherv_init, __pyx_t_8) < 0) __PYX_ERR(31, 2917, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2940
 *         sendbuf: BufSpecB,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2940, __pyx_L1_error)
  __pyx_k__174 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2936
 *         return request
 * 
 *     def Neighbor_alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2940, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Comm.pyx":2940
 *         sendbuf: BufSpecB,
 *         recvbuf: BufSpecB,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2940, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2936
 *         return request
 * 
 *     def Neighbor_alltoall_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecB,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8)) __PYX_ERR(31, 2936, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2936, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecB) < 0) __PYX_ERR(31, 2936, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2936, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 2936, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_27Neighbor_alltoall_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_alltoall_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__827)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2936, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_alltoall_init, __pyx_t_9) < 0) __PYX_ERR(31, 2936, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2959
 *         sendbuf: BufSpecV,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2959, __pyx_L1_error)
  __pyx_k__175 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2955
 *         return request
 * 
 *     def Neighbor_alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Comm.pyx":2959
 *         sendbuf: BufSpecV,
 *         recvbuf: BufSpecV,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2959, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2955
 *         return request
 * 
 *     def Neighbor_alltoallv_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecV,
 */
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(31, 2955, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2955, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecV) < 0) __PYX_ERR(31, 2955, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2955, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 2955, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_29Neighbor_alltoallv_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_alltoallv_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__828)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_alltoallv_init, __pyx_t_3) < 0) __PYX_ERR(31, 2955, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2978
 *         sendbuf: BufSpecW,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2978, __pyx_L1_error)
  __pyx_k__176 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":2974
 *         return request
 * 
 *     def Neighbor_alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":2978
 *         sendbuf: BufSpecW,
 *         recvbuf: BufSpecW,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Prequest:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 2978, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":2974
 *         return request
 * 
 *     def Neighbor_alltoallw_init(             # <<<<<<<<<<<<<<
 *         self,
 *         sendbuf: BufSpecW,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 2974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(31, 2974, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 2974, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_recvbuf, __pyx_n_s_BufSpecW) < 0) __PYX_ERR(31, 2974, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 2974, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Prequest) < 0) __PYX_ERR(31, 2974, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_31Neighbor_alltoallw_init, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_Neighbor_alltoallw_init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__829)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_Neighbor_alltoallw_init, __pyx_t_8) < 0) __PYX_ERR(31, 2974, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":2995
 *     # Python Communication
 * 
 *     def neighbor_allgather(self, sendobj: Any) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor Gather to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 2995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_sendobj, __pyx_n_s_Any) < 0) __PYX_ERR(31, 2995, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_list_Any) < 0) __PYX_ERR(31, 2995, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_33neighbor_allgather, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_neighbor_allgather, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__830)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 2995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_neighbor_allgather, __pyx_t_3) < 0) __PYX_ERR(31, 2995, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3000
 *         return PyMPI_neighbor_allgather(sendobj, comm)
 * 
 *     def neighbor_alltoall(self, sendobj: list[Any]) -> list[Any]:             # <<<<<<<<<<<<<<
 *         """Neighbor All to All."""
 *         cdef MPI_Comm comm = self.ob_mpi
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_sendobj, __pyx_kp_s_list_Any) < 0) __PYX_ERR(31, 3000, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_list_Any) < 0) __PYX_ERR(31, 3000, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Topocomm_35neighbor_alltoall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Topocomm_neighbor_alltoall, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__831)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Topocomm, __pyx_n_s_neighbor_alltoall, __pyx_t_8) < 0) __PYX_ERR(31, 3000, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Topocomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3022
 *     # ---------------------------
 * 
 *     def Get_dim(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of dimensions.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 3022, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_3Get_dim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Cartcomm_Get_dim, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__833)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_n_s_Get_dim, __pyx_t_3) < 0) __PYX_ERR(31, 3022, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Cartcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3040
 *             return self.Get_dim()
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return information on the cartesian topology.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_tuple_list_int_list_int_list_int_2) < 0) __PYX_ERR(31, 3040, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_5Get_topo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Cartcomm_Get_topo, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__835)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_n_s_Get_topo, __pyx_t_8) < 0) __PYX_ERR(31, 3040, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Cartcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3081
 *     # ------------------------------
 * 
 *     def Get_cart_rank(self, coords: Sequence[int]) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Translate logical coordinates to ranks.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_coords, __pyx_kp_s_Sequence_int) < 0) __PYX_ERR(31, 3081, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 3081, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_7Get_cart_rank, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Cartcomm_Get_cart_rank, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__837)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_n_s_Get_cart_rank, __pyx_t_3) < 0) __PYX_ERR(31, 3081, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Cartcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3092
 *         return rank
 * 
 *     def Get_coords(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Translate ranks to logical coordinates.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(31, 3092, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_list_int) < 0) __PYX_ERR(31, 3092, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_9Get_coords, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Cartcomm_Get_coords, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__839)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_n_s_Get_coords, __pyx_t_8) < 0) __PYX_ERR(31, 3092, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Cartcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3106
 *     # ------------------------
 * 
 *     def Shift(self, int direction: int, int disp: int) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return a process ranks for data shifting with `Sendrecv`.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_direction, __pyx_n_s_int) < 0) __PYX_ERR(31, 3106, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_disp, __pyx_n_s_int) < 0) __PYX_ERR(31, 3106, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_tuple_int_int) < 0) __PYX_ERR(31, 3106, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_11Shift, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Cartcomm_Shift, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__841)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_n_s_Shift, __pyx_t_3) < 0) __PYX_ERR(31, 3106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Cartcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3117
 *     # ----------------------------
 * 
 *     def Sub(self, remain_dims: Sequence[bool]) -> Cartcomm:             # <<<<<<<<<<<<<<
 *         """
 *         Return a lower-dimensional Cartesian topology.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remain_dims, __pyx_kp_s_Sequence_bool) < 0) __PYX_ERR(31, 3117, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Cartcomm) < 0) __PYX_ERR(31, 3117, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_8Cartcomm_13Sub, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Cartcomm_Sub, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__843)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Cartcomm, __pyx_n_s_Sub, __pyx_t_8) < 0) __PYX_ERR(31, 3117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Cartcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3132
 * # Cartesian Convenience Function
 * 
 * def Compute_dims(int nnodes: int, dims: int | Sequence[int]) -> list[int]:             # <<<<<<<<<<<<<<
 *     """
 *     Return a balanced distribution of processes per coordinate direction.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_nnodes, __pyx_n_s_int) < 0) __PYX_ERR(31, 3132, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dims, __pyx_kp_s_int_Sequence_int) < 0) __PYX_ERR(31, 3132, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_list_int) < 0) __PYX_ERR(31, 3132, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_33Compute_dims, 0, __pyx_n_s_Compute_dims, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__845)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Compute_dims, __pyx_t_3) < 0) __PYX_ERR(31, 3132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3164
 *     # -----------------------
 * 
 *     def Get_dims(self) -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the number of nodes and edges.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_tuple_int_int) < 0) __PYX_ERR(31, 3164, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_3Get_dims, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Graphcomm_Get_dims, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__847)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_n_s_Get_dims, __pyx_t_8) < 0) __PYX_ERR(31, 3164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Graphcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3187
 *             return self.Get_dims()[1]
 * 
 *     def Get_topo(self) -> tuple[list[int], list[int]]:             # <<<<<<<<<<<<<<
 *         """
 *         Return index and edges.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_tuple_list_int_list_int) < 0) __PYX_ERR(31, 3187, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_5Get_topo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Graphcomm_Get_topo, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__849)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_n_s_Get_topo, __pyx_t_3) < 0) __PYX_ERR(31, 3187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Graphcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3220
 *     # ---------------------------
 * 
 *     def Get_neighbors_count(self, int rank: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return number of neighbors of a process.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(31, 3220, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 3220, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_7Get_neighbors_count, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Graphcomm_Get_neighbors_count, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__851)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_n_s_Get_neighbors_count, __pyx_t_8) < 0) __PYX_ERR(31, 3220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Graphcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3234
 *             return self.Get_neighbors_count(rank)
 * 
 *     def Get_neighbors(self, int rank: int) -> list[int]:             # <<<<<<<<<<<<<<
 *         """
 *         Return list of neighbors of a process.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(31, 3234, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_list_int) < 0) __PYX_ERR(31, 3234, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Graphcomm_9Get_neighbors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Graphcomm_Get_neighbors, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__853)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Graphcomm, __pyx_n_s_Get_neighbors, __pyx_t_3) < 0) __PYX_ERR(31, 3234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Graphcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3270
 *     # --------------------------
 * 
 *     def Get_dist_neighbors_count(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return adjacency information for a distributed graph topology.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 3270, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_3Get_dist_neighbors_count, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Distgraphcomm_Get_dist_neighbors, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__855)); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Distgraphcomm, __pyx_n_s_Get_dist_neighbors_count, __pyx_t_8) < 0) __PYX_ERR(31, 3270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3281
 *         return (indegree, outdegree, <bint>weighted)
 * 
 *     def Get_dist_neighbors(self) -> \             # <<<<<<<<<<<<<<
 *             tuple[list[int], list[int], tuple[list[int], list[int]] | None]:
 *         """
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_tuple_list_int_list_int_tuple_li) < 0) __PYX_ERR(31, 3281, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_13Distgraphcomm_5Get_dist_neighbors, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Distgraphcomm_Get_dist_neighbors_2, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__857)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Distgraphcomm, __pyx_n_s_Get_dist_neighbors, __pyx_t_3) < 0) __PYX_ERR(31, 3281, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Distgraphcomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3342
 *         int remote_leader: int,
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Intracomm:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 3342, __pyx_L1_error)
  __pyx_k__181 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3334
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Comm.pyx":3342
 *         int remote_leader: int,
 *         stringtag: str = "org.mpi4py",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Errhandler errhandler: Errhandler | None = None,
 *     ) -> Intracomm:
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 3342, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3334
 *     # ------------------------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_from_groups(
 *         cls,
 */
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_kp_s_org_mpi4py);
  __Pyx_GIVEREF(__pyx_kp_s_org_mpi4py);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_s_org_mpi4py)) __PYX_ERR(31, 3334, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(31, 3334, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, Py_None)) __PYX_ERR(31, 3334, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(8); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_local_group, __pyx_n_s_Group) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_local_leader, __pyx_n_s_int) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remote_group, __pyx_n_s_Group) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_remote_leader, __pyx_n_s_int) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_stringtag, __pyx_n_s_str) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_errhandler, __pyx_kp_s_Errhandler_None) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Intracomm) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_3Create_from_groups, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intercomm_Create_from_groups, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__859)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_n_s_Create_from_groups, __pyx_t_9) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intercomm);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_n_s_Create_from_groups); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_n_s_Create_from_groups, __pyx_t_3) < 0) __PYX_ERR(31, 3334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intercomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3361
 *     # ---------------------------
 * 
 *     def Get_remote_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the remote group associated with the inter-communicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(31, 3361, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_5Get_remote_group, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intercomm_Get_remote_group, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__860)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_n_s_Get_remote_group, __pyx_t_9) < 0) __PYX_ERR(31, 3361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intercomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3375
 *             return self.Get_remote_group()
 * 
 *     def Get_remote_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Intercommunicator remote size.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(31, 3375, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_7Get_remote_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intercomm_Get_remote_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__861)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_n_s_Get_remote_size, __pyx_t_3) < 0) __PYX_ERR(31, 3375, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intercomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3391
 *     # -------------------------
 * 
 *     def Merge(self, bint high: bool = False) -> Intracomm:             # <<<<<<<<<<<<<<
 *         """
 *         Merge intercommunicator into an intracommunicator.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_high, __pyx_n_s_bool) < 0) __PYX_ERR(31, 3391, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Intracomm) < 0) __PYX_ERR(31, 3391, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_9Intercomm_9Merge, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Intercomm_Merge, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__863)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__210);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Intercomm, __pyx_n_s_Merge, __pyx_t_9) < 0) __PYX_ERR(31, 3391, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Intercomm);

  /* "src/mpi4py/MPI.src/Comm.pyx":3402
 * 
 * 
 * cdef Comm      __COMM_NULL__   = def_Comm      ( MPI_COMM_NULL  , "COMM_NULL"   )             # <<<<<<<<<<<<<<
 * cdef Intracomm __COMM_SELF__   = def_Intracomm ( MPI_COMM_SELF  , "COMM_SELF"   )
 * cdef Intracomm __COMM_WORLD__  = def_Intracomm ( MPI_COMM_WORLD , "COMM_WORLD"  )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Comm(MPI_COMM_NULL, __pyx_n_s_COMM_NULL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_NULL__, ((struct PyMPICommObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3403
 * 
 * cdef Comm      __COMM_NULL__   = def_Comm      ( MPI_COMM_NULL  , "COMM_NULL"   )
 * cdef Intracomm __COMM_SELF__   = def_Intracomm ( MPI_COMM_SELF  , "COMM_SELF"   )             # <<<<<<<<<<<<<<
 * cdef Intracomm __COMM_WORLD__  = def_Intracomm ( MPI_COMM_WORLD , "COMM_WORLD"  )
 * cdef Intercomm __COMM_PARENT__ = def_Intercomm ( MPI_COMM_NULL )
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Intracomm(MPI_COMM_SELF, __pyx_n_s_COMM_SELF)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_SELF__, ((struct PyMPIIntracommObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3404
 * cdef Comm      __COMM_NULL__   = def_Comm      ( MPI_COMM_NULL  , "COMM_NULL"   )
 * cdef Intracomm __COMM_SELF__   = def_Intracomm ( MPI_COMM_SELF  , "COMM_SELF"   )
 * cdef Intracomm __COMM_WORLD__  = def_Intracomm ( MPI_COMM_WORLD , "COMM_WORLD"  )             # <<<<<<<<<<<<<<
 * cdef Intercomm __COMM_PARENT__ = def_Intercomm ( MPI_COMM_NULL )
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Intracomm(MPI_COMM_WORLD, __pyx_n_s_COMM_WORLD)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_WORLD__, ((struct PyMPIIntracommObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3405
 * cdef Intracomm __COMM_SELF__   = def_Intracomm ( MPI_COMM_SELF  , "COMM_SELF"   )
 * cdef Intracomm __COMM_WORLD__  = def_Intracomm ( MPI_COMM_WORLD , "COMM_WORLD"  )
 * cdef Intercomm __COMM_PARENT__ = def_Intercomm ( MPI_COMM_NULL )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Intercomm(MPI_COMM_NULL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_PARENT__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___COMM_PARENT__, ((struct PyMPIIntercommObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3411
 * # ------------------------
 * 
 * COMM_NULL  = __COMM_NULL__   #: Null communicator handle             # <<<<<<<<<<<<<<
 * COMM_SELF  = __COMM_SELF__   #: Self communicator handle
 * COMM_WORLD = __COMM_WORLD__  #: World communicator handle
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMM_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_NULL__)) < 0) __PYX_ERR(31, 3411, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3412
 * 
 * COMM_NULL  = __COMM_NULL__   #: Null communicator handle
 * COMM_SELF  = __COMM_SELF__   #: Self communicator handle             # <<<<<<<<<<<<<<
 * COMM_WORLD = __COMM_WORLD__  #: World communicator handle
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMM_SELF, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_SELF__)) < 0) __PYX_ERR(31, 3412, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3413
 * COMM_NULL  = __COMM_NULL__   #: Null communicator handle
 * COMM_SELF  = __COMM_SELF__   #: Self communicator handle
 * COMM_WORLD = __COMM_WORLD__  #: World communicator handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMM_WORLD, ((PyObject *)__pyx_v_6mpi4py_3MPI___COMM_WORLD__)) < 0) __PYX_ERR(31, 3413, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3419
 * # ---------------------------
 * 
 * BSEND_OVERHEAD = MPI_BSEND_OVERHEAD             # <<<<<<<<<<<<<<
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_BSEND_OVERHEAD); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BSEND_OVERHEAD, __pyx_t_9) < 0) __PYX_ERR(31, 3419, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3422
 * #: Upper bound of memory overhead for sending in buffered mode
 * 
 * BUFFER_AUTOMATIC = __BUFFER_AUTOMATIC__             # <<<<<<<<<<<<<<
 * #: Special address for automatic buffering
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BUFFER_AUTOMATIC, __pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__) < 0) __PYX_ERR(31, 3422, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3426
 * 
 * 
 * def Attach_buffer(buf: Buffer | None) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Attach a user-provided buffer for sending in buffered mode.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(31, 3426, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 3426, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_35Attach_buffer, 0, __pyx_n_s_Attach_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__865)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Attach_buffer, __pyx_t_3) < 0) __PYX_ERR(31, 3426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3437
 * 
 * 
 * def Detach_buffer() -> Buffer | None:             # <<<<<<<<<<<<<<
 *     """
 *     Remove an existing attached buffer.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_Buffer_None) < 0) __PYX_ERR(31, 3437, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_37Detach_buffer, 0, __pyx_n_s_Detach_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__867)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Detach_buffer, __pyx_t_9) < 0) __PYX_ERR(31, 3437, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3447
 * 
 * 
 * def Flush_buffer() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Block until all buffered messages have been transmitted.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 3447, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_39Flush_buffer, 0, __pyx_n_s_Flush_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__868)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Flush_buffer, __pyx_t_3) < 0) __PYX_ERR(31, 3447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3454
 * 
 * 
 * def Iflush_buffer() -> Request:             # <<<<<<<<<<<<<<
 *     """
 *     Nonblocking flush for buffered messages.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(31, 3454, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_41Iflush_buffer, 0, __pyx_n_s_Iflush_buffer, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__870)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Iflush_buffer, __pyx_t_9) < 0) __PYX_ERR(31, 3454, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3469
 * # ---------------
 * 
 * def Open_port(Info info: Info = INFO_NULL) -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Return an address used to connect group of processes.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 3469, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(31, 3469, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_43Open_port, 0, __pyx_n_s_Open_port, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__872)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults), 1)) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_3)->__pyx_arg_info = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_6mpi4py_3MPI_102__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Open_port, __pyx_t_3) < 0) __PYX_ERR(31, 3469, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3480
 * 
 * 
 * def Close_port(port_name: str) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Close a port.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_port_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 3480, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 3480, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_45Close_port, 0, __pyx_n_s_Close_port, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__874)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Close_port, __pyx_t_9) < 0) __PYX_ERR(31, 3480, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3492
 * # ---------------
 * 
 * def Publish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_service_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 3492, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_port_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 3492, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 3492, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 3492, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_47Publish_name, 0, __pyx_n_s_Publish_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__876)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults1), 1)) __PYX_ERR(31, 3492, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3495
 *     service_name: str,
 *     port_name: str,
 *     Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 * ) -> None:
 *     """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 3495, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(__pyx_defaults1, __pyx_t_3)->__pyx_arg_info = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_6mpi4py_3MPI_104__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Publish_name, __pyx_t_3) < 0) __PYX_ERR(31, 3492, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3508
 * 
 * 
 * def Unpublish_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     port_name: str,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_service_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 3508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_port_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 3508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 3508, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(31, 3508, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_49Unpublish_name, 0, __pyx_n_s_Unpublish_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__877)); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3508, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_9, sizeof(__pyx_defaults2), 1)) __PYX_ERR(31, 3508, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3511
 *     service_name: str,
 *     port_name: str,
 *     Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 * ) -> None:
 *     """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(31, 3511, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(__pyx_defaults2, __pyx_t_9)->__pyx_arg_info = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_9, __pyx_pf_6mpi4py_3MPI_106__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Unpublish_name, __pyx_t_9) < 0) __PYX_ERR(31, 3508, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Comm.pyx":3524
 * 
 * 
 * def Lookup_name(             # <<<<<<<<<<<<<<
 *     service_name: str,
 *     info: Info = INFO_NULL,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_service_name, __pyx_n_s_str) < 0) __PYX_ERR(31, 3524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(31, 3524, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(31, 3524, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_51Lookup_name, 0, __pyx_n_s_Lookup_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__879)); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 3524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_3, sizeof(__pyx_defaults3), 1)) __PYX_ERR(31, 3524, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Comm.pyx":3526
 * def Lookup_name(
 *     service_name: str,
 *     info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 * ) -> str:
 *     """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 3526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_Defaults(__pyx_defaults3, __pyx_t_3)->__pyx_arg_info = __pyx_t_8;
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_3, __pyx_pf_6mpi4py_3MPI_108__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Lookup_name, __pyx_t_3) < 0) __PYX_ERR(31, 3524, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":3
 * # Create flavors
 * # --------------
 * WIN_FLAVOR_CREATE   = MPI_WIN_FLAVOR_CREATE             # <<<<<<<<<<<<<<
 * WIN_FLAVOR_ALLOCATE = MPI_WIN_FLAVOR_ALLOCATE
 * WIN_FLAVOR_DYNAMIC  = MPI_WIN_FLAVOR_DYNAMIC
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_FLAVOR_CREATE); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_FLAVOR_CREATE, __pyx_t_3) < 0) __PYX_ERR(32, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":4
 * # --------------
 * WIN_FLAVOR_CREATE   = MPI_WIN_FLAVOR_CREATE
 * WIN_FLAVOR_ALLOCATE = MPI_WIN_FLAVOR_ALLOCATE             # <<<<<<<<<<<<<<
 * WIN_FLAVOR_DYNAMIC  = MPI_WIN_FLAVOR_DYNAMIC
 * WIN_FLAVOR_SHARED   = MPI_WIN_FLAVOR_SHARED
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_FLAVOR_ALLOCATE); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_FLAVOR_ALLOCATE, __pyx_t_3) < 0) __PYX_ERR(32, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":5
 * WIN_FLAVOR_CREATE   = MPI_WIN_FLAVOR_CREATE
 * WIN_FLAVOR_ALLOCATE = MPI_WIN_FLAVOR_ALLOCATE
 * WIN_FLAVOR_DYNAMIC  = MPI_WIN_FLAVOR_DYNAMIC             # <<<<<<<<<<<<<<
 * WIN_FLAVOR_SHARED   = MPI_WIN_FLAVOR_SHARED
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_FLAVOR_DYNAMIC); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_FLAVOR_DYNAMIC, __pyx_t_3) < 0) __PYX_ERR(32, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":6
 * WIN_FLAVOR_ALLOCATE = MPI_WIN_FLAVOR_ALLOCATE
 * WIN_FLAVOR_DYNAMIC  = MPI_WIN_FLAVOR_DYNAMIC
 * WIN_FLAVOR_SHARED   = MPI_WIN_FLAVOR_SHARED             # <<<<<<<<<<<<<<
 * 
 * # Memory model
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_FLAVOR_SHARED); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_FLAVOR_SHARED, __pyx_t_3) < 0) __PYX_ERR(32, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":10
 * # Memory model
 * # ------------
 * WIN_SEPARATE = MPI_WIN_SEPARATE             # <<<<<<<<<<<<<<
 * WIN_UNIFIED  = MPI_WIN_UNIFIED
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_SEPARATE); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_SEPARATE, __pyx_t_3) < 0) __PYX_ERR(32, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":11
 * # ------------
 * WIN_SEPARATE = MPI_WIN_SEPARATE
 * WIN_UNIFIED  = MPI_WIN_UNIFIED             # <<<<<<<<<<<<<<
 * 
 * # Assertion modes
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_WIN_UNIFIED); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_UNIFIED, __pyx_t_3) < 0) __PYX_ERR(32, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":15
 * # Assertion modes
 * # ---------------
 * MODE_NOCHECK   = MPI_MODE_NOCHECK             # <<<<<<<<<<<<<<
 * MODE_NOSTORE   = MPI_MODE_NOSTORE
 * MODE_NOPUT     = MPI_MODE_NOPUT
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_NOCHECK); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_NOCHECK, __pyx_t_3) < 0) __PYX_ERR(32, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":16
 * # ---------------
 * MODE_NOCHECK   = MPI_MODE_NOCHECK
 * MODE_NOSTORE   = MPI_MODE_NOSTORE             # <<<<<<<<<<<<<<
 * MODE_NOPUT     = MPI_MODE_NOPUT
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_NOSTORE); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_NOSTORE, __pyx_t_3) < 0) __PYX_ERR(32, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":17
 * MODE_NOCHECK   = MPI_MODE_NOCHECK
 * MODE_NOSTORE   = MPI_MODE_NOSTORE
 * MODE_NOPUT     = MPI_MODE_NOPUT             # <<<<<<<<<<<<<<
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE
 * MODE_NOSUCCEED = MPI_MODE_NOSUCCEED
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_NOPUT); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_NOPUT, __pyx_t_3) < 0) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":18
 * MODE_NOSTORE   = MPI_MODE_NOSTORE
 * MODE_NOPUT     = MPI_MODE_NOPUT
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE             # <<<<<<<<<<<<<<
 * MODE_NOSUCCEED = MPI_MODE_NOSUCCEED
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_NOPRECEDE); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_NOPRECEDE, __pyx_t_3) < 0) __PYX_ERR(32, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":19
 * MODE_NOPUT     = MPI_MODE_NOPUT
 * MODE_NOPRECEDE = MPI_MODE_NOPRECEDE
 * MODE_NOSUCCEED = MPI_MODE_NOSUCCEED             # <<<<<<<<<<<<<<
 * 
 * # Lock types
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_NOSUCCEED); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_NOSUCCEED, __pyx_t_3) < 0) __PYX_ERR(32, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":23
 * # Lock types
 * # ----------
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE             # <<<<<<<<<<<<<<
 * LOCK_SHARED    = MPI_LOCK_SHARED
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCK_EXCLUSIVE, __pyx_t_3) < 0) __PYX_ERR(32, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":24
 * # ----------
 * LOCK_EXCLUSIVE = MPI_LOCK_EXCLUSIVE
 * LOCK_SHARED    = MPI_LOCK_SHARED             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_LOCK_SHARED); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOCK_SHARED, __pyx_t_3) < 0) __PYX_ERR(32, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":45
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(32, 45, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__880)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(32, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":53
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> Win:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(32, 53, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Win) < 0) __PYX_ERR(32, 53, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__881)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_fromhandle, __pyx_t_3) < 0) __PYX_ERR(32, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(32, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":60
 *         return fromhandle(<MPI_Win> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Free` if not null.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 60, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__882)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_free, __pyx_t_3) < 0) __PYX_ERR(32, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":74
 *         memory: Buffer | Bottom,
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 74, __pyx_L1_error)
  __pyx_k__182 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":75
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 75, __pyx_L1_error)
  __pyx_k__183 = ((struct PyMPIIntracommObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":74
 *         memory: Buffer | Bottom,
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 74, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":75
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 75, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":69
 *     # ---------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create(
 *         cls,
 */
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_int_1)) __PYX_ERR(32, 69, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(32, 69, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_9)) __PYX_ERR(32, 69, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_memory, __pyx_kp_s_Buffer_Bottom) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_disp_unit, __pyx_n_s_int) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Intracomm) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_15Create, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Create, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__884)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create, __pyx_t_3) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create, __pyx_t_9) < 0) __PYX_ERR(32, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":99
 *         Aint size: int,
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 99, __pyx_L1_error)
  __pyx_k__184 = ((struct PyMPIInfoObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":100
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 100, __pyx_L1_error)
  __pyx_k__185 = ((struct PyMPIIntracommObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":99
 *         Aint size: int,
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 99, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":100
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 100, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":94
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate(
 *         cls,
 */
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_int_1)) __PYX_ERR(32, 94, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9)) __PYX_ERR(32, 94, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_3)) __PYX_ERR(32, 94, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_size_2, __pyx_n_s_int) < 0) __PYX_ERR(32, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_disp_unit, __pyx_n_s_int) < 0) __PYX_ERR(32, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(32, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_comm, __pyx_n_s_Intracomm) < 0) __PYX_ERR(32, 94, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(32, 94, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_17Allocate, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Allocate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__886)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Allocate, __pyx_t_9) < 0) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Allocate); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Allocate, __pyx_t_3) < 0) __PYX_ERR(32, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":118
 *         Aint size: int,
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 118, __pyx_L1_error)
  __pyx_k__186 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":119
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 119, __pyx_L1_error)
  __pyx_k__187 = ((struct PyMPIIntracommObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":118
 *         Aint size: int,
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 118, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":119
 *         Aint disp_unit: int = 1,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 119, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":113
 *         return win
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Allocate_shared(
 *         cls,
 */
  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_int_1);
  __Pyx_GIVEREF(__pyx_int_1);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_int_1)) __PYX_ERR(32, 113, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(32, 113, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_9)) __PYX_ERR(32, 113, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_size_2, __pyx_n_s_int) < 0) __PYX_ERR(32, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_disp_unit, __pyx_n_s_int) < 0) __PYX_ERR(32, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(32, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Intracomm) < 0) __PYX_ERR(32, 113, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(32, 113, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_19Allocate_shared, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Allocate_shared, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__887)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Allocate_shared, __pyx_t_3) < 0) __PYX_ERR(32, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Allocate_shared); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Allocate_shared, __pyx_t_9) < 0) __PYX_ERR(32, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":132
 *         return win
 * 
 *     def Shared_query(self, int rank: int) -> tuple[buffer, int]:             # <<<<<<<<<<<<<<
 *         """
 *         Query the process-local address for remote memory segments.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 132, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_buffer_int) < 0) __PYX_ERR(32, 132, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_21Shared_query, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Shared_query, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__889)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Shared_query, __pyx_t_3) < 0) __PYX_ERR(32, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":147
 *     def Create_dynamic(
 *         cls,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 147, __pyx_L1_error)
  __pyx_k__188 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":148
 *         cls,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 148, __pyx_L1_error)
  __pyx_k__189 = ((struct PyMPIIntracommObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":147
 *     def Create_dynamic(
 *         cls,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *         Intracomm comm: Intracomm = COMM_SELF,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(32, 147, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":148
 *         cls,
 *         Info info: Info = INFO_NULL,
 *         Intracomm comm: Intracomm = COMM_SELF,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_COMM_SELF); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Intracomm))))) __PYX_ERR(32, 148, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":144
 *         return (tobuffer(self, base, size, 0), disp_unit)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_dynamic(
 *         cls,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3)) __PYX_ERR(32, 144, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9)) __PYX_ERR(32, 144, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(32, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Intracomm) < 0) __PYX_ERR(32, 144, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(32, 144, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_23Create_dynamic, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Create_dynamic, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__891)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_dynamic, __pyx_t_3) < 0) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_dynamic); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_dynamic, __pyx_t_9) < 0) __PYX_ERR(32, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":160
 *         return win
 * 
 *     def Attach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Attach a local memory region.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_memory, __pyx_n_s_Buffer) < 0) __PYX_ERR(32, 160, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 160, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_25Attach, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Attach, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__893)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Attach, __pyx_t_3) < 0) __PYX_ERR(32, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":174
 *             pass  # ~> uncovered
 * 
 *     def Detach(self, memory: Buffer) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Detach a local memory region.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_memory, __pyx_n_s_Buffer) < 0) __PYX_ERR(32, 174, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 174, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_27Detach, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Detach, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__895)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Detach, __pyx_t_9) < 0) __PYX_ERR(32, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":187
 *             pass  # ~> uncovered
 * 
 *     def Free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Free a window.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 187, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_29Free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__896)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Free, __pyx_t_3) < 0) __PYX_ERR(32, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":197
 *     # -----------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a window.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(32, 197, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 197, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_31Set_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Set_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__897)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Set_info, __pyx_t_9) < 0) __PYX_ERR(32, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":203
 *         with nogil: CHKERR( MPI_Win_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a window.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(32, 203, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_33Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Get_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__898)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Get_info, __pyx_t_3) < 0) __PYX_ERR(32, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":222
 *     # -------------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that created the window.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(32, 222, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_35Get_group, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Get_group, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__899)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Get_group, __pyx_t_9) < 0) __PYX_ERR(32, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":262
 *     # -----------------
 * 
 *     def Get_attr(self, int keyval: int) -> int | Any | None:             # <<<<<<<<<<<<<<
 *         """
 *         Retrieve attribute value by key.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(32, 262, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_int_Any_None) < 0) __PYX_ERR(32, 262, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_37Get_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Get_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__900)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Get_attr, __pyx_t_3) < 0) __PYX_ERR(32, 262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":286
 *         return PyMPI_attr_get(self.ob_mpi, keyval, attrval)
 * 
 *     def Set_attr(self, int keyval: int, attrval: Any) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Store attribute value associated with a key.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(32, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_attrval, __pyx_n_s_Any) < 0) __PYX_ERR(32, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 286, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_39Set_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Set_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__901)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Set_attr, __pyx_t_9) < 0) __PYX_ERR(32, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":292
 *         PyMPI_attr_set(self.ob_mpi, keyval, attrval)
 * 
 *     def Delete_attr(self, int keyval: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Delete attribute value associated with a key.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(32, 292, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 292, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_41Delete_attr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Delete_attr, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__902)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Delete_attr, __pyx_t_3) < 0) __PYX_ERR(32, 292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":298
 *         PyMPI_attr_del(self.ob_mpi, keyval)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_keyval(
 *         cls,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_copy_fn, __pyx_kp_s_Callable_Win_int_Any_Any_None) < 0) __PYX_ERR(32, 298, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_delete_fn, __pyx_kp_s_Callable_Win_int_Any_None_None) < 0) __PYX_ERR(32, 298, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nopython, __pyx_n_s_bool) < 0) __PYX_ERR(32, 298, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(32, 298, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_43Create_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Create_keyval, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__903)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__330);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_keyval, __pyx_t_9) < 0) __PYX_ERR(32, 298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_keyval); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_keyval, __pyx_t_3) < 0) __PYX_ERR(32, 298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":316
 *         return keyval
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Free_keyval(cls, int keyval: int) -> int:
 *         """
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_keyval, __pyx_n_s_int) < 0) __PYX_ERR(32, 316, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(32, 316, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_45Free_keyval, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Free_keyval, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__904)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Free_keyval, __pyx_t_9) < 0) __PYX_ERR(32, 316, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Free_keyval); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Free_keyval, __pyx_t_3) < 0) __PYX_ERR(32, 316, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":363
 *             return model
 * 
 *     def tomemory(self) -> buffer:             # <<<<<<<<<<<<<<
 *         """
 *         Return window memory buffer.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_buffer) < 0) __PYX_ERR(32, 363, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_47tomemory, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_tomemory, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__905)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_tomemory, __pyx_t_9) < 0) __PYX_ERR(32, 363, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":381
 *     # ------------------------
 * 
 *     def Put(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 381, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 381, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 381, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 381, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_51Put, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Put, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__907)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Put, __pyx_t_3) < 0) __PYX_ERR(32, 381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":398
 *             self.ob_mpi) )
 * 
 *     def Get(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 398, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 398, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 398, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 398, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_53Get, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Get, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__908)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Get, __pyx_t_9) < 0) __PYX_ERR(32, 398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":420
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 420, __pyx_L1_error)
  __pyx_k__190 = ((struct PyMPIOpObject *)__pyx_t_9);
  __Pyx_GIVEREF((PyObject *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":419
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SUM); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Win.pyx":420
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 420, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":415
 *             self.ob_mpi) )
 * 
 *     def Accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None)) __PYX_ERR(32, 415, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_9)) __PYX_ERR(32, 415, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 415, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 415, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 415, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(32, 415, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 415, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_55Accumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Accumulate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__910)); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 415, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Accumulate, __pyx_t_8) < 0) __PYX_ERR(32, 415, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":439
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 439, __pyx_L1_error)
  __pyx_k__191 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":438
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Win.pyx":439
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 439, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":433
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Get_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, Py_None)) __PYX_ERR(32, 433, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(32, 433, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_result, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(32, 433, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 433, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_57Get_accumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Get_accumulate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__912)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Get_accumulate, __pyx_t_3) < 0) __PYX_ERR(32, 433, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":459
 *         int target_rank: int,
 *         Aint target_disp: int = 0,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 459, __pyx_L1_error)
  __pyx_k__192 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":453
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Fetch_and_op(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Win.pyx":459
 *         int target_rank: int,
 *         Aint target_disp: int = 0,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 459, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":453
 *             op.ob_mpi, self.ob_mpi) )
 * 
 *     def Fetch_and_op(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_int_0)) __PYX_ERR(32, 453, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_3)) __PYX_ERR(32, 453, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 453, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_result, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 453, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 453, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target_disp, __pyx_n_s_int) < 0) __PYX_ERR(32, 453, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(32, 453, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 453, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_59Fetch_and_op, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Fetch_and_op, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__914)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Fetch_and_op, __pyx_t_9) < 0) __PYX_ERR(32, 453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":471
 *                 op.ob_mpi, self.ob_mpi) )
 * 
 *     def Compare_and_swap(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_compare, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_result, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target_disp, __pyx_n_s_int) < 0) __PYX_ERR(32, 471, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 471, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_61Compare_and_swap, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Compare_and_swap, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__916)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Compare_and_swap, __pyx_t_3) < 0) __PYX_ERR(32, 471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":491
 *     # ------------------------------------------
 * 
 *     def Rput(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 491, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 491, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 491, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(32, 491, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_63Rput, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Rput, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__918)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Rput, __pyx_t_9) < 0) __PYX_ERR(32, 491, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":511
 *         return request
 * 
 *     def Rget(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 511, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 511, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 511, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(32, 511, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_65Rget, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Rget, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__919)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Rget, __pyx_t_3) < 0) __PYX_ERR(32, 511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":536
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 536, __pyx_L1_error)
  __pyx_k__193 = ((struct PyMPIOpObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":535
 *         origin: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SUM); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/Win.pyx":536
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 536, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":531
 *         return request
 * 
 *     def Raccumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, Py_None)) __PYX_ERR(32, 531, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_3)) __PYX_ERR(32, 531, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 531, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 531, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 531, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(32, 531, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(32, 531, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_67Raccumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Raccumulate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__921)); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Raccumulate, __pyx_t_8) < 0) __PYX_ERR(32, 531, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":558
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 558, __pyx_L1_error)
  __pyx_k__194 = ((struct PyMPIOpObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":557
 *         result: BufSpec,
 *         int target_rank: int,
 *         target: TargetSpec | None = None,             # <<<<<<<<<<<<<<
 *         Op op: Op = SUM,
 *     ) -> Request:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_SUM); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);

  /* "src/mpi4py/MPI.src/Win.pyx":558
 *         int target_rank: int,
 *         target: TargetSpec | None = None,
 *         Op op: Op = SUM,             # <<<<<<<<<<<<<<
 *     ) -> Request:
 *         """
 */
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Op))))) __PYX_ERR(32, 558, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/Win.pyx":552
 *         return request
 * 
 *     def Rget_accumulate(             # <<<<<<<<<<<<<<
 *         self,
 *         origin: BufSpec,
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None)) __PYX_ERR(32, 552, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8)) __PYX_ERR(32, 552, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_8 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_origin, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 552, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_result, __pyx_n_s_BufSpec) < 0) __PYX_ERR(32, 552, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_target_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 552, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_target, __pyx_kp_s_TargetSpec_None) < 0) __PYX_ERR(32, 552, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_op, __pyx_n_s_Op) < 0) __PYX_ERR(32, 552, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(32, 552, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_69Rget_accumulate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Rget_accumulate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__923)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Rget_accumulate, __pyx_t_9) < 0) __PYX_ERR(32, 552, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":581
 *     # -----
 * 
 *     def Fence(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Perform an MPI fence synchronization on a window.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_assertion, __pyx_n_s_int) < 0) __PYX_ERR(32, 581, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 581, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_71Fence, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Fence, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__925)); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Fence, __pyx_t_8) < 0) __PYX_ERR(32, 581, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":590
 *     # -------------------------------------
 * 
 *     def Start(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA access epoch for MPI.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_group, __pyx_n_s_Group) < 0) __PYX_ERR(32, 590, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_assertion, __pyx_n_s_int) < 0) __PYX_ERR(32, 590, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 590, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_73Start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Start, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__927)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Start, __pyx_t_9) < 0) __PYX_ERR(32, 590, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":597
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Complete(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA operation begun after an `Start`.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 597, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_75Complete, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Complete, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__928)); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Complete, __pyx_t_8) < 0) __PYX_ERR(32, 597, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":603
 *         with nogil: CHKERR( MPI_Win_complete(self.ob_mpi) )
 * 
 *     def Post(self, Group group: Group, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Start an RMA exposure epoch.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_group, __pyx_n_s_Group) < 0) __PYX_ERR(32, 603, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_assertion, __pyx_n_s_int) < 0) __PYX_ERR(32, 603, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 603, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_77Post, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Post, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__929)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Post, __pyx_t_9) < 0) __PYX_ERR(32, 603, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":610
 *             group.ob_mpi, assertion, self.ob_mpi) )
 * 
 *     def Wait(self) -> Literal[True]:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA exposure epoch begun with `Post`.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_Literal_True) < 0) __PYX_ERR(32, 610, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_79Wait, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Wait, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__930)); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Wait, __pyx_t_8) < 0) __PYX_ERR(32, 610, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":617
 *         return True
 * 
 *     def Test(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Test whether an RMA exposure epoch has completed.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(32, 617, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_81Test, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Test, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__931)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Test, __pyx_t_9) < 0) __PYX_ERR(32, 617, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":631
 *         self,
 *         int rank: int,
 *         int lock_type: int = LOCK_EXCLUSIVE,             # <<<<<<<<<<<<<<
 *         int assertion: int = 0,
 *     ) -> None:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 631, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__195 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/Win.pyx":628
 *     # ----
 * 
 *     def Lock(             # <<<<<<<<<<<<<<
 *         self,
 *         int rank: int,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_LOCK_EXCLUSIVE); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Win.pyx":631
 *         self,
 *         int rank: int,
 *         int lock_type: int = LOCK_EXCLUSIVE,             # <<<<<<<<<<<<<<
 *         int assertion: int = 0,
 *     ) -> None:
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 631, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/Win.pyx":628
 *     # ----
 * 
 *     def Lock(             # <<<<<<<<<<<<<<
 *         self,
 *         int rank: int,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(32, 628, __pyx_L1_error);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_0)) __PYX_ERR(32, 628, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 628, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_lock_type, __pyx_n_s_int) < 0) __PYX_ERR(32, 628, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_assertion, __pyx_n_s_int) < 0) __PYX_ERR(32, 628, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 628, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_83Lock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Lock, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__933)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Lock, __pyx_t_3) < 0) __PYX_ERR(32, 628, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":640
 *             lock_type, rank, assertion, self.ob_mpi) )
 * 
 *     def Unlock(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at the target process.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 640, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 640, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_85Unlock, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Unlock, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__934)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Unlock, __pyx_t_9) < 0) __PYX_ERR(32, 640, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":646
 *         with nogil: CHKERR( MPI_Win_unlock(rank, self.ob_mpi) )
 * 
 *     def Lock_all(self, int assertion: int = 0) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Begin an RMA access epoch at all processes.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_assertion, __pyx_n_s_int) < 0) __PYX_ERR(32, 646, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 646, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_87Lock_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Lock_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__935)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__621);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Lock_all, __pyx_t_3) < 0) __PYX_ERR(32, 646, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":652
 *         with nogil: CHKERR( MPI_Win_lock_all(assertion, self.ob_mpi) )
 * 
 *     def Unlock_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete an RMA access epoch at all processes.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 652, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_89Unlock_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Unlock_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__936)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Unlock_all, __pyx_t_9) < 0) __PYX_ERR(32, 652, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":661
 *     # --------------
 * 
 *     def Flush(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at a target.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 661, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 661, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_91Flush, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Flush, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__937)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Flush, __pyx_t_3) < 0) __PYX_ERR(32, 661, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":667
 *         with nogil: CHKERR( MPI_Win_flush(rank, self.ob_mpi) )
 * 
 *     def Flush_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete all outstanding RMA operations at all targets.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 667, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_93Flush_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Flush_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__938)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Flush_all, __pyx_t_9) < 0) __PYX_ERR(32, 667, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":673
 *         with nogil: CHKERR( MPI_Win_flush_all(self.ob_mpi) )
 * 
 *     def Flush_local(self, int rank: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at a target.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_rank, __pyx_n_s_int) < 0) __PYX_ERR(32, 673, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 673, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_95Flush_local, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Flush_local, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__939)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Flush_local, __pyx_t_3) < 0) __PYX_ERR(32, 673, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":679
 *         with nogil: CHKERR( MPI_Win_flush_local(rank, self.ob_mpi) )
 * 
 *     def Flush_local_all(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Complete locally all outstanding RMA operations at all targets.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 679, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_97Flush_local_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Flush_local_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__940)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Flush_local_all, __pyx_t_9) < 0) __PYX_ERR(32, 679, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":685
 *         with nogil: CHKERR( MPI_Win_flush_local_all(self.ob_mpi) )
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Synchronize public and private copies of the window.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 685, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_99Sync, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Sync, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__941)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Sync, __pyx_t_3) < 0) __PYX_ERR(32, 685, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":694
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_errhandler_fn, __pyx_kp_s_Callable_Win_int_None) < 0) __PYX_ERR(32, 694, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(32, 694, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_101Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Create_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__942)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_errhandler, __pyx_t_9) < 0) __PYX_ERR(32, 694, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_errhandler); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 694, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Create_errhandler, __pyx_t_3) < 0) __PYX_ERR(32, 694, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":712
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a window.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(32, 712, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_103Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Get_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__943)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Get_errhandler, __pyx_t_9) < 0) __PYX_ERR(32, 712, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":720
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a window.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errhandler, __pyx_n_s_Errhandler) < 0) __PYX_ERR(32, 720, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 720, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_105Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Set_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__944)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Set_errhandler, __pyx_t_3) < 0) __PYX_ERR(32, 720, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":726
 *         CHKERR( MPI_Win_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a window.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(32, 726, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 726, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_107Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Call_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__945)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Call_errhandler, __pyx_t_9) < 0) __PYX_ERR(32, 726, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":735
 *     # --------------
 * 
 *     def Get_name(self) -> str:             # <<<<<<<<<<<<<<
 *         """
 *         Get the print name for this window.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(32, 735, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_109Get_name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Get_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__946)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 735, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Get_name, __pyx_t_3) < 0) __PYX_ERR(32, 735, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":744
 *         return tompistr(name, nlen)
 * 
 *     def Set_name(self, name: str) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the print name for this window.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_name_2, __pyx_n_s_str) < 0) __PYX_ERR(32, 744, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(32, 744, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_111Set_name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_Set_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__947)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_Set_name, __pyx_t_9) < 0) __PYX_ERR(32, 744, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":763
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(32, 763, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_113py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__948)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_py2f, __pyx_t_3) < 0) __PYX_ERR(32, 763, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":768
 *         return MPI_Win_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> Win:
 *         """
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(32, 768, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Win) < 0) __PYX_ERR(32, 768, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_3Win_115f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Win_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__949)); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(32, 768, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);
  __Pyx_GetNameInClass(__pyx_t_9, (PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_f2py); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_Win, __pyx_n_s_f2py, __pyx_t_3) < 0) __PYX_ERR(32, 768, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_Win);

  /* "src/mpi4py/MPI.src/Win.pyx":775
 * 
 * 
 * cdef Win __WIN_NULL__ = def_Win( MPI_WIN_NULL , "WIN_NULL" )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_Win(MPI_WIN_NULL, __pyx_n_s_WIN_NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___WIN_NULL__, ((struct PyMPIWinObject *)__pyx_t_3));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/Win.pyx":781
 * # -------------------------
 * 
 * WIN_NULL = __WIN_NULL__  #: Null window handle             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WIN_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___WIN_NULL__)) < 0) __PYX_ERR(32, 781, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":4
 * # -------------
 * 
 * MODE_RDONLY = MPI_MODE_RDONLY             # <<<<<<<<<<<<<<
 * #: Read only
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_RDONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_RDONLY, __pyx_t_3) < 0) __PYX_ERR(33, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":7
 * #: Read only
 * 
 * MODE_WRONLY = MPI_MODE_WRONLY             # <<<<<<<<<<<<<<
 * #: Write only
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_WRONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_WRONLY, __pyx_t_3) < 0) __PYX_ERR(33, 7, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":10
 * #: Write only
 * 
 * MODE_RDWR  = MPI_MODE_RDWR             # <<<<<<<<<<<<<<
 * #: Reading and writing
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_RDWR); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_RDWR, __pyx_t_3) < 0) __PYX_ERR(33, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":13
 * #: Reading and writing
 * 
 * MODE_CREATE = MPI_MODE_CREATE             # <<<<<<<<<<<<<<
 * #: Create the file if it does not exist
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_CREATE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_CREATE, __pyx_t_3) < 0) __PYX_ERR(33, 13, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":16
 * #: Create the file if it does not exist
 * 
 * MODE_EXCL = MPI_MODE_EXCL             # <<<<<<<<<<<<<<
 * #: Error if creating file that already exists
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_EXCL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_EXCL, __pyx_t_3) < 0) __PYX_ERR(33, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":19
 * #: Error if creating file that already exists
 * 
 * MODE_DELETE_ON_CLOSE = MPI_MODE_DELETE_ON_CLOSE             # <<<<<<<<<<<<<<
 * #: Delete file on close
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_DELETE_ON_CLOSE); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_DELETE_ON_CLOSE, __pyx_t_3) < 0) __PYX_ERR(33, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":22
 * #: Delete file on close
 * 
 * MODE_UNIQUE_OPEN = MPI_MODE_UNIQUE_OPEN             # <<<<<<<<<<<<<<
 * #: File will not be concurrently opened elsewhere
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_UNIQUE_OPEN); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_UNIQUE_OPEN, __pyx_t_3) < 0) __PYX_ERR(33, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":25
 * #: File will not be concurrently opened elsewhere
 * 
 * MODE_SEQUENTIAL = MPI_MODE_SEQUENTIAL             # <<<<<<<<<<<<<<
 * #: File will only be accessed sequentially
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_SEQUENTIAL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_SEQUENTIAL, __pyx_t_3) < 0) __PYX_ERR(33, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":28
 * #: File will only be accessed sequentially
 * 
 * MODE_APPEND = MPI_MODE_APPEND             # <<<<<<<<<<<<<<
 * #: Set initial position of all file pointers to end of file
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MODE_APPEND); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MODE_APPEND, __pyx_t_3) < 0) __PYX_ERR(33, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":35
 * # -----------
 * 
 * SEEK_SET = MPI_SEEK_SET             # <<<<<<<<<<<<<<
 * #: File pointer is set to offset
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_SEEK_SET); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SEEK_SET, __pyx_t_3) < 0) __PYX_ERR(33, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":38
 * #: File pointer is set to offset
 * 
 * SEEK_CUR = MPI_SEEK_CUR             # <<<<<<<<<<<<<<
 * #: File pointer is set to the current position plus offset
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_SEEK_CUR); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SEEK_CUR, __pyx_t_3) < 0) __PYX_ERR(33, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":41
 * #: File pointer is set to the current position plus offset
 * 
 * SEEK_END = MPI_SEEK_END             # <<<<<<<<<<<<<<
 * #: File pointer is set to the end plus offset
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_SEEK_END); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SEEK_END, __pyx_t_3) < 0) __PYX_ERR(33, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":44
 * #: File pointer is set to the end plus offset
 * 
 * DISPLACEMENT_CURRENT = MPI_DISPLACEMENT_CURRENT             # <<<<<<<<<<<<<<
 * #: Special displacement value for files opened in sequential mode
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DISPLACEMENT_CURRENT, __pyx_t_3) < 0) __PYX_ERR(33, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":47
 * #: Special displacement value for files opened in sequential mode
 * 
 * DISP_CUR = MPI_DISPLACEMENT_CURRENT             # <<<<<<<<<<<<<<
 * #: Convenience alias for `DISPLACEMENT_CURRENT`
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From___pyx_anon_enum(MPI_DISPLACEMENT_CURRENT); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DISP_CUR, __pyx_t_3) < 0) __PYX_ERR(33, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":69
 *         return nonnull(self)
 * 
 *     def __reduce__(self) -> str | tuple[Any, ...]:             # <<<<<<<<<<<<<<
 *         return reduce_default(self)
 * 
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_str_tuple_Any) < 0) __PYX_ERR(33, 69, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_9__reduce__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File___reduce, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__950)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_reduce, __pyx_t_9) < 0) __PYX_ERR(33, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":77
 *             return tohandle(self)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def fromhandle(cls, handle: int) -> File:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_handle, __pyx_n_s_int) < 0) __PYX_ERR(33, 77, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_File) < 0) __PYX_ERR(33, 77, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_11fromhandle, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_fromhandle, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__951)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_fromhandle, __pyx_t_3) < 0) __PYX_ERR(33, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_fromhandle); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_fromhandle, __pyx_t_9) < 0) __PYX_ERR(33, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":84
 *         return fromhandle(<MPI_File> <Py_uintptr_t> handle)
 * 
 *     def free(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call `Close` if not null.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 84, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_13free, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_free, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__952)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_free, __pyx_t_3) < 0) __PYX_ERR(33, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":98
 *         Intracomm comm: Intracomm,
 *         filename: PathLike[AnyStr] | str | bytes,
 *         int amode: int = MODE_RDONLY,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MODE_RDONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__197 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/File.pyx":99
 *         filename: PathLike[AnyStr] | str | bytes,
 *         int amode: int = MODE_RDONLY,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 99, __pyx_L1_error)
  __pyx_k__196 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":98
 *         Intracomm comm: Intracomm,
 *         filename: PathLike[AnyStr] | str | bytes,
 *         int amode: int = MODE_RDONLY,             # <<<<<<<<<<<<<<
 *         Info info: Info = INFO_NULL,
 *     ) -> Self:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_MODE_RDONLY); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/File.pyx":99
 *         filename: PathLike[AnyStr] | str | bytes,
 *         int amode: int = MODE_RDONLY,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> Self:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 99, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":93
 *     # -----------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Open(
 *         cls,
 */
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3)) __PYX_ERR(33, 93, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_9)) __PYX_ERR(33, 93, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_comm, __pyx_n_s_Intracomm) < 0) __PYX_ERR(33, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_filename, __pyx_kp_s_PathLike_AnyStr_str_bytes) < 0) __PYX_ERR(33, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_amode, __pyx_n_s_int) < 0) __PYX_ERR(33, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(33, 93, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Self) < 0) __PYX_ERR(33, 93, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_15Open, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Open, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__954)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Open, __pyx_t_3) < 0) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);
  __Pyx_GetNameInClass(__pyx_t_3, (PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Open); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Open, __pyx_t_9) < 0) __PYX_ERR(33, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":112
 *         return file
 * 
 *     def Close(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Close a file.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 112, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_17Close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Close, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__955)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Close, __pyx_t_3) < 0) __PYX_ERR(33, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":122
 *         cls,
 *         filename: PathLike[AnyStr] | str | bytes,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 122, __pyx_L1_error)
  __pyx_k__198 = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":118
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(
 *         cls,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/File.pyx":122
 *         cls,
 *         filename: PathLike[AnyStr] | str | bytes,
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 122, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":118
 *         with nogil: CHKERR( MPI_File_close(&self.ob_mpi) )
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Delete(
 *         cls,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(33, 118, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_filename, __pyx_kp_s_PathLike_AnyStr_str_bytes) < 0) __PYX_ERR(33, 118, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(33, 118, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 118, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_19Delete, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Delete, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__957)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Delete, __pyx_t_8) < 0) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);
  __Pyx_GetNameInClass(__pyx_t_8, (PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Delete); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Delete, __pyx_t_3) < 0) __PYX_ERR(33, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":131
 *         with nogil: CHKERR( MPI_File_delete(cfilename, info.ob_mpi) )
 * 
 *     def Set_size(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the file size.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_size_2, __pyx_n_s_int) < 0) __PYX_ERR(33, 131, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 131, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_21Set_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Set_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__958)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Set_size, __pyx_t_8) < 0) __PYX_ERR(33, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":137
 *         with nogil: CHKERR( MPI_File_set_size(self.ob_mpi, size) )
 * 
 *     def Preallocate(self, Offset size: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Preallocate storage space for a file.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_size_2, __pyx_n_s_int) < 0) __PYX_ERR(33, 137, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 137, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_23Preallocate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Preallocate, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__959)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Preallocate, __pyx_t_3) < 0) __PYX_ERR(33, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":143
 *         with nogil: CHKERR( MPI_File_preallocate(self.ob_mpi, size) )
 * 
 *     def Get_size(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file size.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(33, 143, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_25Get_size, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_size, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__960)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_size, __pyx_t_8) < 0) __PYX_ERR(33, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":156
 *             return self.Get_size()
 * 
 *     def Get_amode(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file access mode.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(33, 156, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_27Get_amode, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_amode, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__962)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_amode, __pyx_t_3) < 0) __PYX_ERR(33, 156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":172
 *     # ----------
 * 
 *     def Get_group(self) -> Group:             # <<<<<<<<<<<<<<
 *         """
 *         Access the group of processes that opened the file.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Group) < 0) __PYX_ERR(33, 172, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_29Get_group, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_group, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__963)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_group, __pyx_t_8) < 0) __PYX_ERR(33, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":212
 *     # ---------
 * 
 *     def Set_info(self, Info info: Info) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set new values for the hints associated with a file.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(33, 212, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 212, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_31Set_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Set_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__964)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Set_info, __pyx_t_3) < 0) __PYX_ERR(33, 212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":218
 *         with nogil: CHKERR( MPI_File_set_info(self.ob_mpi, info.ob_mpi) )
 * 
 *     def Get_info(self) -> Info:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current hints for a file.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(33, 218, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_33Get_info, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__965)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_info, __pyx_t_8) < 0) __PYX_ERR(33, 218, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":240
 *         self,
 *         Offset disp: int = 0,
 *         Datatype etype: Datatype = BYTE,             # <<<<<<<<<<<<<<
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_BYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(33, 240, __pyx_L1_error)
  __pyx_k__199 = ((struct PyMPIDatatypeObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":243
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 243, __pyx_L1_error)
  __pyx_k__200 = ((struct PyMPIInfoObject *)__pyx_t_8);
  __Pyx_GIVEREF((PyObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":240
 *         self,
 *         Offset disp: int = 0,
 *         Datatype etype: Datatype = BYTE,             # <<<<<<<<<<<<<<
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
 */
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_BYTE); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_6mpi4py_3MPI_Datatype))))) __PYX_ERR(33, 240, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":243
 *         Datatype filetype: Datatype | None = None,
 *         datarep: str = "native",
 *         Info info: Info = INFO_NULL,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(33, 243, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":237
 *     # ----------
 * 
 *     def Set_view(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset disp: int = 0,
 */
  __pyx_t_9 = PyTuple_New(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_INCREF(__pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_0)) __PYX_ERR(33, 237, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_8);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8)) __PYX_ERR(33, 237, __pyx_L1_error);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 2, Py_None)) __PYX_ERR(33, 237, __pyx_L1_error);
  __Pyx_INCREF(__pyx_n_s_native);
  __Pyx_GIVEREF(__pyx_n_s_native);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_n_s_native)) __PYX_ERR(33, 237, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_t_3)) __PYX_ERR(33, 237, __pyx_L1_error);
  __pyx_t_8 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_disp, __pyx_n_s_int) < 0) __PYX_ERR(33, 237, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_etype, __pyx_n_s_Datatype) < 0) __PYX_ERR(33, 237, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_filetype, __pyx_kp_s_Datatype_None) < 0) __PYX_ERR(33, 237, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_datarep, __pyx_n_s_str) < 0) __PYX_ERR(33, 237, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(33, 237, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 237, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_35Set_view, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Set_view, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__967)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Set_view, __pyx_t_8) < 0) __PYX_ERR(33, 237, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":256
 *             self.ob_mpi, disp, cetype, cftype, cdatarep, info.ob_mpi) )
 * 
 *     def Get_view(self) -> tuple[int, Datatype, Datatype, str]:             # <<<<<<<<<<<<<<
 *         """
 *         Return the file view.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_tuple_int_Datatype_Datatype_str) < 0) __PYX_ERR(33, 256, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_37Get_view, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_view, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__969)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_view, __pyx_t_3) < 0) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":279
 *     # ---------------------------------
 * 
 *     def Read_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 279, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 279, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 279, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 279, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_39Read_at, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_at, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__971)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_at, __pyx_t_8) < 0) __PYX_ERR(33, 279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":293
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 293, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 293, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_41Read_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_at_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__972)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_at_all, __pyx_t_3) < 0) __PYX_ERR(33, 293, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":307
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 307, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 307, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 307, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 307, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_43Write_at, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_at, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__973)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_at, __pyx_t_8) < 0) __PYX_ERR(33, 307, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":321
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 321, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 321, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 321, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 321, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_45Write_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_at_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__974)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_at_all, __pyx_t_3) < 0) __PYX_ERR(33, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":335
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 335, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 335, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 335, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_47Iread_at, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iread_at, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__976)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iread_at, __pyx_t_8) < 0) __PYX_ERR(33, 335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":350
 *         return request
 * 
 *     def Iread_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 350, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 350, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_49Iread_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iread_at_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__977)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iread_at_all, __pyx_t_3) < 0) __PYX_ERR(33, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":365
 *         return request
 * 
 *     def Iwrite_at(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 365, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 365, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 365, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_51Iwrite_at, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iwrite_at, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__978)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iwrite_at, __pyx_t_8) < 0) __PYX_ERR(33, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":380
 *         return request
 * 
 *     def Iwrite_at_all(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 380, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 380, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 380, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_53Iwrite_at_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iwrite_at_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__979)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iwrite_at_all, __pyx_t_3) < 0) __PYX_ERR(33, 380, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":398
 *     # -----------------------------------------
 * 
 *     def Read(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 398, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 398, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 398, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_55Read, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__981)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read, __pyx_t_8) < 0) __PYX_ERR(33, 398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":411
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Read_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 411, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 411, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 411, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_57Read_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__982)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_all, __pyx_t_3) < 0) __PYX_ERR(33, 411, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":424
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 424, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 424, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 424, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_59Write, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__983)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write, __pyx_t_8) < 0) __PYX_ERR(33, 424, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":437
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 437, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 437, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 437, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_61Write_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__984)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_all, __pyx_t_3) < 0) __PYX_ERR(33, 437, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":450
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 450, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 450, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_63Iread, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iread, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__986)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iread, __pyx_t_8) < 0) __PYX_ERR(33, 450, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":464
 *         return request
 * 
 *     def Iread_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 464, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 464, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_65Iread_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iread_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__987)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iread_all, __pyx_t_3) < 0) __PYX_ERR(33, 464, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":478
 *         return request
 * 
 *     def Iwrite(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 478, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 478, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_67Iwrite, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iwrite, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__988)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iwrite, __pyx_t_8) < 0) __PYX_ERR(33, 478, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":492
 *         return request
 * 
 *     def Iwrite_all(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 492, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 492, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_69Iwrite_all, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iwrite_all, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__989)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iwrite_all, __pyx_t_3) < 0) __PYX_ERR(33, 492, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":506
 *         return request
 * 
 *     def Seek(self, Offset offset: int, int whence: int = SEEK_SET) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Update the individual file pointer.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SEEK_SET); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_k__201 = __pyx_t_4;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_SEEK_SET); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3)) __PYX_ERR(33, 506, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 506, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_whence, __pyx_n_s_int) < 0) __PYX_ERR(33, 506, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 506, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_71Seek, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Seek, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__991)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Seek, __pyx_t_9) < 0) __PYX_ERR(33, 506, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":512
 *         with nogil: CHKERR( MPI_File_seek(self.ob_mpi, offset, whence) )
 * 
 *     def Get_position(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the individual file pointer.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(33, 512, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_73Get_position, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_position, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__993)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_position, __pyx_t_3) < 0) __PYX_ERR(33, 512, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":523
 *         return offset
 * 
 *     def Get_byte_offset(self, Offset offset: int) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the absolute byte position in the file.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 523, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(33, 523, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_75Get_byte_offset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_byte_offset, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__995)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_byte_offset, __pyx_t_9) < 0) __PYX_ERR(33, 523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":538
 *     # -------------------------------------
 * 
 *     def Read_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 538, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 538, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 538, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_77Read_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_shared, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__996)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_shared, __pyx_t_3) < 0) __PYX_ERR(33, 538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":551
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 551, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 551, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 551, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_79Write_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_shared, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__997)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_shared, __pyx_t_9) < 0) __PYX_ERR(33, 551, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":564
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Iread_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 564, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 564, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_81Iread_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iread_shared, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__998)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iread_shared, __pyx_t_3) < 0) __PYX_ERR(33, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":578
 *         return request
 * 
 *     def Iwrite_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 578, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_Request) < 0) __PYX_ERR(33, 578, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_83Iwrite_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Iwrite_shared, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__999)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Iwrite_shared, __pyx_t_9) < 0) __PYX_ERR(33, 578, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":592
 *         return request
 * 
 *     def Read_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 592, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 592, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 592, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_85Read_ordered, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_ordered, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1000)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_ordered, __pyx_t_3) < 0) __PYX_ERR(33, 592, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":605
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Write_ordered(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 605, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 605, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 605, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_87Write_ordered, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_ordered, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1001)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_ordered, __pyx_t_9) < 0) __PYX_ERR(33, 605, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":621
 *         self,
 *         Offset offset: int,
 *         int whence: int = SEEK_SET,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SEEK_SET); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_k__202 = __pyx_t_4;

  /* "src/mpi4py/MPI.src/File.pyx":618
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_SEEK_SET); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/File.pyx":621
 *         self,
 *         Offset offset: int,
 *         int whence: int = SEEK_SET,             # <<<<<<<<<<<<<<
 *     ) -> None:
 *         """
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/File.pyx":618
 *             self.ob_mpi, m.buf, m.count, m.dtype, statusp) )
 * 
 *     def Seek_shared(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9)) __PYX_ERR(33, 618, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 618, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_whence, __pyx_n_s_int) < 0) __PYX_ERR(33, 618, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 618, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_89Seek_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Seek_shared, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1002)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Seek_shared, __pyx_t_8) < 0) __PYX_ERR(33, 618, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":629
 *             self.ob_mpi, offset, whence) )
 * 
 *     def Get_position_shared(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the current position of the shared file pointer.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(33, 629, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_91Get_position_shared, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_position_shared, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1003)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_position_shared, __pyx_t_9) < 0) __PYX_ERR(33, 629, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":646
 *     # explicit offset
 * 
 *     def Read_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 646, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 646, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 646, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_93Read_at_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_at_all_begin, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1005)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_at_all_begin, __pyx_t_8) < 0) __PYX_ERR(33, 646, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":658
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Read_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 658, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 658, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 658, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_95Read_at_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_at_all_end, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1006)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_at_all_end, __pyx_t_9) < 0) __PYX_ERR(33, 658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":671
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_at_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         Offset offset: int,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_offset, __pyx_n_s_int) < 0) __PYX_ERR(33, 671, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 671, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 671, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_97Write_at_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_at_all_begin, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1007)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_at_all_begin, __pyx_t_8) < 0) __PYX_ERR(33, 671, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":683
 *             self.ob_mpi, offset, m.buf, m.count, m.dtype) )
 * 
 *     def Write_at_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 683, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 683, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 683, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_99Write_at_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_at_all_end, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1008)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 683, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_at_all_end, __pyx_t_9) < 0) __PYX_ERR(33, 683, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":698
 *     # individual file pointer
 * 
 *     def Read_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 698, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 698, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_101Read_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_all_begin, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1010)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_all_begin, __pyx_t_8) < 0) __PYX_ERR(33, 698, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":709
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 709, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 709, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 709, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_103Read_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_all_end, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1011)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_all_end, __pyx_t_9) < 0) __PYX_ERR(33, 709, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":722
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_all_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 722, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 722, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_105Write_all_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_all_begin, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1012)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_all_begin, __pyx_t_8) < 0) __PYX_ERR(33, 722, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":733
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_all_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 733, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 733, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 733, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_107Write_all_end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_all_end, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1013)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_all_end, __pyx_t_9) < 0) __PYX_ERR(33, 733, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":748
 *     # shared file pointer
 * 
 *     def Read_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 748, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 748, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_109Read_ordered_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_ordered_begin, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1014)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 748, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_ordered_begin, __pyx_t_8) < 0) __PYX_ERR(33, 748, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":759
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Read_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 759, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 759, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 759, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_111Read_ordered_end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Read_ordered_end, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1015)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Read_ordered_end, __pyx_t_9) < 0) __PYX_ERR(33, 759, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":772
 *             self.ob_mpi, m.buf, statusp) )
 * 
 *     def Write_ordered_begin(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 772, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 772, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_113Write_ordered_begin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_ordered_begin, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1016)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_ordered_begin, __pyx_t_8) < 0) __PYX_ERR(33, 772, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":783
 *             self.ob_mpi, m.buf, m.count, m.dtype) )
 * 
 *     def Write_ordered_end(             # <<<<<<<<<<<<<<
 *         self,
 *         buf: BufSpec,
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_buf, __pyx_n_s_BufSpec) < 0) __PYX_ERR(33, 783, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_status, __pyx_kp_s_Status_None) < 0) __PYX_ERR(33, 783, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 783, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_115Write_ordered_end, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Write_ordered_end, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1017)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__220);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Write_ordered_end, __pyx_t_9) < 0) __PYX_ERR(33, 783, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":799
 *     # ---------------------
 * 
 *     def Get_type_extent(self, Datatype datatype: Datatype) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         Return the extent of datatype in the file.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(33, 799, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(33, 799, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_117Get_type_extent, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_type_extent, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1019)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_type_extent, __pyx_t_8) < 0) __PYX_ERR(33, 799, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":811
 *     # -------------------------
 * 
 *     def Set_atomicity(self, bint flag: bool) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the atomicity mode.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_flag, __pyx_n_s_bool) < 0) __PYX_ERR(33, 811, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 811, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_119Set_atomicity, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Set_atomicity, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1020)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Set_atomicity, __pyx_t_9) < 0) __PYX_ERR(33, 811, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":817
 *         with nogil: CHKERR( MPI_File_set_atomicity(self.ob_mpi, flag) )
 * 
 *     def Get_atomicity(self) -> bool:             # <<<<<<<<<<<<<<
 *         """
 *         Return the atomicity mode.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(33, 817, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_121Get_atomicity, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_atomicity, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1021)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_atomicity, __pyx_t_8) < 0) __PYX_ERR(33, 817, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":833
 *             self.Set_atomicity(value)
 * 
 *     def Sync(self) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Causes all previous writes to be transferred to the storage device.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 833, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_123Sync, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Sync, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1022)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Sync, __pyx_t_9) < 0) __PYX_ERR(33, 833, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":842
 *     # --------------
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def Create_errhandler(
 *         cls,
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errhandler_fn, __pyx_kp_s_Callable_File_int_None) < 0) __PYX_ERR(33, 842, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(33, 842, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_125Create_errhandler, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Create_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1023)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Create_errhandler, __pyx_t_8) < 0) __PYX_ERR(33, 842, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);
  __Pyx_GetNameInClass(__pyx_t_8, (PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Create_errhandler); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Create_errhandler, __pyx_t_9) < 0) __PYX_ERR(33, 842, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":860
 *         return errhandler
 * 
 *     def Get_errhandler(self) -> Errhandler:             # <<<<<<<<<<<<<<
 *         """
 *         Get the error handler for a file.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Errhandler) < 0) __PYX_ERR(33, 860, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_127Get_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Get_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1024)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Get_errhandler, __pyx_t_8) < 0) __PYX_ERR(33, 860, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":868
 *         return errhandler
 * 
 *     def Set_errhandler(self, Errhandler errhandler: Errhandler) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Set the error handler for a file.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_errhandler, __pyx_n_s_Errhandler) < 0) __PYX_ERR(33, 868, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 868, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_129Set_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Set_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1025)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 868, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Set_errhandler, __pyx_t_9) < 0) __PYX_ERR(33, 868, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":874
 *         CHKERR( MPI_File_set_errhandler(self.ob_mpi, errhandler.ob_mpi) )
 * 
 *     def Call_errhandler(self, int errorcode: int) -> None:             # <<<<<<<<<<<<<<
 *         """
 *         Call the error handler installed on a file.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_errorcode, __pyx_n_s_int) < 0) __PYX_ERR(33, 874, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 874, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_131Call_errhandler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_Call_errhandler, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1026)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_Call_errhandler, __pyx_t_8) < 0) __PYX_ERR(33, 874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":883
 *     # --------------
 * 
 *     def py2f(self) -> int:             # <<<<<<<<<<<<<<
 *         """
 *         """
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(33, 883, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_133py2f, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_py2f, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1027)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_py2f, __pyx_t_9) < 0) __PYX_ERR(33, 883, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":888
 *         return MPI_File_c2f(self.ob_mpi)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def f2py(cls, arg: int) -> File:
 *         """
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_arg, __pyx_n_s_int) < 0) __PYX_ERR(33, 888, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_File) < 0) __PYX_ERR(33, 888, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_4File_135f2py, __Pyx_CYFUNCTION_CLASSMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_File_f2py, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1028)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_f2py, __pyx_t_8) < 0) __PYX_ERR(33, 888, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);
  __Pyx_GetNameInClass(__pyx_t_8, (PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_f2py); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_Method_ClassMethod(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_6mpi4py_3MPI_File, __pyx_n_s_f2py, __pyx_t_9) < 0) __PYX_ERR(33, 888, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  PyType_Modified(__pyx_ptype_6mpi4py_3MPI_File);

  /* "src/mpi4py/MPI.src/File.pyx":895
 * 
 * 
 * cdef File __FILE_NULL__ = def_File( MPI_FILE_NULL , "FILE_NULL" )             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = ((PyObject *)__pyx_f_6mpi4py_3MPI_def_File(MPI_FILE_NULL, __pyx_n_s_FILE_NULL)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI___FILE_NULL__, ((struct PyMPIFileObject *)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/File.pyx":901
 * # -----------------------
 * 
 * FILE_NULL = __FILE_NULL__  #: Null file handle             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FILE_NULL, ((PyObject *)__pyx_v_6mpi4py_3MPI___FILE_NULL__)) < 0) __PYX_ERR(33, 901, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/File.pyx":907
 * # ---------------------------------
 * 
 * def Register_datarep(             # <<<<<<<<<<<<<<
 *     datarep: str,
 *     read_fn: Callable[[Buffer, Datatype, int, Buffer, int], None],
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datarep, __pyx_n_s_str) < 0) __PYX_ERR(33, 907, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_read_fn, __pyx_kp_s_Callable_Buffer_Datatype_int_Buf) < 0) __PYX_ERR(33, 907, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_write_fn, __pyx_kp_s_Callable_Buffer_Datatype_int_Buf) < 0) __PYX_ERR(33, 907, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_extent_fn, __pyx_kp_s_Callable_Datatype_int) < 0) __PYX_ERR(33, 907, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(33, 907, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_53Register_datarep, 0, __pyx_n_s_Register_datarep, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1030)); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Register_datarep, __pyx_t_8) < 0) __PYX_ERR(33, 907, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":99
 * # -----------------
 * 
 * def Alloc_mem(Aint size: int, Info info: Info = INFO_NULL) -> buffer:             # <<<<<<<<<<<<<<
 *     """
 *     Allocate memory for message passing and remote memory access.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_size_2, __pyx_n_s_int) < 0) __PYX_ERR(34, 99, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_info, __pyx_n_s_Info) < 0) __PYX_ERR(34, 99, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_buffer) < 0) __PYX_ERR(34, 99, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_55Alloc_mem, 0, __pyx_n_s_Alloc_mem, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1032)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_9, sizeof(__pyx_defaults4), 1)) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_INFO_NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6mpi4py_3MPI_Info))))) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_CyFunction_Defaults(__pyx_defaults4, __pyx_t_9)->__pyx_arg_info = ((struct PyMPIInfoObject *)__pyx_t_3);
  __Pyx_GIVEREF((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_9, __pyx_pf_6mpi4py_3MPI_110__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Alloc_mem, __pyx_t_9) < 0) __PYX_ERR(34, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":108
 * 
 * 
 * def Free_mem(mem: buffer) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Free memory allocated with `Alloc_mem`.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_mem, __pyx_n_s_buffer) < 0) __PYX_ERR(34, 108, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(34, 108, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_57Free_mem, 0, __pyx_n_s_Free_mem, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1034)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Free_mem, __pyx_t_8) < 0) __PYX_ERR(34, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":121
 * # -----------------------
 * 
 * def Init() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(34, 121, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_59Init, 0, __pyx_n_s_Init, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1035)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Init, __pyx_t_9) < 0) __PYX_ERR(34, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":129
 * 
 * 
 * def Finalize() -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Terminate the MPI execution environment.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(34, 129, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_61Finalize, 0, __pyx_n_s_Finalize, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1036)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Finalize, __pyx_t_8) < 0) __PYX_ERR(34, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":140
 * # -------------------------------
 * 
 * THREAD_SINGLE     = MPI_THREAD_SINGLE             # <<<<<<<<<<<<<<
 * #: Only one thread will execute
 * 
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_THREAD_SINGLE); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_THREAD_SINGLE, __pyx_t_8) < 0) __PYX_ERR(34, 140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":143
 * #: Only one thread will execute
 * 
 * THREAD_FUNNELED   = MPI_THREAD_FUNNELED             # <<<<<<<<<<<<<<
 * #: MPI calls are *funneled* to the main thread
 * 
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_THREAD_FUNNELED); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_THREAD_FUNNELED, __pyx_t_8) < 0) __PYX_ERR(34, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":146
 * #: MPI calls are *funneled* to the main thread
 * 
 * THREAD_SERIALIZED = MPI_THREAD_SERIALIZED             # <<<<<<<<<<<<<<
 * #: MPI calls are *serialized*
 * 
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_THREAD_SERIALIZED); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_THREAD_SERIALIZED, __pyx_t_8) < 0) __PYX_ERR(34, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":149
 * #: MPI calls are *serialized*
 * 
 * THREAD_MULTIPLE   = MPI_THREAD_MULTIPLE             # <<<<<<<<<<<<<<
 * #: Multiple threads may call MPI
 * 
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_THREAD_MULTIPLE); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_THREAD_MULTIPLE, __pyx_t_8) < 0) __PYX_ERR(34, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":153
 * 
 * 
 * def Init_thread(int required: int = THREAD_MULTIPLE) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Initialize the MPI execution environment.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_required, __pyx_n_s_int) < 0) __PYX_ERR(34, 153, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(34, 153, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_63Init_thread, 0, __pyx_n_s_Init_thread, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1038)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_9, sizeof(__pyx_defaults5), 0)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_THREAD_MULTIPLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_CyFunction_Defaults(__pyx_defaults5, __pyx_t_9)->__pyx_arg_required = __pyx_t_4;
  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_9, __pyx_pf_6mpi4py_3MPI_112__defaults__);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Init_thread, __pyx_t_9) < 0) __PYX_ERR(34, 153, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":163
 * 
 * 
 * def Query_thread() -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Return the level of thread support provided by the MPI library.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(34, 163, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_65Query_thread, 0, __pyx_n_s_Query_thread, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1040)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Query_thread, __pyx_t_8) < 0) __PYX_ERR(34, 163, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":172
 * 
 * 
 * def Is_thread_main() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether this thread called `Init` or `Init_thread`.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(34, 172, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_67Is_thread_main, 0, __pyx_n_s_Is_thread_main, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1042)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Is_thread_main, __pyx_t_9) < 0) __PYX_ERR(34, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":181
 * 
 * 
 * def Is_initialized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Init` has been called.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(34, 181, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_69Is_initialized, 0, __pyx_n_s_Is_initialized, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1043)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Is_initialized, __pyx_t_8) < 0) __PYX_ERR(34, 181, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":190
 * 
 * 
 * def Is_finalized() -> bool:             # <<<<<<<<<<<<<<
 *     """
 *     Indicate whether `Finalize` has completed.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_bool) < 0) __PYX_ERR(34, 190, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_71Is_finalized, 0, __pyx_n_s_Is_finalized, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1044)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Is_finalized, __pyx_t_9) < 0) __PYX_ERR(34, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":205
 * # -----------------
 * 
 * VERSION    = MPI_VERSION             # <<<<<<<<<<<<<<
 * SUBVERSION = MPI_SUBVERSION
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_VERSION); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_VERSION, __pyx_t_9) < 0) __PYX_ERR(34, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":206
 * 
 * VERSION    = MPI_VERSION
 * SUBVERSION = MPI_SUBVERSION             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_9 = __Pyx_PyInt_From___pyx_anon_enum(MPI_SUBVERSION); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SUBVERSION, __pyx_t_9) < 0) __PYX_ERR(34, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":209
 * 
 * 
 * def Get_version() -> tuple[int, int]:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version number of the MPI standard.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_tuple_int_int) < 0) __PYX_ERR(34, 209, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_73Get_version, 0, __pyx_n_s_Get_version, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1046)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Get_version, __pyx_t_8) < 0) __PYX_ERR(34, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":219
 * 
 * 
 * def Get_library_version() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the version string of the MPI library.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(34, 219, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_75Get_library_version, 0, __pyx_n_s_Get_library_version, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1048)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Get_library_version, __pyx_t_9) < 0) __PYX_ERR(34, 219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":232
 * # ----------------------
 * 
 * def Get_processor_name() -> str:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain the name of the calling processor.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(34, 232, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_77Get_processor_name, 0, __pyx_n_s_Get_processor_name, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1049)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Get_processor_name, __pyx_t_8) < 0) __PYX_ERR(34, 232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":242
 * 
 * 
 * def Get_hw_resource_info() -> Info:             # <<<<<<<<<<<<<<
 *     """
 *     Obtain information about the hardware platform of the calling processor.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_Info) < 0) __PYX_ERR(34, 242, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_79Get_hw_resource_info, 0, __pyx_n_s_Get_hw_resource_info, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1051)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Get_hw_resource_info, __pyx_t_9) < 0) __PYX_ERR(34, 242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":254
 * # --------------------------
 * 
 * def Wtime() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return an elapsed time on the calling processor.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_float) < 0) __PYX_ERR(34, 254, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_81Wtime, 0, __pyx_n_s_Wtime, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1052)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Wtime, __pyx_t_8) < 0) __PYX_ERR(34, 254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":261
 * 
 * 
 * def Wtick() -> float:             # <<<<<<<<<<<<<<
 *     """
 *     Return the resolution of `Wtime`.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_float) < 0) __PYX_ERR(34, 261, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_83Wtick, 0, __pyx_n_s_Wtick, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1053)); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Wtick, __pyx_t_9) < 0) __PYX_ERR(34, 261, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":271
 * # --------------------
 * 
 * def Pcontrol(int level: int) -> None:             # <<<<<<<<<<<<<<
 *     """
 *     Control profiling.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_level, __pyx_n_s_int) < 0) __PYX_ERR(34, 271, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(34, 271, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_85Pcontrol, 0, __pyx_n_s_Pcontrol, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1055)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Pcontrol, __pyx_t_8) < 0) __PYX_ERR(34, 271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":283
 * 
 * # MPI-1
 * MAX_PROCESSOR_NAME = MPI_MAX_PROCESSOR_NAME             # <<<<<<<<<<<<<<
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING
 * # MPI-2
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_PROCESSOR_NAME); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_PROCESSOR_NAME, __pyx_t_8) < 0) __PYX_ERR(34, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":284
 * # MPI-1
 * MAX_PROCESSOR_NAME = MPI_MAX_PROCESSOR_NAME
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING             # <<<<<<<<<<<<<<
 * # MPI-2
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_ERROR_STRING); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_ERROR_STRING, __pyx_t_8) < 0) __PYX_ERR(34, 284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":286
 * MAX_ERROR_STRING   = MPI_MAX_ERROR_STRING
 * # MPI-2
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME             # <<<<<<<<<<<<<<
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_PORT_NAME); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_PORT_NAME, __pyx_t_8) < 0) __PYX_ERR(34, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":287
 * # MPI-2
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY             # <<<<<<<<<<<<<<
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_INFO_KEY); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_INFO_KEY, __pyx_t_8) < 0) __PYX_ERR(34, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":288
 * MAX_PORT_NAME      = MPI_MAX_PORT_NAME
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL             # <<<<<<<<<<<<<<
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_INFO_VAL); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_INFO_VAL, __pyx_t_8) < 0) __PYX_ERR(34, 288, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":289
 * MAX_INFO_KEY       = MPI_MAX_INFO_KEY
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME             # <<<<<<<<<<<<<<
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING
 * # MPI-3
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_OBJECT_NAME); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_OBJECT_NAME, __pyx_t_8) < 0) __PYX_ERR(34, 289, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":290
 * MAX_INFO_VAL       = MPI_MAX_INFO_VAL
 * MAX_OBJECT_NAME    = MPI_MAX_OBJECT_NAME
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING             # <<<<<<<<<<<<<<
 * # MPI-3
 * MAX_LIBRARY_VERSION_STRING = MPI_MAX_LIBRARY_VERSION_STRING
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_DATAREP_STRING); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_DATAREP_STRING, __pyx_t_8) < 0) __PYX_ERR(34, 290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":292
 * MAX_DATAREP_STRING = MPI_MAX_DATAREP_STRING
 * # MPI-3
 * MAX_LIBRARY_VERSION_STRING = MPI_MAX_LIBRARY_VERSION_STRING             # <<<<<<<<<<<<<<
 * # MPI-4
 * MAX_PSET_NAME_LEN  = MPI_MAX_PSET_NAME_LEN
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_LIBRARY_VERSION_STRING); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_LIBRARY_VERSION_STRING, __pyx_t_8) < 0) __PYX_ERR(34, 292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":294
 * MAX_LIBRARY_VERSION_STRING = MPI_MAX_LIBRARY_VERSION_STRING
 * # MPI-4
 * MAX_PSET_NAME_LEN  = MPI_MAX_PSET_NAME_LEN             # <<<<<<<<<<<<<<
 * MAX_STRINGTAG_LEN  = MPI_MAX_STRINGTAG_LEN
 * 
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_PSET_NAME_LEN); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_PSET_NAME_LEN, __pyx_t_8) < 0) __PYX_ERR(34, 294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":295
 * # MPI-4
 * MAX_PSET_NAME_LEN  = MPI_MAX_PSET_NAME_LEN
 * MAX_STRINGTAG_LEN  = MPI_MAX_STRINGTAG_LEN             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_8 = __Pyx_PyInt_From___pyx_anon_enum(MPI_MAX_STRINGTAG_LEN); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_STRINGTAG_LEN, __pyx_t_8) < 0) __PYX_ERR(34, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":11
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict TypeDict = { }             # <<<<<<<<<<<<<<
 * _typedict = TypeDict
 * 
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(35, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_TypeDict);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_TypeDict, ((PyObject*)__pyx_t_8));
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":12
 * 
 * cdef dict TypeDict = { }
 * _typedict = TypeDict             # <<<<<<<<<<<<<<
 * 
 * # boolean (C++)
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_typedict, __pyx_v_6mpi4py_3MPI_TypeDict) < 0) __PYX_ERR(35, 12, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typemap.pxi":15
 * 
 * # boolean (C++)
 * AddTypeMap(TypeDict, "?" , __CXX_BOOL__ )  # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * # boolean (C99)
 * AddTypeMap(TypeDict, "?" , __C_BOOL__   )  # PEP-3118 & NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"?"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":17
 * AddTypeMap(TypeDict, "?" , __CXX_BOOL__ )  # PEP-3118 & NumPy
 * # boolean (C99)
 * AddTypeMap(TypeDict, "?" , __C_BOOL__   )  # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * # (signed) integer
 * AddTypeMap(TypeDict, "b" , __SIGNED_CHAR__ )  # MPI-2
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"?"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":19
 * AddTypeMap(TypeDict, "?" , __C_BOOL__   )  # PEP-3118 & NumPy
 * # (signed) integer
 * AddTypeMap(TypeDict, "b" , __SIGNED_CHAR__ )  # MPI-2             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "h" , __SHORT__       )
 * AddTypeMap(TypeDict, "i" , __INT__         )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"b"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":20
 * # (signed) integer
 * AddTypeMap(TypeDict, "b" , __SIGNED_CHAR__ )  # MPI-2
 * AddTypeMap(TypeDict, "h" , __SHORT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i" , __INT__         )
 * AddTypeMap(TypeDict, "l" , __LONG__        )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"h"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":21
 * AddTypeMap(TypeDict, "b" , __SIGNED_CHAR__ )  # MPI-2
 * AddTypeMap(TypeDict, "h" , __SHORT__       )
 * AddTypeMap(TypeDict, "i" , __INT__         )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "l" , __LONG__        )
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":22
 * AddTypeMap(TypeDict, "h" , __SHORT__       )
 * AddTypeMap(TypeDict, "i" , __INT__         )
 * AddTypeMap(TypeDict, "l" , __LONG__        )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )
 * # unsigned integer
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"l"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":23
 * AddTypeMap(TypeDict, "i" , __INT__         )
 * AddTypeMap(TypeDict, "l" , __LONG__        )
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )             # <<<<<<<<<<<<<<
 * # unsigned integer
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__      )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"q"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":25
 * AddTypeMap(TypeDict, "q" , __LONG_LONG__   )
 * # unsigned integer
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__           )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"B"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":26
 * # unsigned integer
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__      )
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__      )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"H"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":27
 * AddTypeMap(TypeDict, "B" , __UNSIGNED_CHAR__      )
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__           )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__      )
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"I"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":28
 * AddTypeMap(TypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * # (real) floating
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"L"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":29
 * AddTypeMap(TypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(TypeDict, "L" , __UNSIGNED_LONG__      )
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__ )             # <<<<<<<<<<<<<<
 * # (real) floating
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Q"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":31
 * AddTypeMap(TypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * # (real) floating
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"f"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":32
 * # (real) floating
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy
 * # complex floating (F77)
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"d"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":33
 * AddTypeMap(TypeDict, "f" , __FLOAT__       )
 * AddTypeMap(TypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * # complex floating (F77)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        )  # PEP-3118
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"g"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":35
 * AddTypeMap(TypeDict, "g" , __LONG_DOUBLE__ )  # PEP-3118 & NumPy
 * # complex floating (F77)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        )  # NumPy
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Zf"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":36
 * # complex floating (F77)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"Zd"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":37
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX__        )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ )  # NumPy
 * # complex floating (F90)
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"F"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":38
 * AddTypeMap(TypeDict, "Zd" , __DOUBLE_COMPLEX__ )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX__        )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ )  # NumPy             # <<<<<<<<<<<<<<
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"D"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":40
 * AddTypeMap(TypeDict, "D"  , __DOUBLE_COMPLEX__ )  # NumPy
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Zf"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":41
 * # complex floating (F90)
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"Zd"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":42
 * AddTypeMap(TypeDict, "Zf" , __COMPLEX8__       )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      )  # NumPy
 * # complex floating (C++)
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"F"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":43
 * AddTypeMap(TypeDict, "Zd" , __COMPLEX16__      )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __COMPLEX8__       )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      )  # NumPy             # <<<<<<<<<<<<<<
 * # complex floating (C++)
 * AddTypeMap(TypeDict, "Zf" , __CXX_FLOAT_COMPLEX__       )  # PEP-3118
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"D"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":45
 * AddTypeMap(TypeDict, "D"  , __COMPLEX16__      )  # NumPy
 * # complex floating (C++)
 * AddTypeMap(TypeDict, "Zf" , __CXX_FLOAT_COMPLEX__       )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __CXX_DOUBLE_COMPLEX__      )  # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __CXX_LONG_DOUBLE_COMPLEX__ )  # PEP-3118
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Zf"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":46
 * # complex floating (C++)
 * AddTypeMap(TypeDict, "Zf" , __CXX_FLOAT_COMPLEX__       )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __CXX_DOUBLE_COMPLEX__      )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zg" , __CXX_LONG_DOUBLE_COMPLEX__ )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __CXX_FLOAT_COMPLEX__       )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"Zd"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":47
 * AddTypeMap(TypeDict, "Zf" , __CXX_FLOAT_COMPLEX__       )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __CXX_DOUBLE_COMPLEX__      )  # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __CXX_LONG_DOUBLE_COMPLEX__ )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __CXX_FLOAT_COMPLEX__       )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __CXX_DOUBLE_COMPLEX__      )  # NumPy
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Zg"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":48
 * AddTypeMap(TypeDict, "Zd" , __CXX_DOUBLE_COMPLEX__      )  # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __CXX_LONG_DOUBLE_COMPLEX__ )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __CXX_FLOAT_COMPLEX__       )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __CXX_DOUBLE_COMPLEX__      )  # NumPy
 * AddTypeMap(TypeDict, "G"  , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"F"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":49
 * AddTypeMap(TypeDict, "Zg" , __CXX_LONG_DOUBLE_COMPLEX__ )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __CXX_FLOAT_COMPLEX__       )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __CXX_DOUBLE_COMPLEX__      )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "G"  , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy
 * # complex floating (C99)
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"D"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":50
 * AddTypeMap(TypeDict, "F"  , __CXX_FLOAT_COMPLEX__       )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __CXX_DOUBLE_COMPLEX__      )  # NumPy
 * AddTypeMap(TypeDict, "G"  , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy             # <<<<<<<<<<<<<<
 * # complex floating (C99)
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__         )  # PEP-3118
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"G"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":52
 * AddTypeMap(TypeDict, "G"  , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy
 * # complex floating (C99)
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__         )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__        )  # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__   )  # PEP-3118
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Zf"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":53
 * # complex floating (C99)
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__         )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__        )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__   )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__         )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"Zd"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":54
 * AddTypeMap(TypeDict, "Zf" , __C_FLOAT_COMPLEX__         )  # PEP-3118
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__        )  # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__   )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__         )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__        )  # NumPy
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Zg"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":55
 * AddTypeMap(TypeDict, "Zd" , __C_DOUBLE_COMPLEX__        )  # PEP-3118
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__   )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__         )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__        )  # NumPy
 * AddTypeMap(TypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__   )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"F"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":56
 * AddTypeMap(TypeDict, "Zg" , __C_LONG_DOUBLE_COMPLEX__   )  # PEP-3118
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__         )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__        )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__   )  # NumPy
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"D"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":57
 * AddTypeMap(TypeDict, "F"  , __C_FLOAT_COMPLEX__         )  # NumPy
 * AddTypeMap(TypeDict, "D"  , __C_DOUBLE_COMPLEX__        )  # NumPy
 * AddTypeMap(TypeDict, "G"  , __C_LONG_DOUBLE_COMPLEX__   )  # NumPy             # <<<<<<<<<<<<<<
 * 
 * # boolean (C99/C++)
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"G"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":60
 * 
 * # boolean (C99/C++)
 * AddTypeMap(TypeDict, "b1" , __CXX_BOOL__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "b1" , __C_BOOL__   )  # NumPy
 * # signed and unsigned integer (C)
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"b1"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":61
 * # boolean (C99/C++)
 * AddTypeMap(TypeDict, "b1" , __CXX_BOOL__ )  # NumPy
 * AddTypeMap(TypeDict, "b1" , __C_BOOL__   )  # NumPy             # <<<<<<<<<<<<<<
 * # signed and unsigned integer (C)
 * if sizeof(char) == 1:
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"b1"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":63
 * AddTypeMap(TypeDict, "b1" , __C_BOOL__   )  # NumPy
 * # signed and unsigned integer (C)
 * if sizeof(char) == 1:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i1" ,  __SIGNED_CHAR__        )  # NumPy
 *     AddTypeMap(TypeDict, "u1" ,  __UNSIGNED_CHAR__      )  # NumPy
 */
  __pyx_t_5 = ((sizeof(char)) == 1);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":64
 * # signed and unsigned integer (C)
 * if sizeof(char) == 1:
 *     AddTypeMap(TypeDict, "i1" ,  __SIGNED_CHAR__        )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u1" ,  __UNSIGNED_CHAR__      )  # NumPy
 * if sizeof(short) == 2:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i1"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 64, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":65
 * if sizeof(char) == 1:
 *     AddTypeMap(TypeDict, "i1" ,  __SIGNED_CHAR__        )  # NumPy
 *     AddTypeMap(TypeDict, "u1" ,  __UNSIGNED_CHAR__      )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(short) == 2:
 *     AddTypeMap(TypeDict, "i2" ,  __SHORT__              )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u1"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 65, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":63
 * AddTypeMap(TypeDict, "b1" , __C_BOOL__   )  # NumPy
 * # signed and unsigned integer (C)
 * if sizeof(char) == 1:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i1" ,  __SIGNED_CHAR__        )  # NumPy
 *     AddTypeMap(TypeDict, "u1" ,  __UNSIGNED_CHAR__      )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":66
 *     AddTypeMap(TypeDict, "i1" ,  __SIGNED_CHAR__        )  # NumPy
 *     AddTypeMap(TypeDict, "u1" ,  __UNSIGNED_CHAR__      )  # NumPy
 * if sizeof(short) == 2:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i2" ,  __SHORT__              )  # NumPy
 *     AddTypeMap(TypeDict, "u2" ,  __UNSIGNED_SHORT__     )  # NumPy
 */
  __pyx_t_5 = ((sizeof(short)) == 2);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":67
 *     AddTypeMap(TypeDict, "u1" ,  __UNSIGNED_CHAR__      )  # NumPy
 * if sizeof(short) == 2:
 *     AddTypeMap(TypeDict, "i2" ,  __SHORT__              )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u2" ,  __UNSIGNED_SHORT__     )  # NumPy
 * if sizeof(long) == 4:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i2"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":68
 * if sizeof(short) == 2:
 *     AddTypeMap(TypeDict, "i2" ,  __SHORT__              )  # NumPy
 *     AddTypeMap(TypeDict, "u2" ,  __UNSIGNED_SHORT__     )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(long) == 4:
 *     AddTypeMap(TypeDict, "i4" ,  __LONG__               )  # NumPy  # ~> 32bit
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u2"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 68, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":66
 *     AddTypeMap(TypeDict, "i1" ,  __SIGNED_CHAR__        )  # NumPy
 *     AddTypeMap(TypeDict, "u1" ,  __UNSIGNED_CHAR__      )  # NumPy
 * if sizeof(short) == 2:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i2" ,  __SHORT__              )  # NumPy
 *     AddTypeMap(TypeDict, "u2" ,  __UNSIGNED_SHORT__     )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":69
 *     AddTypeMap(TypeDict, "i2" ,  __SHORT__              )  # NumPy
 *     AddTypeMap(TypeDict, "u2" ,  __UNSIGNED_SHORT__     )  # NumPy
 * if sizeof(long) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i4" ,  __LONG__               )  # NumPy  # ~> 32bit
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED_LONG__      )  # NumPy  # ~> 32bit
 */
  __pyx_t_5 = ((sizeof(long)) == 4);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":70
 *     AddTypeMap(TypeDict, "u2" ,  __UNSIGNED_SHORT__     )  # NumPy
 * if sizeof(long) == 4:
 *     AddTypeMap(TypeDict, "i4" ,  __LONG__               )  # NumPy  # ~> 32bit             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED_LONG__      )  # NumPy  # ~> 32bit
 * if sizeof(int) == 4:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 70, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":71
 * if sizeof(long) == 4:
 *     AddTypeMap(TypeDict, "i4" ,  __LONG__               )  # NumPy  # ~> 32bit
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED_LONG__      )  # NumPy  # ~> 32bit             # <<<<<<<<<<<<<<
 * if sizeof(int) == 4:
 *     AddTypeMap(TypeDict, "i4" ,  __INT__                )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u4"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 71, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":69
 *     AddTypeMap(TypeDict, "i2" ,  __SHORT__              )  # NumPy
 *     AddTypeMap(TypeDict, "u2" ,  __UNSIGNED_SHORT__     )  # NumPy
 * if sizeof(long) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i4" ,  __LONG__               )  # NumPy  # ~> 32bit
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED_LONG__      )  # NumPy  # ~> 32bit
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":72
 *     AddTypeMap(TypeDict, "i4" ,  __LONG__               )  # NumPy  # ~> 32bit
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED_LONG__      )  # NumPy  # ~> 32bit
 * if sizeof(int) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i4" ,  __INT__                )  # NumPy
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED__           )  # NumPy
 */
  __pyx_t_5 = ((sizeof(int)) == 4);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":73
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED_LONG__      )  # NumPy  # ~> 32bit
 * if sizeof(int) == 4:
 *     AddTypeMap(TypeDict, "i4" ,  __INT__                )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED__           )  # NumPy
 * if sizeof(long long) == 8:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 73, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":74
 * if sizeof(int) == 4:
 *     AddTypeMap(TypeDict, "i4" ,  __INT__                )  # NumPy
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED__           )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(long long) == 8:
 *     AddTypeMap(TypeDict, "i8" ,  __LONG_LONG__          )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u4"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 74, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":72
 *     AddTypeMap(TypeDict, "i4" ,  __LONG__               )  # NumPy  # ~> 32bit
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED_LONG__      )  # NumPy  # ~> 32bit
 * if sizeof(int) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i4" ,  __INT__                )  # NumPy
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED__           )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":75
 *     AddTypeMap(TypeDict, "i4" ,  __INT__                )  # NumPy
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED__           )  # NumPy
 * if sizeof(long long) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i8" ,  __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG_LONG__ )  # NumPy
 */
  __pyx_t_5 = ((sizeof(PY_LONG_LONG)) == 8);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":76
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED__           )  # NumPy
 * if sizeof(long long) == 8:
 *     AddTypeMap(TypeDict, "i8" ,  __LONG_LONG__          )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(long) == 8:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i8"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 76, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":77
 * if sizeof(long long) == 8:
 *     AddTypeMap(TypeDict, "i8" ,  __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG_LONG__ )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(long) == 8:
 *     AddTypeMap(TypeDict, "i8" ,  __LONG__               )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 77, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":75
 *     AddTypeMap(TypeDict, "i4" ,  __INT__                )  # NumPy
 *     AddTypeMap(TypeDict, "u4" ,  __UNSIGNED__           )  # NumPy
 * if sizeof(long long) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i8" ,  __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG_LONG__ )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":78
 *     AddTypeMap(TypeDict, "i8" ,  __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(long) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i8" ,  __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG__      )  # NumPy
 */
  __pyx_t_5 = ((sizeof(long)) == 8);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":79
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(long) == 8:
 *     AddTypeMap(TypeDict, "i8" ,  __LONG__               )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG__      )  # NumPy
 * # signed integer (C99)
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i8"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 79, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":80
 * if sizeof(long) == 8:
 *     AddTypeMap(TypeDict, "i8" ,  __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG__      )  # NumPy             # <<<<<<<<<<<<<<
 * # signed integer (C99)
 * AddTypeMap(TypeDict, "i1" , __INT8_T__   )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 80, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":78
 *     AddTypeMap(TypeDict, "i8" ,  __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(long) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "i8" ,  __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG__      )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":82
 *     AddTypeMap(TypeDict, "u8" ,  __UNSIGNED_LONG__      )  # NumPy
 * # signed integer (C99)
 * AddTypeMap(TypeDict, "i1" , __INT8_T__   )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i2" , __INT16_T__  )  # NumPy
 * AddTypeMap(TypeDict, "i4" , __INT32_T__  )  # NumPy
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i1"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":83
 * # signed integer (C99)
 * AddTypeMap(TypeDict, "i1" , __INT8_T__   )  # NumPy
 * AddTypeMap(TypeDict, "i2" , __INT16_T__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i4" , __INT32_T__  )  # NumPy
 * AddTypeMap(TypeDict, "i8" , __INT64_T__  )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i2"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":84
 * AddTypeMap(TypeDict, "i1" , __INT8_T__   )  # NumPy
 * AddTypeMap(TypeDict, "i2" , __INT16_T__  )  # NumPy
 * AddTypeMap(TypeDict, "i4" , __INT32_T__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "i8" , __INT64_T__  )  # NumPy
 * # unsigned integer (C99)
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":85
 * AddTypeMap(TypeDict, "i2" , __INT16_T__  )  # NumPy
 * AddTypeMap(TypeDict, "i4" , __INT32_T__  )  # NumPy
 * AddTypeMap(TypeDict, "i8" , __INT64_T__  )  # NumPy             # <<<<<<<<<<<<<<
 * # unsigned integer (C99)
 * AddTypeMap(TypeDict, "u1" , __UINT8_T__  )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":87
 * AddTypeMap(TypeDict, "i8" , __INT64_T__  )  # NumPy
 * # unsigned integer (C99)
 * AddTypeMap(TypeDict, "u1" , __UINT8_T__  )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "u2" , __UINT16_T__ )  # NumPy
 * AddTypeMap(TypeDict, "u4" , __UINT32_T__ )  # NumPy
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"u1"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":88
 * # unsigned integer (C99)
 * AddTypeMap(TypeDict, "u1" , __UINT8_T__  )  # NumPy
 * AddTypeMap(TypeDict, "u2" , __UINT16_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "u4" , __UINT32_T__ )  # NumPy
 * AddTypeMap(TypeDict, "u8" , __UINT64_T__ )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u2"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 88, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":89
 * AddTypeMap(TypeDict, "u1" , __UINT8_T__  )  # NumPy
 * AddTypeMap(TypeDict, "u2" , __UINT16_T__ )  # NumPy
 * AddTypeMap(TypeDict, "u4" , __UINT32_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "u8" , __UINT64_T__ )  # NumPy
 * # real (C) and complex (C99/C++) floating
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"u4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":90
 * AddTypeMap(TypeDict, "u2" , __UINT16_T__ )  # NumPy
 * AddTypeMap(TypeDict, "u4" , __UINT32_T__ )  # NumPy
 * AddTypeMap(TypeDict, "u8" , __UINT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * # real (C) and complex (C99/C++) floating
 * if sizeof(float) == 4:
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":92
 * AddTypeMap(TypeDict, "u8" , __UINT64_T__ )  # NumPy
 * # real (C) and complex (C99/C++) floating
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
 */
  __pyx_t_5 = ((sizeof(float)) == 4);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":93
 * # real (C) and complex (C99/C++) floating
 * if sizeof(float) == 4:
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __C_FLOAT_COMPLEX__    )  # NumPy
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"f4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":94
 * if sizeof(float) == 4:
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c8"  , __C_FLOAT_COMPLEX__    )  # NumPy
 * if sizeof(double) == 8:
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 94, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":95
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __C_FLOAT_COMPLEX__    )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(double) == 8:
 *     AddTypeMap(TypeDict, "f8"  , __DOUBLE__             )  # NumPy
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"c8"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 95, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":92
 * AddTypeMap(TypeDict, "u8" , __UINT64_T__ )  # NumPy
 * # real (C) and complex (C99/C++) floating
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f4"  , __FLOAT__              )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":96
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __C_FLOAT_COMPLEX__    )  # NumPy
 * if sizeof(double) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f8"  , __DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __CXX_DOUBLE_COMPLEX__ )  # NumPy
 */
  __pyx_t_5 = ((sizeof(double)) == 8);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":97
 *     AddTypeMap(TypeDict, "c8"  , __C_FLOAT_COMPLEX__    )  # NumPy
 * if sizeof(double) == 8:
 *     AddTypeMap(TypeDict, "f8"  , __DOUBLE__             )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c16" , __CXX_DOUBLE_COMPLEX__ )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __C_DOUBLE_COMPLEX__   )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"f8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 97, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":98
 * if sizeof(double) == 8:
 *     AddTypeMap(TypeDict, "f8"  , __DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __CXX_DOUBLE_COMPLEX__ )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c16" , __C_DOUBLE_COMPLEX__   )  # NumPy
 * if sizeof(long double) == 12:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"c16"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 98, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":99
 *     AddTypeMap(TypeDict, "f8"  , __DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __CXX_DOUBLE_COMPLEX__ )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __C_DOUBLE_COMPLEX__   )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(long double) == 12:
 *     AddTypeMap(TypeDict, "f12" , __LONG_DOUBLE__             )  # ~> NumPy i386
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c16"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":96
 *     AddTypeMap(TypeDict, "c8"  , __CXX_FLOAT_COMPLEX__  )  # NumPy
 *     AddTypeMap(TypeDict, "c8"  , __C_FLOAT_COMPLEX__    )  # NumPy
 * if sizeof(double) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f8"  , __DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __CXX_DOUBLE_COMPLEX__ )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":100
 *     AddTypeMap(TypeDict, "c16" , __CXX_DOUBLE_COMPLEX__ )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __C_DOUBLE_COMPLEX__   )  # NumPy
 * if sizeof(long double) == 12:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f12" , __LONG_DOUBLE__             )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __CXX_LONG_DOUBLE_COMPLEX__ )  # ~> NumPy i386
 */
  __pyx_t_5 = ((sizeof(long double)) == 12);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":101
 *     AddTypeMap(TypeDict, "c16" , __C_DOUBLE_COMPLEX__   )  # NumPy
 * if sizeof(long double) == 12:
 *     AddTypeMap(TypeDict, "f12" , __LONG_DOUBLE__             )  # ~> NumPy i386             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c24" , __CXX_LONG_DOUBLE_COMPLEX__ )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__   )  # ~> NumPy i386
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"f12"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 101, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":102
 * if sizeof(long double) == 12:
 *     AddTypeMap(TypeDict, "f12" , __LONG_DOUBLE__             )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __CXX_LONG_DOUBLE_COMPLEX__ )  # ~> NumPy i386             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__   )  # ~> NumPy i386
 * if sizeof(long double) == 16:
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c24"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 102, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":103
 *     AddTypeMap(TypeDict, "f12" , __LONG_DOUBLE__             )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __CXX_LONG_DOUBLE_COMPLEX__ )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__   )  # ~> NumPy i386             # <<<<<<<<<<<<<<
 * if sizeof(long double) == 16:
 *     AddTypeMap(TypeDict, "f16" , __LONG_DOUBLE__             )  # NumPy
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"c24"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 103, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":100
 *     AddTypeMap(TypeDict, "c16" , __CXX_DOUBLE_COMPLEX__ )  # NumPy
 *     AddTypeMap(TypeDict, "c16" , __C_DOUBLE_COMPLEX__   )  # NumPy
 * if sizeof(long double) == 12:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f12" , __LONG_DOUBLE__             )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __CXX_LONG_DOUBLE_COMPLEX__ )  # ~> NumPy i386
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":104
 *     AddTypeMap(TypeDict, "c24" , __CXX_LONG_DOUBLE_COMPLEX__ )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__   )  # ~> NumPy i386
 * if sizeof(long double) == 16:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f16" , __LONG_DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c32" , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy
 */
  __pyx_t_5 = ((sizeof(long double)) == 16);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":105
 *     AddTypeMap(TypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__   )  # ~> NumPy i386
 * if sizeof(long double) == 16:
 *     AddTypeMap(TypeDict, "f16" , __LONG_DOUBLE__             )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c32" , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy
 *     AddTypeMap(TypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__   )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"f16"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 105, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":106
 * if sizeof(long double) == 16:
 *     AddTypeMap(TypeDict, "f16" , __LONG_DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c32" , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__   )  # NumPy
 * 
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"c32"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 106, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":107
 *     AddTypeMap(TypeDict, "f16" , __LONG_DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c32" , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy
 *     AddTypeMap(TypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__   )  # NumPy             # <<<<<<<<<<<<<<
 * 
 * # ssize_t and size_t (C)
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c32"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 107, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":104
 *     AddTypeMap(TypeDict, "c24" , __CXX_LONG_DOUBLE_COMPLEX__ )  # ~> NumPy i386
 *     AddTypeMap(TypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__   )  # ~> NumPy i386
 * if sizeof(long double) == 16:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "f16" , __LONG_DOUBLE__             )  # NumPy
 *     AddTypeMap(TypeDict, "c32" , __CXX_LONG_DOUBLE_COMPLEX__ )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":110
 * 
 * # ssize_t and size_t (C)
 * if sizeof(size_t) == sizeof(long long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __LONG_LONG__          )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG_LONG__ )
 */
  __pyx_t_5 = ((sizeof(size_t)) == (sizeof(PY_LONG_LONG)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":111
 * # ssize_t and size_t (C)
 * if sizeof(size_t) == sizeof(long long):
 *     AddTypeMap(TypeDict, "n" , __LONG_LONG__          )             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG_LONG__ )
 * if sizeof(size_t) == sizeof(long):
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"n"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 111, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":112
 * if sizeof(size_t) == sizeof(long long):
 *     AddTypeMap(TypeDict, "n" , __LONG_LONG__          )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG_LONG__ )             # <<<<<<<<<<<<<<
 * if sizeof(size_t) == sizeof(long):
 *     AddTypeMap(TypeDict, "n" , __LONG__               )
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"N"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 112, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":110
 * 
 * # ssize_t and size_t (C)
 * if sizeof(size_t) == sizeof(long long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __LONG_LONG__          )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG_LONG__ )
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":113
 *     AddTypeMap(TypeDict, "n" , __LONG_LONG__          )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG_LONG__ )
 * if sizeof(size_t) == sizeof(long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __LONG__               )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG__      )
 */
  __pyx_t_5 = ((sizeof(size_t)) == (sizeof(long)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":114
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG_LONG__ )
 * if sizeof(size_t) == sizeof(long):
 *     AddTypeMap(TypeDict, "n" , __LONG__               )             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG__      )
 * if sizeof(size_t) == sizeof(int):
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"n"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":115
 * if sizeof(size_t) == sizeof(long):
 *     AddTypeMap(TypeDict, "n" , __LONG__               )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG__      )             # <<<<<<<<<<<<<<
 * if sizeof(size_t) == sizeof(int):
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"N"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 115, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":113
 *     AddTypeMap(TypeDict, "n" , __LONG_LONG__          )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG_LONG__ )
 * if sizeof(size_t) == sizeof(long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __LONG__               )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG__      )
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":116
 *     AddTypeMap(TypeDict, "n" , __LONG__               )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG__      )
 * if sizeof(size_t) == sizeof(int):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 */
  __pyx_t_5 = ((sizeof(size_t)) == (sizeof(int)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":117
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG__      )
 * if sizeof(size_t) == sizeof(int):
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 * if sizeof(size_t) == sizeof(MPI_Count):
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"n"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 117, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":118
 * if sizeof(size_t) == sizeof(int):
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit             # <<<<<<<<<<<<<<
 * if sizeof(size_t) == sizeof(MPI_Count):
 *     AddTypeMap(TypeDict, "n" , __COUNT__              )
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"N"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":116
 *     AddTypeMap(TypeDict, "n" , __LONG__               )
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED_LONG__      )
 * if sizeof(size_t) == sizeof(int):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":119
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 * if sizeof(size_t) == sizeof(MPI_Count):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __COUNT__              )
 * 
 */
  __pyx_t_5 = ((sizeof(size_t)) == (sizeof(MPI_Count)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":120
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 * if sizeof(size_t) == sizeof(MPI_Count):
 *     AddTypeMap(TypeDict, "n" , __COUNT__              )             # <<<<<<<<<<<<<<
 * 
 * # intptr_t and uintptr_t (C99)
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COUNT__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"n"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 120, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":119
 *     AddTypeMap(TypeDict, "n" , __INT__                )  # ~> 32bit
 *     AddTypeMap(TypeDict, "N" , __UNSIGNED__           )  # ~> 32bit
 * if sizeof(size_t) == sizeof(MPI_Count):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "n" , __COUNT__              )
 * 
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":123
 * 
 * # intptr_t and uintptr_t (C99)
 * if sizeof(Py_intptr_t) == sizeof(long long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG_LONG__ )  # NumPy
 */
  __pyx_t_5 = ((sizeof(Py_intptr_t)) == (sizeof(PY_LONG_LONG)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":124
 * # intptr_t and uintptr_t (C99)
 * if sizeof(Py_intptr_t) == sizeof(long long):
 *     AddTypeMap(TypeDict, "p" , __LONG_LONG__          )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(long):
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"p"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 124, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":125
 * if sizeof(Py_intptr_t) == sizeof(long long):
 *     AddTypeMap(TypeDict, "p" , __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG_LONG__ )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(Py_intptr_t) == sizeof(long):
 *     AddTypeMap(TypeDict, "p" , __LONG__               )  # NumPy
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"P"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 125, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":123
 * 
 * # intptr_t and uintptr_t (C99)
 * if sizeof(Py_intptr_t) == sizeof(long long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG_LONG__ )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":126
 *     AddTypeMap(TypeDict, "p" , __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG__      )  # NumPy
 */
  __pyx_t_5 = ((sizeof(Py_intptr_t)) == (sizeof(long)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":127
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(long):
 *     AddTypeMap(TypeDict, "p" , __LONG__               )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG__      )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(int):
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"p"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 127, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":128
 * if sizeof(Py_intptr_t) == sizeof(long):
 *     AddTypeMap(TypeDict, "p" , __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG__      )  # NumPy             # <<<<<<<<<<<<<<
 * if sizeof(Py_intptr_t) == sizeof(int):
 *     AddTypeMap(TypeDict, "p" , __INT__                )  # ~> NumPy 32bit
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"P"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 128, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":126
 *     AddTypeMap(TypeDict, "p" , __LONG_LONG__          )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG_LONG__ )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(long):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG__      )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":129
 *     AddTypeMap(TypeDict, "p" , __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG__      )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(int):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __INT__                )  # ~> NumPy 32bit
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit
 */
  __pyx_t_5 = ((sizeof(Py_intptr_t)) == (sizeof(int)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":130
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG__      )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(int):
 *     AddTypeMap(TypeDict, "p" , __INT__                )  # ~> NumPy 32bit             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit
 * if sizeof(Py_intptr_t) == sizeof(MPI_Aint):
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"p"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 130, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":131
 * if sizeof(Py_intptr_t) == sizeof(int):
 *     AddTypeMap(TypeDict, "p" , __INT__                )  # ~> NumPy 32bit
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit             # <<<<<<<<<<<<<<
 * if sizeof(Py_intptr_t) == sizeof(MPI_Aint):
 *     AddTypeMap(TypeDict, "p" , __AINT__               )  # NumPy
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"P"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 131, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":129
 *     AddTypeMap(TypeDict, "p" , __LONG__               )  # NumPy
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED_LONG__      )  # NumPy
 * if sizeof(Py_intptr_t) == sizeof(int):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __INT__                )  # ~> NumPy 32bit
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":132
 *     AddTypeMap(TypeDict, "p" , __INT__                )  # ~> NumPy 32bit
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit
 * if sizeof(Py_intptr_t) == sizeof(MPI_Aint):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __AINT__               )  # NumPy
 * 
 */
  __pyx_t_5 = ((sizeof(Py_intptr_t)) == (sizeof(MPI_Aint)));
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":133
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit
 * if sizeof(Py_intptr_t) == sizeof(MPI_Aint):
 *     AddTypeMap(TypeDict, "p" , __AINT__               )  # NumPy             # <<<<<<<<<<<<<<
 * 
 * # character
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___AINT__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"p"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 133, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":132
 *     AddTypeMap(TypeDict, "p" , __INT__                )  # ~> NumPy 32bit
 *     AddTypeMap(TypeDict, "P" , __UNSIGNED__           )  # ~> NumPy 32bit
 * if sizeof(Py_intptr_t) == sizeof(MPI_Aint):             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "p" , __AINT__               )  # NumPy
 * 
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":136
 * 
 * # character
 * AddTypeMap(TypeDict, "c" , __CHAR__ )  # PEP-3118 & NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "a" , __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "S" , __CHAR__ )  # NumPy
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"c"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":137
 * # character
 * AddTypeMap(TypeDict, "c" , __CHAR__ )  # PEP-3118 & NumPy
 * AddTypeMap(TypeDict, "a" , __CHAR__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "S" , __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "S1", __CHAR__ )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"a"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":138
 * AddTypeMap(TypeDict, "c" , __CHAR__ )  # PEP-3118 & NumPy
 * AddTypeMap(TypeDict, "a" , __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "S" , __CHAR__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "S1", __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "s",  __CHAR__ )  # PEP-3118
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"S"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":139
 * AddTypeMap(TypeDict, "a" , __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "S" , __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "S1", __CHAR__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "s",  __CHAR__ )  # PEP-3118
 * AddTypeMap(TypeDict, "1s", __CHAR__ )  # PEP-3118
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"S1"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":140
 * AddTypeMap(TypeDict, "S" , __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "S1", __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "s",  __CHAR__ )  # PEP-3118             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "1s", __CHAR__ )  # PEP-3118
 * # wide character
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"s"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":141
 * AddTypeMap(TypeDict, "S1", __CHAR__ )  # NumPy
 * AddTypeMap(TypeDict, "s",  __CHAR__ )  # PEP-3118
 * AddTypeMap(TypeDict, "1s", __CHAR__ )  # PEP-3118             # <<<<<<<<<<<<<<
 * # wide character
 * if sizeof(wchar_t) == 4:
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___CHAR__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"1s"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":143
 * AddTypeMap(TypeDict, "1s", __CHAR__ )  # PEP-3118
 * # wide character
 * if sizeof(wchar_t) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "U" , __WCHAR__          )  # NumPy
 *     AddTypeMap(TypeDict, "U1", __WCHAR__          )  # NumPy
 */
  __pyx_t_5 = ((sizeof(wchar_t)) == 4);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":144
 * # wide character
 * if sizeof(wchar_t) == 4:
 *     AddTypeMap(TypeDict, "U" , __WCHAR__          )  # NumPy             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "U1", __WCHAR__          )  # NumPy
 * # UTF-16/UCS-2
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"U"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 144, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":145
 * if sizeof(wchar_t) == 4:
 *     AddTypeMap(TypeDict, "U" , __WCHAR__          )  # NumPy
 *     AddTypeMap(TypeDict, "U1", __WCHAR__          )  # NumPy             # <<<<<<<<<<<<<<
 * # UTF-16/UCS-2
 * if sizeof(short) == 2:
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"U1"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 145, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":143
 * AddTypeMap(TypeDict, "1s", __CHAR__ )  # PEP-3118
 * # wide character
 * if sizeof(wchar_t) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "U" , __WCHAR__          )  # NumPy
 *     AddTypeMap(TypeDict, "U1", __WCHAR__          )  # NumPy
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":147
 *     AddTypeMap(TypeDict, "U1", __WCHAR__          )  # NumPy
 * # UTF-16/UCS-2
 * if sizeof(short) == 2:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u" , __UNSIGNED_SHORT__ )  # PEP-3118
 *     AddTypeMap(TypeDict, "1u", __UNSIGNED_SHORT__ )  # PEP-3118
 */
  __pyx_t_5 = ((sizeof(short)) == 2);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":148
 * # UTF-16/UCS-2
 * if sizeof(short) == 2:
 *     AddTypeMap(TypeDict, "u" , __UNSIGNED_SHORT__ )  # PEP-3118             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "1u", __UNSIGNED_SHORT__ )  # PEP-3118
 * if 2 == 2:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"u"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 148, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":149
 * if sizeof(short) == 2:
 *     AddTypeMap(TypeDict, "u" , __UNSIGNED_SHORT__ )  # PEP-3118
 *     AddTypeMap(TypeDict, "1u", __UNSIGNED_SHORT__ )  # PEP-3118             # <<<<<<<<<<<<<<
 * if 2 == 2:
 *     AddTypeMap(TypeDict, "u" , __UINT16_T__       )  # PEP-3118
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"1u"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 149, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":147
 *     AddTypeMap(TypeDict, "U1", __WCHAR__          )  # NumPy
 * # UTF-16/UCS-2
 * if sizeof(short) == 2:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u" , __UNSIGNED_SHORT__ )  # PEP-3118
 *     AddTypeMap(TypeDict, "1u", __UNSIGNED_SHORT__ )  # PEP-3118
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":151
 *     AddTypeMap(TypeDict, "1u", __UNSIGNED_SHORT__ )  # PEP-3118
 * if 2 == 2:
 *     AddTypeMap(TypeDict, "u" , __UINT16_T__       )  # PEP-3118             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "1u", __UINT16_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 2:
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"u"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":152
 * if 2 == 2:
 *     AddTypeMap(TypeDict, "u" , __UINT16_T__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1u", __UINT16_T__       )  # PEP-3118             # <<<<<<<<<<<<<<
 * if sizeof(wchar_t) == 2:
 *     AddTypeMap(TypeDict, "u" , __WCHAR__          )  # PEP-3118  # ~> win32
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"1u"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":153
 *     AddTypeMap(TypeDict, "u" , __UINT16_T__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1u", __UINT16_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 2:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u" , __WCHAR__          )  # PEP-3118  # ~> win32
 *     AddTypeMap(TypeDict, "1u", __WCHAR__          )  # PEP-3118  # ~> win32
 */
  __pyx_t_5 = ((sizeof(wchar_t)) == 2);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":154
 *     AddTypeMap(TypeDict, "1u", __UINT16_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 2:
 *     AddTypeMap(TypeDict, "u" , __WCHAR__          )  # PEP-3118  # ~> win32             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "1u", __WCHAR__          )  # PEP-3118  # ~> win32
 * # UTF-32/UCS-4
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"u"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 154, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":155
 * if sizeof(wchar_t) == 2:
 *     AddTypeMap(TypeDict, "u" , __WCHAR__          )  # PEP-3118  # ~> win32
 *     AddTypeMap(TypeDict, "1u", __WCHAR__          )  # PEP-3118  # ~> win32             # <<<<<<<<<<<<<<
 * # UTF-32/UCS-4
 * if sizeof(int) == 4:
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"1u"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 155, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":153
 *     AddTypeMap(TypeDict, "u" , __UINT16_T__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1u", __UINT16_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 2:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "u" , __WCHAR__          )  # PEP-3118  # ~> win32
 *     AddTypeMap(TypeDict, "1u", __WCHAR__          )  # PEP-3118  # ~> win32
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":157
 *     AddTypeMap(TypeDict, "1u", __WCHAR__          )  # PEP-3118  # ~> win32
 * # UTF-32/UCS-4
 * if sizeof(int) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "w" , __UNSIGNED__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __UNSIGNED__       )  # PEP-3118
 */
  __pyx_t_5 = ((sizeof(int)) == 4);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":158
 * # UTF-32/UCS-4
 * if sizeof(int) == 4:
 *     AddTypeMap(TypeDict, "w" , __UNSIGNED__       )  # PEP-3118             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "1w", __UNSIGNED__       )  # PEP-3118
 * if 4 == 4:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"w"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 158, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":159
 * if sizeof(int) == 4:
 *     AddTypeMap(TypeDict, "w" , __UNSIGNED__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __UNSIGNED__       )  # PEP-3118             # <<<<<<<<<<<<<<
 * if 4 == 4:
 *     AddTypeMap(TypeDict, "w" , __UINT32_T__       )  # PEP-3118
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"1w"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 159, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":157
 *     AddTypeMap(TypeDict, "1u", __WCHAR__          )  # PEP-3118  # ~> win32
 * # UTF-32/UCS-4
 * if sizeof(int) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "w" , __UNSIGNED__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __UNSIGNED__       )  # PEP-3118
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":161
 *     AddTypeMap(TypeDict, "1w", __UNSIGNED__       )  # PEP-3118
 * if 4 == 4:
 *     AddTypeMap(TypeDict, "w" , __UINT32_T__       )  # PEP-3118             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "1w", __UINT32_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 4:
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"w"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":162
 * if 4 == 4:
 *     AddTypeMap(TypeDict, "w" , __UINT32_T__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __UINT32_T__       )  # PEP-3118             # <<<<<<<<<<<<<<
 * if sizeof(wchar_t) == 4:
 *     AddTypeMap(TypeDict, "w" , __WCHAR__          )  # PEP-3118
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"1w"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":163
 *     AddTypeMap(TypeDict, "w" , __UINT32_T__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __UINT32_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "w" , __WCHAR__          )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __WCHAR__          )  # PEP-3118
 */
  __pyx_t_5 = ((sizeof(wchar_t)) == 4);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":164
 *     AddTypeMap(TypeDict, "1w", __UINT32_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 4:
 *     AddTypeMap(TypeDict, "w" , __WCHAR__          )  # PEP-3118             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "1w", __WCHAR__          )  # PEP-3118
 * # datetime
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"w"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 164, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":165
 * if sizeof(wchar_t) == 4:
 *     AddTypeMap(TypeDict, "w" , __WCHAR__          )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __WCHAR__          )  # PEP-3118             # <<<<<<<<<<<<<<
 * # datetime
 * AddTypeMap(TypeDict, "M" , __INT64_T__ )  # NumPy
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___WCHAR__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"1w"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 165, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":163
 *     AddTypeMap(TypeDict, "w" , __UINT32_T__       )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __UINT32_T__       )  # PEP-3118
 * if sizeof(wchar_t) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(TypeDict, "w" , __WCHAR__          )  # PEP-3118
 *     AddTypeMap(TypeDict, "1w", __WCHAR__          )  # PEP-3118
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":167
 *     AddTypeMap(TypeDict, "1w", __WCHAR__          )  # PEP-3118
 * # datetime
 * AddTypeMap(TypeDict, "M" , __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "M8", __INT64_T__ )  # NumPy
 * # timedelta
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"M"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":168
 * # datetime
 * AddTypeMap(TypeDict, "M" , __INT64_T__ )  # NumPy
 * AddTypeMap(TypeDict, "M8", __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * # timedelta
 * AddTypeMap(TypeDict, "m" , __INT64_T__ )  # NumPy
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"M8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":170
 * AddTypeMap(TypeDict, "M8", __INT64_T__ )  # NumPy
 * # timedelta
 * AddTypeMap(TypeDict, "m" , __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * AddTypeMap(TypeDict, "m8", __INT64_T__ )  # NumPy
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"m"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":171
 * # timedelta
 * AddTypeMap(TypeDict, "m" , __INT64_T__ )  # NumPy
 * AddTypeMap(TypeDict, "m8", __INT64_T__ )  # NumPy             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_TypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"m8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":175
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict CTypeDict = { }             # <<<<<<<<<<<<<<
 * _typedict_c = CTypeDict
 * 
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(35, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_CTypeDict);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_CTypeDict, ((PyObject*)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":176
 * 
 * cdef dict CTypeDict = { }
 * _typedict_c = CTypeDict             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "?" , __C_BOOL__ )
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_typedict_c, __pyx_v_6mpi4py_3MPI_CTypeDict) < 0) __PYX_ERR(35, 176, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typemap.pxi":178
 * _typedict_c = CTypeDict
 * 
 * AddTypeMap(CTypeDict, "?" , __C_BOOL__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"?"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":180
 * AddTypeMap(CTypeDict, "?" , __C_BOOL__ )
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"b"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":181
 * 
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___SHORT__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"h"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 181, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":182
 * AddTypeMap(CTypeDict, "b" , __SIGNED_CHAR__ )
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":183
 * AddTypeMap(CTypeDict, "h" , __SHORT__       )
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"l"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":184
 * AddTypeMap(CTypeDict, "i" , __INT__         )
 * AddTypeMap(CTypeDict, "l" , __LONG__        )
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"q"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":186
 * AddTypeMap(CTypeDict, "q" , __LONG_LONG__   )
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"B"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":187
 * 
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"H"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":188
 * AddTypeMap(CTypeDict, "B" , __UNSIGNED_CHAR__      )
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"I"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":189
 * AddTypeMap(CTypeDict, "H" , __UNSIGNED_SHORT__     )
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * 
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"L"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":190
 * AddTypeMap(CTypeDict, "I" , __UNSIGNED__           )
 * AddTypeMap(CTypeDict, "L" , __UNSIGNED_LONG__      )
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"Q"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":192
 * AddTypeMap(CTypeDict, "Q" , __UNSIGNED_LONG_LONG__ )
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"f"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":193
 * 
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"d"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":194
 * AddTypeMap(CTypeDict, "f" , __FLOAT__       )
 * AddTypeMap(CTypeDict, "d" , __DOUBLE__      )
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "F" , __C_FLOAT_COMPLEX__       )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"g"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":196
 * AddTypeMap(CTypeDict, "g" , __LONG_DOUBLE__ )
 * 
 * AddTypeMap(CTypeDict, "F" , __C_FLOAT_COMPLEX__       )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "D" , __C_DOUBLE_COMPLEX__      )
 * AddTypeMap(CTypeDict, "G" , __C_LONG_DOUBLE_COMPLEX__ )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"F"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":197
 * 
 * AddTypeMap(CTypeDict, "F" , __C_FLOAT_COMPLEX__       )
 * AddTypeMap(CTypeDict, "D" , __C_DOUBLE_COMPLEX__      )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "G" , __C_LONG_DOUBLE_COMPLEX__ )
 * 
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"D"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":198
 * AddTypeMap(CTypeDict, "F" , __C_FLOAT_COMPLEX__       )
 * AddTypeMap(CTypeDict, "D" , __C_DOUBLE_COMPLEX__      )
 * AddTypeMap(CTypeDict, "G" , __C_LONG_DOUBLE_COMPLEX__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "b1" , __C_BOOL__   )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"G"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":200
 * AddTypeMap(CTypeDict, "G" , __C_LONG_DOUBLE_COMPLEX__ )
 * 
 * AddTypeMap(CTypeDict, "b1" , __C_BOOL__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_BOOL__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"b1"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":202
 * AddTypeMap(CTypeDict, "b1" , __C_BOOL__   )
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT8_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i1"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":203
 * 
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT16_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i2"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":204
 * AddTypeMap(CTypeDict, "i1" , __INT8_T__   )
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT32_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":205
 * AddTypeMap(CTypeDict, "i2" , __INT16_T__  )
 * AddTypeMap(CTypeDict, "i4" , __INT32_T__  )
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INT64_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":207
 * AddTypeMap(CTypeDict, "i8" , __INT64_T__  )
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT8_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"u1"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":208
 * 
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT16_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u2"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":209
 * AddTypeMap(CTypeDict, "u1" , __UINT8_T__  )
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT32_T__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"u4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":210
 * AddTypeMap(CTypeDict, "u2" , __UINT16_T__ )
 * AddTypeMap(CTypeDict, "u4" , __UINT32_T__ )
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )             # <<<<<<<<<<<<<<
 * 
 * if sizeof(float) == 4:
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___UINT64_T__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"u8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":212
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 * 
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
 */
  __pyx_t_5 = ((sizeof(float)) == 4);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":213
 * 
 * if sizeof(float) == 4:
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
 * if sizeof(double) == 8:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___FLOAT__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"f4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 213, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":214
 * if sizeof(float) == 4:
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )             # <<<<<<<<<<<<<<
 * if sizeof(double) == 8:
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 214, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":212
 * AddTypeMap(CTypeDict, "u8" , __UINT64_T__ )
 * 
 * if sizeof(float) == 4:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":215
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
 * if sizeof(double) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c16" , __C_DOUBLE_COMPLEX__ )
 */
  __pyx_t_5 = ((sizeof(double)) == 8);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":216
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
 * if sizeof(double) == 8:
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "c16" , __C_DOUBLE_COMPLEX__ )
 * if sizeof(long double) == 12:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"f8"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 216, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":217
 * if sizeof(double) == 8:
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c16" , __C_DOUBLE_COMPLEX__ )             # <<<<<<<<<<<<<<
 * if sizeof(long double) == 12:
 *     AddTypeMap(CTypeDict, "f12" , __LONG_DOUBLE__           )  # ~> i386
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c16"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 217, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":215
 *     AddTypeMap(CTypeDict, "f4"  , __FLOAT__            )
 *     AddTypeMap(CTypeDict, "c8"  , __C_FLOAT_COMPLEX__  )
 * if sizeof(double) == 8:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c16" , __C_DOUBLE_COMPLEX__ )
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":218
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c16" , __C_DOUBLE_COMPLEX__ )
 * if sizeof(long double) == 12:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f12" , __LONG_DOUBLE__           )  # ~> i386
 *     AddTypeMap(CTypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__ )  # ~> i386
 */
  __pyx_t_5 = ((sizeof(long double)) == 12);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":219
 *     AddTypeMap(CTypeDict, "c16" , __C_DOUBLE_COMPLEX__ )
 * if sizeof(long double) == 12:
 *     AddTypeMap(CTypeDict, "f12" , __LONG_DOUBLE__           )  # ~> i386             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__ )  # ~> i386
 * if sizeof(long double) == 16:
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"f12"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 219, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":220
 * if sizeof(long double) == 12:
 *     AddTypeMap(CTypeDict, "f12" , __LONG_DOUBLE__           )  # ~> i386
 *     AddTypeMap(CTypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__ )  # ~> i386             # <<<<<<<<<<<<<<
 * if sizeof(long double) == 16:
 *     AddTypeMap(CTypeDict, "f16" , __LONG_DOUBLE__           )
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c24"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 220, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":218
 *     AddTypeMap(CTypeDict, "f8"  , __DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c16" , __C_DOUBLE_COMPLEX__ )
 * if sizeof(long double) == 12:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f12" , __LONG_DOUBLE__           )  # ~> i386
 *     AddTypeMap(CTypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__ )  # ~> i386
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":221
 *     AddTypeMap(CTypeDict, "f12" , __LONG_DOUBLE__           )  # ~> i386
 *     AddTypeMap(CTypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__ )  # ~> i386
 * if sizeof(long double) == 16:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f16" , __LONG_DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__ )
 */
  __pyx_t_5 = ((sizeof(long double)) == 16);
  if (__pyx_t_5) {

    /* "src/mpi4py/MPI.src/typemap.pxi":222
 *     AddTypeMap(CTypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__ )  # ~> i386
 * if sizeof(long double) == 16:
 *     AddTypeMap(CTypeDict, "f16" , __LONG_DOUBLE__           )             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__ )
 * 
 */
    __pyx_t_9 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"f16"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 222, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":223
 * if sizeof(long double) == 16:
 *     AddTypeMap(CTypeDict, "f16" , __LONG_DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__ )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
    __pyx_t_8 = __pyx_v_6mpi4py_3MPI_CTypeDict;
    __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c32"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 223, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/mpi4py/MPI.src/typemap.pxi":221
 *     AddTypeMap(CTypeDict, "f12" , __LONG_DOUBLE__           )  # ~> i386
 *     AddTypeMap(CTypeDict, "c24" , __C_LONG_DOUBLE_COMPLEX__ )  # ~> i386
 * if sizeof(long double) == 16:             # <<<<<<<<<<<<<<
 *     AddTypeMap(CTypeDict, "f16" , __LONG_DOUBLE__           )
 *     AddTypeMap(CTypeDict, "c32" , __C_LONG_DOUBLE_COMPLEX__ )
 */
  }

  /* "src/mpi4py/MPI.src/typemap.pxi":227
 * # -----------------------------------------------------------------------------
 * 
 * cdef dict FTypeDict = { }             # <<<<<<<<<<<<<<
 * _typedict_f = FTypeDict
 * 
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(35, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_XGOTREF(__pyx_v_6mpi4py_3MPI_FTypeDict);
  __Pyx_DECREF_SET(__pyx_v_6mpi4py_3MPI_FTypeDict, ((PyObject*)__pyx_t_9));
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":228
 * 
 * cdef dict FTypeDict = { }
 * _typedict_f = FTypeDict             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_typedict_f, __pyx_v_6mpi4py_3MPI_FTypeDict) < 0) __PYX_ERR(35, 228, __pyx_L1_error)

  /* "src/mpi4py/MPI.src/typemap.pxi":230
 * _typedict_f = FTypeDict
 * 
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"l"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":231
 * 
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":232
 * AddTypeMap(FTypeDict, "l"   , __LOGICAL__          )
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"r"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":233
 * AddTypeMap(FTypeDict, "i"   , __INTEGER__          )
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"s"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":234
 * AddTypeMap(FTypeDict, "r"   , __REAL__             )
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"d"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":235
 * AddTypeMap(FTypeDict, "s"   , __REAL__             )
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )
 * 
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 235, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":236
 * AddTypeMap(FTypeDict, "d"   , __DOUBLE_PRECISION__ )
 * AddTypeMap(FTypeDict, "c"   , __COMPLEX__          )
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"z"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":238
 * AddTypeMap(FTypeDict, "z"   , __DOUBLE_COMPLEX__   )
 * 
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL1__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"l1"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 238, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":239
 * 
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL2__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"l2"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":240
 * AddTypeMap(FTypeDict, "l1"  , __LOGICAL1__  )
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )
 * 
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL4__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"l4"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":241
 * AddTypeMap(FTypeDict, "l2"  , __LOGICAL2__  )
 * AddTypeMap(FTypeDict, "l4"  , __LOGICAL4__  )
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___LOGICAL8__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"l8"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 241, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":243
 * AddTypeMap(FTypeDict, "l8"  , __LOGICAL8__  )
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER1__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i1"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 243, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":244
 * 
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER2__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i2"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":245
 * AddTypeMap(FTypeDict, "i1"  , __INTEGER1__  )
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER4__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i4"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 245, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":246
 * AddTypeMap(FTypeDict, "i2"  , __INTEGER2__  )
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER8__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"i8"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":247
 * AddTypeMap(FTypeDict, "i4"  , __INTEGER4__  )
 * AddTypeMap(FTypeDict, "i8"  , __INTEGER8__  )
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___INTEGER16__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"i16"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":249
 * AddTypeMap(FTypeDict, "i16" , __INTEGER16__ )
 * 
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL2__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"r2"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":250
 * 
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL4__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"r4"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":251
 * AddTypeMap(FTypeDict, "r2"  , __REAL2__     )
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL8__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"r8"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":252
 * AddTypeMap(FTypeDict, "r4"  , __REAL4__     )
 * AddTypeMap(FTypeDict, "r8"  , __REAL8__     )
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )             # <<<<<<<<<<<<<<
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___REAL16__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"r16"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":254
 * AddTypeMap(FTypeDict, "r16" , __REAL16__    )
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"c4"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":255
 * 
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c8"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":256
 * AddTypeMap(FTypeDict, "c4"  , __COMPLEX4__  )
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )             # <<<<<<<<<<<<<<
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )
 * 
 */
  __pyx_t_9 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_8 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_9), ((char const *)"c16"), ((struct PyMPIDatatypeObject *)__pyx_t_8)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 256, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typemap.pxi":257
 * AddTypeMap(FTypeDict, "c8"  , __COMPLEX8__  )
 * AddTypeMap(FTypeDict, "c16" , __COMPLEX16__ )
 * AddTypeMap(FTypeDict, "c32" , __COMPLEX32__ )             # <<<<<<<<<<<<<<
 * 
 * # -----------------------------------------------------------------------------
 */
  __pyx_t_8 = __pyx_v_6mpi4py_3MPI_FTypeDict;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = ((PyObject *)__pyx_v_6mpi4py_3MPI___COMPLEX32__);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_4 = __pyx_f_6mpi4py_3MPI_AddTypeMap(((PyObject*)__pyx_t_8), ((char const *)"c32"), ((struct PyMPIDatatypeObject *)__pyx_t_9)); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(35, 257, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typestr.pxi":3
 * # -----------------------------------------------------------------------------
 * 
 * def _typecode(Datatype datatype: Datatype) -> str | None:             # <<<<<<<<<<<<<<
 *     """
 *     Map MPI datatype to character code or type string.
 */
  __pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(36, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(36, 3, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_kp_s_str_None) < 0) __PYX_ERR(36, 3, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_87_typecode, 0, __pyx_n_s_typecode, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1057)); if (unlikely(!__pyx_t_8)) __PYX_ERR(36, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_typecode, __pyx_t_8) < 0) __PYX_ERR(36, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/typestr.pxi":11
 * 
 * 
 * def _typealign(Datatype datatype: Datatype) -> int | None:             # <<<<<<<<<<<<<<
 *     """
 *     Return MPI datatype alignment.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(36, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(36, 11, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_int_None) < 0) __PYX_ERR(36, 11, __pyx_L1_error)
  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_89_typealign, 0, __pyx_n_s_typealign, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1059)); if (unlikely(!__pyx_t_9)) __PYX_ERR(36, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_9, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_typealign, __pyx_t_9) < 0) __PYX_ERR(36, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":278
 *     str combiner: str,
 *     dict params: dict[str, Any],
 *     bint free: bool = False,             # <<<<<<<<<<<<<<
 * ) -> Datatype:
 *     """
 */
  __pyx_t_9 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_9)) __PYX_ERR(37, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "src/mpi4py/MPI.src/typedec.pxi":274
 * 
 * 
 * def _datatype_create(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     str combiner: str,
 */
  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(37, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9)) __PYX_ERR(37, 274, __pyx_L1_error);
  __pyx_t_9 = 0;
  __pyx_t_9 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_9)) __PYX_ERR(37, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(37, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_combiner, __pyx_n_s_str) < 0) __PYX_ERR(37, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_params, __pyx_kp_s_dict_str_Any) < 0) __PYX_ERR(37, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_free, __pyx_n_s_bool) < 0) __PYX_ERR(37, 274, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_return, __pyx_n_s_Datatype) < 0) __PYX_ERR(37, 274, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_91_datatype_create, 0, __pyx_n_s_datatype_create, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1061)); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_9);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_datatype_create, __pyx_t_3) < 0) __PYX_ERR(37, 274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/typedec.pxi":288
 * def _datatype_decode(
 *     Datatype datatype: Datatype,
 *     bint mark: bool = False,             # <<<<<<<<<<<<<<
 * ) -> tuple[Datatype, str, dict[str, Any]]:
 *     """
 */
  __pyx_t_3 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/mpi4py/MPI.src/typedec.pxi":286
 * 
 * 
 * def _datatype_decode(             # <<<<<<<<<<<<<<
 *     Datatype datatype: Datatype,
 *     bint mark: bool = False,
 */
  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(37, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3)) __PYX_ERR(37, 286, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(37, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_datatype, __pyx_n_s_Datatype) < 0) __PYX_ERR(37, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_mark, __pyx_n_s_bool) < 0) __PYX_ERR(37, 286, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_kp_s_tuple_Datatype_str_dict_str_Any) < 0) __PYX_ERR(37, 286, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_93_datatype_decode, 0, __pyx_n_s_datatype_decode, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1063)); if (unlikely(!__pyx_t_8)) __PYX_ERR(37, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_8, __pyx_t_9);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_datatype_decode, __pyx_t_8) < 0) __PYX_ERR(37, 286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":309
 * 
 * 
 * def get_vendor() -> tuple[str, tuple[int, int, int]]:             # <<<<<<<<<<<<<<
 *     """
 *     Information about the underlying MPI implementation.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_kp_s_tuple_str_tuple_int_int_int) < 0) __PYX_ERR(34, 309, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_95get_vendor, 0, __pyx_n_s_get_vendor, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1065)); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_vendor, __pyx_t_3) < 0) __PYX_ERR(34, 309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":333
 * 
 * 
 * def _sizeof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Size in bytes of the underlying MPI handle.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_arg, __pyx_n_s_Any) < 0) __PYX_ERR(34, 333, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(34, 333, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_97_sizeof, 0, __pyx_n_s_sizeof, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1067)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sizeof, __pyx_t_8) < 0) __PYX_ERR(34, 333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":352
 * 
 * 
 * def _addressof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Memory address of the underlying MPI handle.
 */
  __pyx_t_8 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_arg, __pyx_n_s_Any) < 0) __PYX_ERR(34, 352, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(34, 352, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_99_addressof, 0, __pyx_n_s_addressof, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1069)); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_3, __pyx_t_8);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_addressof, __pyx_t_3) < 0) __PYX_ERR(34, 352, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/mpi4py/MPI.src/MPI.pyx":386
 * 
 * 
 * def _handleof(arg: Any) -> int:             # <<<<<<<<<<<<<<
 *     """
 *     Unsigned integer value with the underlying MPI handle.
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_arg, __pyx_n_s_Any) < 0) __PYX_ERR(34, 386, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_return, __pyx_n_s_int) < 0) __PYX_ERR(34, 386, __pyx_L1_error)
  __pyx_t_8 = __Pyx_CyFunction_New(&__pyx_mdef_6mpi4py_3MPI_101_handleof, 0, __pyx_n_s_handleof, NULL, __pyx_n_s_mpi4py_MPI, __pyx_d, ((PyObject *)__pyx_codeobj__1070)); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_8, __pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handleof, __pyx_t_8) < 0) __PYX_ERR(34, 386, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /*--- Wrapped vars code ---*/

  if (__Pyx_RegisterCleanup()) __PYX_ERR(38, 1, __pyx_L1_error)
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  if (__pyx_m) {
    if (__pyx_d && stringtab_initialized) {
      __Pyx_AddTraceback("init mpi4py.MPI", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    #if !CYTHON_USE_MODULE_STATE
    Py_CLEAR(__pyx_m);
    #else
    Py_DECREF(__pyx_m);
    if (pystate_addmodule_run) {
      PyObject *tp, *value, *tb;
      PyErr_Fetch(&tp, &value, &tb);
      PyState_RemoveModule(&__pyx_moduledef);
      PyErr_Restore(tp, value, tb);
    }
    #endif
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init mpi4py.MPI");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #elif PY_MAJOR_VERSION >= 3
  return __pyx_m;
  #else
  return;
  #endif
}
/* #### Code section: cleanup_globals ### */

static CYTHON_SMALL_CODE void __Pyx_CleanupGlobals(void) {
  Py_CLEAR(__pyx_tuple__4);
  Py_CLEAR(__pyx_tuple__5);
  Py_CLEAR(__pyx_tuple__6);
  Py_CLEAR(__pyx_tuple__7);
  Py_CLEAR(__pyx_tuple__8);
  Py_CLEAR(__pyx_tuple__9);
  Py_CLEAR(__pyx_tuple__10);
  Py_CLEAR(__pyx_tuple__11);
  Py_CLEAR(__pyx_tuple__12);
  Py_CLEAR(__pyx_tuple__13);
  Py_CLEAR(__pyx_tuple__14);
  Py_CLEAR(__pyx_tuple__15);
  Py_CLEAR(__pyx_tuple__16);
  Py_CLEAR(__pyx_tuple__18);
  Py_CLEAR(__pyx_tuple__19);
  Py_CLEAR(__pyx_tuple__20);
  Py_CLEAR(__pyx_tuple__21);
  Py_CLEAR(__pyx_tuple__22);
  Py_CLEAR(__pyx_tuple__23);
  Py_CLEAR(__pyx_tuple__24);
  Py_CLEAR(__pyx_tuple__25);
  Py_CLEAR(__pyx_tuple__26);
  Py_CLEAR(__pyx_tuple__27);
  Py_CLEAR(__pyx_tuple__28);
  Py_CLEAR(__pyx_tuple__29);
  Py_CLEAR(__pyx_tuple__31);
  Py_CLEAR(__pyx_tuple__32);
  Py_CLEAR(__pyx_tuple__33);
  Py_CLEAR(__pyx_tuple__34);
  Py_CLEAR(__pyx_tuple__35);
  Py_CLEAR(__pyx_tuple__36);
  Py_CLEAR(__pyx_tuple__37);
  Py_CLEAR(__pyx_tuple__38);
  Py_CLEAR(__pyx_tuple__39);
  Py_CLEAR(__pyx_tuple__40);
  Py_CLEAR(__pyx_tuple__41);
  Py_CLEAR(__pyx_tuple__42);
  Py_CLEAR(__pyx_tuple__43);
  Py_CLEAR(__pyx_tuple__44);
  Py_CLEAR(__pyx_tuple__45);
  Py_CLEAR(__pyx_tuple__46);
  Py_CLEAR(__pyx_tuple__47);
  Py_CLEAR(__pyx_tuple__48);
  Py_CLEAR(__pyx_tuple__49);
  Py_CLEAR(__pyx_tuple__50);
  Py_CLEAR(__pyx_tuple__51);
  Py_CLEAR(__pyx_tuple__52);
  Py_CLEAR(__pyx_tuple__53);
  Py_CLEAR(__pyx_tuple__54);
  Py_CLEAR(__pyx_tuple__55);
  Py_CLEAR(__pyx_tuple__56);
  Py_CLEAR(__pyx_tuple__58);
  Py_CLEAR(__pyx_tuple__59);
  Py_CLEAR(__pyx_tuple__60);
  Py_CLEAR(__pyx_tuple__61);
  Py_CLEAR(__pyx_tuple__62);
  Py_CLEAR(__pyx_codeobj__63);
  Py_CLEAR(__pyx_tuple__64);
  Py_CLEAR(__pyx_tuple__67);
  Py_CLEAR(__pyx_tuple__81);
  Py_CLEAR(__pyx_tuple__151);
  Py_CLEAR(__pyx_slice__166);
  Py_CLEAR(__pyx_tuple__170);
  Py_CLEAR(__pyx_slice__171);
  Py_CLEAR(__pyx_tuple__177);
  Py_CLEAR(__pyx_tuple__178);
  Py_CLEAR(__pyx_tuple__179);
  Py_CLEAR(__pyx_tuple__180);
  Py_CLEAR(__pyx_tuple__203);
  Py_CLEAR(__pyx_tuple__204);
  Py_CLEAR(__pyx_tuple__206);
  Py_CLEAR(__pyx_codeobj__207);
  Py_CLEAR(__pyx_tuple__208);
  Py_CLEAR(__pyx_codeobj__209);
  Py_CLEAR(__pyx_tuple__210);
  Py_CLEAR(__pyx_tuple__211);
  Py_CLEAR(__pyx_codeobj__212);
  Py_CLEAR(__pyx_tuple__213);
  Py_CLEAR(__pyx_codeobj__214);
  Py_CLEAR(__pyx_tuple__215);
  Py_CLEAR(__pyx_codeobj__216);
  Py_CLEAR(__pyx_tuple__217);
  Py_CLEAR(__pyx_tuple__218);
  Py_CLEAR(__pyx_codeobj__219);
  Py_CLEAR(__pyx_tuple__220);
  Py_CLEAR(__pyx_tuple__221);
  Py_CLEAR(__pyx_codeobj__222);
  Py_CLEAR(__pyx_tuple__223);
  Py_CLEAR(__pyx_codeobj__224);
  Py_CLEAR(__pyx_codeobj__225);
  Py_CLEAR(__pyx_tuple__226);
  Py_CLEAR(__pyx_codeobj__227);
  Py_CLEAR(__pyx_tuple__228);
  Py_CLEAR(__pyx_codeobj__229);
  Py_CLEAR(__pyx_codeobj__230);
  Py_CLEAR(__pyx_codeobj__231);
  Py_CLEAR(__pyx_tuple__232);
  Py_CLEAR(__pyx_codeobj__233);
  Py_CLEAR(__pyx_tuple__234);
  Py_CLEAR(__pyx_codeobj__235);
  Py_CLEAR(__pyx_codeobj__236);
  Py_CLEAR(__pyx_tuple__237);
  Py_CLEAR(__pyx_codeobj__238);
  Py_CLEAR(__pyx_tuple__239);
  Py_CLEAR(__pyx_codeobj__240);
  Py_CLEAR(__pyx_tuple__241);
  Py_CLEAR(__pyx_codeobj__242);
  Py_CLEAR(__pyx_tuple__243);
  Py_CLEAR(__pyx_codeobj__244);
  Py_CLEAR(__pyx_tuple__245);
  Py_CLEAR(__pyx_codeobj__246);
  Py_CLEAR(__pyx_tuple__247);
  Py_CLEAR(__pyx_codeobj__248);
  Py_CLEAR(__pyx_codeobj__249);
  Py_CLEAR(__pyx_tuple__250);
  Py_CLEAR(__pyx_codeobj__251);
  Py_CLEAR(__pyx_tuple__252);
  Py_CLEAR(__pyx_codeobj__253);
  Py_CLEAR(__pyx_tuple__254);
  Py_CLEAR(__pyx_codeobj__255);
  Py_CLEAR(__pyx_codeobj__256);
  Py_CLEAR(__pyx_tuple__257);
  Py_CLEAR(__pyx_codeobj__258);
  Py_CLEAR(__pyx_tuple__259);
  Py_CLEAR(__pyx_codeobj__260);
  Py_CLEAR(__pyx_tuple__261);
  Py_CLEAR(__pyx_codeobj__262);
  Py_CLEAR(__pyx_codeobj__263);
  Py_CLEAR(__pyx_tuple__264);
  Py_CLEAR(__pyx_codeobj__265);
  Py_CLEAR(__pyx_codeobj__266);
  Py_CLEAR(__pyx_tuple__267);
  Py_CLEAR(__pyx_codeobj__268);
  Py_CLEAR(__pyx_tuple__269);
  Py_CLEAR(__pyx_codeobj__270);
  Py_CLEAR(__pyx_tuple__271);
  Py_CLEAR(__pyx_codeobj__272);
  Py_CLEAR(__pyx_tuple__273);
  Py_CLEAR(__pyx_codeobj__274);
  Py_CLEAR(__pyx_tuple__275);
  Py_CLEAR(__pyx_codeobj__276);
  Py_CLEAR(__pyx_codeobj__277);
  Py_CLEAR(__pyx_tuple__278);
  Py_CLEAR(__pyx_codeobj__279);
  Py_CLEAR(__pyx_codeobj__280);
  Py_CLEAR(__pyx_tuple__281);
  Py_CLEAR(__pyx_codeobj__282);
  Py_CLEAR(__pyx_codeobj__283);
  Py_CLEAR(__pyx_tuple__284);
  Py_CLEAR(__pyx_codeobj__285);
  Py_CLEAR(__pyx_tuple__286);
  Py_CLEAR(__pyx_codeobj__287);
  Py_CLEAR(__pyx_tuple__288);
  Py_CLEAR(__pyx_codeobj__289);
  Py_CLEAR(__pyx_tuple__290);
  Py_CLEAR(__pyx_codeobj__291);
  Py_CLEAR(__pyx_tuple__292);
  Py_CLEAR(__pyx_codeobj__293);
  Py_CLEAR(__pyx_tuple__294);
  Py_CLEAR(__pyx_codeobj__295);
  Py_CLEAR(__pyx_codeobj__296);
  Py_CLEAR(__pyx_tuple__297);
  Py_CLEAR(__pyx_codeobj__298);
  Py_CLEAR(__pyx_codeobj__299);
  Py_CLEAR(__pyx_tuple__300);
  Py_CLEAR(__pyx_codeobj__301);
  Py_CLEAR(__pyx_tuple__302);
  Py_CLEAR(__pyx_codeobj__303);
  Py_CLEAR(__pyx_codeobj__304);
  Py_CLEAR(__pyx_tuple__305);
  Py_CLEAR(__pyx_codeobj__306);
  Py_CLEAR(__pyx_tuple__307);
  Py_CLEAR(__pyx_codeobj__308);
  Py_CLEAR(__pyx_codeobj__309);
  Py_CLEAR(__pyx_tuple__310);
  Py_CLEAR(__pyx_codeobj__311);
  Py_CLEAR(__pyx_tuple__312);
  Py_CLEAR(__pyx_codeobj__313);
  Py_CLEAR(__pyx_tuple__314);
  Py_CLEAR(__pyx_codeobj__315);
  Py_CLEAR(__pyx_tuple__316);
  Py_CLEAR(__pyx_codeobj__317);
  Py_CLEAR(__pyx_tuple__318);
  Py_CLEAR(__pyx_codeobj__319);
  Py_CLEAR(__pyx_tuple__320);
  Py_CLEAR(__pyx_codeobj__321);
  Py_CLEAR(__pyx_tuple__322);
  Py_CLEAR(__pyx_codeobj__323);
  Py_CLEAR(__pyx_tuple__324);
  Py_CLEAR(__pyx_codeobj__325);
  Py_CLEAR(__pyx_tuple__326);
  Py_CLEAR(__pyx_codeobj__327);
  Py_CLEAR(__pyx_tuple__328);
  Py_CLEAR(__pyx_codeobj__329);
  Py_CLEAR(__pyx_tuple__330);
  Py_CLEAR(__pyx_tuple__331);
  Py_CLEAR(__pyx_codeobj__332);
  Py_CLEAR(__pyx_tuple__333);
  Py_CLEAR(__pyx_codeobj__334);
  Py_CLEAR(__pyx_tuple__335);
  Py_CLEAR(__pyx_codeobj__336);
  Py_CLEAR(__pyx_codeobj__337);
  Py_CLEAR(__pyx_tuple__338);
  Py_CLEAR(__pyx_codeobj__339);
  Py_CLEAR(__pyx_tuple__340);
  Py_CLEAR(__pyx_codeobj__341);
  Py_CLEAR(__pyx_tuple__342);
  Py_CLEAR(__pyx_codeobj__343);
  Py_CLEAR(__pyx_tuple__344);
  Py_CLEAR(__pyx_codeobj__345);
  Py_CLEAR(__pyx_tuple__346);
  Py_CLEAR(__pyx_codeobj__347);
  Py_CLEAR(__pyx_tuple__348);
  Py_CLEAR(__pyx_codeobj__349);
  Py_CLEAR(__pyx_codeobj__350);
  Py_CLEAR(__pyx_tuple__351);
  Py_CLEAR(__pyx_codeobj__352);
  Py_CLEAR(__pyx_codeobj__353);
  Py_CLEAR(__pyx_tuple__354);
  Py_CLEAR(__pyx_codeobj__355);
  Py_CLEAR(__pyx_codeobj__356);
  Py_CLEAR(__pyx_tuple__357);
  Py_CLEAR(__pyx_codeobj__358);
  Py_CLEAR(__pyx_codeobj__359);
  Py_CLEAR(__pyx_tuple__360);
  Py_CLEAR(__pyx_codeobj__361);
  Py_CLEAR(__pyx_codeobj__362);
  Py_CLEAR(__pyx_tuple__363);
  Py_CLEAR(__pyx_codeobj__364);
  Py_CLEAR(__pyx_tuple__365);
  Py_CLEAR(__pyx_codeobj__366);
  Py_CLEAR(__pyx_tuple__367);
  Py_CLEAR(__pyx_codeobj__368);
  Py_CLEAR(__pyx_tuple__369);
  Py_CLEAR(__pyx_codeobj__370);
  Py_CLEAR(__pyx_codeobj__371);
  Py_CLEAR(__pyx_tuple__372);
  Py_CLEAR(__pyx_codeobj__373);
  Py_CLEAR(__pyx_tuple__374);
  Py_CLEAR(__pyx_codeobj__375);
  Py_CLEAR(__pyx_codeobj__376);
  Py_CLEAR(__pyx_codeobj__377);
  Py_CLEAR(__pyx_codeobj__378);
  Py_CLEAR(__pyx_tuple__379);
  Py_CLEAR(__pyx_codeobj__380);
  Py_CLEAR(__pyx_tuple__381);
  Py_CLEAR(__pyx_codeobj__382);
  Py_CLEAR(__pyx_codeobj__383);
  Py_CLEAR(__pyx_tuple__384);
  Py_CLEAR(__pyx_codeobj__385);
  Py_CLEAR(__pyx_tuple__386);
  Py_CLEAR(__pyx_codeobj__387);
  Py_CLEAR(__pyx_codeobj__388);
  Py_CLEAR(__pyx_tuple__389);
  Py_CLEAR(__pyx_codeobj__390);
  Py_CLEAR(__pyx_tuple__391);
  Py_CLEAR(__pyx_codeobj__392);
  Py_CLEAR(__pyx_codeobj__393);
  Py_CLEAR(__pyx_tuple__394);
  Py_CLEAR(__pyx_codeobj__395);
  Py_CLEAR(__pyx_codeobj__396);
  Py_CLEAR(__pyx_codeobj__397);
  Py_CLEAR(__pyx_codeobj__398);
  Py_CLEAR(__pyx_codeobj__399);
  Py_CLEAR(__pyx_codeobj__400);
  Py_CLEAR(__pyx_codeobj__401);
  Py_CLEAR(__pyx_tuple__402);
  Py_CLEAR(__pyx_codeobj__403);
  Py_CLEAR(__pyx_tuple__404);
  Py_CLEAR(__pyx_codeobj__405);
  Py_CLEAR(__pyx_codeobj__406);
  Py_CLEAR(__pyx_tuple__407);
  Py_CLEAR(__pyx_codeobj__408);
  Py_CLEAR(__pyx_tuple__409);
  Py_CLEAR(__pyx_codeobj__410);
  Py_CLEAR(__pyx_tuple__411);
  Py_CLEAR(__pyx_codeobj__412);
  Py_CLEAR(__pyx_tuple__413);
  Py_CLEAR(__pyx_codeobj__414);
  Py_CLEAR(__pyx_tuple__415);
  Py_CLEAR(__pyx_codeobj__416);
  Py_CLEAR(__pyx_tuple__417);
  Py_CLEAR(__pyx_codeobj__418);
  Py_CLEAR(__pyx_codeobj__419);
  Py_CLEAR(__pyx_codeobj__420);
  Py_CLEAR(__pyx_codeobj__421);
  Py_CLEAR(__pyx_codeobj__422);
  Py_CLEAR(__pyx_codeobj__423);
  Py_CLEAR(__pyx_tuple__424);
  Py_CLEAR(__pyx_codeobj__425);
  Py_CLEAR(__pyx_tuple__426);
  Py_CLEAR(__pyx_codeobj__427);
  Py_CLEAR(__pyx_tuple__428);
  Py_CLEAR(__pyx_codeobj__429);
  Py_CLEAR(__pyx_tuple__430);
  Py_CLEAR(__pyx_codeobj__431);
  Py_CLEAR(__pyx_tuple__432);
  Py_CLEAR(__pyx_codeobj__433);
  Py_CLEAR(__pyx_tuple__434);
  Py_CLEAR(__pyx_codeobj__435);
  Py_CLEAR(__pyx_tuple__436);
  Py_CLEAR(__pyx_tuple__437);
  Py_CLEAR(__pyx_codeobj__438);
  Py_CLEAR(__pyx_codeobj__439);
  Py_CLEAR(__pyx_codeobj__440);
  Py_CLEAR(__pyx_codeobj__441);
  Py_CLEAR(__pyx_codeobj__442);
  Py_CLEAR(__pyx_tuple__443);
  Py_CLEAR(__pyx_codeobj__444);
  Py_CLEAR(__pyx_tuple__445);
  Py_CLEAR(__pyx_codeobj__446);
  Py_CLEAR(__pyx_tuple__447);
  Py_CLEAR(__pyx_codeobj__448);
  Py_CLEAR(__pyx_tuple__449);
  Py_CLEAR(__pyx_codeobj__450);
  Py_CLEAR(__pyx_tuple__451);
  Py_CLEAR(__pyx_codeobj__452);
  Py_CLEAR(__pyx_tuple__453);
  Py_CLEAR(__pyx_codeobj__454);
  Py_CLEAR(__pyx_tuple__455);
  Py_CLEAR(__pyx_codeobj__456);
  Py_CLEAR(__pyx_tuple__457);
  Py_CLEAR(__pyx_codeobj__458);
  Py_CLEAR(__pyx_codeobj__459);
  Py_CLEAR(__pyx_codeobj__460);
  Py_CLEAR(__pyx_codeobj__461);
  Py_CLEAR(__pyx_codeobj__462);
  Py_CLEAR(__pyx_codeobj__463);
  Py_CLEAR(__pyx_tuple__464);
  Py_CLEAR(__pyx_codeobj__465);
  Py_CLEAR(__pyx_codeobj__466);
  Py_CLEAR(__pyx_codeobj__467);
  Py_CLEAR(__pyx_tuple__468);
  Py_CLEAR(__pyx_codeobj__469);
  Py_CLEAR(__pyx_codeobj__470);
  Py_CLEAR(__pyx_codeobj__471);
  Py_CLEAR(__pyx_codeobj__472);
  Py_CLEAR(__pyx_codeobj__473);
  Py_CLEAR(__pyx_codeobj__474);
  Py_CLEAR(__pyx_codeobj__475);
  Py_CLEAR(__pyx_tuple__476);
  Py_CLEAR(__pyx_codeobj__477);
  Py_CLEAR(__pyx_tuple__478);
  Py_CLEAR(__pyx_codeobj__479);
  Py_CLEAR(__pyx_tuple__480);
  Py_CLEAR(__pyx_tuple__481);
  Py_CLEAR(__pyx_codeobj__482);
  Py_CLEAR(__pyx_tuple__483);
  Py_CLEAR(__pyx_codeobj__484);
  Py_CLEAR(__pyx_tuple__485);
  Py_CLEAR(__pyx_codeobj__486);
  Py_CLEAR(__pyx_codeobj__487);
  Py_CLEAR(__pyx_codeobj__488);
  Py_CLEAR(__pyx_tuple__489);
  Py_CLEAR(__pyx_codeobj__490);
  Py_CLEAR(__pyx_codeobj__491);
  Py_CLEAR(__pyx_tuple__492);
  Py_CLEAR(__pyx_codeobj__493);
  Py_CLEAR(__pyx_codeobj__494);
  Py_CLEAR(__pyx_tuple__495);
  Py_CLEAR(__pyx_codeobj__496);
  Py_CLEAR(__pyx_codeobj__497);
  Py_CLEAR(__pyx_codeobj__498);
  Py_CLEAR(__pyx_codeobj__499);
  Py_CLEAR(__pyx_codeobj__500);
  Py_CLEAR(__pyx_codeobj__501);
  Py_CLEAR(__pyx_codeobj__502);
  Py_CLEAR(__pyx_tuple__503);
  Py_CLEAR(__pyx_codeobj__504);
  Py_CLEAR(__pyx_tuple__505);
  Py_CLEAR(__pyx_codeobj__506);
  Py_CLEAR(__pyx_codeobj__507);
  Py_CLEAR(__pyx_tuple__508);
  Py_CLEAR(__pyx_codeobj__509);
  Py_CLEAR(__pyx_tuple__510);
  Py_CLEAR(__pyx_codeobj__511);
  Py_CLEAR(__pyx_tuple__512);
  Py_CLEAR(__pyx_codeobj__513);
  Py_CLEAR(__pyx_tuple__514);
  Py_CLEAR(__pyx_codeobj__515);
  Py_CLEAR(__pyx_tuple__516);
  Py_CLEAR(__pyx_codeobj__517);
  Py_CLEAR(__pyx_tuple__518);
  Py_CLEAR(__pyx_codeobj__519);
  Py_CLEAR(__pyx_codeobj__520);
  Py_CLEAR(__pyx_codeobj__521);
  Py_CLEAR(__pyx_tuple__522);
  Py_CLEAR(__pyx_codeobj__523);
  Py_CLEAR(__pyx_tuple__524);
  Py_CLEAR(__pyx_codeobj__525);
  Py_CLEAR(__pyx_tuple__526);
  Py_CLEAR(__pyx_codeobj__527);
  Py_CLEAR(__pyx_tuple__528);
  Py_CLEAR(__pyx_codeobj__529);
  Py_CLEAR(__pyx_tuple__530);
  Py_CLEAR(__pyx_codeobj__531);
  Py_CLEAR(__pyx_tuple__532);
  Py_CLEAR(__pyx_codeobj__533);
  Py_CLEAR(__pyx_tuple__534);
  Py_CLEAR(__pyx_codeobj__535);
  Py_CLEAR(__pyx_codeobj__536);
  Py_CLEAR(__pyx_tuple__537);
  Py_CLEAR(__pyx_codeobj__538);
  Py_CLEAR(__pyx_codeobj__539);
  Py_CLEAR(__pyx_codeobj__540);
  Py_CLEAR(__pyx_codeobj__541);
  Py_CLEAR(__pyx_codeobj__542);
  Py_CLEAR(__pyx_codeobj__543);
  Py_CLEAR(__pyx_codeobj__544);
  Py_CLEAR(__pyx_codeobj__545);
  Py_CLEAR(__pyx_codeobj__546);
  Py_CLEAR(__pyx_codeobj__547);
  Py_CLEAR(__pyx_tuple__548);
  Py_CLEAR(__pyx_codeobj__549);
  Py_CLEAR(__pyx_codeobj__550);
  Py_CLEAR(__pyx_tuple__551);
  Py_CLEAR(__pyx_codeobj__552);
  Py_CLEAR(__pyx_tuple__553);
  Py_CLEAR(__pyx_codeobj__554);
  Py_CLEAR(__pyx_codeobj__555);
  Py_CLEAR(__pyx_tuple__556);
  Py_CLEAR(__pyx_codeobj__557);
  Py_CLEAR(__pyx_tuple__558);
  Py_CLEAR(__pyx_codeobj__559);
  Py_CLEAR(__pyx_tuple__560);
  Py_CLEAR(__pyx_codeobj__561);
  Py_CLEAR(__pyx_tuple__562);
  Py_CLEAR(__pyx_codeobj__563);
  Py_CLEAR(__pyx_codeobj__564);
  Py_CLEAR(__pyx_tuple__565);
  Py_CLEAR(__pyx_codeobj__566);
  Py_CLEAR(__pyx_tuple__567);
  Py_CLEAR(__pyx_codeobj__568);
  Py_CLEAR(__pyx_tuple__569);
  Py_CLEAR(__pyx_codeobj__570);
  Py_CLEAR(__pyx_codeobj__571);
  Py_CLEAR(__pyx_codeobj__572);
  Py_CLEAR(__pyx_codeobj__573);
  Py_CLEAR(__pyx_codeobj__574);
  Py_CLEAR(__pyx_codeobj__575);
  Py_CLEAR(__pyx_codeobj__576);
  Py_CLEAR(__pyx_codeobj__577);
  Py_CLEAR(__pyx_codeobj__578);
  Py_CLEAR(__pyx_codeobj__579);
  Py_CLEAR(__pyx_codeobj__580);
  Py_CLEAR(__pyx_tuple__581);
  Py_CLEAR(__pyx_codeobj__582);
  Py_CLEAR(__pyx_tuple__583);
  Py_CLEAR(__pyx_codeobj__584);
  Py_CLEAR(__pyx_tuple__585);
  Py_CLEAR(__pyx_codeobj__586);
  Py_CLEAR(__pyx_tuple__587);
  Py_CLEAR(__pyx_codeobj__588);
  Py_CLEAR(__pyx_tuple__589);
  Py_CLEAR(__pyx_codeobj__590);
  Py_CLEAR(__pyx_tuple__591);
  Py_CLEAR(__pyx_codeobj__592);
  Py_CLEAR(__pyx_tuple__593);
  Py_CLEAR(__pyx_codeobj__594);
  Py_CLEAR(__pyx_tuple__595);
  Py_CLEAR(__pyx_codeobj__596);
  Py_CLEAR(__pyx_tuple__597);
  Py_CLEAR(__pyx_tuple__598);
  Py_CLEAR(__pyx_codeobj__599);
  Py_CLEAR(__pyx_codeobj__600);
  Py_CLEAR(__pyx_codeobj__601);
  Py_CLEAR(__pyx_codeobj__602);
  Py_CLEAR(__pyx_codeobj__603);
  Py_CLEAR(__pyx_tuple__604);
  Py_CLEAR(__pyx_codeobj__605);
  Py_CLEAR(__pyx_codeobj__606);
  Py_CLEAR(__pyx_tuple__607);
  Py_CLEAR(__pyx_codeobj__608);
  Py_CLEAR(__pyx_tuple__609);
  Py_CLEAR(__pyx_codeobj__610);
  Py_CLEAR(__pyx_tuple__611);
  Py_CLEAR(__pyx_codeobj__612);
  Py_CLEAR(__pyx_codeobj__613);
  Py_CLEAR(__pyx_codeobj__614);
  Py_CLEAR(__pyx_codeobj__615);
  Py_CLEAR(__pyx_codeobj__616);
  Py_CLEAR(__pyx_codeobj__617);
  Py_CLEAR(__pyx_codeobj__618);
  Py_CLEAR(__pyx_tuple__619);
  Py_CLEAR(__pyx_codeobj__620);
  Py_CLEAR(__pyx_tuple__621);
  Py_CLEAR(__pyx_tuple__622);
  Py_CLEAR(__pyx_codeobj__623);
  Py_CLEAR(__pyx_tuple__624);
  Py_CLEAR(__pyx_codeobj__625);
  Py_CLEAR(__pyx_tuple__626);
  Py_CLEAR(__pyx_codeobj__627);
  Py_CLEAR(__pyx_tuple__628);
  Py_CLEAR(__pyx_codeobj__629);
  Py_CLEAR(__pyx_tuple__630);
  Py_CLEAR(__pyx_codeobj__631);
  Py_CLEAR(__pyx_tuple__632);
  Py_CLEAR(__pyx_codeobj__633);
  Py_CLEAR(__pyx_tuple__634);
  Py_CLEAR(__pyx_codeobj__635);
  Py_CLEAR(__pyx_tuple__636);
  Py_CLEAR(__pyx_codeobj__637);
  Py_CLEAR(__pyx_tuple__638);
  Py_CLEAR(__pyx_codeobj__639);
  Py_CLEAR(__pyx_tuple__640);
  Py_CLEAR(__pyx_codeobj__641);
  Py_CLEAR(__pyx_tuple__642);
  Py_CLEAR(__pyx_codeobj__643);
  Py_CLEAR(__pyx_codeobj__644);
  Py_CLEAR(__pyx_codeobj__645);
  Py_CLEAR(__pyx_tuple__646);
  Py_CLEAR(__pyx_codeobj__647);
  Py_CLEAR(__pyx_tuple__648);
  Py_CLEAR(__pyx_codeobj__649);
  Py_CLEAR(__pyx_codeobj__650);
  Py_CLEAR(__pyx_codeobj__651);
  Py_CLEAR(__pyx_codeobj__652);
  Py_CLEAR(__pyx_codeobj__653);
  Py_CLEAR(__pyx_codeobj__654);
  Py_CLEAR(__pyx_codeobj__655);
  Py_CLEAR(__pyx_codeobj__656);
  Py_CLEAR(__pyx_codeobj__657);
  Py_CLEAR(__pyx_codeobj__658);
  Py_CLEAR(__pyx_codeobj__659);
  Py_CLEAR(__pyx_tuple__660);
  Py_CLEAR(__pyx_codeobj__661);
  Py_CLEAR(__pyx_tuple__662);
  Py_CLEAR(__pyx_codeobj__663);
  Py_CLEAR(__pyx_codeobj__664);
  Py_CLEAR(__pyx_codeobj__665);
  Py_CLEAR(__pyx_codeobj__666);
  Py_CLEAR(__pyx_tuple__667);
  Py_CLEAR(__pyx_codeobj__668);
  Py_CLEAR(__pyx_codeobj__669);
  Py_CLEAR(__pyx_codeobj__670);
  Py_CLEAR(__pyx_codeobj__671);
  Py_CLEAR(__pyx_codeobj__672);
  Py_CLEAR(__pyx_tuple__673);
  Py_CLEAR(__pyx_codeobj__674);
  Py_CLEAR(__pyx_tuple__675);
  Py_CLEAR(__pyx_codeobj__676);
  Py_CLEAR(__pyx_codeobj__677);
  Py_CLEAR(__pyx_tuple__678);
  Py_CLEAR(__pyx_codeobj__679);
  Py_CLEAR(__pyx_codeobj__680);
  Py_CLEAR(__pyx_tuple__681);
  Py_CLEAR(__pyx_codeobj__682);
  Py_CLEAR(__pyx_tuple__683);
  Py_CLEAR(__pyx_codeobj__684);
  Py_CLEAR(__pyx_codeobj__685);
  Py_CLEAR(__pyx_codeobj__686);
  Py_CLEAR(__pyx_codeobj__687);
  Py_CLEAR(__pyx_tuple__688);
  Py_CLEAR(__pyx_codeobj__689);
  Py_CLEAR(__pyx_codeobj__690);
  Py_CLEAR(__pyx_codeobj__691);
  Py_CLEAR(__pyx_codeobj__692);
  Py_CLEAR(__pyx_codeobj__693);
  Py_CLEAR(__pyx_tuple__694);
  Py_CLEAR(__pyx_codeobj__695);
  Py_CLEAR(__pyx_tuple__696);
  Py_CLEAR(__pyx_codeobj__697);
  Py_CLEAR(__pyx_codeobj__698);
  Py_CLEAR(__pyx_tuple__699);
  Py_CLEAR(__pyx_codeobj__700);
  Py_CLEAR(__pyx_tuple__701);
  Py_CLEAR(__pyx_codeobj__702);
  Py_CLEAR(__pyx_tuple__703);
  Py_CLEAR(__pyx_codeobj__704);
  Py_CLEAR(__pyx_tuple__705);
  Py_CLEAR(__pyx_codeobj__706);
  Py_CLEAR(__pyx_codeobj__707);
  Py_CLEAR(__pyx_codeobj__708);
  Py_CLEAR(__pyx_codeobj__709);
  Py_CLEAR(__pyx_tuple__710);
  Py_CLEAR(__pyx_codeobj__711);
  Py_CLEAR(__pyx_codeobj__712);
  Py_CLEAR(__pyx_codeobj__713);
  Py_CLEAR(__pyx_codeobj__714);
  Py_CLEAR(__pyx_codeobj__715);
  Py_CLEAR(__pyx_tuple__716);
  Py_CLEAR(__pyx_codeobj__717);
  Py_CLEAR(__pyx_tuple__718);
  Py_CLEAR(__pyx_codeobj__719);
  Py_CLEAR(__pyx_codeobj__720);
  Py_CLEAR(__pyx_tuple__721);
  Py_CLEAR(__pyx_codeobj__722);
  Py_CLEAR(__pyx_codeobj__723);
  Py_CLEAR(__pyx_codeobj__724);
  Py_CLEAR(__pyx_tuple__725);
  Py_CLEAR(__pyx_codeobj__726);
  Py_CLEAR(__pyx_tuple__727);
  Py_CLEAR(__pyx_codeobj__728);
  Py_CLEAR(__pyx_codeobj__729);
  Py_CLEAR(__pyx_tuple__730);
  Py_CLEAR(__pyx_codeobj__731);
  Py_CLEAR(__pyx_codeobj__732);
  Py_CLEAR(__pyx_codeobj__733);
  Py_CLEAR(__pyx_codeobj__734);
  Py_CLEAR(__pyx_codeobj__735);
  Py_CLEAR(__pyx_codeobj__736);
  Py_CLEAR(__pyx_codeobj__737);
  Py_CLEAR(__pyx_codeobj__738);
  Py_CLEAR(__pyx_codeobj__739);
  Py_CLEAR(__pyx_codeobj__740);
  Py_CLEAR(__pyx_codeobj__741);
  Py_CLEAR(__pyx_codeobj__742);
  Py_CLEAR(__pyx_codeobj__743);
  Py_CLEAR(__pyx_codeobj__744);
  Py_CLEAR(__pyx_codeobj__745);
  Py_CLEAR(__pyx_tuple__746);
  Py_CLEAR(__pyx_codeobj__747);
  Py_CLEAR(__pyx_codeobj__748);
  Py_CLEAR(__pyx_codeobj__749);
  Py_CLEAR(__pyx_tuple__750);
  Py_CLEAR(__pyx_codeobj__751);
  Py_CLEAR(__pyx_tuple__752);
  Py_CLEAR(__pyx_codeobj__753);
  Py_CLEAR(__pyx_tuple__754);
  Py_CLEAR(__pyx_codeobj__755);
  Py_CLEAR(__pyx_codeobj__756);
  Py_CLEAR(__pyx_codeobj__757);
  Py_CLEAR(__pyx_tuple__758);
  Py_CLEAR(__pyx_codeobj__759);
  Py_CLEAR(__pyx_tuple__760);
  Py_CLEAR(__pyx_codeobj__761);
  Py_CLEAR(__pyx_codeobj__762);
  Py_CLEAR(__pyx_tuple__763);
  Py_CLEAR(__pyx_codeobj__764);
  Py_CLEAR(__pyx_tuple__765);
  Py_CLEAR(__pyx_codeobj__766);
  Py_CLEAR(__pyx_codeobj__767);
  Py_CLEAR(__pyx_tuple__768);
  Py_CLEAR(__pyx_codeobj__769);
  Py_CLEAR(__pyx_tuple__770);
  Py_CLEAR(__pyx_codeobj__771);
  Py_CLEAR(__pyx_codeobj__772);
  Py_CLEAR(__pyx_tuple__773);
  Py_CLEAR(__pyx_codeobj__774);
  Py_CLEAR(__pyx_codeobj__775);
  Py_CLEAR(__pyx_tuple__776);
  Py_CLEAR(__pyx_codeobj__777);
  Py_CLEAR(__pyx_tuple__778);
  Py_CLEAR(__pyx_codeobj__779);
  Py_CLEAR(__pyx_tuple__780);
  Py_CLEAR(__pyx_codeobj__781);
  Py_CLEAR(__pyx_tuple__782);
  Py_CLEAR(__pyx_codeobj__783);
  Py_CLEAR(__pyx_tuple__784);
  Py_CLEAR(__pyx_codeobj__785);
  Py_CLEAR(__pyx_tuple__786);
  Py_CLEAR(__pyx_tuple__787);
  Py_CLEAR(__pyx_codeobj__788);
  Py_CLEAR(__pyx_tuple__789);
  Py_CLEAR(__pyx_codeobj__790);
  Py_CLEAR(__pyx_tuple__791);
  Py_CLEAR(__pyx_codeobj__792);
  Py_CLEAR(__pyx_tuple__793);
  Py_CLEAR(__pyx_codeobj__794);
  Py_CLEAR(__pyx_tuple__795);
  Py_CLEAR(__pyx_codeobj__796);
  Py_CLEAR(__pyx_tuple__797);
  Py_CLEAR(__pyx_codeobj__798);
  Py_CLEAR(__pyx_codeobj__799);
  Py_CLEAR(__pyx_codeobj__800);
  Py_CLEAR(__pyx_codeobj__801);
  Py_CLEAR(__pyx_codeobj__802);
  Py_CLEAR(__pyx_codeobj__803);
  Py_CLEAR(__pyx_codeobj__804);
  Py_CLEAR(__pyx_codeobj__805);
  Py_CLEAR(__pyx_codeobj__806);
  Py_CLEAR(__pyx_tuple__807);
  Py_CLEAR(__pyx_codeobj__808);
  Py_CLEAR(__pyx_tuple__810);
  Py_CLEAR(__pyx_codeobj__811);
  Py_CLEAR(__pyx_tuple__812);
  Py_CLEAR(__pyx_codeobj__813);
  Py_CLEAR(__pyx_codeobj__814);
  Py_CLEAR(__pyx_codeobj__815);
  Py_CLEAR(__pyx_codeobj__816);
  Py_CLEAR(__pyx_codeobj__817);
  Py_CLEAR(__pyx_codeobj__818);
  Py_CLEAR(__pyx_codeobj__819);
  Py_CLEAR(__pyx_codeobj__820);
  Py_CLEAR(__pyx_codeobj__821);
  Py_CLEAR(__pyx_codeobj__822);
  Py_CLEAR(__pyx_codeobj__823);
  Py_CLEAR(__pyx_codeobj__824);
  Py_CLEAR(__pyx_codeobj__825);
  Py_CLEAR(__pyx_codeobj__826);
  Py_CLEAR(__pyx_codeobj__827);
  Py_CLEAR(__pyx_codeobj__828);
  Py_CLEAR(__pyx_codeobj__829);
  Py_CLEAR(__pyx_codeobj__830);
  Py_CLEAR(__pyx_codeobj__831);
  Py_CLEAR(__pyx_tuple__832);
  Py_CLEAR(__pyx_codeobj__833);
  Py_CLEAR(__pyx_tuple__834);
  Py_CLEAR(__pyx_codeobj__835);
  Py_CLEAR(__pyx_tuple__836);
  Py_CLEAR(__pyx_codeobj__837);
  Py_CLEAR(__pyx_tuple__838);
  Py_CLEAR(__pyx_codeobj__839);
  Py_CLEAR(__pyx_tuple__840);
  Py_CLEAR(__pyx_codeobj__841);
  Py_CLEAR(__pyx_tuple__842);
  Py_CLEAR(__pyx_codeobj__843);
  Py_CLEAR(__pyx_tuple__844);
  Py_CLEAR(__pyx_codeobj__845);
  Py_CLEAR(__pyx_tuple__846);
  Py_CLEAR(__pyx_codeobj__847);
  Py_CLEAR(__pyx_tuple__848);
  Py_CLEAR(__pyx_codeobj__849);
  Py_CLEAR(__pyx_tuple__850);
  Py_CLEAR(__pyx_codeobj__851);
  Py_CLEAR(__pyx_tuple__852);
  Py_CLEAR(__pyx_codeobj__853);
  Py_CLEAR(__pyx_tuple__854);
  Py_CLEAR(__pyx_codeobj__855);
  Py_CLEAR(__pyx_tuple__856);
  Py_CLEAR(__pyx_codeobj__857);
  Py_CLEAR(__pyx_tuple__858);
  Py_CLEAR(__pyx_codeobj__859);
  Py_CLEAR(__pyx_codeobj__860);
  Py_CLEAR(__pyx_codeobj__861);
  Py_CLEAR(__pyx_tuple__862);
  Py_CLEAR(__pyx_codeobj__863);
  Py_CLEAR(__pyx_tuple__864);
  Py_CLEAR(__pyx_codeobj__865);
  Py_CLEAR(__pyx_tuple__866);
  Py_CLEAR(__pyx_codeobj__867);
  Py_CLEAR(__pyx_codeobj__868);
  Py_CLEAR(__pyx_tuple__869);
  Py_CLEAR(__pyx_codeobj__870);
  Py_CLEAR(__pyx_tuple__871);
  Py_CLEAR(__pyx_codeobj__872);
  Py_CLEAR(__pyx_tuple__873);
  Py_CLEAR(__pyx_codeobj__874);
  Py_CLEAR(__pyx_tuple__875);
  Py_CLEAR(__pyx_codeobj__876);
  Py_CLEAR(__pyx_codeobj__877);
  Py_CLEAR(__pyx_tuple__878);
  Py_CLEAR(__pyx_codeobj__879);
  Py_CLEAR(__pyx_codeobj__880);
  Py_CLEAR(__pyx_codeobj__881);
  Py_CLEAR(__pyx_codeobj__882);
  Py_CLEAR(__pyx_tuple__883);
  Py_CLEAR(__pyx_codeobj__884);
  Py_CLEAR(__pyx_tuple__885);
  Py_CLEAR(__pyx_codeobj__886);
  Py_CLEAR(__pyx_codeobj__887);
  Py_CLEAR(__pyx_tuple__888);
  Py_CLEAR(__pyx_codeobj__889);
  Py_CLEAR(__pyx_tuple__890);
  Py_CLEAR(__pyx_codeobj__891);
  Py_CLEAR(__pyx_tuple__892);
  Py_CLEAR(__pyx_codeobj__893);
  Py_CLEAR(__pyx_tuple__894);
  Py_CLEAR(__pyx_codeobj__895);
  Py_CLEAR(__pyx_codeobj__896);
  Py_CLEAR(__pyx_codeobj__897);
  Py_CLEAR(__pyx_codeobj__898);
  Py_CLEAR(__pyx_codeobj__899);
  Py_CLEAR(__pyx_codeobj__900);
  Py_CLEAR(__pyx_codeobj__901);
  Py_CLEAR(__pyx_codeobj__902);
  Py_CLEAR(__pyx_codeobj__903);
  Py_CLEAR(__pyx_codeobj__904);
  Py_CLEAR(__pyx_codeobj__905);
  Py_CLEAR(__pyx_tuple__906);
  Py_CLEAR(__pyx_codeobj__907);
  Py_CLEAR(__pyx_codeobj__908);
  Py_CLEAR(__pyx_tuple__909);
  Py_CLEAR(__pyx_codeobj__910);
  Py_CLEAR(__pyx_tuple__911);
  Py_CLEAR(__pyx_codeobj__912);
  Py_CLEAR(__pyx_tuple__913);
  Py_CLEAR(__pyx_codeobj__914);
  Py_CLEAR(__pyx_tuple__915);
  Py_CLEAR(__pyx_codeobj__916);
  Py_CLEAR(__pyx_tuple__917);
  Py_CLEAR(__pyx_codeobj__918);
  Py_CLEAR(__pyx_codeobj__919);
  Py_CLEAR(__pyx_tuple__920);
  Py_CLEAR(__pyx_codeobj__921);
  Py_CLEAR(__pyx_tuple__922);
  Py_CLEAR(__pyx_codeobj__923);
  Py_CLEAR(__pyx_tuple__924);
  Py_CLEAR(__pyx_codeobj__925);
  Py_CLEAR(__pyx_tuple__926);
  Py_CLEAR(__pyx_codeobj__927);
  Py_CLEAR(__pyx_codeobj__928);
  Py_CLEAR(__pyx_codeobj__929);
  Py_CLEAR(__pyx_codeobj__930);
  Py_CLEAR(__pyx_codeobj__931);
  Py_CLEAR(__pyx_tuple__932);
  Py_CLEAR(__pyx_codeobj__933);
  Py_CLEAR(__pyx_codeobj__934);
  Py_CLEAR(__pyx_codeobj__935);
  Py_CLEAR(__pyx_codeobj__936);
  Py_CLEAR(__pyx_codeobj__937);
  Py_CLEAR(__pyx_codeobj__938);
  Py_CLEAR(__pyx_codeobj__939);
  Py_CLEAR(__pyx_codeobj__940);
  Py_CLEAR(__pyx_codeobj__941);
  Py_CLEAR(__pyx_codeobj__942);
  Py_CLEAR(__pyx_codeobj__943);
  Py_CLEAR(__pyx_codeobj__944);
  Py_CLEAR(__pyx_codeobj__945);
  Py_CLEAR(__pyx_codeobj__946);
  Py_CLEAR(__pyx_codeobj__947);
  Py_CLEAR(__pyx_codeobj__948);
  Py_CLEAR(__pyx_codeobj__949);
  Py_CLEAR(__pyx_codeobj__950);
  Py_CLEAR(__pyx_codeobj__951);
  Py_CLEAR(__pyx_codeobj__952);
  Py_CLEAR(__pyx_tuple__953);
  Py_CLEAR(__pyx_codeobj__954);
  Py_CLEAR(__pyx_codeobj__955);
  Py_CLEAR(__pyx_tuple__956);
  Py_CLEAR(__pyx_codeobj__957);
  Py_CLEAR(__pyx_codeobj__958);
  Py_CLEAR(__pyx_codeobj__959);
  Py_CLEAR(__pyx_codeobj__960);
  Py_CLEAR(__pyx_tuple__961);
  Py_CLEAR(__pyx_codeobj__962);
  Py_CLEAR(__pyx_codeobj__963);
  Py_CLEAR(__pyx_codeobj__964);
  Py_CLEAR(__pyx_codeobj__965);
  Py_CLEAR(__pyx_tuple__966);
  Py_CLEAR(__pyx_codeobj__967);
  Py_CLEAR(__pyx_tuple__968);
  Py_CLEAR(__pyx_codeobj__969);
  Py_CLEAR(__pyx_tuple__970);
  Py_CLEAR(__pyx_codeobj__971);
  Py_CLEAR(__pyx_codeobj__972);
  Py_CLEAR(__pyx_codeobj__973);
  Py_CLEAR(__pyx_codeobj__974);
  Py_CLEAR(__pyx_tuple__975);
  Py_CLEAR(__pyx_codeobj__976);
  Py_CLEAR(__pyx_codeobj__977);
  Py_CLEAR(__pyx_codeobj__978);
  Py_CLEAR(__pyx_codeobj__979);
  Py_CLEAR(__pyx_tuple__980);
  Py_CLEAR(__pyx_codeobj__981);
  Py_CLEAR(__pyx_codeobj__982);
  Py_CLEAR(__pyx_codeobj__983);
  Py_CLEAR(__pyx_codeobj__984);
  Py_CLEAR(__pyx_tuple__985);
  Py_CLEAR(__pyx_codeobj__986);
  Py_CLEAR(__pyx_codeobj__987);
  Py_CLEAR(__pyx_codeobj__988);
  Py_CLEAR(__pyx_codeobj__989);
  Py_CLEAR(__pyx_tuple__990);
  Py_CLEAR(__pyx_codeobj__991);
  Py_CLEAR(__pyx_tuple__992);
  Py_CLEAR(__pyx_codeobj__993);
  Py_CLEAR(__pyx_tuple__994);
  Py_CLEAR(__pyx_codeobj__995);
  Py_CLEAR(__pyx_codeobj__996);
  Py_CLEAR(__pyx_codeobj__997);
  Py_CLEAR(__pyx_codeobj__998);
  Py_CLEAR(__pyx_codeobj__999);
  Py_CLEAR(__pyx_codeobj__1000);
  Py_CLEAR(__pyx_codeobj__1001);
  Py_CLEAR(__pyx_codeobj__1002);
  Py_CLEAR(__pyx_codeobj__1003);
  Py_CLEAR(__pyx_tuple__1004);
  Py_CLEAR(__pyx_codeobj__1005);
  Py_CLEAR(__pyx_codeobj__1006);
  Py_CLEAR(__pyx_codeobj__1007);
  Py_CLEAR(__pyx_codeobj__1008);
  Py_CLEAR(__pyx_tuple__1009);
  Py_CLEAR(__pyx_codeobj__1010);
  Py_CLEAR(__pyx_codeobj__1011);
  Py_CLEAR(__pyx_codeobj__1012);
  Py_CLEAR(__pyx_codeobj__1013);
  Py_CLEAR(__pyx_codeobj__1014);
  Py_CLEAR(__pyx_codeobj__1015);
  Py_CLEAR(__pyx_codeobj__1016);
  Py_CLEAR(__pyx_codeobj__1017);
  Py_CLEAR(__pyx_tuple__1018);
  Py_CLEAR(__pyx_codeobj__1019);
  Py_CLEAR(__pyx_codeobj__1020);
  Py_CLEAR(__pyx_codeobj__1021);
  Py_CLEAR(__pyx_codeobj__1022);
  Py_CLEAR(__pyx_codeobj__1023);
  Py_CLEAR(__pyx_codeobj__1024);
  Py_CLEAR(__pyx_codeobj__1025);
  Py_CLEAR(__pyx_codeobj__1026);
  Py_CLEAR(__pyx_codeobj__1027);
  Py_CLEAR(__pyx_codeobj__1028);
  Py_CLEAR(__pyx_tuple__1029);
  Py_CLEAR(__pyx_codeobj__1030);
  Py_CLEAR(__pyx_tuple__1031);
  Py_CLEAR(__pyx_codeobj__1032);
  Py_CLEAR(__pyx_tuple__1033);
  Py_CLEAR(__pyx_codeobj__1034);
  Py_CLEAR(__pyx_codeobj__1035);
  Py_CLEAR(__pyx_codeobj__1036);
  Py_CLEAR(__pyx_tuple__1037);
  Py_CLEAR(__pyx_codeobj__1038);
  Py_CLEAR(__pyx_tuple__1039);
  Py_CLEAR(__pyx_codeobj__1040);
  Py_CLEAR(__pyx_tuple__1041);
  Py_CLEAR(__pyx_codeobj__1042);
  Py_CLEAR(__pyx_codeobj__1043);
  Py_CLEAR(__pyx_codeobj__1044);
  Py_CLEAR(__pyx_tuple__1045);
  Py_CLEAR(__pyx_codeobj__1046);
  Py_CLEAR(__pyx_tuple__1047);
  Py_CLEAR(__pyx_codeobj__1048);
  Py_CLEAR(__pyx_codeobj__1049);
  Py_CLEAR(__pyx_tuple__1050);
  Py_CLEAR(__pyx_codeobj__1051);
  Py_CLEAR(__pyx_codeobj__1052);
  Py_CLEAR(__pyx_codeobj__1053);
  Py_CLEAR(__pyx_tuple__1054);
  Py_CLEAR(__pyx_codeobj__1055);
  Py_CLEAR(__pyx_tuple__1056);
  Py_CLEAR(__pyx_codeobj__1057);
  Py_CLEAR(__pyx_tuple__1058);
  Py_CLEAR(__pyx_codeobj__1059);
  Py_CLEAR(__pyx_tuple__1060);
  Py_CLEAR(__pyx_codeobj__1061);
  Py_CLEAR(__pyx_tuple__1062);
  Py_CLEAR(__pyx_codeobj__1063);
  Py_CLEAR(__pyx_tuple__1064);
  Py_CLEAR(__pyx_codeobj__1065);
  Py_CLEAR(__pyx_tuple__1066);
  Py_CLEAR(__pyx_codeobj__1067);
  Py_CLEAR(__pyx_tuple__1068);
  Py_CLEAR(__pyx_codeobj__1069);
  Py_CLEAR(__pyx_codeobj__1070);
  /* CodeObjectCache.cleanup */
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__pyx_code_cache.entries) {
      __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
      int i, count = __pyx_code_cache.count;
      __pyx_code_cache.count = 0;
      __pyx_code_cache.max_count = 0;
      __pyx_code_cache.entries = NULL;
      for (i=0; i<count; i++) {
          Py_DECREF(entries[i].code_object);
      }
      PyMem_Free(entries);
  }
  #endif

Py_CLEAR(__pyx_umethod_PyDict_Type_get.method);
  Py_CLEAR(__pyx_umethod_PyDict_Type_pop.method);
  Py_CLEAR(__pyx_umethod_PyDict_Type_values.method);
  Py_CLEAR(__pyx_umethod_PyList_Type_index.method);
  Py_CLEAR(__pyx_umethod_PyString_Type_lower.method);
}
/* #### Code section: cleanup_module ### */
static void __pyx_module_cleanup(CYTHON_UNUSED PyObject *self) {
  /*--- Global cleanup code ---*/
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_FTypeDict);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_CTypeDict);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_TypeDict);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___FILE_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___WIN_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMM_PARENT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMM_WORLD__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMM_SELF__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMM_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___SESSION_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___ERRORS_ARE_FATAL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___ERRORS_ABORT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___ERRORS_RETURN__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___ERRHANDLER_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INFO_ENV__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INFO_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___GROUP_EMPTY__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___GROUP_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___NO_OP__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___REPLACE__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___MINLOC__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___MAXLOC__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___BXOR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LXOR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___BOR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LOR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___BAND__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LAND__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___PROD__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___SUM__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___MIN__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___MAX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___OP_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___MESSAGE_NO_PROC__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___MESSAGE_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___REQUEST_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMPLEX32__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMPLEX16__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMPLEX8__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMPLEX4__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___REAL16__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___REAL8__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___REAL4__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___REAL2__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INTEGER16__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INTEGER8__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INTEGER4__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INTEGER2__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INTEGER1__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LOGICAL8__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LOGICAL4__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LOGICAL2__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LOGICAL1__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___DOUBLE_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___DOUBLE_PRECISION__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___REAL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INTEGER__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LOGICAL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___CHARACTER__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LONG_DOUBLE_INT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___DOUBLE_INT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___FLOAT_INT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LONG_INT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INT_INT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___SHORT_INT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___CXX_LONG_DOUBLE_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___CXX_DOUBLE_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___CXX_FLOAT_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___CXX_BOOL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___C_LONG_DOUBLE_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___C_DOUBLE_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___C_FLOAT_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___C_COMPLEX__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UINT64_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UINT32_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UINT16_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UINT8_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INT64_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INT32_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INT16_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INT8_T__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___C_BOOL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LONG_DOUBLE__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___DOUBLE__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___FLOAT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG_LONG__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UNSIGNED_LONG__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UNSIGNED__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UNSIGNED_SHORT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UNSIGNED_CHAR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LONG_LONG__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___LONG__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___INT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___SHORT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___SIGNED_CHAR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___WCHAR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___CHAR__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___COUNT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___OFFSET__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___AINT__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___BYTE__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___PACKED__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___DATATYPE_NULL__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_PyPickle5_loads);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_PyPickle5_dumps);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_PyMPI_PICKLE);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_PyPickle_THRESHOLD);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_PyPickle_PROTOCOL);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_PyPickle_loads);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_PyPickle_dumps);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___IN_PLACE__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___BOTTOM__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_datarep_registry);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_datarep_lock);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_commlock_registry);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_commlock_lock);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___WEIGHTS_EMPTY__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___UNWEIGHTED__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI__mpi_buffer_session);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI__mpi_buffer_comm);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___BUFFER_AUTOMATIC__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_op_user_registry);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_op_user_lock);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_errhdl_registry);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_errhdl_lock);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_keyval_registry_win);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_keyval_registry_comm);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_keyval_registry_type);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_keyval_lock_win);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_keyval_lock_comm);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_keyval_lock_type);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_def_op);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI___newobj__);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_def_registry);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_RLock);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_Lock);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI__py_module_sentinel);
  Py_CLEAR(__pyx_v_6mpi4py_3MPI_MPIException);
  __Pyx_CleanupGlobals();
  /*--- Type import cleanup code ---*/
  Py_CLEAR(__pyx_ptype_6mpi4py_3MPI_RuntimeError);
  /*--- Builtin cleanup code ---*/
  Py_CLEAR(__pyx_builtin_staticmethod);
  Py_CLEAR(__pyx_builtin_ImportError);
  Py_CLEAR(__pyx_builtin_RuntimeWarning);
  Py_CLEAR(__pyx_builtin_ImportWarning);
  Py_CLEAR(__pyx_builtin_MemoryError);
  Py_CLEAR(__pyx_builtin_range);
  Py_CLEAR(__pyx_builtin_BufferError);
  Py_CLEAR(__pyx_builtin_AttributeError);
  Py_CLEAR(__pyx_builtin_NotImplementedError);
  Py_CLEAR(__pyx_builtin_TypeError);
  Py_CLEAR(__pyx_builtin_BaseException);
  Py_CLEAR(__pyx_builtin_ValueError);
  Py_CLEAR(__pyx_builtin_Ellipsis);
  Py_CLEAR(__pyx_builtin_IndexError);
  Py_CLEAR(__pyx_builtin_OverflowError);
  Py_CLEAR(__pyx_builtin_NotImplemented);
  Py_CLEAR(__pyx_builtin_KeyError);
  Py_CLEAR(__pyx_builtin_UserWarning);
  /*--- Intern cleanup code ---*/
  Py_CLEAR(__pyx_empty_tuple);
  #if CYTHON_USE_FREELISTS
  while (__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback > 0) {
    PyObject* o = (PyObject*)__pyx_freelist_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback[--__pyx_freecount_6mpi4py_3MPI___pyx_scope_struct____pyx_f_6mpi4py_3MPI_get_buffer_callback];
    #if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
    (*Py_TYPE(o)->tp_free)(o);
    #else
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
    #endif
  }
  #endif
  Py_CLEAR(__pyx_cython_runtime);
  Py_CLEAR(__pyx_b);
  Py_CLEAR(__pyx_d);
}
/* #### Code section: main_method ### */
/* #### Code section: utility_code_pragmas ### */
#ifdef _MSC_VER
#pragma warning( push )
/* Warning 4127: conditional expression is constant
 * Cython uses constant conditional expressions to allow in inline functions to be optimized at
 * compile-time, so this warning is not useful
 */
#pragma warning( disable : 4127 )
#endif



/* #### Code section: utility_code_def ### */

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule(modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, "RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* PyErrExceptionMatches */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    int result;
    PyObject *exc_type;
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *current_exception = tstate->current_exception;
    if (unlikely(!current_exception)) return 0;
    exc_type = (PyObject*) Py_TYPE(current_exception);
    if (exc_type == err) return 1;
#else
    exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
#endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(exc_type);
    #endif
    if (unlikely(PyTuple_Check(err))) {
        result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    } else {
        result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
    }
    #if CYTHON_AVOID_BORROWED_REFS
    Py_DECREF(exc_type);
    #endif
    return result;
}
#endif

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *tmp_value;
    assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
    if (value) {
        #if CYTHON_COMPILING_IN_CPYTHON
        if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
        #endif
            PyException_SetTraceback(value, tb);
    }
    tmp_value = tstate->current_exception;
    tstate->current_exception = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
#else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#endif
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject* exc_value;
    exc_value = tstate->current_exception;
    tstate->current_exception = 0;
    *value = exc_value;
    *type = NULL;
    *tb = NULL;
    if (exc_value) {
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        #if CYTHON_COMPILING_IN_CPYTHON
        *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
        Py_XINCREF(*tb);
        #else
        *tb = PyException_GetTraceback(exc_value);
        #endif
    }
#else
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#endif
}
#endif

/* PyObjectGetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* PyObjectGetAttrStrNoError */
#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
    (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
    return result;
#else
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
        return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
    }
#endif
    result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
    if (unlikely(!result)) {
        __Pyx_PyObject_GetAttrStr_ClearAttributeError();
    }
    return result;
#endif
}

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name);
    if (unlikely(!result) && !PyErr_Occurred()) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
                                               PyObject *globals) {
    PyFrameObject *f;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject **fastlocals;
    Py_ssize_t i;
    PyObject *result;
    assert(globals != NULL);
    /* XXX Perhaps we should create a specialized
       PyFrame_New() that doesn't take locals, but does
       take builtins without sanity checking them.
       */
    assert(tstate != NULL);
    f = PyFrame_New(tstate, co, globals, NULL);
    if (f == NULL) {
        return NULL;
    }
    fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
    for (i = 0; i < na; i++) {
        Py_INCREF(*args);
        fastlocals[i] = *args++;
    }
    result = PyEval_EvalFrameEx(f,0);
    ++tstate->recursion_depth;
    Py_DECREF(f);
    --tstate->recursion_depth;
    return result;
}
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
    PyObject *globals = PyFunction_GET_GLOBALS(func);
    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
    PyObject *closure;
#if PY_MAJOR_VERSION >= 3
    PyObject *kwdefs;
#endif
    PyObject *kwtuple, **k;
    PyObject **d;
    Py_ssize_t nd;
    Py_ssize_t nk;
    PyObject *result;
    assert(kwargs == NULL || PyDict_Check(kwargs));
    nk = kwargs ? PyDict_Size(kwargs) : 0;
    #if PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) {
        return NULL;
    }
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) {
        return NULL;
    }
    #endif
    if (
#if PY_MAJOR_VERSION >= 3
            co->co_kwonlyargcount == 0 &&
#endif
            likely(kwargs == NULL || nk == 0) &&
            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
        if (argdefs == NULL && co->co_argcount == nargs) {
            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
            goto done;
        }
        else if (nargs == 0 && argdefs != NULL
                 && co->co_argcount == Py_SIZE(argdefs)) {
            /* function called with no arguments, but all parameters have
               a default value: use default values as arguments .*/
            args = &PyTuple_GET_ITEM(argdefs, 0);
            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
            goto done;
        }
    }
    if (kwargs != NULL) {
        Py_ssize_t pos, i;
        kwtuple = PyTuple_New(2 * nk);
        if (kwtuple == NULL) {
            result = NULL;
            goto done;
        }
        k = &PyTuple_GET_ITEM(kwtuple, 0);
        pos = i = 0;
        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
            Py_INCREF(k[i]);
            Py_INCREF(k[i+1]);
            i += 2;
        }
        nk = i / 2;
    }
    else {
        kwtuple = NULL;
        k = NULL;
    }
    closure = PyFunction_GET_CLOSURE(func);
#if PY_MAJOR_VERSION >= 3
    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
#endif
    if (argdefs != NULL) {
        d = &PyTuple_GET_ITEM(argdefs, 0);
        nd = Py_SIZE(argdefs);
    }
    else {
        d = NULL;
        nd = 0;
    }
#if PY_MAJOR_VERSION >= 3
    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, kwdefs, closure);
#else
    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, closure);
#endif
    Py_XDECREF(kwtuple);
done:
    Py_LeaveRecursiveCall();
    return result;
}
#endif

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = Py_TYPE(func)->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    #if PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    #endif
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
    self = __Pyx_CyOrPyCFunction_GET_SELF(func);
    #if PY_MAJOR_VERSION < 3
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    #else
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    #endif
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectFastCall */
#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) {
    PyObject *argstuple;
    PyObject *result = 0;
    size_t i;
    argstuple = PyTuple_New((Py_ssize_t)nargs);
    if (unlikely(!argstuple)) return NULL;
    for (i = 0; i < nargs; i++) {
        Py_INCREF(args[i]);
        if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) < 0) goto bad;
    }
    result = __Pyx_PyObject_Call(func, argstuple, kwargs);
  bad:
    Py_DECREF(argstuple);
    return result;
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) {
    Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
#if CYTHON_COMPILING_IN_CPYTHON
    if (nargs == 0 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
            return __Pyx_PyObject_CallMethO(func, NULL);
    }
    else if (nargs == 1 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
            return __Pyx_PyObject_CallMethO(func, args[0]);
    }
#endif
    #if PY_VERSION_HEX < 0x030800B1
    #if CYTHON_FAST_PYCCALL
    if (PyCFunction_Check(func)) {
        if (kwargs) {
            return _PyCFunction_FastCallDict(func, args, nargs, kwargs);
        } else {
            return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
        }
    }
    #if PY_VERSION_HEX >= 0x030700A1
    if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
        return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
    }
    #endif
    #endif
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs);
    }
    #endif
    #endif
    if (kwargs == NULL) {
        #if CYTHON_VECTORCALL
        #if PY_VERSION_HEX < 0x03090000
        vectorcallfunc f = _PyVectorcall_Function(func);
        #else
        vectorcallfunc f = PyVectorcall_Function(func);
        #endif
        if (f) {
            return f(func, args, (size_t)nargs, NULL);
        }
        #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL
        if (__Pyx_CyFunction_CheckExact(func)) {
            __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
            if (f) return f(func, args, (size_t)nargs, NULL);
        }
        #endif
    }
    if (nargs == 0) {
        return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs);
    }
    #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
    #else
    return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
    #endif
}

/* RaiseUnexpectedTypeError */
static int
__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj)
{
    __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME,
                 expected, obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* GetAttr3 */
#if __PYX_LIMITED_VERSION_HEX < 0x030d00A1
static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        return NULL;
    __Pyx_PyErr_Clear();
    Py_INCREF(d);
    return d;
}
#endif
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
    PyObject *r;
#if __PYX_LIMITED_VERSION_HEX >= 0x030d00A1
    int res = PyObject_GetOptionalAttr(o, n, &r);
    return (res != 0) ? r : __Pyx_NewRef(d);
#else
  #if CYTHON_USE_TYPE_SLOTS
    if (likely(PyString_Check(n))) {
        r = __Pyx_PyObject_GetAttrStrNoError(o, n);
        if (unlikely(!r) && likely(!PyErr_Occurred())) {
            r = __Pyx_NewRef(d);
        }
        return r;
    }
  #endif
    r = PyObject_GetAttr(o, n);
    return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
#endif
}

/* GetTopmostException */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
{
    _PyErr_StackItem *exc_info = tstate->exc_info;
    while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
           exc_info->previous_item != NULL)
    {
        exc_info = exc_info->previous_item;
    }
    return exc_info;
}
#endif

/* SaveResetException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    PyObject *exc_value = exc_info->exc_value;
    if (exc_value == NULL || exc_value == Py_None) {
        *value = NULL;
        *type = NULL;
        *tb = NULL;
    } else {
        *value = exc_value;
        Py_INCREF(*value);
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        *tb = PyException_GetTraceback(exc_value);
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    *type = exc_info->exc_type;
    *value = exc_info->exc_value;
    *tb = exc_info->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #endif
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    PyObject *tmp_value = exc_info->exc_value;
    exc_info->exc_value = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
  #else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = type;
    exc_info->exc_value = value;
    exc_info->exc_traceback = tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
  #endif
}
#endif

/* Import */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *module = 0;
    PyObject *empty_dict = 0;
    PyObject *empty_list = 0;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (unlikely(!py_import))
        goto bad;
    if (!from_list) {
        empty_list = PyList_New(0);
        if (unlikely(!empty_list))
            goto bad;
        from_list = empty_list;
    }
    #endif
    empty_dict = PyDict_New();
    if (unlikely(!empty_dict))
        goto bad;
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if (strchr(__Pyx_MODULE_NAME, '.') != NULL) {
                module = PyImport_ImportModuleLevelObject(
                    name, __pyx_d, empty_dict, from_list, 1);
                if (unlikely(!module)) {
                    if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
                        goto bad;
                    PyErr_Clear();
                }
            }
            level = 0;
        }
        #endif
        if (!module) {
            #if PY_MAJOR_VERSION < 3
            PyObject *py_level = PyInt_FromLong(level);
            if (unlikely(!py_level))
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL);
            Py_DECREF(py_level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, __pyx_d, empty_dict, from_list, level);
            #endif
        }
    }
bad:
    Py_XDECREF(empty_dict);
    Py_XDECREF(empty_list);
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_import);
    #endif
    return module;
}

/* ImportFrom */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
        const char* module_name_str = 0;
        PyObject* module_name = 0;
        PyObject* module_dot = 0;
        PyObject* full_name = 0;
        PyErr_Clear();
        module_name_str = PyModule_GetName(module);
        if (unlikely(!module_name_str)) { goto modbad; }
        module_name = PyUnicode_FromString(module_name_str);
        if (unlikely(!module_name)) { goto modbad; }
        module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__2);
        if (unlikely(!module_dot)) { goto modbad; }
        full_name = PyUnicode_Concat(module_dot, name);
        if (unlikely(!full_name)) { goto modbad; }
        #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400)
        {
            PyObject *modules = PyImport_GetModuleDict();
            if (unlikely(!modules))
                goto modbad;
            value = PyObject_GetItem(modules, full_name);
        }
        #else
        value = PyImport_GetModule(full_name);
        #endif
      modbad:
        Py_XDECREF(full_name);
        Py_XDECREF(module_dot);
        Py_XDECREF(module_name);
    }
    if (unlikely(!value)) {
        PyErr_Format(PyExc_ImportError,
        #if PY_MAJOR_VERSION < 3
            "cannot import name %.230s", PyString_AS_STRING(name));
        #else
            "cannot import name %S", name);
        #endif
    }
    return value;
}

/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (cls == a || cls == b) return 1;
    mro = cls->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            PyObject *base = PyTuple_GET_ITEM(mro, i);
            if (base == (PyObject *)a || base == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
}
#if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
    PyObject *exception, *value, *tb;
    int res;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&exception, &value, &tb);
    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
    if (unlikely(res == -1)) {
        PyErr_WriteUnraisable(err);
        res = 0;
    }
    if (!res) {
        res = PyObject_IsSubclass(err, exc_type2);
        if (unlikely(res == -1)) {
            PyErr_WriteUnraisable(err);
            res = 0;
        }
    }
    __Pyx_ErrRestore(exception, value, tb);
    return res;
}
#else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    if (exc_type1) {
        return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
    } else {
        return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
}
#endif
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    assert(PyExceptionClass_Check(exc_type));
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        #if PY_MAJOR_VERSION < 3
        if (likely(exc_type == t)) return 1;
        #endif
        if (likely(PyExceptionClass_Check(t))) {
            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
        } else {
        }
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        if (likely(PyExceptionClass_Check(exc_type))) {
            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
        } else if (likely(PyTuple_Check(exc_type))) {
            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
        } else {
        }
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    assert(PyExceptionClass_Check(exc_type1));
    assert(PyExceptionClass_Check(exc_type2));
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* GetException */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
{
    PyObject *local_type = NULL, *local_value, *local_tb = NULL;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if PY_VERSION_HEX >= 0x030C00A6
    local_value = tstate->current_exception;
    tstate->current_exception = 0;
    if (likely(local_value)) {
        local_type = (PyObject*) Py_TYPE(local_value);
        Py_INCREF(local_type);
        local_tb = PyException_GetTraceback(local_value);
    }
  #else
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
  #endif
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6
    if (unlikely(tstate->current_exception))
#elif CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
    #endif
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
    #if CYTHON_USE_EXC_INFO_STACK
    {
        _PyErr_StackItem *exc_info = tstate->exc_info;
      #if PY_VERSION_HEX >= 0x030B00a4
        tmp_value = exc_info->exc_value;
        exc_info->exc_value = local_value;
        tmp_type = NULL;
        tmp_tb = NULL;
        Py_XDECREF(local_type);
        Py_XDECREF(local_tb);
      #else
        tmp_type = exc_info->exc_type;
        tmp_value = exc_info->exc_value;
        tmp_tb = exc_info->exc_traceback;
        exc_info->exc_type = local_type;
        exc_info->exc_value = local_value;
        exc_info->exc_traceback = local_tb;
      #endif
    }
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}

/* BytesEquals */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result;
#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
            Py_hash_t hash1, hash2;
            hash1 = ((PyBytesObject*)s1)->ob_shash;
            hash2 = ((PyBytesObject*)s2)->ob_shash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                return (equals == Py_NE);
            }
#endif
            result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* UnicodeEquals */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_RichCompareBool(s1, s2, equals);
#else
#if PY_MAJOR_VERSION < 3
    PyObject* owned_ref = NULL;
#endif
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
#if PY_MAJOR_VERSION < 3
    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
        owned_ref = PyUnicode_FromObject(s2);
        if (unlikely(!owned_ref))
            return -1;
        s2 = owned_ref;
        s2_is_unicode = 1;
    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
        owned_ref = PyUnicode_FromObject(s1);
        if (unlikely(!owned_ref))
            return -1;
        s1 = owned_ref;
        s1_is_unicode = 1;
    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
        return __Pyx_PyBytes_Equals(s1, s2, equals);
    }
#endif
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length;
        int kind;
        void *data1, *data2;
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
        #if CYTHON_PEP393_ENABLED
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
        #else
            hash1 = ((PyUnicodeObject*)s1)->hash;
            hash2 = ((PyUnicodeObject*)s2)->hash;
        #endif
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                goto return_ne;
            }
        }
#endif
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            #if PY_MAJOR_VERSION < 3
            Py_XDECREF(owned_ref);
            #endif
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        #if PY_MAJOR_VERSION < 3
        Py_XDECREF(owned_ref);
        #endif
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_EQ);
return_ne:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_NE);
#endif
}

/* CIntToDigits */
static const char DIGIT_PAIRS_10[2*10*10+1] = {
    "00010203040506070809"
    "10111213141516171819"
    "20212223242526272829"
    "30313233343536373839"
    "40414243444546474849"
    "50515253545556575859"
    "60616263646566676869"
    "70717273747576777879"
    "80818283848586878889"
    "90919293949596979899"
};
static const char DIGIT_PAIRS_8[2*8*8+1] = {
    "0001020304050607"
    "1011121314151617"
    "2021222324252627"
    "3031323334353637"
    "4041424344454647"
    "5051525354555657"
    "6061626364656667"
    "7071727374757677"
};
static const char DIGITS_HEX[2*16+1] = {
    "0123456789abcdef"
    "0123456789ABCDEF"
};

/* BuildPyUnicode */
static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, char* chars, int clength,
                                                int prepend_sign, char padding_char) {
    PyObject *uval;
    Py_ssize_t uoffset = ulength - clength;
#if CYTHON_USE_UNICODE_INTERNALS
    Py_ssize_t i;
#if CYTHON_PEP393_ENABLED
    void *udata;
    uval = PyUnicode_New(ulength, 127);
    if (unlikely(!uval)) return NULL;
    udata = PyUnicode_DATA(uval);
#else
    Py_UNICODE *udata;
    uval = PyUnicode_FromUnicode(NULL, ulength);
    if (unlikely(!uval)) return NULL;
    udata = PyUnicode_AS_UNICODE(uval);
#endif
    if (uoffset > 0) {
        i = 0;
        if (prepend_sign) {
            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-');
            i++;
        }
        for (; i < uoffset; i++) {
            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char);
        }
    }
    for (i=0; i < clength; i++) {
        __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]);
    }
#else
    {
        PyObject *sign = NULL, *padding = NULL;
        uval = NULL;
        if (uoffset > 0) {
            prepend_sign = !!prepend_sign;
            if (uoffset > prepend_sign) {
                padding = PyUnicode_FromOrdinal(padding_char);
                if (likely(padding) && uoffset > prepend_sign + 1) {
                    PyObject *tmp;
                    PyObject *repeat = PyInt_FromSsize_t(uoffset - prepend_sign);
                    if (unlikely(!repeat)) goto done_or_error;
                    tmp = PyNumber_Multiply(padding, repeat);
                    Py_DECREF(repeat);
                    Py_DECREF(padding);
                    padding = tmp;
                }
                if (unlikely(!padding)) goto done_or_error;
            }
            if (prepend_sign) {
                sign = PyUnicode_FromOrdinal('-');
                if (unlikely(!sign)) goto done_or_error;
            }
        }
        uval = PyUnicode_DecodeASCII(chars, clength, NULL);
        if (likely(uval) && padding) {
            PyObject *tmp = PyNumber_Add(padding, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
        if (likely(uval) && sign) {
            PyObject *tmp = PyNumber_Add(sign, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
done_or_error:
        Py_XDECREF(padding);
        Py_XDECREF(sign);
    }
#endif
    return uval;
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(int)*3+2];
    char *dpos, *end = digits + sizeof(int)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    int remaining;
#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 (format_char == 'X') {
        hex_digits += 16;
        format_char = 'x';
    }
    remaining = value;
    last_one_off = 0;
    dpos = end;
    do {
        int digit_pos;
        switch (format_char) {
        case 'o':
            digit_pos = abs((int)(remaining % (8*8)));
            remaining = (int) (remaining / (8*8));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 8);
            break;
        case 'd':
            digit_pos = abs((int)(remaining % (10*10)));
            remaining = (int) (remaining / (10*10));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 10);
            break;
        case 'x':
            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
            remaining = (int) (remaining / 16);
            break;
        default:
            assert(0);
            break;
        }
    } while (unlikely(remaining != 0));
    assert(!last_one_off || *dpos == '0');
    dpos += last_one_off;
    length = end - dpos;
    ulength = length;
    prepend_sign = 0;
    if (!is_unsigned && value <= neg_one) {
        if (padding_char == ' ' || width <= length + 1) {
            *(--dpos) = '-';
            ++length;
        } else {
            prepend_sign = 1;
        }
        ++ulength;
    }
    if (width > ulength) {
        ulength = width;
    }
    if (ulength == 1) {
        return PyUnicode_FromOrdinal(*dpos);
    }
    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
}

/* JoinPyUnicode */
static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyObject *result_uval;
    int result_ukind, kind_shift;
    Py_ssize_t i, char_pos;
    void *result_udata;
    CYTHON_MAYBE_UNUSED_VAR(max_char);
#if CYTHON_PEP393_ENABLED
    result_uval = PyUnicode_New(result_ulength, max_char);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
    kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1;
    result_udata = PyUnicode_DATA(result_uval);
#else
    result_uval = PyUnicode_FromUnicode(NULL, result_ulength);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = sizeof(Py_UNICODE);
    kind_shift = (result_ukind == 4) ? 2 : result_ukind - 1;
    result_udata = PyUnicode_AS_UNICODE(result_uval);
#endif
    assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0);
    char_pos = 0;
    for (i=0; i < value_count; i++) {
        int ukind;
        Py_ssize_t ulength;
        void *udata;
        PyObject *uval = PyTuple_GET_ITEM(value_tuple, i);
        if (unlikely(__Pyx_PyUnicode_READY(uval)))
            goto bad;
        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
        if (unlikely(!ulength))
            continue;
        if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos))
            goto overflow;
        ukind = __Pyx_PyUnicode_KIND(uval);
        udata = __Pyx_PyUnicode_DATA(uval);
        if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
            memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift));
        } else {
            #if PY_VERSION_HEX >= 0x030d0000
            if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad;
            #elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
            #else
            Py_ssize_t j;
            for (j=0; j < ulength; j++) {
                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
            }
            #endif
        }
        char_pos += ulength;
    }
    return result_uval;
overflow:
    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
bad:
    Py_DECREF(result_uval);
    return NULL;
#else
    CYTHON_UNUSED_VAR(max_char);
    CYTHON_UNUSED_VAR(result_ulength);
    CYTHON_UNUSED_VAR(value_count);
    return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
#endif
}

/* PyObjectCallOneArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *args[2] = {NULL, arg};
    return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* RaiseException */
#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    __Pyx_PyThreadState_declare
    CYTHON_UNUSED_VAR(cause);
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    if (PyType_Check(type)) {
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
    if (cause) {
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
      #if PY_VERSION_HEX >= 0x030C00A6
        PyException_SetTraceback(value, tb);
      #elif CYTHON_FAST_THREAD_STATE
        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);
        }
#else
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* TupleAndListFromArray */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
    PyObject *v;
    Py_ssize_t i;
    for (i = 0; i < length; i++) {
        v = dest[i] = src[i];
        Py_INCREF(v);
    }
}
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        Py_INCREF(__pyx_empty_tuple);
        return __pyx_empty_tuple;
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
    return res;
}
static CYTHON_INLINE PyObject *
__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        return PyList_New(0);
    }
    res = PyList_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
    return res;
}
#endif

/* fastcall */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
{
    Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
    for (i = 0; i < n; i++)
    {
        if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
    }
    for (i = 0; i < n; i++)
    {
        int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
        if (unlikely(eq != 0)) {
            if (unlikely(eq < 0)) return NULL;
            return kwvalues[i];
        }
    }
    return NULL;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
    Py_ssize_t i, nkwargs = PyTuple_GET_SIZE(kwnames);
    PyObject *dict;
    dict = PyDict_New();
    if (unlikely(!dict))
        return NULL;
    for (i=0; i<nkwargs; i++) {
        PyObject *key = PyTuple_GET_ITEM(kwnames, i);
        if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
            goto bad;
    }
    return dict;
bad:
    Py_DECREF(dict);
    return NULL;
}
#endif
#endif

/* RaiseDoubleKeywords */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

/* ParseKeywords */
static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject *const *kwvalues,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds));
    while (1) {
        Py_XDECREF(key); key = NULL;
        Py_XDECREF(value); value = NULL;
        if (kwds_is_tuple) {
            Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(kwds);
#else
            size = PyTuple_Size(kwds);
            if (size < 0) goto bad;
#endif
            if (pos >= size) break;
#if CYTHON_AVOID_BORROWED_REFS
            key = __Pyx_PySequence_ITEM(kwds, pos);
            if (!key) goto bad;
#elif CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kwds, pos);
#else
            key = PyTuple_GetItem(kwds, pos);
            if (!key) goto bad;
#endif
            value = kwvalues[pos];
            pos++;
        }
        else
        {
            if (!PyDict_Next(kwds, &pos, &key, &value)) break;
#if CYTHON_AVOID_BORROWED_REFS
            Py_INCREF(key);
#endif
        }
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
#if CYTHON_AVOID_BORROWED_REFS
            Py_INCREF(value);
            Py_DECREF(key);
#endif
            key = NULL;
            value = NULL;
            continue;
        }
#if !CYTHON_AVOID_BORROWED_REFS
        Py_INCREF(key);
#endif
        Py_INCREF(value);
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
#if CYTHON_AVOID_BORROWED_REFS
                    value = NULL;
#endif
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key)
                );
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
#if CYTHON_AVOID_BORROWED_REFS
                    value = NULL;
#endif
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    Py_XDECREF(key);
    Py_XDECREF(value);
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    #if PY_MAJOR_VERSION < 3
    PyErr_Format(PyExc_TypeError,
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    Py_XDECREF(key);
    Py_XDECREF(value);
    return -1;
}

/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* KeywordStringCheck */
static int __Pyx_CheckKeywordStrings(
    PyObject *kw,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
    if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) {
        Py_ssize_t kwsize;
#if CYTHON_ASSUME_SAFE_MACROS
        kwsize = PyTuple_GET_SIZE(kw);
#else
        kwsize = PyTuple_Size(kw);
        if (kwsize < 0) return 0;
#endif
        if (unlikely(kwsize == 0))
            return 1;
        if (!kw_allowed) {
#if CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kw, 0);
#else
            key = PyTuple_GetItem(kw, pos);
            if (!key) return 0;
#endif
            goto invalid_keyword;
        }
#if PY_VERSION_HEX < 0x03090000
        for (pos = 0; pos < kwsize; pos++) {
#if CYTHON_ASSUME_SAFE_MACROS
            key = PyTuple_GET_ITEM(kw, pos);
#else
            key = PyTuple_GetItem(kw, pos);
            if (!key) return 0;
#endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
        }
#endif
        return 1;
    }
    while (PyDict_Next(kw, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_Check(key)))
        #endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
    }
    if (!kw_allowed && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    return 0;
#endif
invalid_keyword:
    #if PY_MAJOR_VERSION < 3
    PyErr_Format(PyExc_TypeError,
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

/* GetAttr */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
    if (likely(PyUnicode_Check(n)))
#else
    if (likely(PyString_Check(n)))
#endif
        return __Pyx_PyObject_GetAttrStr(o, n);
#endif
    return PyObject_GetAttr(o, n);
}

/* HasAttr */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
    PyObject *r;
    if (unlikely(!__Pyx_PyBaseString_Check(n))) {
        PyErr_SetString(PyExc_TypeError,
                        "hasattr(): attribute name must be string");
        return -1;
    }
    r = __Pyx_GetAttr(o, n);
    if (!r) {
        PyErr_Clear();
        return 0;
    } else {
        Py_DECREF(r);
        return 1;
    }
}

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
#ifdef WITH_THREAD
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
    else state = (PyGILState_STATE)0;
#endif
    CYTHON_UNUSED_VAR(clineno);
    CYTHON_UNUSED_VAR(lineno);
    CYTHON_UNUSED_VAR(filename);
    CYTHON_MAYBE_UNUSED_VAR(nogil);
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(0);
    }
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
#ifdef WITH_THREAD
    if (nogil)
        PyGILState_Release(state);
#endif
}

/* RaiseTooManyValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

/* RaiseNeedMoreValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

/* IterFinish */
static CYTHON_INLINE int __Pyx_IterFinish(void) {
    PyObject* exc_type;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    exc_type = __Pyx_PyErr_CurrentExceptionType();
    if (unlikely(exc_type)) {
        if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
            return -1;
        __Pyx_PyErr_Clear();
        return 0;
    }
    return 0;
}

/* UnpackItemEndCheck */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    }
    return __Pyx_IterFinish();
}

/* SwapException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_value = exc_info->exc_value;
    exc_info->exc_value = *value;
    if (tmp_value == NULL || tmp_value == Py_None) {
        Py_XDECREF(tmp_value);
        tmp_value = NULL;
        tmp_type = NULL;
        tmp_tb = NULL;
    } else {
        tmp_type = (PyObject*) Py_TYPE(tmp_value);
        Py_INCREF(tmp_type);
        #if CYTHON_COMPILING_IN_CPYTHON
        tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
        Py_XINCREF(tmp_tb);
        #else
        tmp_tb = PyException_GetTraceback(tmp_value);
        #endif
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = *type;
    exc_info->exc_value = *value;
    exc_info->exc_traceback = *tb;
  #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
  #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (unlikely(!j)) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyTuple_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     CYTHON_NCP_UNUSED int wraparound,
                                                     CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
            PyObject *r = PyList_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (mm && mm->mp_subscript) {
            PyObject *r, *key = PyInt_FromSsize_t(i);
            if (unlikely(!key)) return NULL;
            r = mm->mp_subscript(o, key);
            Py_DECREF(key);
            return r;
        }
        if (likely(sm && sm->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return sm->sq_item(o, i);
        }
    }
#else
    if (is_list || !PyMapping_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

/* DictGetItem */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            if (unlikely(PyTuple_Check(key))) {
                PyObject* args = PyTuple_Pack(1, key);
                if (likely(args)) {
                    PyErr_SetObject(PyExc_KeyError, args);
                    Py_DECREF(args);
                }
            } else {
                PyErr_SetObject(PyExc_KeyError, key);
            }
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#endif

/* UnpackUnboundCMethod */
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
    PyObject *result;
    PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
    if (unlikely(!selfless_args)) return NULL;
    result = PyObject_Call(method, selfless_args, kwargs);
    Py_DECREF(selfless_args);
    return result;
}
static PyMethodDef __Pyx_UnboundCMethod_Def = {
     "CythonUnboundCMethod",
     __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
     METH_VARARGS | METH_KEYWORDS,
     NULL
};
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    target->method = method;
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION >= 3
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    #else
    if (likely(!__Pyx_CyOrPyCFunction_Check(method)))
    #endif
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
        target->func = descr->d_method->ml_meth;
        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
    } else
#endif
#if CYTHON_COMPILING_IN_PYPY
#else
    if (PyCFunction_Check(method))
#endif
    {
        PyObject *self;
        int self_found;
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        self = PyObject_GetAttrString(method, "__self__");
        if (!self) {
            PyErr_Clear();
        }
#else
        self = PyCFunction_GET_SELF(method);
#endif
        self_found = (self && self != Py_None);
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        Py_XDECREF(self);
#endif
        if (self_found) {
            PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method);
            if (unlikely(!unbound_method)) return -1;
            Py_DECREF(method);
            target->method = unbound_method;
        }
    }
    return 0;
}

/* CallUnboundCMethod1 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
    if (likely(cfunc->func)) {
        int flag = cfunc->flag;
        if (flag == METH_O) {
            return (*(cfunc->func))(self, arg);
        } else if ((PY_VERSION_HEX >= 0x030600B1) && flag == METH_FASTCALL) {
            #if PY_VERSION_HEX >= 0x030700A0
                return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1);
            #else
                return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
            #endif
        } else if ((PY_VERSION_HEX >= 0x030700A0) && flag == (METH_FASTCALL | METH_KEYWORDS)) {
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
        }
    }
    return __Pyx__CallUnboundCMethod1(cfunc, self, arg);
}
#endif
static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        args = PyTuple_New(1);
        if (unlikely(!args)) goto bad;
        Py_INCREF(arg);
        PyTuple_SET_ITEM(args, 0, arg);
        if (cfunc->flag & METH_KEYWORDS)
            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
        else
            result = (*cfunc->func)(self, args);
    } else {
        args = PyTuple_New(2);
        if (unlikely(!args)) goto bad;
        Py_INCREF(self);
        PyTuple_SET_ITEM(args, 0, self);
        Py_INCREF(arg);
        PyTuple_SET_ITEM(args, 1, arg);
        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    }
#else
    args = PyTuple_Pack(2, self, arg);
    if (unlikely(!args)) goto bad;
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
#endif
bad:
    Py_XDECREF(args);
    return result;
}

/* CallUnboundCMethod2 */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
    if (likely(cfunc->func)) {
        PyObject *args[2] = {arg1, arg2};
        if (cfunc->flag == METH_FASTCALL) {
            #if PY_VERSION_HEX >= 0x030700A0
            return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, args, 2);
            #else
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
            #endif
        }
        #if PY_VERSION_HEX >= 0x030700A0
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
        #endif
    }
    return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
}
#endif
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        args = PyTuple_New(2);
        if (unlikely(!args)) goto bad;
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 0, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 1, arg2);
        if (cfunc->flag & METH_KEYWORDS)
            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
        else
            result = (*cfunc->func)(self, args);
    } else {
        args = PyTuple_New(3);
        if (unlikely(!args)) goto bad;
        Py_INCREF(self);
        PyTuple_SET_ITEM(args, 0, self);
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 1, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 2, arg2);
        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    }
#else
    args = PyTuple_Pack(3, self, arg1, arg2);
    if (unlikely(!args)) goto bad;
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
#endif
bad:
    Py_XDECREF(args);
    return result;
}

/* dict_getitem_default */
static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
    PyObject* value;
#if PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (unlikely(PyErr_Occurred()))
            return NULL;
        value = default_value;
    }
    Py_INCREF(value);
    if ((1));
#else
    if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
        value = PyDict_GetItem(d, key);
        if (unlikely(!value)) {
            value = default_value;
        }
        Py_INCREF(value);
    }
#endif
    else {
        if (default_value == Py_None)
            value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key);
        else
            value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value);
    }
    return value;
}

/* RaiseNoneIterError */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* UnicodeAsUCS4 */
static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
   Py_ssize_t length;
   #if CYTHON_PEP393_ENABLED
   length = PyUnicode_GET_LENGTH(x);
   if (likely(length == 1)) {
       return PyUnicode_READ_CHAR(x, 0);
   }
   #else
   length = PyUnicode_GET_SIZE(x);
   if (likely(length == 1)) {
       return PyUnicode_AS_UNICODE(x)[0];
   }
   #if Py_UNICODE_SIZE == 2
   else if (PyUnicode_GET_SIZE(x) == 2) {
       Py_UCS4 high_val = PyUnicode_AS_UNICODE(x)[0];
       if (high_val >= 0xD800 && high_val <= 0xDBFF) {
           Py_UCS4 low_val = PyUnicode_AS_UNICODE(x)[1];
           if (low_val >= 0xDC00 && low_val <= 0xDFFF) {
               return 0x10000 + (((high_val & ((1<<10)-1)) << 10) | (low_val & ((1<<10)-1)));
           }
       }
   }
   #endif
   #endif
   PyErr_Format(PyExc_ValueError,
                "only single character unicode strings can be converted to Py_UCS4, "
                "got length %" CYTHON_FORMAT_SSIZE_T "d", length);
   return (Py_UCS4)-1;
}

/* object_ord */
static long __Pyx__PyObject_Ord(PyObject* c) {
    Py_ssize_t size;
    if (PyBytes_Check(c)) {
        size = PyBytes_GET_SIZE(c);
        if (likely(size == 1)) {
            return (unsigned char) PyBytes_AS_STRING(c)[0];
        }
#if PY_MAJOR_VERSION < 3
    } else if (PyUnicode_Check(c)) {
        return (long)__Pyx_PyUnicode_AsPy_UCS4(c);
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    } else if (PyByteArray_Check(c)) {
        size = PyByteArray_GET_SIZE(c);
        if (likely(size == 1)) {
            return (unsigned char) PyByteArray_AS_STRING(c)[0];
        }
#endif
    } else {
        __Pyx_TypeName c_type_name = __Pyx_PyType_GetName(Py_TYPE(c));
        PyErr_Format(PyExc_TypeError,
            "ord() expected string of length 1, but " __Pyx_FMT_TYPENAME " found",
            c_type_name);
        __Pyx_DECREF_TypeName(c_type_name);
        return (long)(Py_UCS4)-1;
    }
    PyErr_Format(PyExc_TypeError,
        "ord() expected a character, but string of length %zd found", size);
    return (long)(Py_UCS4)-1;
}

/* PyObjectFormatAndDecref */
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) {
    if (unlikely(!s)) return NULL;
    if (likely(PyUnicode_CheckExact(s))) return s;
    #if PY_MAJOR_VERSION < 3
    if (likely(PyString_CheckExact(s))) {
        PyObject *result = PyUnicode_FromEncodedObject(s, NULL, "strict");
        Py_DECREF(s);
        return result;
    }
    #endif
    return __Pyx_PyObject_FormatAndDecref(s, f);
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f) {
    PyObject *result;
    if (unlikely(!s)) return NULL;
    result = PyObject_Format(s, f);
    Py_DECREF(s);
    return result;
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(Py_ssize_t)*3+2];
    char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    Py_ssize_t remaining;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (format_char == 'X') {
        hex_digits += 16;
        format_char = 'x';
    }
    remaining = value;
    last_one_off = 0;
    dpos = end;
    do {
        int digit_pos;
        switch (format_char) {
        case 'o':
            digit_pos = abs((int)(remaining % (8*8)));
            remaining = (Py_ssize_t) (remaining / (8*8));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 8);
            break;
        case 'd':
            digit_pos = abs((int)(remaining % (10*10)));
            remaining = (Py_ssize_t) (remaining / (10*10));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 10);
            break;
        case 'x':
            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
            remaining = (Py_ssize_t) (remaining / 16);
            break;
        default:
            assert(0);
            break;
        }
    } while (unlikely(remaining != 0));
    assert(!last_one_off || *dpos == '0');
    dpos += last_one_off;
    length = end - dpos;
    ulength = length;
    prepend_sign = 0;
    if (!is_unsigned && value <= neg_one) {
        if (padding_char == ' ' || width <= length + 1) {
            *(--dpos) = '-';
            ++length;
        } else {
            prepend_sign = 1;
        }
        ++ulength;
    }
    if (width > ulength) {
        ulength = width;
    }
    if (ulength == 1) {
        return PyUnicode_FromOrdinal(*dpos);
    }
    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
}

/* ExtTypeTest */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    __Pyx_TypeName obj_type_name;
    __Pyx_TypeName type_name;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(__Pyx_TypeCheck(obj, type)))
        return 1;
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    type_name = __Pyx_PyType_GetName(type);
    PyErr_Format(PyExc_TypeError,
                 "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME,
                 obj_type_name, type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    __Pyx_DECREF_TypeName(type_name);
    return 0;
}

/* SetItemInt */
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (unlikely(!j)) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
            PyObject* old = PyList_GET_ITEM(o, n);
            Py_INCREF(v);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
            return 1;
        }
    } else {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (mm && mm->mp_ass_subscript) {
            int r;
            PyObject *key = PyInt_FromSsize_t(i);
            if (unlikely(!key)) return -1;
            r = mm->mp_ass_subscript(o, key, v);
            Py_DECREF(key);
            return r;
        }
        if (likely(sm && sm->sq_ass_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return -1;
                    PyErr_Clear();
                }
            }
            return sm->sq_ass_item(o, i, v);
        }
    }
#else
    if (is_list || !PyMapping_Check(o))
    {
        return PySequence_SetItem(o, i, v);
    }
#endif
    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
}

/* PyDictVersioning */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
    PyObject **dictptr = NULL;
    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
    if (offset) {
#if CYTHON_COMPILING_IN_CPYTHON
        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
        dictptr = _PyObject_GetDictPtr(obj);
#endif
    }
    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
        return 0;
    return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif

/* GetModuleGlobalName */
#if CYTHON_USE_DICT_VERSIONS
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
{
    PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000
    result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    } else if (unlikely(PyErr_Occurred())) {
        return NULL;
    }
#elif CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(!__pyx_m)) {
        return NULL;
    }
    result = PyObject_GetAttr(__pyx_m, name);
    if (likely(result)) {
        return result;
    }
#else
    result = PyDict_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
#endif
#else
    result = PyObject_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* PyObjectLookupSpecial */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) {
    PyObject *res;
    PyTypeObject *tp = Py_TYPE(obj);
#if PY_MAJOR_VERSION < 3
    if (unlikely(PyInstance_Check(obj)))
        return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name);
#endif
    res = _PyType_Lookup(tp, attr_name);
    if (likely(res)) {
        descrgetfunc f = Py_TYPE(res)->tp_descr_get;
        if (!f) {
            Py_INCREF(res);
        } else {
            res = f(res, obj, (PyObject *)tp);
        }
    } else if (with_error) {
        PyErr_SetObject(PyExc_AttributeError, attr_name);
    }
    return res;
}
#endif

/* py_dict_pop */
static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B3 & PY_VERSION_HEX < 0x030d0000
    if ((1)) {
        return _PyDict_Pop(d, key, default_value);
    } else
#endif
    if (default_value) {
        return __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_pop, d, key, default_value);
    } else {
        return __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_pop, d, key);
    }
}

/* ArgTypeTest */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    __Pyx_TypeName type_name;
    __Pyx_TypeName obj_type_name;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    else if (exact) {
        #if PY_MAJOR_VERSION == 2
        if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
        #endif
    }
    else {
        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
    }
    type_name = __Pyx_PyType_GetName(type);
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME
        ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name);
    __Pyx_DECREF_TypeName(type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* RaiseClosureNameError */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* FixUpExtensionType */
#if CYTHON_USE_TYPE_SPECS
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED_VAR(spec);
    CYTHON_UNUSED_VAR(type);
#else
    const PyType_Slot *slot = spec->slots;
    while (slot && slot->slot && slot->slot != Py_tp_members)
        slot++;
    if (slot && slot->slot == Py_tp_members) {
        int changed = 0;
#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
        const
#endif
            PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
        while (memb && memb->name) {
            if (memb->name[0] == '_' && memb->name[1] == '_') {
#if PY_VERSION_HEX < 0x030900b1
                if (strcmp(memb->name, "__weaklistoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_weaklistoffset = memb->offset;
                    changed = 1;
                }
                else if (strcmp(memb->name, "__dictoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_dictoffset = memb->offset;
                    changed = 1;
                }
#if CYTHON_METH_FASTCALL
                else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
#if PY_VERSION_HEX >= 0x030800b4
                    type->tp_vectorcall_offset = memb->offset;
#else
                    type->tp_print = (printfunc) memb->offset;
#endif
                    changed = 1;
                }
#endif
#else
                if ((0));
#endif
#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
                else if (strcmp(memb->name, "__module__") == 0) {
                    PyObject *descr;
                    assert(memb->type == T_OBJECT);
                    assert(memb->flags == 0 || memb->flags == READONLY);
                    descr = PyDescr_NewMember(type, memb);
                    if (unlikely(!descr))
                        return -1;
                    if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
                        Py_DECREF(descr);
                        return -1;
                    }
                    Py_DECREF(descr);
                    changed = 1;
                }
#endif
            }
            memb++;
        }
        if (changed)
            PyType_Modified(type);
    }
#endif
    return 0;
}
#endif

/* FetchSharedCythonModule */
static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
    return __Pyx_PyImport_AddModuleRef((char*) __PYX_ABI_MODULE_NAME);
}

/* FetchCommonType */
static int __Pyx_VerifyCachedType(PyObject *cached_type,
                               const char *name,
                               Py_ssize_t basicsize,
                               Py_ssize_t expected_basicsize) {
    if (!PyType_Check(cached_type)) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s is not a type object", name);
        return -1;
    }
    if (basicsize != expected_basicsize) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s has the wrong size, try recompiling",
            name);
        return -1;
    }
    return 0;
}
#if !CYTHON_USE_TYPE_SPECS
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* abi_module;
    const char* object_name;
    PyTypeObject *cached_type = NULL;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) return NULL;
    object_name = strrchr(type->tp_name, '.');
    object_name = object_name ? object_name+1 : type->tp_name;
    cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
    if (cached_type) {
        if (__Pyx_VerifyCachedType(
              (PyObject *)cached_type,
              object_name,
              cached_type->tp_basicsize,
              type->tp_basicsize) < 0) {
            goto bad;
        }
        goto done;
    }
    if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
    PyErr_Clear();
    if (PyType_Ready(type) < 0) goto bad;
    if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
        goto bad;
    Py_INCREF(type);
    cached_type = type;
done:
    Py_DECREF(abi_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}
#else
static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *abi_module, *cached_type = NULL;
    const char* object_name = strrchr(spec->name, '.');
    object_name = object_name ? object_name+1 : spec->name;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) return NULL;
    cached_type = PyObject_GetAttrString(abi_module, object_name);
    if (cached_type) {
        Py_ssize_t basicsize;
#if CYTHON_COMPILING_IN_LIMITED_API
        PyObject *py_basicsize;
        py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
        if (unlikely(!py_basicsize)) goto bad;
        basicsize = PyLong_AsSsize_t(py_basicsize);
        Py_DECREF(py_basicsize);
        py_basicsize = 0;
        if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
#else
        basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
#endif
        if (__Pyx_VerifyCachedType(
              cached_type,
              object_name,
              basicsize,
              spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    }
    if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
    PyErr_Clear();
    CYTHON_UNUSED_VAR(module);
    cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
    if (unlikely(!cached_type)) goto bad;
    if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
    if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
done:
    Py_DECREF(abi_module);
    assert(cached_type == NULL || PyType_Check(cached_type));
    return (PyTypeObject *) cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}
#endif

/* PyVectorcallFastCallDict */
#if CYTHON_METH_FASTCALL
static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    PyObject *res = NULL;
    PyObject *kwnames;
    PyObject **newargs;
    PyObject **kwvalues;
    Py_ssize_t i, pos;
    size_t j;
    PyObject *key, *value;
    unsigned long keys_are_strings;
    Py_ssize_t nkw = PyDict_GET_SIZE(kw);
    newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
    if (unlikely(newargs == NULL)) {
        PyErr_NoMemory();
        return NULL;
    }
    for (j = 0; j < nargs; j++) newargs[j] = args[j];
    kwnames = PyTuple_New(nkw);
    if (unlikely(kwnames == NULL)) {
        PyMem_Free(newargs);
        return NULL;
    }
    kwvalues = newargs + nargs;
    pos = i = 0;
    keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
    while (PyDict_Next(kw, &pos, &key, &value)) {
        keys_are_strings &= Py_TYPE(key)->tp_flags;
        Py_INCREF(key);
        Py_INCREF(value);
        PyTuple_SET_ITEM(kwnames, i, key);
        kwvalues[i] = value;
        i++;
    }
    if (unlikely(!keys_are_strings)) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        goto cleanup;
    }
    res = vc(func, newargs, nargs, kwnames);
cleanup:
    Py_DECREF(kwnames);
    for (i = 0; i < nkw; i++)
        Py_DECREF(kwvalues[i]);
    PyMem_Free(newargs);
    return res;
}
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
        return vc(func, args, nargs, NULL);
    }
    return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
}
#endif

/* CythonFunctionShared */
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
    if (__Pyx_CyFunction_Check(func)) {
        return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
    } else if (PyCFunction_Check(func)) {
        return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
    }
    return 0;
}
#else
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void *cfunc) {
    return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
}
#endif
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    __Pyx_Py_XDECREF_SET(
        __Pyx_CyFunction_GetClassObj(f),
            ((classobj) ? __Pyx_NewRef(classobj) : NULL));
#else
    __Pyx_Py_XDECREF_SET(
        ((PyCMethodObject *) (f))->mm_class,
        (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
#endif
}
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
{
    CYTHON_UNUSED_VAR(closure);
    if (unlikely(op->func_doc == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
        if (unlikely(!op->func_doc)) return NULL;
#else
        if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
#if PY_MAJOR_VERSION >= 3
            op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
#else
            op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
#endif
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
#endif
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_doc, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(op->func_name == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_name = PyObject_GetAttrString(op->func, "__name__");
#elif PY_MAJOR_VERSION >= 3
        op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#else
        op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_name, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_qualname);
    return op->func_qualname;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_qualname, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_dict, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(op);
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->defaults_tuple;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->defaults_kwdict;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value || value == Py_None) {
        value = NULL;
    } else if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_annotations, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->func_annotations;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
    int is_coroutine;
    CYTHON_UNUSED_VAR(context);
    if (op->func_is_coroutine) {
        return __Pyx_NewRef(op->func_is_coroutine);
    }
    is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
#if PY_VERSION_HEX >= 0x03050000
    if (is_coroutine) {
        PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
        fromlist = PyList_New(1);
        if (unlikely(!fromlist)) return NULL;
        Py_INCREF(marker);
#if CYTHON_ASSUME_SAFE_MACROS
        PyList_SET_ITEM(fromlist, 0, marker);
#else
        if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
            Py_DECREF(marker);
            Py_DECREF(fromlist);
            return NULL;
        }
#endif
        module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
        if (unlikely(!module)) goto ignore;
        op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
        Py_DECREF(module);
        if (likely(op->func_is_coroutine)) {
            return __Pyx_NewRef(op->func_is_coroutine);
        }
ignore:
        PyErr_Clear();
    }
#endif
    op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
    return __Pyx_NewRef(op->func_is_coroutine);
}
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *
__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_GetAttrString(op->func, "__module__");
}
static int
__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_SetAttrString(op->func, "__module__", value);
}
#endif
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
#endif
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
#if !CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
#endif
#if CYTHON_USE_TYPE_SPECS
    {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
#if CYTHON_METH_FASTCALL
#if CYTHON_BACKPORT_VECTORCALL
    {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
#else
#if !CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
#endif
#endif
#endif
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
#else
    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
#endif
#endif
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
{
    CYTHON_UNUSED_VAR(args);
#if PY_MAJOR_VERSION >= 3
    Py_INCREF(m->func_qualname);
    return m->func_qualname;
#else
    return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
#endif
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if PY_VERSION_HEX < 0x030500A0 || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
#if !CYTHON_COMPILING_IN_LIMITED_API
    PyCFunctionObject *cf = (PyCFunctionObject*) op;
#endif
    if (unlikely(op == NULL))
        return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
    if (unlikely(!op->func)) return NULL;
#endif
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
#if !CYTHON_COMPILING_IN_LIMITED_API
    cf->m_ml = ml;
    cf->m_self = (PyObject *) op;
#endif
    Py_XINCREF(closure);
    op->func_closure = closure;
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_XINCREF(module);
    cf->m_module = module;
#endif
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    op->func_classobj = NULL;
#else
    ((PyCMethodObject*)op)->mm_class = NULL;
#endif
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults_pyobjects = 0;
    op->defaults_size = 0;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    op->func_is_coroutine = NULL;
#if CYTHON_METH_FASTCALL
    switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
    case METH_NOARGS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
        break;
    case METH_O:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
        break;
    case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
        break;
    case METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
        break;
    case METH_VARARGS | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = NULL;
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        Py_DECREF(op);
        return NULL;
    }
#endif
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_CLEAR(m->func);
#else
    Py_CLEAR(((PyCFunctionObject*)m)->m_module);
#endif
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
#if PY_VERSION_HEX < 0x030900B1
    Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
#else
    {
        PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
        ((PyCMethodObject *) (m))->mm_class = NULL;
        Py_XDECREF(cls);
    }
#endif
#endif
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    Py_CLEAR(m->func_is_coroutine);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_XDECREF(pydefaults[i]);
        PyObject_Free(m->defaults);
        m->defaults = NULL;
    }
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    __Pyx_PyHeapTypeObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    Py_VISIT(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func);
#else
    Py_VISIT(((PyCFunctionObject*)m)->m_module);
#endif
    Py_VISIT(m->func_dict);
    Py_VISIT(m->func_name);
    Py_VISIT(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    Py_VISIT(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
#endif
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    Py_VISIT(m->func_is_coroutine);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_VISIT(pydefaults[i]);
    }
    return 0;
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
#else
    return PyString_FromFormat("<cyfunction %s at %p>",
                               PyString_AsString(op->func_qualname), (void *)op);
#endif
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
    PyObject *py_name = NULL;
    PyCFunction meth;
    int flags;
    meth = PyCFunction_GetFunction(f);
    if (unlikely(!meth)) return NULL;
    flags = PyCFunction_GetFlags(f);
    if (unlikely(flags < 0)) return NULL;
#else
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    int flags = f->m_ml->ml_flags;
#endif
    Py_ssize_t size;
    switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 0))
                return (*meth)(self, NULL);
#if CYTHON_COMPILING_IN_LIMITED_API
            py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
            if (!py_name) return NULL;
            PyErr_Format(PyExc_TypeError,
                "%.200S() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                py_name, size);
            Py_DECREF(py_name);
#else
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
#endif
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_MACROS
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
#if CYTHON_COMPILING_IN_LIMITED_API
            py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
            if (!py_name) return NULL;
            PyErr_Format(PyExc_TypeError,
                "%.200S() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                py_name, size);
            Py_DECREF(py_name);
#else
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
#endif
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        return NULL;
    }
#if CYTHON_COMPILING_IN_LIMITED_API
    py_name = __Pyx_CyFunction_get_name((__pyx_CyFunctionObject*)func, NULL);
    if (!py_name) return NULL;
    PyErr_Format(PyExc_TypeError, "%.200S() takes no keyword arguments",
                 py_name);
    Py_DECREF(py_name);
#else
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
#endif
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *self, *result;
#if CYTHON_COMPILING_IN_LIMITED_API
    self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
    if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
    self = ((PyCFunctionObject*)func)->m_self;
#endif
    result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
    return result;
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
#if CYTHON_METH_FASTCALL
     __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
    if (vc) {
#if CYTHON_ASSUME_SAFE_MACROS
        return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
#else
        (void) &__Pyx_PyVectorcall_FastCallDict;
        return PyVectorcall_Call(func, args, kw);
#endif
    }
#endif
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
#if CYTHON_ASSUME_SAFE_MACROS
        argc = PyTuple_GET_SIZE(args);
#else
        argc = PyTuple_Size(args);
        if (unlikely(!argc) < 0) return NULL;
#endif
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
#if PY_MAJOR_VERSION > 2
            PyErr_Format(PyExc_TypeError,
                         "unbound method %.200S() needs an argument",
                         cyfunc->func_qualname);
#else
            PyErr_SetString(PyExc_TypeError,
                            "unbound method needs an argument");
#endif
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
{
    int ret = 0;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        if (unlikely(nargs < 1)) {
            PyErr_Format(PyExc_TypeError, "%.200s() needs an argument",
                         ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
            return -1;
        }
        ret = 1;
    }
    if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) {
        PyErr_Format(PyExc_TypeError,
                     "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
        return -1;
    }
    return ret;
}
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 0)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
            def->ml_name, nargs);
        return NULL;
    }
    return def->ml_meth(self, NULL);
}
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 1)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
            def->ml_name, nargs);
        return NULL;
    }
    return def->ml_meth(self, args[0]);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
    PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames);
}
#endif
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_CyFunctionType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
    {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
    {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
    {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
    {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
    {Py_tp_methods, (void *)__pyx_CyFunction_methods},
    {Py_tp_members, (void *)__pyx_CyFunction_members},
    {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
    {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
    {0, 0},
};
static PyType_Spec __pyx_CyFunctionType_spec = {
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL)
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    __pyx_CyFunctionType_slots
};
#else
static PyTypeObject __pyx_CyFunctionType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
    (destructor) __Pyx_CyFunction_dealloc,
#if !CYTHON_METH_FASTCALL
    0,
#elif CYTHON_BACKPORT_VECTORCALL
    (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall),
#else
    offsetof(PyCFunctionObject, vectorcall),
#endif
    0,
    0,
#if PY_MAJOR_VERSION < 3
    0,
#else
    0,
#endif
    (reprfunc) __Pyx_CyFunction_repr,
    0,
    0,
    0,
    0,
    __Pyx_CyFunction_CallAsMethod,
    0,
    0,
    0,
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#if defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    0,
    (traverseproc) __Pyx_CyFunction_traverse,
    (inquiry) __Pyx_CyFunction_clear,
    0,
#if PY_VERSION_HEX < 0x030500A0
    offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
    offsetof(PyCFunctionObject, m_weakreflist),
#endif
    0,
    0,
    __pyx_CyFunction_methods,
    __pyx_CyFunction_members,
    __pyx_CyFunction_getsets,
    0,
    0,
    __Pyx_PyMethod_New,
    0,
    offsetof(__pyx_CyFunctionObject, func_dict),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
    0,
#endif
#if __PYX_NEED_TP_PRINT_SLOT
    0,
#endif
#if PY_VERSION_HEX >= 0x030C0000
    0,
#endif
#if PY_VERSION_HEX >= 0x030d00A4
    0,
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
    0,
#endif
};
#endif
static int __pyx_CyFunction_init(PyObject *module) {
#if CYTHON_USE_TYPE_SPECS
    __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
#else
    CYTHON_UNUSED_VAR(module);
    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
#endif
    if (unlikely(__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_Malloc(size);
    if (unlikely(!m->defaults))
        return PyErr_NoMemory();
    memset(m->defaults, 0, size);
    m->defaults_pyobjects = pyobjects;
    m->defaults_size = size;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* CythonFunction */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyObject *op = __Pyx_CyFunction_Init(
        PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* PyObjectCall2Args */
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
    PyObject *args[3] = {NULL, arg1, arg2};
    return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* PyObjectGetMethod */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
    PyObject *attr;
#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
    __Pyx_TypeName type_name;
    PyTypeObject *tp = Py_TYPE(obj);
    PyObject *descr;
    descrgetfunc f = NULL;
    PyObject **dictptr, *dict;
    int meth_found = 0;
    assert (*method == NULL);
    if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
        attr = __Pyx_PyObject_GetAttrStr(obj, name);
        goto try_unpack;
    }
    if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
        return 0;
    }
    descr = _PyType_Lookup(tp, name);
    if (likely(descr != NULL)) {
        Py_INCREF(descr);
#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
        if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
#elif PY_MAJOR_VERSION >= 3
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
        #endif
#else
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr)))
        #endif
#endif
        {
            meth_found = 1;
        } else {
            f = Py_TYPE(descr)->tp_descr_get;
            if (f != NULL && PyDescr_IsData(descr)) {
                attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
                Py_DECREF(descr);
                goto try_unpack;
            }
        }
    }
    dictptr = _PyObject_GetDictPtr(obj);
    if (dictptr != NULL && (dict = *dictptr) != NULL) {
        Py_INCREF(dict);
        attr = __Pyx_PyDict_GetItemStr(dict, name);
        if (attr != NULL) {
            Py_INCREF(attr);
            Py_DECREF(dict);
            Py_XDECREF(descr);
            goto try_unpack;
        }
        Py_DECREF(dict);
    }
    if (meth_found) {
        *method = descr;
        return 1;
    }
    if (f != NULL) {
        attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
        Py_DECREF(descr);
        goto try_unpack;
    }
    if (likely(descr != NULL)) {
        *method = descr;
        return 0;
    }
    type_name = __Pyx_PyType_GetName(tp);
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, name);
#else
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
                 type_name, PyString_AS_STRING(name));
#endif
    __Pyx_DECREF_TypeName(type_name);
    return 0;
#else
    attr = __Pyx_PyObject_GetAttrStr(obj, name);
    goto try_unpack;
#endif
try_unpack:
#if CYTHON_UNPACK_METHODS
    if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
        PyObject *function = PyMethod_GET_FUNCTION(attr);
        Py_INCREF(function);
        Py_DECREF(attr);
        *method = function;
        return 1;
    }
#endif
    *method = attr;
    return 0;
}

/* PyObjectCallMethod1 */
#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2)
static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
    PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
    Py_DECREF(method);
    return result;
}
#endif
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2
    PyObject *args[2] = {obj, arg};
    (void) __Pyx_PyObject_GetMethod;
    (void) __Pyx_PyObject_CallOneArg;
    (void) __Pyx_PyObject_Call2Args;
    return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
#else
    PyObject *method = NULL, *result;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_Call2Args(method, obj, arg);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) return NULL;
    return __Pyx__PyObject_CallMethod1(method, arg);
#endif
}

/* StringJoin */
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) {
    (void) __Pyx_PyObject_CallMethod1;
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION < 3
    return _PyString_Join(sep, values);
#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
    return _PyBytes_Join(sep, values);
#else
    return __Pyx_PyObject_CallMethod1(sep, __pyx_n_s_join, values);
#endif
}

/* pop_index */
static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) {
    PyObject *r;
    if (unlikely(!py_ix)) return NULL;
    r = __Pyx__PyObject_PopIndex(L, py_ix);
    Py_DECREF(py_ix);
    return r;
}
static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) {
    return __Pyx_PyObject_CallMethod1(L, __pyx_n_s_pop, py_ix);
}
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) {
    Py_ssize_t size = PyList_GET_SIZE(L);
    if (likely(size > (((PyListObject*)L)->allocated >> 1))) {
        Py_ssize_t cix = ix;
        if (cix < 0) {
            cix += size;
        }
        if (likely(__Pyx_is_valid_index(cix, size))) {
            PyObject* v = PyList_GET_ITEM(L, cix);
            __Pyx_SET_SIZE(L, Py_SIZE(L) - 1);
            size -= 1;
            memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*));
            return v;
        }
    }
    if (py_ix == Py_None) {
        return __Pyx__PyObject_PopNewIndex(L, PyInt_FromSsize_t(ix));
    } else {
        return __Pyx__PyObject_PopIndex(L, py_ix);
    }
}
#endif

/* PyObjectCallNoArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
    PyObject *arg[2] = {NULL, NULL};
    return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* PyObjectCallMethod0 */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
    PyObject *method = NULL, *result = NULL;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_CallOneArg(method, obj);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) goto bad;
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
}

/* UnpackTupleError */
static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError(index);
    }
}

/* UnpackTuple2 */
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
    PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
    value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
    value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
#else
    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
#endif
    if (decref_tuple) {
        Py_DECREF(tuple);
    }
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
#if CYTHON_COMPILING_IN_PYPY
bad:
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
#endif
}
static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                       int has_known_size, int decref_tuple) {
    Py_ssize_t index;
    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
    iternextfunc iternext;
    iter = PyObject_GetIter(tuple);
    if (unlikely(!iter)) goto bad;
    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
    iternext = __Pyx_PyObject_GetIterNextFunc(iter);
    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
    Py_DECREF(iter);
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
unpacking_failed:
    if (!has_known_size && __Pyx_IterFinish() == 0)
        __Pyx_RaiseNeedMoreValuesError(index);
bad:
    Py_XDECREF(iter);
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
}

/* dict_iter */
#if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
#include <string.h>
#endif
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
    *p_source_is_dict = is_dict;
    if (is_dict) {
#if !CYTHON_COMPILING_IN_PYPY
        *p_orig_length = PyDict_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
#elif PY_MAJOR_VERSION >= 3
        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
        PyObject **pp = NULL;
        if (method_name) {
            const char *name = PyUnicode_AsUTF8(method_name);
            if (strcmp(name, "iteritems") == 0) pp = &py_items;
            else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
            else if (strcmp(name, "itervalues") == 0) pp = &py_values;
            if (pp) {
                if (!*pp) {
                    *pp = PyUnicode_FromString(name + 4);
                    if (!*pp)
                        return NULL;
                }
                method_name = *pp;
            }
        }
#endif
    }
    *p_orig_length = 0;
    if (method_name) {
        PyObject* iter;
        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
        if (!iterable)
            return NULL;
#if !CYTHON_COMPILING_IN_PYPY
        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
            return iterable;
#endif
        iter = PyObject_GetIter(iterable);
        Py_DECREF(iterable);
        return iter;
    }
    return PyObject_GetIter(iterable);
}
static CYTHON_INLINE int __Pyx_dict_iter_next(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
    PyObject* next_item;
#if !CYTHON_COMPILING_IN_PYPY
    if (source_is_dict) {
        PyObject *key, *value;
        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
            return -1;
        }
        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
            return 0;
        }
        if (pitem) {
            PyObject* tuple = PyTuple_New(2);
            if (unlikely(!tuple)) {
                return -1;
            }
            Py_INCREF(key);
            Py_INCREF(value);
            PyTuple_SET_ITEM(tuple, 0, key);
            PyTuple_SET_ITEM(tuple, 1, value);
            *pitem = tuple;
        } else {
            if (pkey) {
                Py_INCREF(key);
                *pkey = key;
            }
            if (pvalue) {
                Py_INCREF(value);
                *pvalue = value;
            }
        }
        return 1;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyList_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else
#endif
    {
        next_item = PyIter_Next(iter_obj);
        if (unlikely(!next_item)) {
            return __Pyx_IterFinish();
        }
    }
    if (pitem) {
        *pitem = next_item;
    } else if (pkey && pvalue) {
        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
            return -1;
    } else if (pkey) {
        *pkey = next_item;
    } else {
        *pvalue = next_item;
    }
    return 1;
}

/* ObjectGetItem */
#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) {
    PyObject *runerr = NULL;
    Py_ssize_t key_value;
    key_value = __Pyx_PyIndex_AsSsize_t(index);
    if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
        return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
    }
    if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
        __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index));
        PyErr_Clear();
        PyErr_Format(PyExc_IndexError,
            "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name);
        __Pyx_DECREF_TypeName(index_type_name);
    }
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) {
    __Pyx_TypeName obj_type_name;
    if (likely(PyType_Check(obj))) {
        PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem);
        if (!meth) {
            PyErr_Clear();
        } else {
            PyObject *result = __Pyx_PyObject_CallOneArg(meth, key);
            Py_DECREF(meth);
            return result;
        }
    }
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) {
    PyTypeObject *tp = Py_TYPE(obj);
    PyMappingMethods *mm = tp->tp_as_mapping;
    PySequenceMethods *sm = tp->tp_as_sequence;
    if (likely(mm && mm->mp_subscript)) {
        return mm->mp_subscript(obj, key);
    }
    if (likely(sm && sm->sq_item)) {
        return __Pyx_PyObject_GetIndex(obj, key);
    }
    return __Pyx_PyObject_GetItem_Slow(obj, key);
}
#endif

/* SliceObject */
static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, int wraparound) {
    __Pyx_TypeName obj_type_name;
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_ass_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_ass_slice(obj, cstart, cstop, value);
    }
#else
    CYTHON_UNUSED_VAR(wraparound);
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_ass_subscript))
#else
    CYTHON_UNUSED_VAR(wraparound);
#endif
    {
        int result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_ass_subscript(obj, py_slice, value);
#else
        result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object does not support slice %.10s",
        obj_type_name, value ? "assignment" : "deletion");
    __Pyx_DECREF_TypeName(obj_type_name);
bad:
    return -1;
}

/* PyIntBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_MultiplyCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op2))) {
        const long a = intval;
        long b = PyInt_AS_LONG(op2);
        
#ifdef HAVE_LONG_LONG
            if (sizeof(PY_LONG_LONG) > sizeof(long)) {
                PY_LONG_LONG result = (PY_LONG_LONG)a * (PY_LONG_LONG)b;
                return (result >= LONG_MIN && result <= LONG_MAX) ?
                    PyInt_FromLong((long)result) : PyLong_FromLongLong(result);
            }
#endif
#if CYTHON_USE_TYPE_SLOTS
            return PyInt_Type.tp_as_number->nb_multiply(op1, op2);
#else
            return PyNumber_Multiply(op1, op2);
#endif
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op2))) {
        const long a = intval;
        long b, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG lla = intval;
        PY_LONG_LONG llb, llx;
#endif
        if (unlikely(__Pyx_PyLong_IsZero(op2))) {
            return __Pyx_NewRef(op2);
        }
        if (likely(__Pyx_PyLong_IsCompact(op2))) {
            b = __Pyx_PyLong_CompactValue(op2);
        } else {
            const digit* digits = __Pyx_PyLong_Digits(op2);
            const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op2);
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) {
                        b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) {
                        llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) {
                        b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) {
                        llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) {
                        b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) {
                        llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) {
                        b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) {
                        llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) {
                        b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) {
                        llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) {
                        b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) {
                        llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                default: return PyLong_Type.tp_as_number->nb_multiply(op1, op2);
            }
        }
                CYTHON_UNUSED_VAR(a);
                CYTHON_UNUSED_VAR(b);
                #ifdef HAVE_LONG_LONG
                llb = b;
                goto long_long;
                #else
                return PyLong_Type.tp_as_number->nb_multiply(op1, op2);
                #endif
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                llx = lla * llb;
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    if (PyFloat_CheckExact(op2)) {
        const long a = intval;
#if CYTHON_COMPILING_IN_LIMITED_API
        double b = __pyx_PyFloat_AsDouble(op2);
#else
        double b = PyFloat_AS_DOUBLE(op2);
#endif
            double result;
            
            PyFPE_START_PROTECT("multiply", return NULL)
            result = ((double)a) * (double)b;
            PyFPE_END_PROTECT(result)
            return PyFloat_FromDouble(result);
    }
    return (inplace ? PyNumber_InPlaceMultiply : PyNumber_Multiply)(op1, op2);
}
#endif

/* SliceObject */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, int wraparound) {
    __Pyx_TypeName obj_type_name;
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_slice(obj, cstart, cstop);
    }
#else
    CYTHON_UNUSED_VAR(wraparound);
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#else
    CYTHON_UNUSED_VAR(wraparound);
#endif
    {
        PyObject* result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_subscript(obj, py_slice);
#else
        result = PyObject_GetItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
bad:
    return NULL;
}

/* append */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
    if (likely(PyList_CheckExact(L))) {
        if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
    } else {
        PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
        if (unlikely(!retval))
            return -1;
        Py_DECREF(retval);
    }
    return 0;
}

/* CallUnboundCMethod0 */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_ASSUME_SAFE_MACROS
    args = PyTuple_New(1);
    if (unlikely(!args)) goto bad;
    Py_INCREF(self);
    PyTuple_SET_ITEM(args, 0, self);
#else
    args = PyTuple_Pack(1, self);
    if (unlikely(!args)) goto bad;
#endif
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    Py_DECREF(args);
bad:
    return result;
}

/* py_dict_values */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
    if (PY_MAJOR_VERSION >= 3)
        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d);
    else
        return PyDict_Values(d);
}

/* ValidateBasesTuple */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
    Py_ssize_t i, n;
#if CYTHON_ASSUME_SAFE_MACROS
    n = PyTuple_GET_SIZE(bases);
#else
    n = PyTuple_Size(bases);
    if (n < 0) return -1;
#endif
    for (i = 1; i < n; i++)
    {
#if CYTHON_AVOID_BORROWED_REFS
        PyObject *b0 = PySequence_GetItem(bases, i);
        if (!b0) return -1;
#elif CYTHON_ASSUME_SAFE_MACROS
        PyObject *b0 = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *b0 = PyTuple_GetItem(bases, i);
        if (!b0) return -1;
#endif
        PyTypeObject *b;
#if PY_MAJOR_VERSION < 3
        if (PyClass_Check(b0))
        {
            PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class",
                         PyString_AS_STRING(((PyClassObject*)b0)->cl_name));
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            return -1;
        }
#endif
        b = (PyTypeObject*) b0;
        if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
        {
            __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
            PyErr_Format(PyExc_TypeError,
                "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
            __Pyx_DECREF_TypeName(b_name);
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            return -1;
        }
        if (dictoffset == 0)
        {
            Py_ssize_t b_dictoffset = 0;
#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
            b_dictoffset = b->tp_dictoffset;
#else
            PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
            if (!py_b_dictoffset) goto dictoffset_return;
            b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
            Py_DECREF(py_b_dictoffset);
            if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
#endif
            if (b_dictoffset) {
                {
                    __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
                    PyErr_Format(PyExc_TypeError,
                        "extension type '%.200s' has no __dict__ slot, "
                        "but base type '" __Pyx_FMT_TYPENAME "' has: "
                        "either add 'cdef dict __dict__' to the extension type "
                        "or add '__slots__ = [...]' to the base type",
                        type_name, b_name);
                    __Pyx_DECREF_TypeName(b_name);
                }
#if !(CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY)
              dictoffset_return:
#endif
#if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(b0);
#endif
                return -1;
            }
        }
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(b0);
#endif
    }
    return 0;
}
#endif

/* PyType_Ready */
static int __Pyx_PyType_Ready(PyTypeObject *t) {
#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION)
    (void)__Pyx_PyObject_CallMethod0;
#if CYTHON_USE_TYPE_SPECS
    (void)__Pyx_validate_bases_tuple;
#endif
    return PyType_Ready(t);
#else
    int r;
    PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
    if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
        return -1;
#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
    {
        int gc_was_enabled;
    #if PY_VERSION_HEX >= 0x030A00b1
        gc_was_enabled = PyGC_Disable();
        (void)__Pyx_PyObject_CallMethod0;
    #else
        PyObject *ret, *py_status;
        PyObject *gc = NULL;
        #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400)
        gc = PyImport_GetModule(__pyx_kp_u_gc);
        #endif
        if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc);
        if (unlikely(!gc)) return -1;
        py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled);
        if (unlikely(!py_status)) {
            Py_DECREF(gc);
            return -1;
        }
        gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
        Py_DECREF(py_status);
        if (gc_was_enabled > 0) {
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable);
            if (unlikely(!ret)) {
                Py_DECREF(gc);
                return -1;
            }
            Py_DECREF(ret);
        } else if (unlikely(gc_was_enabled == -1)) {
            Py_DECREF(gc);
            return -1;
        }
    #endif
        t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
#if PY_VERSION_HEX >= 0x030A0000
        t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
#endif
#else
        (void)__Pyx_PyObject_CallMethod0;
#endif
    r = PyType_Ready(t);
#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
        t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
    #if PY_VERSION_HEX >= 0x030A00b1
        if (gc_was_enabled)
            PyGC_Enable();
    #else
        if (gc_was_enabled) {
            PyObject *tp, *v, *tb;
            PyErr_Fetch(&tp, &v, &tb);
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable);
            if (likely(ret || r == -1)) {
                Py_XDECREF(ret);
                PyErr_Restore(tp, v, tb);
            } else {
                Py_XDECREF(tp);
                Py_XDECREF(v);
                Py_XDECREF(tb);
                r = -1;
            }
        }
        Py_DECREF(gc);
    #endif
    }
#endif
    return r;
#endif
}

/* PyObject_GenericGetAttrNoDict */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
    __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp);
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, attr_name);
#else
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
                 type_name, PyString_AS_STRING(attr_name));
#endif
    __Pyx_DECREF_TypeName(type_name);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
    PyObject *descr;
    PyTypeObject *tp = Py_TYPE(obj);
    if (unlikely(!PyString_Check(attr_name))) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    assert(!tp->tp_dictoffset);
    descr = _PyType_Lookup(tp, attr_name);
    if (unlikely(!descr)) {
        return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
    }
    Py_INCREF(descr);
    #if PY_MAJOR_VERSION < 3
    if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
    #endif
    {
        descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
        if (unlikely(f)) {
            PyObject *res = f(descr, obj, (PyObject *)tp);
            Py_DECREF(descr);
            return res;
        }
    }
    return descr;
}
#endif

/* PyObject_GenericGetAttr */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
    if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
}
#endif

/* SetVTable */
static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
    if (unlikely(!ob))
        goto bad;
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0))
#else
    if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0))
#endif
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* GetVTable */
static void* __Pyx_GetVtable(PyTypeObject *type) {
    void* ptr;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable);
#else
    PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable);
#endif
    if (!ob)
        goto bad;
    ptr = PyCapsule_GetPointer(ob, 0);
    if (!ptr && !PyErr_Occurred())
        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
    Py_DECREF(ob);
    return ptr;
bad:
    Py_XDECREF(ob);
    return NULL;
}

/* MergeVTables */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_MergeVtables(PyTypeObject *type) {
    int i;
    void** base_vtables;
    __Pyx_TypeName tp_base_name;
    __Pyx_TypeName base_name;
    void* unknown = (void*)-1;
    PyObject* bases = type->tp_bases;
    int base_depth = 0;
    {
        PyTypeObject* base = type->tp_base;
        while (base) {
            base_depth += 1;
            base = base->tp_base;
        }
    }
    base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1));
    base_vtables[0] = unknown;
    for (i = 1; i < PyTuple_GET_SIZE(bases); i++) {
        void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i)));
        if (base_vtable != NULL) {
            int j;
            PyTypeObject* base = type->tp_base;
            for (j = 0; j < base_depth; j++) {
                if (base_vtables[j] == unknown) {
                    base_vtables[j] = __Pyx_GetVtable(base);
                    base_vtables[j + 1] = unknown;
                }
                if (base_vtables[j] == base_vtable) {
                    break;
                } else if (base_vtables[j] == NULL) {
                    goto bad;
                }
                base = base->tp_base;
            }
        }
    }
    PyErr_Clear();
    free(base_vtables);
    return 0;
bad:
    tp_base_name = __Pyx_PyType_GetName(type->tp_base);
    base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i));
    PyErr_Format(PyExc_TypeError,
        "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
    __Pyx_DECREF_TypeName(tp_base_name);
    __Pyx_DECREF_TypeName(base_name);
    free(base_vtables);
    return -1;
}
#endif

/* FormatTypeName */
#if CYTHON_COMPILING_IN_LIMITED_API
static __Pyx_TypeName
__Pyx_PyType_GetName(PyTypeObject* tp)
{
    PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_n_s_name);
    if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) {
        PyErr_Clear();
        Py_XDECREF(name);
        name = __Pyx_NewRef(__pyx_n_s__205);
    }
    return name;
}
#endif

/* ValidateExternBase */
static int __Pyx_validate_extern_base(PyTypeObject *base) {
    Py_ssize_t itemsize;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_itemsize;
#endif
#if !CYTHON_COMPILING_IN_LIMITED_API
    itemsize = ((PyTypeObject *)base)->tp_itemsize;
#else
    py_itemsize = PyObject_GetAttrString((PyObject*)base, "__itemsize__");
    if (!py_itemsize)
        return -1;
    itemsize = PyLong_AsSsize_t(py_itemsize);
    Py_DECREF(py_itemsize);
    py_itemsize = 0;
    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
        return -1;
#endif
    if (itemsize) {
        __Pyx_TypeName b_name = __Pyx_PyType_GetName(base);
        PyErr_Format(PyExc_TypeError,
                "inheritance from PyVarObject types like '" __Pyx_FMT_TYPENAME "' not currently supported", b_name);
        __Pyx_DECREF_TypeName(b_name);
        return -1;
    }
    return 0;
}

/* TypeImport */
#ifndef __PYX_HAVE_RT_ImportType_3_0_11
#define __PYX_HAVE_RT_ImportType_3_0_11
static PyTypeObject *__Pyx_ImportType_3_0_11(PyObject *module, const char *module_name, const char *class_name,
    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_11 check_size)
{
    PyObject *result = 0;
    char warning[200];
    Py_ssize_t basicsize;
    Py_ssize_t itemsize;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_basicsize;
    PyObject *py_itemsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#if !CYTHON_COMPILING_IN_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
    itemsize = ((PyTypeObject *)result)->tp_itemsize;
#else
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
    py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
    if (!py_itemsize)
        goto bad;
    itemsize = PyLong_AsSsize_t(py_itemsize);
    Py_DECREF(py_itemsize);
    py_itemsize = 0;
    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (itemsize) {
        if (size % alignment) {
            alignment = size % alignment;
        }
        if (itemsize < (Py_ssize_t)alignment)
            itemsize = (Py_ssize_t)alignment;
    }
    if ((size_t)(basicsize + itemsize) < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize+itemsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_11 &&
            ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd-%zd from PyObject",
            module_name, class_name, size, basicsize, basicsize+itemsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_11 && (size_t)basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

/* GetNameInClass */
static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name) {
    PyObject *result;
    PyObject *dict;
    assert(PyType_Check(nmspace));
#if CYTHON_USE_TYPE_SLOTS
    dict = ((PyTypeObject*)nmspace)->tp_dict;
    Py_XINCREF(dict);
#else
    dict = PyObject_GetAttr(nmspace, __pyx_n_s_dict);
#endif
    if (likely(dict)) {
        result = PyObject_GetItem(dict, name);
        Py_DECREF(dict);
        if (result) {
            return result;
        }
    }
    PyErr_Clear();
    __Pyx_GetModuleGlobalNameUncached(result, name);
    return result;
}

/* ClassMethod */
static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM <= 0x05080000
    if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) {
        return PyClassMethod_New(method);
    }
#else
#if CYTHON_COMPILING_IN_PYPY
    if (PyMethodDescr_Check(method))
#else
    #if PY_MAJOR_VERSION == 2
    static PyTypeObject *methoddescr_type = NULL;
    if (unlikely(methoddescr_type == NULL)) {
       PyObject *meth = PyObject_GetAttrString((PyObject*)&PyList_Type, "append");
       if (unlikely(!meth)) return NULL;
       methoddescr_type = Py_TYPE(meth);
       Py_DECREF(meth);
    }
    #else
    PyTypeObject *methoddescr_type = &PyMethodDescr_Type;
    #endif
    if (__Pyx_TypeCheck(method, methoddescr_type))
#endif
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
        #if PY_VERSION_HEX < 0x03020000
        PyTypeObject *d_type = descr->d_type;
        #else
        PyTypeObject *d_type = descr->d_common.d_type;
        #endif
        return PyDescr_NewClassMethod(d_type, descr->d_method);
    }
#endif
    else if (PyMethod_Check(method)) {
        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
    }
    else {
        return PyClassMethod_New(method);
    }
}

/* RegisterModuleCleanup */
#if PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
static PyObject* __pyx_module_cleanup_atexit(PyObject *module, PyObject *unused) {
    CYTHON_UNUSED_VAR(unused);
    __pyx_module_cleanup(module);
    Py_INCREF(Py_None); return Py_None;
}
static int __Pyx_RegisterCleanup(void) {
    static PyMethodDef cleanup_def = {
        "__cleanup", (PyCFunction)__pyx_module_cleanup_atexit, METH_NOARGS, 0};
    PyObject *cleanup_func = 0;
    PyObject *atexit = 0;
    PyObject *reg = 0;
    PyObject *args = 0;
    PyObject *res = 0;
    int ret = -1;
    cleanup_func = PyCFunction_New(&cleanup_def, 0);
    if (!cleanup_func)
        goto bad;
    atexit = PyImport_ImportModule("atexit");
    if (!atexit)
        goto bad;
    reg = PyObject_GetAttrString(atexit, "_exithandlers");
    if (reg && PyList_Check(reg)) {
        PyObject *a, *kw;
        a = PyTuple_New(0);
        kw = PyDict_New();
        if (!a || !kw) {
            Py_XDECREF(a);
            Py_XDECREF(kw);
            goto bad;
        }
        args = PyTuple_Pack(3, cleanup_func, a, kw);
        Py_DECREF(a);
        Py_DECREF(kw);
        if (!args)
            goto bad;
        ret = PyList_Insert(reg, 0, args);
    } else {
        if (!reg)
            PyErr_Clear();
        Py_XDECREF(reg);
        reg = PyObject_GetAttrString(atexit, "register");
        if (!reg)
            goto bad;
        args = PyTuple_Pack(1, cleanup_func);
        if (!args)
            goto bad;
        res = PyObject_CallObject(reg, args);
        if (!res)
            goto bad;
        ret = 0;
    }
bad:
    Py_XDECREF(cleanup_func);
    Py_XDECREF(atexit);
    Py_XDECREF(reg);
    Py_XDECREF(args);
    Py_XDECREF(res);
    return ret;
}
#endif

/* CLineInTraceback */
#ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    CYTHON_MAYBE_UNUSED_VAR(tstate);
    if (unlikely(!__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
#if CYTHON_COMPILING_IN_CPYTHON
    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, *cython_runtime_dict,
            __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
    } else
#endif
    {
      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
      if (use_cline_obj) {
        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
        Py_DECREF(use_cline_obj);
      } else {
        PyErr_Clear();
        use_cline = NULL;
      }
    }
    if (!use_cline) {
        c_line = 0;
        (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;
    }
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}
#endif

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
                                                       PyObject *firstlineno, PyObject *name) {
    PyObject *replace = NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
    replace = PyObject_GetAttrString(code, "replace");
    if (likely(replace)) {
        PyObject *result;
        result = PyObject_Call(replace, __pyx_empty_tuple, scratch_dict);
        Py_DECREF(replace);
        return result;
    }
    PyErr_Clear();
    #if __PYX_LIMITED_VERSION_HEX < 0x030780000
    {
        PyObject *compiled = NULL, *result = NULL;
        if (unlikely(PyDict_SetItemString(scratch_dict, "code", code))) return NULL;
        if (unlikely(PyDict_SetItemString(scratch_dict, "type", (PyObject*)(&PyType_Type)))) return NULL;
        compiled = Py_CompileString(
            "out = type(code)(\n"
            "  code.co_argcount, code.co_kwonlyargcount, code.co_nlocals, code.co_stacksize,\n"
            "  code.co_flags, code.co_code, code.co_consts, code.co_names,\n"
            "  code.co_varnames, code.co_filename, co_name, co_firstlineno,\n"
            "  code.co_lnotab)\n", "<dummy>", Py_file_input);
        if (!compiled) return NULL;
        result = PyEval_EvalCode(compiled, scratch_dict, scratch_dict);
        Py_DECREF(compiled);
        if (!result) PyErr_Print();
        Py_DECREF(result);
        result = PyDict_GetItemString(scratch_dict, "out");
        if (result) Py_INCREF(result);
        return result;
    }
    #else
    return NULL;
    #endif
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
    PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
    PyObject *exc_type, *exc_value, *exc_traceback;
    int success = 0;
    if (c_line) {
        (void) __pyx_cfilenm;
        (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
    }
    PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
    code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
    if (unlikely(!code_object)) goto bad;
    py_py_line = PyLong_FromLong(py_line);
    if (unlikely(!py_py_line)) goto bad;
    py_funcname = PyUnicode_FromString(funcname);
    if (unlikely(!py_funcname)) goto bad;
    dict = PyDict_New();
    if (unlikely(!dict)) goto bad;
    {
        PyObject *old_code_object = code_object;
        code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
        Py_DECREF(old_code_object);
    }
    if (unlikely(!code_object)) goto bad;
    getframe = PySys_GetObject("_getframe");
    if (unlikely(!getframe)) goto bad;
    if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
    frame = PyEval_EvalCode(code_object, dict, dict);
    if (unlikely(!frame) || frame == Py_None) goto bad;
    success = 1;
  bad:
    PyErr_Restore(exc_type, exc_value, exc_traceback);
    Py_XDECREF(code_object);
    Py_XDECREF(py_py_line);
    Py_XDECREF(py_funcname);
    Py_XDECREF(dict);
    Py_XDECREF(replace);
    if (success) {
        PyTraceBack_Here(
            (struct _frame*)frame);
    }
    Py_XDECREF(frame);
}
#else
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = NULL;
    PyObject *py_funcname = NULL;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_srcfile = NULL;
    py_srcfile = PyString_FromString(filename);
    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);
        if (!py_funcname) goto bad;
        #endif
    }
    #if PY_MAJOR_VERSION < 3
    py_code = __Pyx_PyCode_New(
        0,
        0,
        0,
        0,
        0,
        0,
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    #else
    py_code = PyCode_NewEmpty(filename, funcname, py_line);
    #endif
    Py_XDECREF(py_funcname);
    return py_code;
bad:
    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,
                               int py_line, const char *filename) {
    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) {
            /* 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(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}
#endif

/* CIntFromPyVerify */
#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
#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))) {
        if ((sizeof(int) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (int) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (int) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(int) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(int) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        int val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (int) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((int) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (int) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* CIntFromPy */
static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *x) {
#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))) {
        if ((sizeof(MPI_Aint) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(MPI_Aint, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (MPI_Aint) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        MPI_Aint val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (MPI_Aint) -1;
        val = __Pyx_PyInt_As_MPI_Aint(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Aint, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(MPI_Aint) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) >= 2 * PyLong_SHIFT)) {
                            return (MPI_Aint) (((((MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Aint) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) >= 3 * PyLong_SHIFT)) {
                            return (MPI_Aint) (((((((MPI_Aint)digits[2]) << PyLong_SHIFT) | (MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Aint) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) >= 4 * PyLong_SHIFT)) {
                            return (MPI_Aint) (((((((((MPI_Aint)digits[3]) << PyLong_SHIFT) | (MPI_Aint)digits[2]) << PyLong_SHIFT) | (MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (MPI_Aint) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(MPI_Aint) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Aint, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Aint, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Aint, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(MPI_Aint) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Aint) (((MPI_Aint)-1)*(((((MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(MPI_Aint) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Aint) ((((((MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(MPI_Aint) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Aint) (((MPI_Aint)-1)*(((((((MPI_Aint)digits[2]) << PyLong_SHIFT) | (MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Aint) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Aint) ((((((((MPI_Aint)digits[2]) << PyLong_SHIFT) | (MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(MPI_Aint) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Aint) (((MPI_Aint)-1)*(((((((((MPI_Aint)digits[3]) << PyLong_SHIFT) | (MPI_Aint)digits[2]) << PyLong_SHIFT) | (MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Aint) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Aint, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Aint) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Aint) ((((((((((MPI_Aint)digits[3]) << PyLong_SHIFT) | (MPI_Aint)digits[2]) << PyLong_SHIFT) | (MPI_Aint)digits[1]) << PyLong_SHIFT) | (MPI_Aint)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(MPI_Aint) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Aint, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Aint, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        MPI_Aint val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (MPI_Aint) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (MPI_Aint) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (MPI_Aint) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (MPI_Aint) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(MPI_Aint) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((MPI_Aint) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(MPI_Aint) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((MPI_Aint) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((MPI_Aint) 1) << (sizeof(MPI_Aint) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (MPI_Aint) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to MPI_Aint");
    return (MPI_Aint) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to MPI_Aint");
    return (MPI_Aint) -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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(MPI_Aint));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From___pyx_anon_enum(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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE MPI_Count __Pyx_PyInt_As_MPI_Count(PyObject *x) {
#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))) {
        if ((sizeof(MPI_Count) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(MPI_Count, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (MPI_Count) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        MPI_Count val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (MPI_Count) -1;
        val = __Pyx_PyInt_As_MPI_Count(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Count, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(MPI_Count) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) >= 2 * PyLong_SHIFT)) {
                            return (MPI_Count) (((((MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Count) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) >= 3 * PyLong_SHIFT)) {
                            return (MPI_Count) (((((((MPI_Count)digits[2]) << PyLong_SHIFT) | (MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Count) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) >= 4 * PyLong_SHIFT)) {
                            return (MPI_Count) (((((((((MPI_Count)digits[3]) << PyLong_SHIFT) | (MPI_Count)digits[2]) << PyLong_SHIFT) | (MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (MPI_Count) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(MPI_Count) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Count, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Count, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Count, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(MPI_Count) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Count) (((MPI_Count)-1)*(((((MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(MPI_Count) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Count) ((((((MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(MPI_Count) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Count) (((MPI_Count)-1)*(((((((MPI_Count)digits[2]) << PyLong_SHIFT) | (MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Count) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Count) ((((((((MPI_Count)digits[2]) << PyLong_SHIFT) | (MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(MPI_Count) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Count) (((MPI_Count)-1)*(((((((((MPI_Count)digits[3]) << PyLong_SHIFT) | (MPI_Count)digits[2]) << PyLong_SHIFT) | (MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Count) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Count, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Count) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Count) ((((((((((MPI_Count)digits[3]) << PyLong_SHIFT) | (MPI_Count)digits[2]) << PyLong_SHIFT) | (MPI_Count)digits[1]) << PyLong_SHIFT) | (MPI_Count)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(MPI_Count) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Count, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Count) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Count, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        MPI_Count val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (MPI_Count) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (MPI_Count) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (MPI_Count) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (MPI_Count) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(MPI_Count) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((MPI_Count) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(MPI_Count) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((MPI_Count) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((MPI_Count) 1) << (sizeof(MPI_Count) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (MPI_Count) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to MPI_Count");
    return (MPI_Count) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to MPI_Count");
    return (MPI_Count) -1;
}

/* 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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE MPI_Offset __Pyx_PyInt_As_MPI_Offset(PyObject *x) {
#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))) {
        if ((sizeof(MPI_Offset) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(MPI_Offset, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (MPI_Offset) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        MPI_Offset val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (MPI_Offset) -1;
        val = __Pyx_PyInt_As_MPI_Offset(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Offset, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(MPI_Offset) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) >= 2 * PyLong_SHIFT)) {
                            return (MPI_Offset) (((((MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Offset) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) >= 3 * PyLong_SHIFT)) {
                            return (MPI_Offset) (((((((MPI_Offset)digits[2]) << PyLong_SHIFT) | (MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Offset) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) >= 4 * PyLong_SHIFT)) {
                            return (MPI_Offset) (((((((((MPI_Offset)digits[3]) << PyLong_SHIFT) | (MPI_Offset)digits[2]) << PyLong_SHIFT) | (MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (MPI_Offset) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(MPI_Offset) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Offset, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Offset, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Offset, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(MPI_Offset) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Offset) (((MPI_Offset)-1)*(((((MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(MPI_Offset) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Offset) ((((((MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(MPI_Offset) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Offset) (((MPI_Offset)-1)*(((((((MPI_Offset)digits[2]) << PyLong_SHIFT) | (MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Offset) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Offset) ((((((((MPI_Offset)digits[2]) << PyLong_SHIFT) | (MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(MPI_Offset) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Offset) (((MPI_Offset)-1)*(((((((((MPI_Offset)digits[3]) << PyLong_SHIFT) | (MPI_Offset)digits[2]) << PyLong_SHIFT) | (MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Offset) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Offset, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Offset) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Offset) ((((((((((MPI_Offset)digits[3]) << PyLong_SHIFT) | (MPI_Offset)digits[2]) << PyLong_SHIFT) | (MPI_Offset)digits[1]) << PyLong_SHIFT) | (MPI_Offset)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(MPI_Offset) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Offset, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Offset, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        MPI_Offset val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (MPI_Offset) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (MPI_Offset) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (MPI_Offset) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (MPI_Offset) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(MPI_Offset) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((MPI_Offset) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(MPI_Offset) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((MPI_Offset) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((MPI_Offset) 1) << (sizeof(MPI_Offset) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (MPI_Offset) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to MPI_Offset");
    return (MPI_Offset) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to MPI_Offset");
    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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned 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))) {
        if ((sizeof(unsigned int) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (unsigned int) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        unsigned int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (unsigned int) -1;
        val = __Pyx_PyInt_As_unsigned_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT)) {
                            return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT)) {
                            return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT)) {
                            return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (unsigned int) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(unsigned int) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(unsigned int) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(unsigned int) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        unsigned int val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (unsigned int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (unsigned int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (unsigned int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (unsigned int) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(unsigned int) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((unsigned int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(unsigned int) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((unsigned int) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((unsigned int) 1) << (sizeof(unsigned int) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (unsigned int) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned int");
    return (unsigned int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned int");
    return (unsigned int) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned 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(unsigned int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
#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))) {
        if ((sizeof(unsigned char) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(unsigned char, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (unsigned char) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        unsigned char val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (unsigned char) -1;
        val = __Pyx_PyInt_As_unsigned_char(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned char, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(unsigned char) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) >= 2 * PyLong_SHIFT)) {
                            return (unsigned char) (((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned char) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) >= 3 * PyLong_SHIFT)) {
                            return (unsigned char) (((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned char) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) >= 4 * PyLong_SHIFT)) {
                            return (unsigned char) (((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (unsigned char) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(unsigned char) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(unsigned char) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned char, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(unsigned char) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned char) (((unsigned char)-1)*(((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(unsigned char) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned char) ((((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned char) (((unsigned char)-1)*(((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned char) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned char) ((((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned char) (((unsigned char)-1)*(((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned char) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned char) ((((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(unsigned char) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(unsigned char) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        unsigned char val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (unsigned char) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (unsigned char) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (unsigned char) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (unsigned char) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(unsigned char) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((unsigned char) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(unsigned char) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((unsigned char) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((unsigned char) 1) << (sizeof(unsigned char) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (unsigned char) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned char");
    return (unsigned char) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned char");
    return (unsigned char) -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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(MPI_Count),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(MPI_Count));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* 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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(MPI_Offset));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const size_t neg_one = (size_t) -1, const_zero = (size_t) 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))) {
        if ((sizeof(size_t) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (size_t) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyInt_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) {
                            return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) {
                            return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) {
                            return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (size_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(size_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(size_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        size_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (size_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (size_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (size_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (size_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((size_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((size_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (size_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* 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
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL;
        PyObject *py_bytes = NULL, *arg_tuple = NULL, *kwds = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(MPI_Fint));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        arg_tuple = PyTuple_Pack(2, py_bytes, order_str);
        if (!arg_tuple) goto limited_bad;
        if (!is_unsigned) {
            kwds = PyDict_New();
            if (!kwds) goto limited_bad;
            if (PyDict_SetItemString(kwds, "signed", __Pyx_NewRef(Py_True))) goto limited_bad;
        }
        result = PyObject_Call(from_bytes, arg_tuple, kwds);
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(arg_tuple);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE MPI_Fint __Pyx_PyInt_As_MPI_Fint(PyObject *x) {
#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))) {
        if ((sizeof(MPI_Fint) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(MPI_Fint, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (MPI_Fint) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        MPI_Fint val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (MPI_Fint) -1;
        val = __Pyx_PyInt_As_MPI_Fint(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Fint, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(MPI_Fint) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) >= 2 * PyLong_SHIFT)) {
                            return (MPI_Fint) (((((MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Fint) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) >= 3 * PyLong_SHIFT)) {
                            return (MPI_Fint) (((((((MPI_Fint)digits[2]) << PyLong_SHIFT) | (MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Fint) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) >= 4 * PyLong_SHIFT)) {
                            return (MPI_Fint) (((((((((MPI_Fint)digits[3]) << PyLong_SHIFT) | (MPI_Fint)digits[2]) << PyLong_SHIFT) | (MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (MPI_Fint) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(MPI_Fint) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Fint, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Fint, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(MPI_Fint, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(MPI_Fint) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Fint) (((MPI_Fint)-1)*(((((MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(MPI_Fint) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) - 1 > 2 * PyLong_SHIFT)) {
                            return (MPI_Fint) ((((((MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(MPI_Fint) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Fint) (((MPI_Fint)-1)*(((((((MPI_Fint)digits[2]) << PyLong_SHIFT) | (MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(MPI_Fint) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) - 1 > 3 * PyLong_SHIFT)) {
                            return (MPI_Fint) ((((((((MPI_Fint)digits[2]) << PyLong_SHIFT) | (MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(MPI_Fint) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Fint) (((MPI_Fint)-1)*(((((((((MPI_Fint)digits[3]) << PyLong_SHIFT) | (MPI_Fint)digits[2]) << PyLong_SHIFT) | (MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(MPI_Fint) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(MPI_Fint, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(MPI_Fint) - 1 > 4 * PyLong_SHIFT)) {
                            return (MPI_Fint) ((((((((((MPI_Fint)digits[3]) << PyLong_SHIFT) | (MPI_Fint)digits[2]) << PyLong_SHIFT) | (MPI_Fint)digits[1]) << PyLong_SHIFT) | (MPI_Fint)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(MPI_Fint) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Fint, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(MPI_Fint, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        MPI_Fint val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (MPI_Fint) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (MPI_Fint) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (MPI_Fint) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (MPI_Fint) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(MPI_Fint) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((MPI_Fint) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(MPI_Fint) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((MPI_Fint) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((MPI_Fint) 1) << (sizeof(MPI_Fint) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (MPI_Fint) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to MPI_Fint");
    return (MPI_Fint) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to MPI_Fint");
    return (MPI_Fint) -1;
}

/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
#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))) {
        if ((sizeof(long) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (long) val;
        }
    }
#endif
    if (unlikely(!PyLong_Check(x))) {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (long) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(long) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(long) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        long val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (long) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (long) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (long) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (long) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((long) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((long) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (long) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* CheckBinaryVersion */
static unsigned long __Pyx_get_runtime_version(void) {
#if __PYX_LIMITED_VERSION_HEX >= 0x030B00A4
    return Py_Version & ~0xFFUL;
#else
    const char* rt_version = Py_GetVersion();
    unsigned long version = 0;
    unsigned long factor = 0x01000000UL;
    unsigned int digit = 0;
    int i = 0;
    while (factor) {
        while ('0' <= rt_version[i] && rt_version[i] <= '9') {
            digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
            ++i;
        }
        version += factor * digit;
        if (rt_version[i] != '.')
            break;
        digit = 0;
        factor >>= 8;
        ++i;
    }
    return version;
#endif
}
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
    const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
    if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
        return 0;
    if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
        return 1;
    {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compile time Python version %d.%d "
                      "of module '%.100s' "
                      "%s "
                      "runtime version %d.%d",
                       (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
                       __Pyx_MODULE_NAME,
                       (allow_newer) ? "was newer than" : "does not match",
                       (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
       );
        return PyErr_WarnEx(NULL, message, 1);
    }
}

/* FunctionExport */
static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    union {
        void (*fp)(void);
        void *p;
    } tmp;
    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
    if (!d) {
        PyErr_Clear();
        d = PyDict_New();
        if (!d)
            goto bad;
        Py_INCREF(d);
        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
            goto bad;
    }
    tmp.fp = f;
    cobj = PyCapsule_New(tmp.p, sig, 0);
    if (!cobj)
        goto bad;
    if (PyDict_SetItemString(d, name, cobj) < 0)
        goto bad;
    Py_DECREF(cobj);
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(cobj);
    Py_XDECREF(d);
    return -1;
}

/* InitStrings */
#if PY_MAJOR_VERSION >= 3
static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) {
    if (t.is_unicode | t.is_str) {
        if (t.intern) {
            *str = PyUnicode_InternFromString(t.s);
        } else if (t.encoding) {
            *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL);
        } else {
            *str = PyUnicode_FromStringAndSize(t.s, t.n - 1);
        }
    } else {
        *str = PyBytes_FromStringAndSize(t.s, t.n - 1);
    }
    if (!*str)
        return -1;
    if (PyObject_Hash(*str) == -1)
        return -1;
    return 0;
}
#endif
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION >= 3
        __Pyx_InitString(*t, t->p);
        #else
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        if (!*t->p)
            return -1;
        if (PyObject_Hash(*t->p) == -1)
            return -1;
        #endif
        ++t;
    }
    return 0;
}

#include <string.h>
static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
    size_t len = strlen(s);
    if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
        PyErr_SetString(PyExc_OverflowError, "byte string is too long");
        return -1;
    }
    return (Py_ssize_t) len;
}
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return PyByteArray_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
#if !CYTHON_PEP393_ENABLED
static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    char* defenc_c;
    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
    if (!defenc) return NULL;
    defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    {
        char* end = defenc_c + PyBytes_GET_SIZE(defenc);
        char* c;
        for (c = defenc_c; c < end; c++) {
            if ((unsigned char) (*c) >= 128) {
                PyUnicode_AsASCIIString(o);
                return NULL;
            }
        }
    }
#endif
    *length = PyBytes_GET_SIZE(defenc);
    return defenc_c;
}
#else
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(PyUnicode_IS_ASCII(o))) {
        *length = PyUnicode_GET_LENGTH(o);
        return PyUnicode_AsUTF8(o);
    } else {
        PyUnicode_AsASCIIString(o);
        return NULL;
    }
#else
    return PyUnicode_AsUTF8AndSize(o, length);
#endif
}
#endif
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
    int retval;
    if (unlikely(!x)) return -1;
    retval = __Pyx_PyObject_IsTrue(x);
    Py_DECREF(x);
    return retval;
}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
    __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result));
#if PY_MAJOR_VERSION >= 3
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ").  "
                "The ability to return an instance of a strict subclass of int is deprecated, "
                "and may be removed in a future version of Python.",
                result_type_name)) {
            __Pyx_DECREF_TypeName(result_type_name);
            Py_DECREF(result);
            return NULL;
        }
        __Pyx_DECREF_TypeName(result_type_name);
        return result;
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")",
                 type_name, type_name, result_type_name);
    __Pyx_DECREF_TypeName(result_type_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_Check(x) || PyLong_Check(x)))
#else
  if (likely(PyLong_Check(x)))
#endif
    return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  #if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = m->nb_int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = m->nb_long(x);
  }
  #else
  if (likely(m && m->nb_int)) {
    name = "int";
    res = m->nb_int(x);
  }
  #endif
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
    res = PyNumber_Int(x);
  }
#endif
  if (likely(res)) {
#if PY_MAJOR_VERSION < 3
    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
#else
    if (unlikely(!PyLong_CheckExact(res))) {
#endif
        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b))) {
    if (sizeof(Py_ssize_t) >= sizeof(long))
        return PyInt_AS_LONG(b);
    else
        return PyInt_AsSsize_t(b);
  }
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(__Pyx_PyLong_IsCompact(b))) {
        return __Pyx_PyLong_CompactValue(b);
    } else {
      const digit* digits = __Pyx_PyLong_Digits(b);
      const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  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);
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
    return PyInt_FromSize_t(ival);
}


/* #### Code section: utility_code_pragmas_end ### */
#ifdef _MSC_VER
#pragma warning( pop )
#endif



/* #### Code section: end ### */
#endif /* Py_PYTHON_H */
